在许多重叠的粒子中可见的渐变/分层混合

时间:2018-07-09 03:58:17

标签: unity3d rendering shader alphablending hdr

我有一个粒子系统,用于在2D太空游戏中创建“星云”。结果看起来不错,除了我所做的工作存在渲染/着色器问题。在游戏中,我看到了一个非常丑陋的分层混合,几乎就像我在看6位色彩渲染(为清晰起见而夸大了)。

In-game with ugly tiered blending

在unity的场景视图中查看它,它很好且平滑(少数“伪像”是用于粒子的源图像的一部分。它看起来完全符合我的期望):

Smooth blending in scene view

是否可以解决此问题?出于好奇和后代的原因,为什么会发生这种情况?

一些细节:

这是Unity 2018.1.0f2,Windows 10,GTX 1050 ti。该图像中有多个粒子重叠(我猜大概是10个左右),一个粒子系统。该着色器是unity提供的“粒子/添加剂”,并且使用“粒子/添加剂(软)”,“粒子/ Alpha混合”以及我尝试过的其他许多内置透明着色器,可以获得相同的结果。该材料的alpha = 77,粒子系统的alpha = 16(我相信是累积的)。基本图像为白色且透明。 Alpha通道定义了实际形状。颜色会随粒子系统添加(即使每个粒子都使用相同的基本图像,也会导致每个粒子具有不同的颜色)。

编辑:

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

我确实弄清楚了为什么相机和场景视图呈现不同的原因。相机已选中“允许HDR”。取消选中该选项后,场景视图看起来与摄影机的渲染相同(可惜的是它没有反方向走)。也许进一步研究HDR会产生答案...

1 个答案:

答案 0 :(得分: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值存在很大差异,但是即使放大到我可以在屏幕上容纳四个像素的位置,我也看不到渐变中的任何像素轮廓,但是在渐变的边缘非常明显。我的眼睛有些时髦,或者屏幕的色彩再现不佳。我已经在三个屏幕,一台便宜的HP笔记本电脑,一台27英寸的Acer显示器和一个MackBook Pro上进行了测试,所有这些都具有相同的效果。

还需要注意的是,即使在较亮的图像上也可以看到效果,但是效果却不太明显。我认为统一与这种效果绝对没有关系,而更多的是硬件问题(或类似,视频驱动程序中的伽玛设置)。

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