在实时3D图形领域,光照模型是实现逼真视觉效果的关键技术之一。本文将回顾实时3D图形中光照模型的发展历程,从早期的《Doom》到现代游戏《Quake》的光照技术,以及预处理光照模型的应用和未来发展趋势。
在1994年,Id Software公司发布了其标志性的游戏《Doom》,这款游戏使用了《Wolfenstein-3D》引擎的高级版本。尽管《Doom》在沉浸式伪3D环境、图形质量和移动自由度方面取得了巨大成功,但它的3D环境实际上是一种绘制成3D的2D空间,并且缺乏真实的光照系统。
随后,Id Software公司发布的《Quake》被认为是第一款真正的3D视频游戏之一,也是第一款使用预计算光照模型的游戏。与《Doom》相比,《Quake》的截图显示了完全的3D环境,没有使用任何精灵(sprites),而是使用了多边形、顶点和纹理。这种变化使得光照系统成为可能。
顶点光照模型是3D光照模型的早期方法之一,它通过计算3D模型中每个多边形的每个顶点接收到的光照量,并使用这个量来调节顶点的颜色,从而实现多边形内颜色的插值。这种方法适用于细节程度非常高的3D模型,但在性能受限的3D游戏中,不能无限制地增加几何细节。
为了解决这个问题,需要一种系统,它允许在多边形的内部点存储光照信息,而不需要增加实际的几何细节。这可以想象成一个二维表格,存储着多边形内部每个点接收到的光照量。
《Quake》通过预计算光照模型,将光照信息存储在纹理中,而不是简单的二维表格。这种方法不仅节省了内存,还解决了如何将多边形内部点与表格条目关联的问题。光照贴图是特殊的纹理,它们存储光照信息,而不是基础材料的外观。
光照贴图的优势在于它们可以存储任何类型的信息:凹凸度、光泽度、阴影、镜面成分等。例如,《Half-Life》游戏中使用的Valve引擎就使用了多种不同的纹理来存储关于表面的不同信息,从而获得了非常好的效果。
3D程序员从《Doom》时代开始就一直在追求现实感。例如,通过使用具有物理属性的光照引擎,如辐射度或全局照明,可以正确地在场景中传播光线,反射和折射每一束光线。