Skip to main content

3 着色管线

上一章讲述的图形处理器接口是图形应用程序所接触的最底层的基础设施,虽然我们可以直接使用基于光栅化的经典渲染管线来对场景进行渲染着色,但是同其他软件开发工作一样,我们通常还需要建立一套与上层应用无关的抽象层,或者基础架构。在计算机图形学中,我们称这一抽象架构层为着色管线(shading pipeline),对这一层的了解仍然是我们掌握游戏引擎以及各种全局光照算法的重要基础,因此本章专门讨论了几种着色管线方法,并且着色管线的概念可以是和具体全局光照技术无关的,所以我们可以在进入各种复杂的渲染技术之前以更简洁的思路来理解它们。

在开始讨论着色管线之前,我们需要明确三个基本概念,这对理解本章的内容非常重要,它们分别是:渲染(rendering),着色(shading)以及光照计算(lighting)。渲染通常是指将整个3D数字场景转换为一张2D图像的整个过程,它通常包含多种非常复杂多样的全局光照技术和过程;着色是指计算物体表面每一个像素点的(我们所看到的)最终颜色值,即在着色器或者渲染方程中它是计算辐射亮度(radiance)的过程;而光照计算是计算所有光源对一个像素点的“辐射照度(当然实际上辐射照度和辐射亮度通过BRDF来联系,而BRDF需要知道入射光方向,所以我们并不能单纯地将所有光源的辐射亮度加在一起,那样的值将是没有任何意义的,所以本章讨论的“光照计算”是一个特殊的术语,它是渲染方程中除了反射率(如漫反射率cdiffc_{\rm diff}和高光反射率cspecc_{\rm spec})材质参数之外的所有项,即它将BRDF算入在了“辐射亮度”之中,因此本章讨论的“光照计算”的概念仅适用于理解本章相关的概念,一般意义上着色和光照计算的概念是一致的。)”(irradiance)的过程。