【从UnityURP开始探索游戏渲染】专栏-直达
核心定义
光照模型 是计算机图形学中用于模拟光线与物体表面相互作用的数学算法,它通过计算光能传播的物理特性,决定场景中每个像素的最终颜色值。其本质是求解光能传输方程的简化实现。
graph LR A[光源发射光子] --> B[与物体表面交互] B --> C[反射/折射/吸收] C --> D[进入人眼或传感器] D --> E[形成视觉颜色]
核心组成要素
光照模型通常包含以下物理现象的数学描述:
光-物交互基础组件
组件 | 物理原理 | 数学描述 |
---|---|---|
环境光 | 全局间接光照 | Lₐ = kₐ * Iₐ |
漫反射 | 朗伯余弦定律 | L_d = k_d * I * max(0, N·L) |
镜面反射 | 菲涅尔反射 | L_s = k_s * I * (R·V)^n |
自发光 | 物体辐射 | L_e = emissiveColor |
高级光传输特性
- 能量守恒 :
入射光能 = 反射光能 + 吸收光能 + 透射光能
- 微表面理论:使用法线分布函数(D)、几何遮蔽(G)、菲涅尔(F)描述微观结构
- 次表面散射:光在材质内部的传播(皮肤、玉石等)
光照模型的数学本质
光照模型是渲染方程的特定解形式:
L_o(x,ω_o) = L_e(x,ω_o) + ∫_Ω f_r(x,ω_i,ω_o) L_i(x,ω_i) (n·ω_i) dω_i
其中:
- L_o:出射辐射度
- f_r:双向反射分布函数(BRDF)
- L_i:入射辐射度
- (n·ω_i):余弦衰减项
光照模型分类体系
游戏中的光照模型分类
graph TD A[标准光照模型] --> B[漫反射] A --> C[高光反射] B --> D[兰伯特模型] C --> E[Phong模型] C --> F[Blinn-Phong模型] G[BRDF] --> H[漫反射] G --> I[镜面反射] I --> J[GGX] I --> K[菲涅尔效应] L[PBR] --> G L --> M[能量守恒] L --> N[微表面理论]
按物理经验分类
graph TD A[光照模型] --> B[经验模型] A --> C[物理模型] B --> B1[Lambert] B --> B2[Phong] B --> B3[Blinn-Phong] C --> C1[Cook-Torrance] C --> C2[Oren-Nayar] C --> C3[Disney BRDF]
按光照范围分类
类型 | 原理 | 代表模型 |
---|---|---|
局部光照 | 仅考虑直接光照 | Phong, Blinn-Phong |
全局光照 | 包含间接光照 | 路径追踪,辐射度算法 |
混合光照 | 直接+简化间接 | 屏幕空间环境光遮蔽(SSAO) |
典型光照模型实现对比
模型 | 核心公式 | 适用场景 | 计算复杂度 |
---|---|---|---|
Lambert | L = k_d I (N·L) |
粗糙无光泽表面 | ★☆☆☆☆ |
Phong | L = k_d(N·L) + k_s(R·V)^n |
塑料/陶瓷 | ★★☆☆☆ |
Blinn-Phong | L = k_d(N·L) + k_s(N·H)^n |
实时渲染通用 | ★★☆☆☆ |
Cook-Torrance | f = (D·F·G)/(4(N·V)(N·L)) |
金属/高光材质 | ★★★★☆ |
Oren-Nayar | L = k_d I (A + B·max(0,cosφ)sinα tanβ) |
布料/粗糙表面 | ★★★☆☆ |
现代应用中的关键作用
在游戏引擎中的实现
-
Unity URP:
ccsharp // 表面着色器示例 void surf (Input IN, inout SurfaceOutputStandard o) { o.Albedo = _Color.rgb; o.Metallic = _Metallic; o.Smoothness = _Glossiness; o.Normal = UnpackNormal(tex2D(_NormalMap, IN.uv_MainTex)); }
-
Unreal Engine:基于物理的材质编辑器(PBR)
电影级渲染应用
-
RenderMan RIS:使用路径追踪求解完整渲染方程
-
Arnold:
csurface PBR( color baseColor = 0.8, float metallic = 0, float roughness = 0.5) { // GGX微表面BRDF实现 bsdf = ggx_brdf(normal, roughness, metallic); Ci = baseColor * illuminate(bsdf); }
技术演进里程碑
- 1967:Bui Tuong Phong 提出漫反射模型
- 1975:Phong 镜面反射模型完善
- 1981:Cook-Torrance 推出首个物理BRDF
- 2010:Disney 提出艺术家友好的PBR工作流
- 2020:神经辐射场(NeRF)实现照片级渲染
前沿研究方向
- 神经光照模型 :使用深度学习预测复杂光传输
- 示例:MIT 2023年提出的NeILF(神经逆光场)
- 量子光照计算:光量子处理器加速路径追踪
- 全息光场渲染:光波前重建技术(如Looking Glass显示屏)
光照模型是连接虚拟与现实的桥梁------从简单的(N·L)点积运算到包含数百万光路的路径追踪,其演进史就是计算机图形学追求物理真实性的奋斗史。理解光照模型不仅需要掌握其数学形式,更要洞察光与物质相互作用的物理本质。
【从UnityURP开始探索游戏渲染】专栏-直达
(欢迎点赞留言探讨,更多人加入进来能更加完善这个探索的过程,🙏)