图书前言

前    言

  近些年来,图形硬件设备的研发有了一些重要的进展:着色器的概念被大量引入,GPU的使用更为广泛,并且GPU的性能也有了显著提升。因此,很多新技术也随之产生,一些先进的渲染技术,如延迟着色,也已经投入实际工程当中。GPU性能的改善也是实现大量光源照明计算的一个关键因素所在,由此产生的真实感效果在实时图形学界是前所未有的。相关的技术案例数不胜数,并且可以模拟大量的细节和复杂的表面属性。皮肤的表面看起来相当真实,使用基于图像的着色方法来完成的头发渲染也达到了一个全新的高度。不过,有一种效果却是人们至今都难以有所突破的,那就是有真实感的阴影。

  本书封面的图片就是一个复杂的阴影效果的展示。场景中有一座带有巨大玻璃窗的教堂建筑。染色玻璃投射的阴影中带有彩色的光感,并且因为大气的作用产生了散射效果,这种效果又叫做神光(god rays)。最后,光照在这个非常复杂的场景中产生了硬阴影和软阴影,并且树叶在细致的玻璃表面上投下的阴影还带有非常复杂的互动效果。所有这些动态的效果,如硬阴影、软阴影、半透明、体积阴影,都显著地加强了整个场景的氛围感。总之,我们从这幅图像中可以很好地了解阴影存在的重要性,以及它们对    于真实感画面产生的重要意义--如果没有阴影,我们可能无法想象这幅画面会变成什么样子。

  因为阴影对于真实感渲染很重要,因此这个领域也得到了更广泛的关注,尤其是实时的场合,此时我们不仅要考虑如何得到更真实的场景,还需要受限于硬件的性能。这两个目标--真实感和性能--是很难得到彻底的统一的,对于阴影算法尤其如此。因此,近些年来人们也提出了数量繁多的阴影算法。尤其是软阴影相关的算法因为可以得到物理上更为可信的结果,已经愈发地成为了一个主要的研究方向,并且相关著作频出。

  直到2007年左右,随着DirectX 10的发布,图形处理单元又有了长足的进步,而第一个基于GPU的实时阴影算法也随之诞生。在这以前的早期算法并不能很好地满足游戏和交互式程序的性能要求。不过,直到今天也没有算法能够真正地适用于一切可能的情况,并且与实时的性能要求相匹配。

  为了更好地平衡渲染的性能与质量,人们提出了很多不同的方法,以求实现真实的、可信的,或者只是仿造的阴影效果,并且这些方法各自有一定的优点和缺点。有些方法已经足以在大多数场合下产生质量足够高的阴影效果,并且性能也是可以接受的。但是,如何在正确的环境中选择一个正确的解决方案,却成为现在所面临的最大问题。这是因为在实际工程中,我们总是难以找到一种最适合自己实际情况的解决方案。各种算法的讲解往往都是针对某个特殊的情形或者科学研究的范畴,并不存在一个通用的解释。

  因此,我们愈发明确地感觉到,一本概述性的、能够结合实际的指南性书籍的重要性,并且它可以从理论上给出实时阴影算法存在的问题、挑战和限制。本着这一原则,本书对于各种不同的阴影技术进行了一个大概的阐述。

  本书前两位作者[Eisemann08a,Schwarz09]的博士论文构成了本书最前沿的章节,而四位作者又经常在各种会议上碰面,因此也就逐渐形成了写一本相关书籍的想法。一开始,我们编写了一些扩展的教程资料,并且发表在SIGGRAPH Asia 2009[Eisemann09]和Eurographics 2010[Eisemann10]上。课程的资料本身已经比较详细了,不过我们还是希望继续扩展其中的内容。由于课程中还没有包含对于一些近期研究成果的介绍,例如,体积阴影,因此我们改变了当初的计划,雄心勃勃地计划对所有重要的阴影技术进行一番讲解、分析和讨论。这个过程最后花费了我们超过两年的时间。

  编写这样一本详尽的概述教程非常具有挑战性,但是我们还是希望读者能够认可它的价值。本书介绍了非常多的算法,列举了超过300种参考读物,并且尽可能地避免它们互相存在重复。希望读者喜欢这本书,并且希望它能够给用户的渲染效果带来更多的真实感。

  

·II·

实时阴影技术

  

·III·

前    言