0

我有一个用于在 2D 空间游戏中创建“星云”的粒子系统。结果看起来相当不错,除了我正在做的事情存在渲染/着色器问题。在游戏中,我看到了一个相当难看的分层混合,几乎就像我在看 6 位颜色渲染(为了清晰而夸张)。

在游戏中具有丑陋的分层混合

在统一的场景视图中查看它,它非常流畅(少数“伪影”是用于粒子的源图像的一部分。它看起来与我希望的完全一样):

场景视图中的平滑混合

有没有办法解决这个问题?为了好奇和后代的缘故,为什么会发生这种情况?

几个细节:

它是 Unity 2018.1.0f2、Windows 10、GTX 1050 ti。该图像中有多个粒子重叠(我猜大约 10 个?),一个粒子系统。着色器是统一提供的粒子/添加剂,我使用粒子/添加剂(软)、粒子/Alpha 混合以及我尝试过的许多其他内置透明着色器得到相同的结果。材质的 alpha = 77,粒子系统添加 alpha = 16(我相信这是累积的)。基本图像是白色和透明的。Alpha 通道定义了实际的形状。颜色与粒子系统一起添加(导致每个粒子具有不同的颜色,即使它们都使用相同的基础图像)。

编辑:

做了一些更多的实验,问题出现在游戏(构建或编辑器)中,如果不是游戏测试,也会出现在场景视图中。我尝试减少粒子数;即使是单个粒子(没有其他重叠的透明对象/粒子)仍然存在问题。我还尝试将所有透明度控制放在粒子系统或材质中,并尝试将两者都设置为 255 alpha 并使用亮度来控制不透明度(它是一个附加着色器),但仍然没有任何改进。

我确实弄清楚了为什么相机和场景视图呈现不同的原因。相机已选中“允许 HDR”。取消选中后,场景视图看起来与相机的渲染相同(太糟糕了,它没有走另一条路)。也许进一步研究 HDR 会产生答案……

4

1 回答 1

0

好吧,我做了一些实验,我开始认为这实际上是计算机显示器/显卡/颜色配置文件的问题。我在 gimp 中拍摄了图像,放大了可以看到颜色阶梯的部分,并在不同颜色渐变的边缘拍摄了一些颜色样本。这是我拍摄的颜色样本,从浅到深的渐变。

G1 43 48 17 (G2 旁边) G2 43 47 17 (G1 旁边) G2 39 46 16 (G3 旁边) G3 38 45 16 (G2 旁边) G3 36 44 16 (G4 旁边)

您会注意到,渐变中的 RGB 值存在很大差异,但即使放大到我可以在屏幕上放置四个像素的位置,我也看不到渐变中的任何像素轮廓,但这非常明显在渐变的边缘。要么是我的眼睛有些奇怪,要么是屏幕对颜色的再现很差。我已经在三个屏幕上进行了测试,一台廉价的惠普笔记本电脑、一台 27 英寸的 Acer 显示器和一台 MackBook Pro,都具有相同的效果。

还值得注意的是,即使在较亮的图像上也存在这种效果,只是不太明显。我认为统一与这种效果的关系绝对为零,它更多的是硬件问题(或类似视频驱动程序中的伽马设置)。

如果其他人对此主题有更多了解,我仍然会很好奇。

于 2018-08-03T20:19:38.863 回答