我已经做了一个程序,统一采样环境地图和计算照明使用GGX。
我已经做了一个小例子,重现了我正在面对的问题。您可以在线查看:简写/tvzGY
该算法的工作原理如下:
V,从表面指向摄像机的单位向量。FPosition是片段在相机空间中的位置,所以我们可以用它来计算V。L。这些样本是在正常N方向的半球内采集的。L来示例环境映射,但为了简单起见,在提供的示例中,我只是假设一个复杂的白色环境(问题无论如何都会发生)。我正在使用我在这个站点中找到的GGX公式:http://graphicrants.blogspot.com/2013/08/specular-brdf-reference.html
我的问题是看上去不太对劲。如果你打开链接,你会看到这个。

粗糙度= 0.1,金属= 1.0,numSamples = 10。
在右上角,切换到球体。你就会看到这个。

你看这些亮点,它们的数量与样品的数量相关。也许这是有道理的。但是当我把样本数增加到100个时,我们得到了这个。

有更多的斑点,但他们也是较小和模糊。我想我一定是做错了什么,因为它看起来不像金属。还是因为取样的均匀性?即使每像素有1000个样本,在我看来也不太对。
发布于 2020-11-11 23:10:13
你是如何随机抽取样本的?在我看来,也许图像中所有像素的随机值都是相同的,这就解释了为什么当你有10个样本时,你会看到10个相干的亮点。
每个像素的样本应该被重新随机化。这应该会产生一个嘈杂的结果,一个模糊的亮点,而不是10个(或许多)相干的亮点。
https://computergraphics.stackexchange.com/questions/10390
复制相似问题