无题
Anisotropy
前提:
- 必须定义切线空间
- normalTex 和 anisotropyTex必须使用同一组uv
参数:
- anisotropyStrength(float): [0,1] 表示沿指定方向增加粗糙度,默认方向是切线方向
- anisotropyRoataion(float):
- anisotropyTexture(Texture)
- r & g : anisotropy Dir in [-1,1] tangent, bitangent
- b : anisotropy strength
映射
rg: [0,1] -> [-1,1]
directonalAlphaRoughness = mix(materialAlphaRoughness, 1, anisotropyStrength^2)
其中:
materialAlphaRoughness = materialRoughness^2
- materialRoughness: 设计师填入的粗糙度
- anisotropyStrength: 设计师填入的各向异性强度
- directionalAlphaRoughness: 各向异性计算后需要的粗糙度
D_AnisotropyGGX
定义:
- $a_t$: 沿各向异性方向上的粗糙度, 即directionalAlphaRoughness
- $a_b$: 垂直方向上的粗糙度, 即materialAlphaRoughness
UE4 实现:
// Anisotropic GGX |
glTF实现案例:
float D_GGX_anisotropic(float NdotH, float TdotH, float BdotH, float at, float ab) |
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 VanishingBlog!