# 定义
对于一个表面定义以下单位向量
法线方向
指向光源方向
指向观察方向
半程向量
表面属性若干
# Blinn-Phong 模型
近似的经验模型
有三个参量
相加为最终结果
# 漫反射
着色结果
为漫反射系数,可以是表面颜色、漫反射程度等
r 为观察者与表面在 方向的距离
可知漫反射与观察方向无关
# 高光反射
为 镜面反射系数系数
p 为高光大小,一般在 100~200
# 环境光
为常数,假设环境光相同
# 着色频率
现在我们已经知道如何对一个表面单位进行着色
对于不同的方法取定义一个表面的单位,对应着不同的着色频率
主要为以下三种
对每个三角面进行着色
对每个顶点进行着色,顶点法线为周围面法线的平均,表面颜色又为顶点颜色的插值
对每个像素进行着色
# 阴影
对于阴影的实现,光栅化算法中主要只能实现点光源的硬阴影
实现思路如下
由于一个像素被渲染为阴影的充要条件是相机看得到而光源看不到,不妨以光源为摄像机光栅化场景并应用深度缓冲只记录深度值,在真实相机光栅化时,对于可见的像素,根据原本的世界空间坐标转化为光源摄像机的视图空间,也就是得到它在光源摄象机下的深度值并比较,由于浮点数的精度问题,难以比较,所以一般是设定一个 bias(偏差)之后大于深度为阴影等方法处理