瀏覽代碼

feat: 添加 GPU 模拟介绍

liucong5 2 年之前
父節點
當前提交
db2696bb37
共有 7 個文件被更改,包括 42 次插入0 次删除
  1. 二進制
      UE5/Niagara/Gif/_004.gif
  2. 二進制
      UE5/Niagara/Gif/_005.gif
  3. 二進制
      UE5/Niagara/Image/027.png
  4. 二進制
      UE5/Niagara/Image/028.png
  5. 二進制
      UE5/Niagara/Image/029.png
  6. 二進制
      UE5/Niagara/Image/030.png
  7. 42 0
      UE5/Niagara/README.md

二進制
UE5/Niagara/Gif/_004.gif


二進制
UE5/Niagara/Gif/_005.gif


二進制
UE5/Niagara/Image/027.png


二進制
UE5/Niagara/Image/028.png


二進制
UE5/Niagara/Image/029.png


二進制
UE5/Niagara/Image/030.png


+ 42 - 0
UE5/Niagara/README.md

@@ -206,3 +206,45 @@ Niagara 系统中 `Emitter Update` 是发射器组的一个阶段,它会在发
 
 ![](Image/026.png)
 
+### GPU 发射器
+
+| 模拟方式 | 作用 | 优点 | 缺点 |
+| --- | --- | --- | --- |
+| CPU | CPU 模拟是指在 CPU 上执行粒子模拟的计算,然后将结果传递给 GPU 进行渲染 | CPU 模拟的优势是可以访问更多的数据源,比如角色的骨骼信息、碰撞检测、物理系统等 | CPU 模拟的缺点是性能较低,因为 CPU 的**并行能力**有限,而且 CPU 和 GPU 之间的数据传输会造成额外的开销 | 
+| GPU | GPU 模拟是指在 GPU 上执行粒子模拟的计算和渲染,几乎不需要 CPU 的参与 | GPU 模拟的优势是性能较高,因为 GPU 的**并行能力**强,而且减少了 CPU 和 GPU 之间的数据传输 | GPU 模拟的缺点是数据访问受限,比如无法直接获取角色的骨骼信息、碰撞检测、物理系统等 |
+
+大多数 Niagara 功能在 CPU 和 GPU 下都可以工作,但是有些功能的行为不同,比如 GPU 计算碰撞有更高的性能但是不太精准;某些渲染器,例如 `light renderer` 和 `ribbon renderer` 目前只能在 CPU 上处理
+
+需要注意的是只有 `Particle` 脚本,也就是绿色部分在 GPU 上运行。 `System` 和 `Emitter` 脚本仅在 CPU 上执行,所以 `System` 和 `Emitter` 无法采样纹理或者查询场景距离场
+
+![](Image/027.png)
+
+使用 GPU 模拟的时候需要考虑设置 `Emitter` 的 `Fixed bounds`
+
+`Fixed Bounds` 是一个用来限定粒子效果范围的矩形框,它由最小值和最大值两个三维向量定义。`Fixed Bounds` 的作用是告诉虚幻引擎,粒子效果不会超出这个矩形框,从而优化渲染性能和避免剔除错误
+
+GPU 模拟需要设置 `Fixed Bounds` 的原因是,由于粒子模拟是在 GPU 上完成的,系统无法获知效果的范围有多大。如果不设置 `Fixed Bounds`,系统会使用默认的边界,可能会导致粒子效果被错误地剔除或者不可见。因此,设置 `Fixed Bounds` 是 GPU 模拟的一个重要步骤,它可以保证粒子效果的正确显示和性能优化
+
+除了 Niagara 之外,`Mesh` 也存在这样的包围盒,需要通过包围盒是否在视界中来判断是否需要渲染
+
+![](Image/028.png)
+
+通过设置可以显示出 Mesh 的边界,通过设置 `Mesh` 的 `Bounds Scale` 可以设置边界大小。如果角色移动速度过快,导致 Mesh 的包围盒与视口来不及计算会导致物体突然出现的 Bug,此时设置 `Bounds Scale` 更大即可
+
+-----------
+
+**如何切换 GPU 模拟 和 CPU 模拟**
+
+![](Image/029.png)
+
+![](Image/030.png)
+
+需要关注一个配置那就是: `Determinism`,这个参数可以配置**真随机**和**伪随机**,值为 `False` 表示真随机
+
+| 随机 | 作用 | 效果 |
+| --- | --- | --- |
+| 真随机 | 无法预测的随机事件或数值,它们不受任何规律或算法的影响 | ![](Gif/_004.gif) |
+| 伪随机 | 看似随机实质固定的周期性序列,它们是由算法或函数根据一个初始值(种子)来生成的,伪随机的优点是可以快速、高效、**可重复地**产生随机数 | ![](Gif/_005.gif) |
+
+从上面的表现来过,伪随机每次得到的表现效果相同,真随机每次表现都不相同
+