【C++游戏引擎开发】第21篇:基于物理渲染(PBR)——统计学解构材质与光影
引言
宏观现象:人眼观察到的材质表面特性(如金属的高光锐利、石膏的漫反射柔和),本质上是微观结构对光线的统计平均结果。
微观真相:任何看似平整的表面在放大后都呈现崎岖的微观几何。每个微表面(Microfacet)均为完美镜面,但大量微表面以不同朝向分布时,宏观上会表现出复杂的光学特性。
核心假设:
- 微表面高度大于光波长(避免衍射效应)
- 微表面间存在自遮挡(Self-Shadowing)
- 法线分布具有统计规律性
一、法线分布函数(NDF)
1.1 NDF的物理意义
NDF D ( ω h ) D(\omega_h) D(ωh) 描述表面法线在宏观方向 ω h \omega_h ωh上的概率密度,满足归一化条件:
∫ Ω D ( ω h ) ( ω h ⋅ n ) d ω h = 1 \int_{\Omega} D(\omega_h)(\omega_h \cdot n) \, d\omega_h = 1 ∫ΩD(ωh)(ωh⋅n)dωh=1
其中 n n n为宏观法线, ( ω h ⋅ n ) (\omega_h \cdot n) (ωh⋅n)项修正立体角投影。
1.2 GGX/Trowbridge-Reitz分布:长尾现象的胜利
相较于Beckmann模型,GGX在粗糙表面高光边缘呈现自然拖尾,其数学形式为:
D G G X ( ω h ) = α 2 π [ ( ω h ⋅ n ) 2 ( α 2 − 1 ) + 1 ] 2 D_{GGX}(\omega_h) = \frac{\alpha^2}{\pi [(\omega_h \cdot n)^2 (\alpha^2 - 1) + 1]^2} DGGX(ωh)=π[(ωh⋅n)2(α2−1)+1]2α2
参数工程:
- 粗糙度 α = r o u g h n e s s 2 \alpha = roughness^2 α=roughness2
- 当 α →