最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • PBR GGX Specular G 几何函数

    正文概述 掘金(纳铭)   2021-08-12   1141

    几何函数

    • 几何函数从统计学上近似的求得了微平面间相互遮蔽的比率,这种相互遮蔽会损耗光线的能量。
    • 几何函数是一个值域为[0.0, 1.0]的乘数,其中白色或者说1.0表示没有微平面阴影,而黑色或者说0.0则表示微平面彻底被遮蔽。
    • 几何项的影响可以间接地看作其对方向反射率(directional albedo)的影响
    • 大多数材质的方向反射率(directional albedo)对于前70度是相对平坦的,并且切线入射处的反射率与表面粗糙度密切相关。
    • 几何项的选择会对反射率产生影响,反过来又会对表面外观产生影响。
    • 完全省略G项和1/cosθl cosθv项的模型,被称为“No G”模型,会导致在掠射角处过暗的响应。

    PBR GGX  Specular G 几何函数 图 几种镜面反射几何模型的反射率图示。 所有图中都使用相同的D(GGX / TR)项和F项。 左图:光滑表面(α= 0.02); 右图:粗糙表面(α= 0.5)。 其中,“No G”模型已去除G和1/cosθl cosθv项的计算。

    示意图

    PBR GGX  Specular G 几何函数

    公式

    公式1

    • PBR GGX  Specular G 几何函数
      • G函数 PBR GGX  Specular G 几何函数
      • K变量
        • 直接光照PBR GGX  Specular G 几何函数
        • IBL环境光PBR GGX  Specular G 几何函数
    • 几何函数GLSL
    float GeometrySchlickGGX(float NdotV, float k)
    {
        float nom   = NdotV;
        float denom = NdotV * (1.0 - k) + k;
    
        return nom / denom;
    }
    
    float GeometrySmith(vec3 N, vec3 V, vec3 L, float k)
    {
        float NdotV = max(dot(N, V), 0.0);
        float NdotL = max(dot(N, L), 0.0);
        float ggx1 = GeometrySchlickGGX(NdotV, k);
        float ggx2 = GeometrySchlickGGX(NdotL, k);
    
        return ggx1 * ggx2;
    }
    

    公式2

    PBR GGX  Specular G 几何函数

    • 将粗糙度参数进行重映射以减少光泽表面的极端增益,即将α 从[0, 1]重映射到[0.5, 1],α的值为(0.5 + roughness/2)^2。从而使几何项的粗糙度变化更加平滑
    // Smith GGX G项,各项同性版本
    float smithG_GGX(float NdotV, float alphaG)
    {
        float a = alphaG * alphaG;
        float b = NdotV * NdotV;
        return 1 / (NdotV + sqrt(a + b - a * b));
    }
    

    公式3

    // Smith GGX G项,各项异性版本
    // Derived G function for GGX
    float smithG_GGX_aniso(float dotVN, float dotVX, float dotVY, float ax, float ay)
    {
        return 1.0 / (dotVN + sqrt(pow(dotVX * ax, 2.0) + pow(dotVY * ay, 2.0) + pow(dotVN, 2.0)));
    }
    

    公式4

    // GGX清漆几何项
    // G GGX function for clearcoat
    float G_GGX(float dotVN, float alphag)
    {
        float a = alphag * alphag;
        float b = dotVN * dotVN;
        return 1.0 / (dotVN + sqrt(a + b - a * b));
    }
    
    • 对于对清漆层进行处理的次级波瓣(secondary lobe),Disney没有使用Smith G推导,而是直接使用固定粗糙度为0.25的GGX的 G项,便可以得到合理且很好的视觉效果。


    起源地下载网 » PBR GGX Specular G 几何函数

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元