我很难用4x4拜耳矩阵实现ordered dithering。
这个想法是,当光线照射到我的物体上时,它会产生抖动的光线。在下面,您可以看到我要抖动的量化区域的图像,该图像是使用以下代码行计算的:
half intensity = 1 - ((0.5 + _ditherArea / 2 - NdotL) / _ditherArea);
这是正确的,看起来像我的意图。
接下来,我尝试使用以下值从拜耳矩阵中获取抖动值:
int x = screenPos.x % (saturate(intensity) *4);
int y = screenPos.y % (saturate(intensity) *4);
然后我为模型应用常规照明(NdotL *衰减*反照率等),产生此输出
请注意,此场景中有两盏灯,即定向灯(橙色)和点灯(白色)。
问题在于我的抖动看起来是随机的,根本没有秩序。如果需要,我可以发布更多代码,但是我认为问题是索引。
不幸的是,我在网络上找到的所有示例都将定位用于Bayer Index查找。即使我已经读了几十篇文章,但我似乎还是做不清楚。