前 言
渲染可视为计算机图形学中的基础内容。在最高抽象层次上,渲染行为表示为三维场景描述与图像之间的转换。动画、集合建模、纹理机制以及其他计算机图形学领域的相关算法须通过某种渲染处理过程传递其结果,进而在图像中呈现。渲染操作的应用日趋广泛,包括影视业以及游戏等领域,并逐渐成为创意表达、娱乐以及视觉化的前沿阵地。
在该领域的早期,渲染研究主要集中于处理基本问题,例如确定相对于既定视点的可见对象。随着高效方法的不断涌现,以及图形学其他领域不断发展导致的更为丰富、逼真的场景描述,现代渲染操作扩展为更为广泛的学科领域,包括物理和天文物理、天文学、生物学、心理学、感知研究以及纯数学和应用数学。渲染操作的跨学科特征也使其成为一个令人着迷的科研领域。
本书通过完整渲染系统的文档资源代码,选取了相应的渲染算法,书中的全部图像均通过该系统加以渲染。pbrt系统通过文学编程(literate programming)这一程序设计方法加以编写,并将系统描述与其实现代码加以混合。在计算机图形学和通用计算机科学中,文学编程可视为引入相关概念的一种有效方法。某些时候,算法细节直至其实现完毕后方清晰呈现。因此,考察算法的真实实现过程则是深入理解算法细节的一种较好方法。实际上,针对计算机图形学的进一步研究,与粗浅的了解相比,通过这一方式可向读者提供更为坚实的基础知识。
除了了解算法的实际实现之外,在完整和较为重要的软件系统中表达算法还可处理中等规模渲染系统中的设计和实现问题。渲染系统的基本抽象和接口设计对于实现的优雅性以及后续扩展性均会产生较大的影响,而这一设计领域内的折中方案则较少讨论。
pbrt以及本书内容主要讨论照片级渲染,并可通过多种不同方式定义为图像生成任务,且与相机所拍摄的照片基本一致;或者对应图像生成任务具有与人眼相同的响应机制。除此之外,照片级图像对于影视特效工业也十分重要,其原因在于,计算机生成的图像须与真实世界环境实现无缝混合。在娱乐应用中,全部图像均为合成结果,真实感可视为一种效果工具,以使观众不会留意并不存在的场景环境。最后,针对渲染系统的输出质量,真实感还可作为一种定义良好的度量方案。
本书及其所描述的系统并不会涉及渲染过程中的全部技术,鉴于某些与真实感渲染相关的话题无法与软件系统体系结构实现较好的适配(例如有限元辐射度算法),因而相关内容并未出现于本书中;或者,算法的实现复杂度已超出了其教学价值。相关内容本书会在相应章节予以提示,并提供了相应的参考资源以供读者进一步阅读。另外,渲染机制的其他领域,例如交互式渲染、可视化机制以及渲染说明形式(例如笔墨风格)本书也并未涉及。无论如何,系统中的大多数算法和概念(例如纹理贴图抗锯齿算法)适用于多种不同类型的渲染集。