我有两个THREE.ParticleSystem系统,其粒子具有alpha透明度的纹理,一个使用AdditiveBlending(火焰纹理),另一个使用NormalBlending(烟雾纹理),他们使用简单的自定义顶点和片段着色器。
每个粒子系统都有“sortParticles = true”并且它们独立地完美地工作,但是当两种类型的粒子重叠时,第一个粒子系统(火焰纹理)具有类似的透明度深度误差,通常与“sortParticles = false”相关联(参见图像)。
似乎第一个粒子系统没有正确渲染,可能是因为这些粒子都被吸引到其他粒子之前,即使来自另一个系统的粒子在它们后面,也会产生透明度。
也许一种可能的解决方案是sortParticles以某种方式对两个系统进行排序。这有可能吗?是否存在某种“全局粒子排序标志”或强制sortParticles跨越两个系统的方式?
另一个更复杂的解决方案可能是使用单个排序的粒子系统,但不知何故改变每个粒子的纹理和混合模式。这可能吗?我知道如何在着色器中完成此操作,但我担心因性能原因而添加条件。
对任何和所有解决方案开放。感谢您的任何建议,想法或帮助!