正态分布函数中潜在活跃微面的浓度

Clu*_*ead 6 opengl graphics phong

我正在尝试了解 Cook-Torrance Microfacet 模型,目前我坚持使用正态分布函数D(Beckmann、Blinn-Phong 或 GGX)。一些在线资源声称D是与表面法线N对齐的微面法线M的分数,D是位于 [0,1] 之间的分数。1 , 2

然而,经过一些研究,我了解到 D 是MN对齐的浓度。3 , 4

这个浓度值(经过一些测试可以达到 32 甚至更高)对我来说有点不祥。

从这样一个非规范化的值中究竟能读出什么?

它可以与对齐的MN的分数有关吗?

还是我忽略了一些简单的东西?

Kai*_*ack 3

为了进一步阐述我上面的评论作为这个问题的潜在答案:

从某种意义上说,您是对的,NDF 给出了微表面法线M与 精确对齐的统计概率N(其中确切的意思是:相对于N和周围的无穷小立体角M)。

因此,NDF 是一个单位为 的分布函数(更广泛地说是“广义函数”)one over steradians。这意味着,当您将函数的值与立体角相乘时,您会得到一个无单位的分数值。这就是集成发挥作用的地方。

因为,NDF 最终用于在渲染方程中确定微面在 的微分立体角内反射的光的比例M,其中M是另外两个向量之间的半向​​量V_o,并且V_i其中这两个向量之一矢量被定义为接收差分表面的“出射方向”,另一个被定义为“入射光方向”。我们将使用w_o= 传出和w_i= 传入方向,但由于互惠性,这实际上并不重要。

当我们求解渲染方程时,我们必须对我们想要着色的表面点的整个半球(即我们想要沿着出射方向计算其辐射率w_o)进行积分,以考虑可能从该表面点反射的所有光线沿着出去的方向w_o。为此,我们必须知道该点的“辐照度”。为了得到这个,我们评估所有可能的入射光方向的 BRDF w_i,并对它们的贡献求和并平均。

w_i如果我们实际上对给定方向的所有无限多个方向进行采样w_o,并向每个这样的方向询问 NDF,并对 NDF 的余弦加权结果进行平均,则结果将始终是精确的1.0,因为如果我们只将 NDF 视为BRDF,当从表面反射时,所有出射光都w_o必须来自某个地方。

由于亥姆霍兹互易性,我们可以反过来说:当固定方向时w_i(因此只考虑单个方向的光进来)并对所有可能的出射方向进行积分w_o,并再次评估和平均余弦加权NDF,结果将再次准确1.0。因为,当我们再次只考虑 BRDF 中的 NDF 时,入射光总是会反射到某个地方而不会丢失。

那么,写完所有这些之后,NDF 函数的单个样本现在实际上意味着什么?简而言之:这意味着您不对所有微分立体角进行积分并对结果进行平均,而是仅对单个方向采取单个样本,并将其声明为积分的结果(仅使用单个样本计算)。所以你基本上用单个样本计算了黎曼和。

或者换句话说:简单地在单个位置对 NDF 进行采样并不具有合理的物理意义/结果。我希望这能澄清一些未知的事情。

这实际上是我第一个认真的 StackOverflow 答案,我知道我将来肯定可以改进写这些答案!谢谢!:)