上下文:我试图在路径跟踪器中实现基于粗糙表面折射的微面模型的Trowbridge-Reitz (GGX)。我使用数值积分来检查pdfs是否集成到1(我使用jacobian将实心角转换为球面坐标,并将其积分):
指出GGX生成给定的微面正规的概率是

其中m是微面法线,n是宏面法线(为了测试,我把它设为(0,0,1) )。注意,由于所有给定的微面分布(包括GGX )上的正特征函数(X+),如果点积低于零,则不需要在点积上加上D(m) <0。

正如我所预期的,当我集成p_m(m)时,它确实像您所期望的那样集成到1。

当我试图集成采样方向(o)的pdf时,就会出现问题。我应该可以用雅可比。

本文指出,对于理想反射,jacobian为1/(4~(4)o点h_(?))

所以我推断这是真的:

我假设第一个等式为真的原因是:
“让我们假设,对于任何给定的入射方向和输出方向,最多有一个微表面法线分散能量从i到o,我们可以计算这个法线为h(i,o),我们称之为半方向”。以及上面的方程(38)。
我想指出的是,我只是在做理想的反射,所以没有折射。
问题是当我试图将表达式集成到上面的图像中时。它不集成到1或一致的值。
要使分布积分到1,就必须去掉D(m)中的正特征函数。这使得p_m(m)积分到0,而p_o(o)积分到1。
另外,我发现

要计算o,给定h和i导致抽样分布与pdf不匹配(我使用二进制值的a平方检验来验证这一点),而不使用绝对值(这与大多数在线公式相匹配)。请注意,在我的测试中,我在最上面的半球生成I,并指向表面。
发布于 2023-01-10 21:31:56
看起来,集成的边界变化为正m.n,因此您可以删除Heaviside fnc来反映这一点。(实际上,m.n<0的示例不是有效的示例,您根本没有获取它的值,而只是丢弃它。)在代码中,它是实际采样例程之前的if()。
即。就像这样:

我实际上是2(i.m)m-i (Walter是这样写的)。关于Ward BRDF的注释)。
https://computergraphics.stackexchange.com/questions/13198
复制相似问题