【技术美术】光照模型
【技术美术】光照模型
光照模型实际就是用于计算光照效果的方法,发展至今已有多种光照模型可用。
光照类型
从来源分类
- 直接光:直接来自光源的光。
- 间接光:通过其他表面反射的光。
从组成分类:
- 漫射光:光在粗糙的表面进行多次反射后再反射进眼睛的光。
- 镜射光:光在光滑表面进行一次反射后直接反射进眼睛的光。
- 环境光:从其他物体表面反射的光照在物体上后再反射的光。
- 次表面散射:光通过一些半透明的物体内部后再反射进眼睛的光。
光照模型类型
从计算范围分类
- 局部光照模型:只计算直接光,或环境光等直接打在物体上的光照效果。
- 全局光照模型:在局部光照模型基础上,还会考虑光折射反射后打在物体上的效果。
从计算原理分类
- 经验模型:基于人们对光照现象的直观感受,用经验编写的公式来模拟光照。
- PBR 模型:基于物理的渲染方式(Physically-Based Rendering),这类模型基于真实的物理现象和公式演化而来。相较经验模型,拥有更真实的呈现效果和物理正确性。
从着色风格分类
- Gouraud:为每一顶点计算光照,再通过插值的方式得出最终效果。
从函数类型分类
-
BRDF(双向反射分布函数):
用于计算入射光与反射光关系的函数,即计算漫射光和近射光等从物体表面直接反射的光的函数。是常见游戏引擎中所使用的利用光栅化计算的光照模型。
-
BTDF(双向投射分布函数):
用于计算入射光与投射光关系的函数,即计算透过物体内部再折射出的光(次表面散射)的函数。
-
BSDF(双向散射分布函数):
BRDF 和 BTDF 的超集,是既计算反射光也计算折射光的函数。是常见图形软件中烘焙灯光时所使用的光照模型。
主流光照模型
Lambert
https://en.wikipedia.org/wiki/Lambertian_reflectance
1760 年提出,是只考虑了漫射光的简单模型,其通过点乘模拟漫射强度的思想,奠定了后续光照模型的基础。
Phong
https://en.wikipedia.org/wiki/Phong_reflection_model
1975 年提出,是一个完整的局部光照模型,在 Lambert 的基础上还考虑了环境光和镜射光。
BlinnPhong
https://en.wikipedia.org/wiki/Blinn–Phong_reflection_model
一个改进版的 Phong 模型,对其镜射光的计算方式进行了调整,有更高的计算效率和高光效果,是过去很多图形接口的内置光照模型。
CookTorrance
https://graphicscompendium.com/gamedev/15-pbr
1982 年提出,相比前几代的经验光照模型,由于其是基于真实物理现象设计(PBR 模型),因此拥有更真实的呈现效果和物理正确性,如今更是被广泛使用。
Unity 中对于该公式的镜射系数的实现:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)