渲染相关概念

PBR(Physically Based Rendering)
- 微表面理论(Microfacet Theory)
graph TD
A[微表面理论] --> B[宏观表面]
A --> C[微观表面]
B --> D[我们看到的平滑表面]
C --> E[实际的粗糙微表面]
E --> F[镜面反射]
E --> G[漫反射]
F --> H[直接反射光线]
G --> I[多次反射后散射]
微表面理论是PBR的基础,它认为:
- 任何表面在微观尺度下都由微小的镜面构成
- 这些微表面的朝向分布决定了材质的粗糙度
- 粗糙度越高,微表面朝向越混乱,反射越分散
- 粗糙度越低,微表面朝向越一致,反射越集中
- BRDF方程(双向反射分布函数)
PBR中使用的Cook-Torrance BRDF方程:
f(l,v) = kd * f散射 + ks * f镜面 |
其中:
- D (Distribution) - 法线分布函数
- F (Fresnel) - 菲涅尔方程
- G (Geometry) - 几何遮蔽函数
- kd - 漫反射系数
- ks - 镜面反射系数
- n - 法线向量
- v - 视线向量
- l - 光线向量
- 各项函数详解
a) **法线分布函数(D)**:
float DistributionGGX(vec3 N, vec3 H, float roughness) |
- 描述微表面法线的统计分布
- 粗糙度越高,分布越分散
- 粗糙度越低,分布越集中
b) **菲涅尔方程(F)**:
vec3 fresnelSchlick(float cosTheta, vec3 F0) |
- 描述不同观察角度的反射率变化
- F0是0度角时的反射率
- 掠射角时反射率接近1
- 金属的F0值较高,非金属较低
c) **几何函数(G)**:
float GeometrySmith(vec3 N, vec3 V, vec3 L, float roughness) |
- 处理微表面之间的遮蔽和阴影
- 考虑光线和视线被微表面遮挡的情况
- 粗糙度越高,遮蔽越明显
- 能量守恒
PBR严格遵循能量守恒定律:
vec3 kS = F; // 镜面反射比例 |
- 反射光能量永远不会超过入射光
- 金属材质几乎没有漫反射
- 非金属材质同时具有漫反射和镜面反射
- 线性空间和Gamma校正
PBR在线性空间进行计算:
// HDR色调映射 |
- 所有计算在线性空间进行
- 最后应用色调映射处理HDR
- 输出前进行Gamma校正
- 材质参数的物理含义
Metallic(金属度):
- 0.0 = 非金属(绝缘体)
- 1.0 = 纯金属
- 很少使用中间值
Roughness(粗糙度):
- 0.0 = 完全光滑(镜面)
- 1.0 = 完全粗糙(漫反射)
- 影响微表面分布
Albedo(基础色):
- 非金属:表面颜色
- 金属:F0反射率
- IBL(基于图像的光照)
完整的PBR通常还需要:
- 漫反射辐照度图
- 预过滤环境贴图
- BRDF积分贴图
PBR Shader
layout(push_constant) uniform Material |
- 本文标题:渲染相关概念
- 创建时间:2025-06-05 08:23:00
- 本文链接:2025/06/05/note/Programming/CG/Renderer/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
显示评论