type
status
date
slug
summary
tags
category
icon
password
‣
PBR物理与数学基础
本文档基于SIGGRAPH 2014 物理基础渲染课程内容,结合实践经验整理而成。主要介绍PBR渲染中的物理和数学基础知识,以及实现考虑和最佳实践。
一、物理基础
1.1 电磁理论基础
光是电磁波的一种形式,其传播和相互作用遵循电磁理论的基本原理。在图形学中,我们主要关注可见光谱范围内的电磁波(波长约380-750nm)。
相关资源:
1.2 辐射度量学
辐射度量学是研究电磁辐射能量传输的科学。在PBR中,我们主要关注:
- 辐射通量(Radiant Flux):单位时间内传输的能量
- 辐射度(Radiance):每单位立体角、每单位投影面积的辐射通量
- 辐照度(Irradiance):单位面积上接收到的辐射通量
相关资源:
1.3 材质-光线交互
当光线与材质表面发生交互时,会出现以下现象:
- 反射(Reflection):光线在表面发生反射,包括镜面反射和漫反射
- 折射(Refraction):光线进入材质内部时发生方向改变
- 散射(Scattering):光线在材质内部发生多次反射和折射
- 吸收(Absorption):光线能量被材质吸收转化为其他形式
相关资源:
二、数学模型
2.1 BRDF模型
BRDF(双向反射分布函数)是描述材质表面光线反射特性的数学模型。它定义了入射光线和出射光线之间的能量关系。
主要特点:
- 能量守恒:反射的能量不能超过入射能量
- 互易性:入射和出射方向可以互换
- 非负性:反射的能量始终为非负值
常用的BRDF模型包括:
- Cook-Torrance模型:基于微面理论,适用于大多数PBR渲染
- Oren-Nayar模型:适用于粗糙表面的漫反射
相关资源:
2.2 微面理论
微面理论将材质表面视为由大量微小镜面(microfacets)组成。每个微面都是一个完美的镜面反射体。
主要参数:
- 法线分布函数(NDF):描述微面法线的分布情况
- 几何遗挡函数(G):描述微面之间的遗挡情况
- Fresnel方程:描述光线在不同入射角度下的反射率
相关资源:
三、实现考虑
3.1 材质参数
PBR材质系统中的关键参数:
- 基础色(Base Color):材质的基本反射颜色
- 金属度(Metallic):控制材质的金属/非金属特性
- 粗糙度(Roughness):控制微面的分布情况
参数范围和建议值:
- 基础色:sRGB空间,金属材质通常使用F0值
- 金属度:0-1,纯金属使用1,非金属使用0
- 粗糙度:0-1,0为完全光滑,1为完全粗糙
相关资源:
3.2 照明计算
PBR照明计算的主要步骤:
- 直接光照:计算来自光源的直接照明
- 间接光照:使用IBL(基于图像的照明)或光线追踪
- 能量守恒:确保最终渲染结果符合物理规律
优化策略:
- 预计算和缓存光照结果
- 使用重要性采样减少计算量
相关资源:
四、实践指南
4.1 Shader实现
实现PBR Shader的关键步骤:
- 输入参数的正确处理(gamma校正、数值范围)
- 实现各种BRDF函数(Cook-Torrance、Oren-Nayar)
- 光照计算的正确性(直接光、间接光)
代码示例和资源:
4.2 性能优化
主要优化方向:
- 着色器计算优化:减少分支、使用LUT、预计算
- 纹理和采样优化:压缩、缓存、mipmap
- 渲染策略:分层渲染、延迟渲染
相关资源:
4.3 调试与测试
常用调试方法:
- 可视化调试:显示法线、粗糙度、金属度等
- 性能分析:GPU Profiler、Frame Debugger
- 单元测试:验证能量守恒、参数范围
相关资源:
- Author:Aaron
- URL:alicia-note.xin/article/example-1
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!