笔记09 图形 2.4 传统经验光照模型详解 | 【先行】基础渲染光照介绍(一)
图形 2.4 传统经验光照模型详解
光照模型
光照模型(illumination model),也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而言,光照模型分为两类:一种是基于物理理论的,另一种是基于经验模型的。
基于物理理论的光照模型:偏重于使用物理的度量和统计方法,效果非常真实,但是计算复杂,实现起来也较为困难;
经验模型:是对光照的一种模拟,通过实践总结出简化的方法,简化了真实的光照计算,并且能达到很不错的效果
为什么需要经验模型
现实世界的光照是极其复杂的,而且会受到诸多因素的影响,有限的计算能力无法完全模拟。使用简化的光照模型对现实的情况进行近似,使得计算处理起来会更容易,并且令效果更符合需求。这些经验模型就是基于我们对光的物理特性的理解。
局部光照模型
(和全局光照模型相对)局部光照模型只关心直接光照部分,即直接从光源发出并照射到物体表面,并反射至摄像头的光线。由漫反射,高光反射,环境光,自发光组成。
漫反射
定义:在光照模型的定义中,当光线从光源照射到模型表面时,光线均匀被反射到各个方向,这种现象就是漫反射。漫反射效果与观察者位置无关。
计算方法:漫反射光照符合 Lambert 定律(反射光强与 法线和光源方向之间的夹角的余弦值成正比)光照公式:
高光反射(镜面反射)
定义:当光线到达物体表面并发生了反射,观察视线在反射光线的附近时,便能够观察到了高光反射。高光反射描述了光线与物体表面发生的反射(光强不变,方向改变)
高光反射的反射率是由菲涅尔效应决定,通常使用对应的 反射贴图 描述物体表面的反射率,并且使用光泽度(粗糙度,反光度)描述高光范围的大小。
光照公式:
其中表示了材质的光泽度; 表示材质的反射光; 表示反射光线; 表示视线向量
环境光
定义:在局部光照模型中,由于没有考虑间接光照的影响,因此为了处理这种间接光照,为光照模型引入环境光
光照公式:
自发光
顾名思义,物体自身发射的光线,通常作为单独的一项加入光照模型。一般使用一张发光贴图描述物体的自发光
经典光照模型
Lambert 模型
Phong 模型
第一个有影响力的光照模型。考虑直接光照的反射作用,使用环境光代替间接光照
光照公式:
Blinn-Phong 模型
Blinn-Phong模型不再依赖于反射向量,而是采用了所谓的半程向量(Halfway Vector),即光线与视线夹角一半方向上的一个单位向量。当半程向量与法线向量越接近时,镜面光分量就越大。
和 Phong 模型的区别
- 半角向量比反射向量的计算更加简洁
- 当光源与视线都在物体表面之上时,半角向量与法线的角度永远不大于90度
设想一种情况,当材质的反光度非常低,因此物体的被光线照射的大部分区域都会发生高光反射。这些区域中一部分高光部分的反射向量与视线的夹角超过了90度。如果使用 Phong 模型就会导致高光区域一部分发生缺失。
这是由于Phong模型只考虑视线与光照分布在法线两侧的情况。当视线与光照在法线同侧时且高光反射对亮度有较大影响时,就会发生断层。
Flat 模型
平面着色模型,计算多边形的单个强度,每个三角形只有一个法线方向。以相同的光强度值显示多边形的所有点。通常适用于lowPoly风格的场景
-作业-
参考备用 苏格拉没有底。的笔记,anesu的笔记
1.学习【先行】基础渲染光照介绍(一)。说出能量守恒的理念在基础光照模型中的作用
- 揭示基础模型的物理缺陷
- 引导理解材质参数的物理意义
- 为过渡到PBR提供桥梁
2.基于能量守恒的理念,自己写一套完整的光照模型,需要包含环境光照
在 Blinn-Phong 公式的基础上改(?)
2种着色模型x3种基础光照模型;遵循能量守恒的Blinn-Phong这下完事大吉(
【先行】基础渲染光照介绍(一)
不想看视频,故直接参考了 苏格拉没有底。的笔记
一、Lambert 模型
只有漫反射项
二、Phong 模型
- 三部分:漫反射、高光、环境光
三、Blinn-Phong
- 对与Phong模型的改进:少了一个反射计算,把高光项改为用半程向量和法线的余弦值计算。
四、使用法线贴图
见读书笔记06《Unity Shader入门精要》的法线纹理,以及对应的时间代码
五、cubemap
读书笔记09《Unity Shader入门精要》- IBL(image based lighting,基于图像的光照):一种通过环境贴图(如立方体贴图)来捕捉来自周围环境的入射光信息,并利用这些信息计算物体表面漫反射和镜面反射的技术。
小技巧:金属感/非金属感 的近似
用粗糙度来控制“金属感”,并不是 PBR 标准中的金属度。
1 | specular = lerp(diffuse * specular, specular, _Gloss/255); |
- 用
_Gloss(粗糙度)作为插值因子,在 “受漫反射影响” 和 “不受漫反射影响” 之间过渡。 - 当
_Gloss很大(即表面很光滑)时,选择右边(specular或reflcol),让高光和反射不受漫反射颜色干扰,模拟金属质感。 - 当
_Gloss很小(表面粗糙)时,选择左边(diffuse * specular或reflcol * diffuse),让高光和反射被漫反射颜色调制,模拟非金属质感。
- 标题: 笔记09 图形 2.4 传统经验光照模型详解 | 【先行】基础渲染光照介绍(一)
- 作者: 铁名_IronName
- 创建于 : 2026-02-16 13:07:25
- 更新于 : 2026-02-24 10:13:10
- 链接: https://blog.ironname.top/2026/02/16/笔记09-技术美术百人计划/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。