在基于物理的渲染(PBR)中,直接光照和间接光照的漫反射(Diffuse)与高光(Specular)部分分别遵循物理规律,并通过能量守恒原则进行组合。以下是它们的详细解释:
一、直接光照(Direct Lighting)
直接光照指光线直接从光源到达物体表面后的反射,包含漫反射和高光反射。
1.1 直接光照的漫反射(Diffuse)
- 物理模型:
- Lambert 公式:Ldiffuse=πalbedo⋅Llight⋅(n⋅l)其中
albedo
是表面反照率,L_light
是光源辐射度,n·l
是法线与光线方向的点积。
使用 Lambert 反射模型 或更精确的 Oren-Nayar 模型(考虑粗糙表面微结构)。
Ldiffuse=albedoπ⋅Llight⋅(n⋅l)
- 能量守恒:
漫反射部分的光强不超过
albedo / π
,确保总反射能量不超过入射光。1.2 直接光照的高光(Specular)
- 物理模型:fspec=4(n⋅v)(n⋅l)D⋅F⋅G
- D(法线分布函数):如 GGX,控制高光形状和粗糙度。
- F(菲涅尔项):如 Schlick 近似,决定反射率随视角的变化。
- G(几何遮蔽):如 Smith 函数,模拟微表面间的遮挡。
基于 微表面理论,使用 Cook-Torrance BRDF,包含三个核心项:
fspec=D⋅F⋅G4(n⋅v)(n⋅l)
- 能量守恒:
高光强度与粗糙度相关,粗糙度越高,高光越分散,峰值越低。
二、间接光照(Indirect Lighting)
间接光照指光线经过多次反射(如环境光、全局光照)后到达物体表面,同样包含漫反射和高光。
2.1 间接光照的漫反射(Diffuse)
- 实现方式:Lindirect-diffuse=albedo⋅Irradiance(n)
- 辐照度贴图:通过卷积环境贴图得到,表示半球内所有方向的平均光照。
使用 辐照度贴图(Irradiance Map) 或 球谐光照(Spherical Harmonics) 预计算环境光的漫反射贡献。
Lindirect-diffuse=albedo⋅Irradiance(n)
- 能量守恒:
漫反射间接光通常较柔和,且与直接光照的漫反射叠加后不超过表面反照率。
2.2 间接光照的高光(Specular)
- 实现方式:L_{\text{indirect-spec}} = \text{PrefilteredEnvMap} \cdot (F \cdot \text{BRDF_LUT})
- 预过滤贴图:根据粗糙度生成不同模糊级别的环境贴图。
- BRDF LUT:存储菲涅尔和几何项的积分结果,加速实时计算。
使用 预过滤环境贴图(Prefiltered Environment Map) 和 BRDF LUT(查找表),基于粗糙度和视角动态采样。
- 菲涅尔效应:
高光在掠射角(grazing angle)时更强,金属材质的高光会保留环境颜色,而非金属的高光接近光源颜色。
三、 能量守恒与材质属性
- 金属与非金属:
- 金属(Metal):漫反射为黑色(
albedo = 0
),高光反射带有颜色。 - 非金属(Dielectric):漫反射为反照率颜色,高光为白色或单色。
- 粗糙度(Roughness):
- 高粗糙度表面:漫反射占比更高,高光更分散。
- 低粗糙度表面:高光更集中,接近镜面反射。
四、 总结
- 直接光照:精确计算光源的漫反射和高光,依赖微表面模型(Cook-Torrance)。
- 间接光照:通过预计算技术(如 IBL)模拟环境光的漫反射和高光,结合 BRDF 积分优化性能。
- 能量守恒:确保漫反射与高光的总能量不超过入射光,材质参数(金属度、粗糙度)控制反射行为。
通过结合直接和间接光照的漫反射与高光,PBR 能够实现高度物理真实的渲染效果。