【C++游戏引擎开发】第22篇:基于物理渲染(PBR)——Cook-Torrance BRDF的数学解剖

发布于:2025-05-01 ⋅ 阅读:(13) ⋅ 点赞:(0)

BRDF(Bidirectional Reflectance Distribution Function),它定义了从某个入射方向来的光线在特定出射方向上的反射比例。简单来说,就是当光线从一个方向打到物体表面,它会以怎样的方式反射到另一个方向。


一、菲涅尔效应的电磁学基础

1.1 麦克斯韦边界条件

当平面电磁波到达介质界面时,反射率由菲涅尔方程决定。对于非偏振光的简化形式为:

F ( θ i ) = 1 2 ( n 2 cos ⁡ θ i − n 1 cos ⁡ θ t n 2 cos ⁡ θ i + n 1 cos ⁡ θ t ) 2 + 1 2 ( n 1 cos ⁡ θ t − n 2 cos ⁡ θ i n 1 cos ⁡ θ t + n 2 cos ⁡ θ i ) 2 F(\theta_i) = \frac{1}{2} \left( \frac{n_2 \cos\theta_i - n_1 \cos\theta_t}{n_2 \cos\theta_i + n_1 \cos\theta_t} \right)^2 + \frac{1}{2} \left( \frac{n_1 \cos\theta_t - n_2 \cos\theta_i}{n_1 \cos\theta_t + n_2 \cos\theta_i} \right)^2 F(θi)=21(n2cosθi+n1cosθtn2cosθin1cosθt)2+21(n1cosθt+n2cosθin1cosθtn2cosθi)2

其中折射角 θ t \theta_t θt 由斯涅尔定律约束: n 1 sin ⁡ θ i = n 2 sin ⁡ θ t n_1 \sin\theta_i = n_2 \sin\theta_t n1sinθi=n2sinθt

1.2 Schlick近似原理

通过观察 F ( θ ) F(\theta) F(θ) 曲线呈现的类指数增长特性,采用五次多项式拟合镜面反射率:

F ( θ ) ≈ F 0 + ( 1 − F 0 ) ( 1 − cos ⁡ θ ) 5 F(\theta) \approx F_0 + (1-F_0)(1 - \cos\theta)^5 F(θ)F0+(1F0)(1cosθ)5

其中 F 0 F_0 F0 表示法线入射时的反射率( θ = 0 \theta=0 θ=0)。对于金属材质, F 0 F_0 F0 与复折射率 η \eta η k k k 的关系为:

F 0 = ( ( η − 1 ) 2 + k 2 ( η + 1 ) 2 + k 2 ) F_0 = \left( \frac{(\eta-1)^2 + k^2}{(\eta+1)^2 + k^2} \right) F0=((η+1)2+k2(η1)2+k2)


二、法线分布函数的概率解释

2.1 微表面统计模型

设宏观表面面积 A A A,微表面总投影面积满足:

∫ Ω D ( ω h ) cos ⁡ θ h   d ω h = 1 \int_{\Omega} D(\omega_h) \cos\theta_h \, d\omega_h = 1 ΩD(ωh)cosθhdωh=1

其中 D ( ω h ) D(\omega_h)


网站公告

今日签到

点亮在社区的每一天
去签到