4.5、把灯光烘焙进纹理中

前面每个照射到的顶点,除了位置坐标,法向量的使用还需要三个浮点值(12字节)的存储空间。当定义一个场景中的几何图形的顶点有几十万或上百万个时,每个顶点的额外的12 字节会快速增加。额外的12字节不仅会消耗稀缺的GPU所控制的内存,而且每次几何图形被渲染时,它们还必须被GPU读取。 如果纹理可以以任何方式来使用,那么OpenGL ES灯光模拟的一个替代方法就是把灯光烘焙进一个现存的纹理中。换句话说,就是使用已经包含了本来是由灯光模拟生成的明亮和黑暗区域的纹理。例子OpenGLES_Ch4_2会使用一个包含阴影灯光效果的纹理。

把灯光烘焙进纹理仅仅适用于几何图形和灯光都不是动态的情况下。如果灯光来回移动或者改变颜色,烘焙进的灯光看起来就不合适了。如果几何图形发生了较大的变化,以至于原先的黑色区域暴露在了光线之下,此时的纹理看起来就是错误的。 第6章会讲解如何在不改变几何图形的情况下创建变化的场景。

如在OpenGLESCh4_2例子和图4-9中显示的一样,烘焙灯光效果可以呈现出一个更精细的错觉。

图 4-9

results matching ""

    No results matching ""