第4章 散发一些光线

3D计算机图形技术会把物体的数学描述转换成逼真的幻象。人类大脑可以解释在平面屏幕上显示的图片,还可以部分基于几何图形的暗示感知不存在的深度。例如,感觉小的物体要比大的物体更远一些。如果一个物体盖住另一个物体的一部分,人脑就可以感觉到前后。但是,要呈现有深度的错觉就需要有模拟的灯光效果。观察一下 在图4-1中相同的几何数据的两个渲染结果。左边的图片在渲染时没有使用灯光,右边使用了模拟灯光的图片会更加逼真。

图 4-1

本章会介绍用于模拟3D物体与光线之间的相互作用的多个技术。OpenGLES使用GPU来计算一个场景中的几何图形投射和散发出的模拟光线的数量。通常,GPU首先为每个三角形的每个顶点执行光线计算,然后把计算的结果插补在顶点之间来修改每个渲染的片元的最终颜色。因此模拟灯光的质量和光滑度要取决于组成每个3D物体的顶点的数量。模拟灯光的另一种方法会增强或者替代传统的模拟方法。在许多情况下,灯光效果可以被预计算并被“烘焙”进纹理中,以便可以在完全不需要GPU光线计算的情况下产生逼真的场景。然而另一种方法会利用GPU的能力为渲染场景中的每个单独的片元分别计算和应用灯光效果。

本章会介绍灯光模拟背后的概念,利用GLKit并使用相对简单的应用代码演示灯光效果。GLKit 复制了OpenGL ES 1.x 的传统灯光能力,同时为大部分应用提供了适当的内建的灯光模拟方式。在介绍完灯光的基础之后,本章会描述一些 OpenGL ES 2.0提供的更高级方法。

results matching ""

    No results matching ""