UE4對此做了進一步簡化,假定V和N同向,從而使最終結果變為Roughness的單變數函式.至此,UE4再使紋理Mipmap層級和Roughness一一對應,把確定的Roughness的入射光總和編碼到Cubemap對應的Mip層級中即可
#endif}//間接高光 曲線擬合 放棄LUT取樣而使用曲線擬合half3 IndirSpeFactor(half roughness,half smoothness,half3 BRDFspe,half3 F0,half NdotV){
所以如果做roughness到mipmap level換算的時候,max mip用的是11就會發現indirect specular糊的特別快,應該仍然用6
注:幾何函式G(x)的光學涵義注:白色表示沒有微平面的陰影,黑色表示微平面徹底被遮蔽在UE4老的實現程式碼中,UE4將G(l,v)項和合併為Vis(l, v),Schlick模型的實現程式碼如下:floatVis_Schlick(float
直接光的漫反射已經做完了~~~~~~~~~~直接光源貢獻這裡我們直接把鏡面反射和漫反射相加float3 lightContribution(float NdotH,float NdotL,float NdotV,float HdotL,fl
見下圖材質面板,除了常規的顏色紋理和法線紋理外,主紋理的A通道塞了Metalic,同時這個通道也能作為SkinMask使用,比如面板上的疤痕、塗料等沒有SSS效果的區域,SSSTexture中則放置了Smoothness、Thickness
UE4的PBR使用 Directional light BRDF + Imaga-based lightingBRDF: Diffuse BRDF + Specular BRDFDiffuse BRDF: 使用了Lambert,因為在dif
這個公式裡其實唯一不太明白的地方可能就是D、F、G這幾個部分,我們來介紹一下:Normal Distribution Function近似的描述了物體表面微表面與blin-phong光照模型裡的half vector的對齊情況,這個數值會受