使用照明坡度的有序抖动

时间:2018-07-07 00:16:58

标签: unity3d graphics shader hlsl fragment-shader

我很难用4x4拜耳矩阵实现ordered dithering

这个想法是,当光线照射到我的物体上时,它会产生抖动的光线。在下面,您可以看到我要抖动的量化区域的图像,该图像是使用以下代码行计算的:

half intensity = 1 - ((0.5 + _ditherArea / 2 - NdotL) / _ditherArea);

Dither area

这是正确的,看起来像我的意图。

接下来,我尝试使用以下值从拜耳矩阵中获取抖动值:

int x = screenPos.x % (saturate(intensity) *4);
int y = screenPos.y % (saturate(intensity) *4);

然后我为模型应用常规照明(NdotL *衰减*反照率等),产生此输出

Combined lighting

请注意,此场景中有两盏灯,即定向灯(橙色)和点灯(白色)。

问题在于我的抖动看起来是随机的,根本没有秩序。如果需要,我可以发布更多代码,但是我认为问题是索引。

不幸的是,我在网络上找到的所有示例都将定位用于Bayer Index查找。即使我已经读了几十篇文章,但我似乎还是做不清楚。

0 个答案:

没有答案