PBR Specular D 法线分布 NDF

PBR Specular D 法线分布 NDF法线分布项(Specular D):GTR 在流行的模型中,GGX拥有最长的尾部。而GGX其实与Blinn (1977)推崇的Trowbridge-Reitz(TR)(1975)分布等同。然而,对于许

法线分布项(Specular D):GTR

  • D为微平面分布函数,主要负责镜面反射波峰(specular peak)的形状。(反射波峰的形状)
  • 正态分布函数D,或者说镜面分布,从统计学上近似的表示了与某些(中间)向量h取向一致的微平面的比率。 image.png
  • Disney Principled BRDF中使用了两个固定的镜面反射波瓣(specular lobe),且都使用GTR模型,可以总结如下:
    • 主波瓣(primary lobe)
      • 使用γ= 2的GTR(即GGX分布)
      • 代表基础底层材质(Base Material)的反射
      • 可为各项异性(anisotropic) 或各项同性(isotropic)的金属或非金属
    • 次级波瓣(secondary lobe)
      • 使用γ= 1的GTR(即Berry分布)
      • 代表基础材质上的清漆层(ClearCoat Layer)的反射
      • 一般为各项同性(isotropic)的非金属材质,即清漆层(ClearCoat Layer)
  • GGX比其他分布具有更长的尾部,但仍然无法捕捉到铬金属(chrome)样本的闪亮亮点。
  • chrome 、GGX和Beckmann分布的点光源响应 PBR Specular D 法线分布 NDF image.png

公式

公式1

  • image.png
    • a表示表面粗糙度
    • h 当成是不同粗糙度参数下,平面法向量和光线方向向量之间的中间向量的话
      • image.png
  • 计算正态分布函数网上代码
float D_GGX_TR(vec3 N, vec3 H, float a)
{
    float a2     = a*a;
    float NdotH  = max(dot(N, H), 0.0);
    float NdotH2 = NdotH*NdotH;

    float nom    = a2;
    float denom  = (NdotH2 * (a2 - 1.0) + 1.0);
    denom        = PI * denom * denom;

    return nom / denom;
}

公式2

  • 以下是γ= 1和γ= 2时GTR分布的Shader实现代码:
// Generalized-Trowbridge-Reitz distribution
float D_GTR1(float alpha, float dotNH)
{
    float a2 = alpha * alpha;
    float cos2th = dotNH * dotNH;
    float den = (1.0 + (a2 - 1.0) * cos2th);

    return (a2 - 1.0) / (PI * log(a2) * den);
}

float D_GTR2(float alpha, float dotNH)
{
    float a2 = alpha * alpha;
    float cos2th = dotNH * dotNH;
    float den = (1.0 + (a2 - 1.0) * cos2th);

    return a2 / (PI * den * den);
}

以及各项异性的版本:

float D_GTR2_aniso(float dotHX, float dotHY, float dotNH, float ax, float ay)
    {
            float deno = dotHX * dotHX / (ax * ax) + dotHY * dotHY / (ay * ay) + dotNH * dotNH;
            return 1.0 / (PI * ax * ay * deno * deno);
    }

今天的文章PBR Specular D 法线分布 NDF分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/16196.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注