gpt4 book ai didi

c++ - 粒子系统是否应该在几何着色器中完全更新

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:46 24 4
gpt4 key购买 nike

粒子系统应该在几何着色器中完全更新,还是应该向几何着色器传递位置和生命等更新数据。目前我更新了几何中的所有内容,但我不确定这是否是最好的主意,以防 C++ 中需要某些数据。

最佳答案

着色器中的几乎所有内容都是可能的(特别是如果您要使用 SM4+)。如果你想要任何类型的市场渗透,我不建议在 SM3 上做任何事情。我仍然很遗憾我们没有为我们的最新游戏提供 SM2 后备,因为相当多的人仍在使用旧的 SM2 卡。

更多关于这个问题。您可以使用 RTT 而永远不要往返主内存(这太慢了,尽量减少从图形内存到主内存的传输),但不利的一面是您需要使用一些相当复杂的技巧来计算 AABB (你会想要在 CPU 方面)如果你使用纯 GPU。

相反,我们做所有需要在 CPU 端改变粒子状态的事情。然后我们有一个更新到 GPU 的数据的紧密内存表示。顶点着色器相当多(但这完全没问题,在顶点着色器中尽可能多地做!),它提取粒子的这种压缩表示,对其进行转换,并将未压缩的数据传递给像素着色器。这里的一个重要观察是,您可以而且应该按顶点和按粒子数据进行拆分。这意味着使用实例化(这只是一种说法:使用分频器)。我们用法线 + 围绕该法线的旋转来表示粒子旋转。

在粒子 CPU 端进行状态更改的另一个原因是,复合行为 CPU 端要容易得多。任何至少一半体面的粒子系统都需要相当多的旋钮才能产生有趣的粒子效果。

编辑:如果你有任何类似 Particle::Update 的东西不能被内联,你就失败了,最小化每个粒子函数调用,尤其是虚拟函数调用,并保持粒子的内存表示紧密打包!

关于c++ - 粒子系统是否应该在几何着色器中完全更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com