我正在编写一个粒子系统,并且想找到一种技巧来实现正确的alpha混合而不对粒子进行排序,因为:
- 每个粒子都是单个网格中的点精灵,我无法使用场景图功能对透明节点进行排序。但是,系统节点应正确排序。
- 根据初始速度,加速度和时间在着色器上计算粒子位置。为了对系统进行排序,我必须在CPU上执行所有这些计算,这是我要避免的事情。
- 根据相机位置对数百个粒子进行排序,并将每个帧的接缝上传到GPU上,以减轻操作负担。
Alpha测试似乎在GLES 2.0上足够快,并且对于非透明但“蒙版”的纹理效果很好。但是,对于半透明的粒子来说还不够。
您将如何处理?
对它们进行正确分类绝对有多重要?您实际上已经使用香草混合看到任何(重要的)人工痕迹了吗?
—
克里斯(ChrisE)2011年
一个粒子可以与背景混合,而不是与另一个粒子混合,然后点精灵的“矩形”本质非常明显。Alpha测试在这里有帮助,但是当Alpha值降低到很低但不足以丢弃片段时,伪影仍然很明显。
—
Stepan Zastupov 2011年
渲染粒子时,您是否尝试过禁用深度写入(启用深度测试)?那应该使不正确的排序不那么明显。
—
亚当
经过一些实验,我发现在大多数情况下禁用深度写入是最好的解决方案。
—
Stepan Zastupov 2011年