7.4 漫反射光
考虑图7.10所示的粗糙表面。当光线照射在这样一个表面上时,会在不同的随机方向上散开;我们将这种反射称为漫反射(diffuse reflection)。在我们的光照模型中模拟了灯光与表面之间的这种相互作用,我们约定线会在表面的各个方向上均匀散开;所以,无论观察点(眼睛的位置)在哪里,我们总能看到漫反射光。也就是,我们不需要考虑观察点的位置(即,漫反射光的计算与观察点的位置无关),无论观察点在哪里,我们总能看到表面上的点的颜色。
我们将漫反射光的计算过程分为两个部分。在第一部分中,我们指定一个入射光颜色和一个漫反射材质颜色。漫反射材质指定了表面所能反射和吸收的漫反射光的总量;它使用分量颜色乘法来实现。例如,表面反射50%的红光、100%的绿和 75%的蓝光,入射光是强度为80%的白光。那么,入射光颜色ld = (0.8, 0.8, 0.8),漫反射材质颜色md = (0.5, 1.0, 0.75);反射光的总量为:
D =ld ⨂ md = (0.8, 0.8, 0.8)⨂(0.5, 1.0, 0.75) = (0.4, 0.8, 0.6)
注意:表面上的漫反射材质可以变化;也就是,表面上的每个点可以有不同的漫反射材质颜色。例如,当渲染一个由沙滩、草地、土地和雪地构成的地形时,地形的每个部分反射和吸收的线数量是不一样的,所以材质颜色必须根据地形表面而变化。在本书的Direct3D光照实现中,我们为每个顶点指定一个不同的漫反射材质颜色。在光栅化阶段中,这些顶点属性会在三角形表面上的进行插值。通过一方式,三角形网格表面上的每个点都会得到一个漫反射材质颜色。我们直接引用兰伯特余弦定理(根据表面法线与光照向量之间的夹角来控制表面的受光强度)来实现漫反射光照计算。设ld入射光颜色,md为漫反射材质颜色,kd = max(L∙n ,0),其中L是光线向量,n是表面法线。则,反射回来的漫反射光颜色为:
cd = kd•ld ⨂ md = kdD (公式7.1)
文件下载(已下载 602 次)发布时间:2014/8/5 下午8:28:55 阅读次数:5043