我有一个用于在 2D 空间游戏中创建“星云”的粒子系统。结果看起来相当不错,除了我正在做的事情存在渲染/着色器问题。在游戏中,我看到了一个相当难看的分层混合,几乎就像我在看 6 位颜色渲染(为了清晰而夸张)。
在统一的场景视图中查看它,它非常流畅(少数“伪影”是用于粒子的源图像的一部分。它看起来与我希望的完全一样):
有没有办法解决这个问题?为了好奇和后代的缘故,为什么会发生这种情况?
几个细节:
它是 Unity 2018.1.0f2、Windows 10、GTX 1050 ti。该图像中有多个粒子重叠(我猜大约 10 个?),一个粒子系统。着色器是统一提供的粒子/添加剂,我使用粒子/添加剂(软)、粒子/Alpha 混合以及我尝试过的许多其他内置透明着色器得到相同的结果。材质的 alpha = 77,粒子系统添加 alpha = 16(我相信这是累积的)。基本图像是白色和透明的。Alpha 通道定义了实际的形状。颜色与粒子系统一起添加(导致每个粒子具有不同的颜色,即使它们都使用相同的基础图像)。
编辑:
做了一些更多的实验,问题出现在游戏(构建或编辑器)中,如果不是游戏测试,也会出现在场景视图中。我尝试减少粒子数;即使是单个粒子(没有其他重叠的透明对象/粒子)仍然存在问题。我还尝试将所有透明度控制放在粒子系统或材质中,并尝试将两者都设置为 255 alpha 并使用亮度来控制不透明度(它是一个附加着色器),但仍然没有任何改进。
我确实弄清楚了为什么相机和场景视图呈现不同的原因。相机已选中“允许 HDR”。取消选中后,场景视图看起来与相机的渲染相同(太糟糕了,它没有走另一条路)。也许进一步研究 HDR 会产生答案……