自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cxihu田树东的游戏开发博客

图灵的光环/ 编程的派宗/卡马克的像素/浅色的床单

  • 博客(26)
  • 资源 (4)
  • 收藏
  • 关注

原创 Unity实现GoF23种设计模式

这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。多个对象间存在一对多关系,当一个对象发生改变时,把这种改变通知给其他多个对象,从而影响其他对象的行为。定义一个中介对象来简化原有对象之间的交互关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。结构型模式,除了适配器模式分为类结构型模式和对象结构型模式两种,其他的全部属于对象结构型模式。通过这种方式去除对象之间的耦合。行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行为型模式。

2023-12-14 17:44:03 202

原创 Physically-Based Rendering(PBR)基于物理的渲染(一)

Physically-Based Rendering (PBR)基于物理渲染包含材质、光源、相机、光线传播等,但在实时渲染领域我们提PBR说的就是PBR材质。PBR在实时领域材质丰富度没有离线PBR多,因为要考虑性能。再者严格来说实时领域的PBR也不是严格遵循物理基础的,做了大量的简化。

2023-12-14 15:03:19 112

原创 Global IIIumination(GI)全局光照原理(二)屏幕空间全局光照

顾名思义,屏幕空间只使用来自“屏幕”的信息,也可以理解成是对现有直接光照效果图的后期处理,使得加上模拟的间接光照。RSM严格来说属于图像空间,LPV、VXGI属于3D空间(世界空间)全局光照。

2023-12-07 11:45:42 138

原创 Global IIIumination(GI)全局光照原理(一)世界空间全局光照

但这样有个问题:如图P点是次级光源,无论如何都照亮不了对背面的q点,但因为我们把空间划分成Volume格子,而格子内的光辐射是同样的,那么q点经过错误计算也会被照亮,如图:LPV这种缺陷叫做:光泄漏。是由于格子比物体大照成的,可以通过动态自适应格子大小来解决。

2023-12-05 10:39:58 270

原创 Shadows实时阴影原理

VSSM虽然很巧妙但不够精确,随着对图像空间降噪的处理手段越来越多,如TAA等,PCSS现在又回归成了软阴影的主流。

2023-11-15 10:49:58 106

原创 简要归纳UE5 Lumen全局光照原理

距离场(SDF)有个致命的问题就是只能判断相交,无法获取材质信息,所以无法给三角面着色。Lumen的厉害之处在于,它融合了经典的全局光照思路(光线追踪+辐射度算法),以及一系列巧妙的工程手段,解开了原本无法直接求解的渲染方程。复用reuse:即用上一帧接收的光照做为本帧的向外辐射的能量(光照)。一直步进到新的点离三角形的距离小于0.01,那么说明光线和这个三角面相交了。再从3判断离自己最近的三角面是1,继续往前步进1,也不会有任何三角面相交。面元细分的越多,间接光的反弹次数就越多,成像也就越逼真。

2023-10-11 20:46:40 966 1

原创 【Unity Shader】从入门到领悟(2)用C#画一个立方体

一、构成一个立方需要多少个顶点?二、定义三角面的索引数组:三、定义UV坐标数组:四、最后构建Mesh:五、完整代码:

2023-06-16 14:41:36 1209

原创 【Unity Shader】从入门到领悟(1)基本概念:什么是网格?什么是材质和Shader?

一、什么是网格(Mesh)?二、什么是MeshFilter(网格过滤器)?三、什么是MeshRenderer(网格渲染器)?四、什么是材质(Material)?五、什么是Shader(着色器)?

2023-06-13 11:12:24 1377

原创 Unity高性能无卡顿取图像——实时推流/截屏录屏等功能

一、Unity提供的ScreenCapture取图像接口二、我们一个一个看API:三、Unity日本大神keijiro还提供了一种异步截图的方案,完整代码如下:四、最近我又找了一种高效的截图方式Graphics.Blit:

2022-11-15 17:47:19 2656

原创 《Unity Magica Cloth从入门到详解》之(4)MeshCloth网布

MeshCloth 的特点是可以对网格顶点Mesh进行布料模拟。也适用于SkinningMesh。MeshCloth 非常适合模拟复杂的运动,例如裙子和碰撞检测。然而,由于控制了网格的每个顶点并将结果回写到蒙皮网格的处理,因此计算负荷相应增加。因此构造MeshCloth之前还需要一种叫做“RenderDeformer变形器”的东西来使网格变形。

2022-10-19 17:56:13 1542

原创 《Unity Magica Cloth从入门到详解》之(8)视野外剔除系统

使用剔除系统,可以停止未在相机上绘制的角色的交叉模拟。这将大大提高性能,尤其是在第一人称 FPS 和 VR 中。下图是相机剔除的可视化。场内人物众多,但实际的交叉模拟只对相机上绘制的明亮物体进行。

2021-11-04 19:56:25 3268

原创 《Unity DOTS之ECS从入门到不香》(5)创建无数个胶囊体并操作他们

文章目录一、本教程我们将学习如何用ECS创建无数个胶囊体并操作他们。二、创建CreateEntitiesComponent组件:三、创建CreateEntitiesSystem系统:四、创建CreateEntitiesManager。五、挂载CreateEntitiesManager脚本并运行一、本教程我们将学习如何用ECS创建无数个胶囊体并操作他们。1.开发环境和之前(2)DOTS开发环境配置一致。2.创建一个Capsule 并将其拖成Prefab。并将Capsule材质球上的Enable Gpu

2021-10-07 01:48:24 1246

原创 《Unity DOTS之ECS从入门到不香》(4)从旋转一个Cube开始(下)

文章目录一、创建实体(Entity)。Entity实质上是一个ID ,它像个容器将Component组织在一起。一、创建实体(Entity)。Entity实质上是一个ID ,它像个容器将Component组织在一起。1.ECS中有一个EntityManager类来管理一个World中的所有实体。 可以使用EntityManager.CreateEntity()在运行时创建Entity。但此处我们将演示在编辑器下直接将Game Object转变成Entity。2.首先创建一个普通Cube GameObj

2021-10-06 23:47:22 528

原创 《Unity DOTS之ECS从入门到不香》(3)从旋转一个Cube开始(上)

文章目录一、ECS实现旋转一个Cube二、我们先创建一个组件(Component),Component是一个结构体struct。三、创建系统(System),System是一个类Class,一个只能具有方法而不具有任何数据的特殊类。一、ECS实现旋转一个CubeECS要求我们分别实现:实体(Entity)、组件(Component)、系统(System)二、我们先创建一个组件(Component),Component是一个结构体struct。1.引入ECS命名空间using Unity.En

2021-10-05 18:55:36 655

原创 《Unity DOTS之ECS从入门到不香》(2)DOTS开发环境配置

文章目录一、Unity DOTS环境配置二、安装hybrid简便讲解:一、Unity DOTS环境配置1.要是使用ECS是需要在Package Manager 中导入这四个包的:com.unity.burstcom.unity.entitiescom.unity.jobscom.unity.mathematics这里有个更简单的办法就是直接安装:com.unity.rendering.hybrid就行,hybrid依赖上述4个包,安装hybrid Unity会直接为我们安装好环境。h

2021-10-05 00:27:21 1874

原创 《Unity DOTS之ECS从入门到不香》(1)基本概念

文章目录一、什么是DOTS?二、什么是ECS?三、Hello World一、什么是DOTS?Data Oriented Tech Stack(DOTS)是unity推出的多线程面向数据的技术堆栈 。它是一套高性能解决方案,包含三个部分:1.ECS:ECS是一种有别于面向对象的编程模式,是面向CPU Cache友好的编程模式。要求代码都要按照 实体+组件+系统 的框架构建。官方链接2.JobSystem:JobSystem是unity推出的一套先进的多线程任务管理系统,结合ECS可以获得最佳性能。当然

2021-10-04 19:47:55 1851

原创 《Unity Magica Cloth从入门到详解》之(7)布料防穿模

在动作游戏等涉及剧烈运动的布料模拟中,经常出现的问题是布料穿入腿部和身体。比如下图中,裙子无意中穿透了大腿。我们可以通过使用如图Parameters功能的Surface Penetration / Collider Penetration 来改善这个问题。下图是应用Surface Penetration表面穿透 的示例,布料不会穿透大腿。

2021-07-15 11:46:37 3099

原创 《Unity Magica Cloth从入门到详解》之(6)换装

进行换装时,由于MagicaCloth是通过GameObject名称搜索骨骼的,如果游戏对象名称重复,则可能无法正常工作。当此检查设置为勾选时,添加MagicaAvatarParts部件时,MagicaAvatar上的碰撞器将被合并。如果没有问题,将在层次结构中附加一个图标,并且检查器显示 [No Problem],则没有问题。如果一切顺利,则层次结构中将有一个图标,并且将显示 [No Problem],如下所示。Magica Avatar是一个核心组件,除了更换主体的衣服外,还管理主体的各种信息。

2021-04-13 19:33:08 1365

原创 《Unity Magica Cloth从入门到详解》之(5)MeshSpring网格弹簧

MeshSpring允许使用弹簧摆动Mesh的顶点,同样也适用于SkinningMesh。在MeshSpring中,需要设置RenderDeformer渲染变形器以使网格变形,减少计算。当MeshSpring的开始图标变为“白色”时,设置完成。如果运行 Unity 并且网格在晃动,则设置完成。

2021-04-08 21:04:46 750

原创 《Unity Magica Cloth从入门到详解》之(3)BoneSpring骨骼弹簧

BoneSpring顾名思义可以通过弹簧摆动骨骼。在这里我们以Cube设置BoneSpring演示。

2021-04-08 20:38:39 693

原创 《Unity Magica Cloth从入门到详解》之(2)BoneCloth骨布

我们以Unity-Chan模型为例,其头发具带有骨骼。首先找到要晃动的骨骼,观察其结构在窗口中选中角色右键单击,从菜单中选择“ Magica Bone Cloth”,如下所示。将BoneCloth添加到角色。选中Magica Bone Cloth可以从面板中进行设置。信息中有一个红色图标,是由于未设置数据。这样就完成了碰撞器设置。让我们运行Unity。头发颗粒应该已经与身体碰撞,不再渗透。到此BoneCloth骨布的基本设置完成。

2021-04-08 20:30:25 1748

原创 《Unity Magica Cloth从入门到详解》之(1)基础设置

Magica Cloth是在Unity Job系统+ Burst编译器上运行的高速布料模拟。所以Unity需要添加 “com.unity.burst”: "1.6.6"和 “com.unity.jobs”: "0.70.0-preview.7"俩个Unity Package。为了使MagicaCloth能够正常工作,必须将MagicaPhysicsManager放置在场景中。打开PhysicsManager检查器并根据要执行的项目设置更新时间。基本上,默认设置几乎没有问题,但是有时在性能方面调整。

2021-04-08 20:00:37 3799

原创 程序员天梯排行榜

2.计算机科学各领域之父:AT&T贝尔实验室里那几个开创了计算机世界的研究员,Thompson、里奇、伯纳斯李、Knuth、丘奇、Bjarne Stroustrup、高斯林、Dijkstra、麦卡锡、Kajiya、Linus Torvalds、Ivan Sutherland、罗伯特·卡恩等人。6.程序员创业成功人士,影响某个行业:国内熟知的,求伯君、王江民、王志东、张朝阳、史玉柱、李彦宏、雷军、周鸿祎、马化腾、丁磊、王兴、张一鸣、黄峥等。------- 此为普通程序员努力上限分割线---------

2021-02-19 21:17:12 343

原创 Unity UGUI性能优化关键点总结

Batch:一次渲染batch(批次)包括:提交VBO(Vertex Buffer Object顶点缓存对象),提交IBO(Index Buffer Object顶点索引对象),提交shader,设置好硬件渲染状态,设置好光源属性等(纹理可以被缓存并多帧复用,严格来说不包括在一个batch内)。SetPass Call:代表渲染状态切换,如果一个batch和另一个batch使用的不是同种材质或同一个材质的不同pass,那么就要触发一次set pass call来重新设定渲染状态。

2021-02-07 20:47:45 314

原创 简要归纳UE5的Nanite虚拟多边形技术原理

众所周知,现代GPU有两条流水线,一条处理三角形网格,一条处理纹理图像。相比于图像,三角形网格的组合结构是不规则的,因此无法直接用硬件表达和随机存取,需要复杂的算法来动态构建。UE5 Nanite的方法:几何图像: 就是直接对网格结构进行曲面参数化,即RGB表示顶点位置,像素排列表示顶点组成三角形的关系,生成几何图像。虚拟纹理技术: 将所有的纹理融合成一张巨大的纹理图像,覆盖整个游戏世界,用四叉树管理每一个分割成同样大小的page,动态加载当前渲染场景所需要的page。...

2021-02-07 19:35:23 4091

原创 Unity C#序列化和反序列化(.bin .xml .json)

在Unity中,在检视面板中可以看到的,就是被成功序列化了的参数。Json的序列化UnityPackge里有很多现成的插件"com.unity.modules.jsonserialize": “1.0.0”,,这是Unity官方推荐的Newtonsoft.Json,相对功能要更加的强大。其中const,static是静态的,属于类而非对象,无法序列化。它包含两个公有变量id和name,一个含参的构造函数和一个默认构造函数(二进制不需要,XML必须), 一个用于显示的输出函数。

2021-02-07 17:29:02 805

Danamic Bone&MagicaCloth1.12

更新版本的MagicaCloth1.12,适用于unity2022等版本。MagicaCloth依赖 "com.unity.burst": "1.8.3"和"com.unity.jobs": "0.70.0-preview.7"

2023-02-21

Unity MotionMatching 2.2.15

Unity MotionMatching 也就是Motion Matching for Unity 2.2.15需要Unity2021.3.23以上版本 只可用于学习研究,商业用途请购买正版插件。

2022-06-06

Cxihu_DOTS_BuiltIn.zip

DOTS_ECS_Deme

2021-10-18

Danamic Bone和MagicaCloth1.10.unitypackage

2021最新版DanamicBone&MagicaCloth Unity需要添加Packges "com.unity.burst": "1.4.7","com.unity.jobs": "0.8.0-preview.23",

2021-04-01

Protobuf3CSharpForMac.zip

此工具为Mac下的Protobuf3批量转C#工具,下载后将需要转换的Protobuf3放入文件夹,在该目录下运行终端 命令参考readme

2020-02-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除