在计算机图形领域,延期着色是一种在三维空间中着色的技术。这种着色的算法把目标分成很多的小块写入中间缓冲储存区,而后再合并。这种方法区别于直接把着色结果写进颜色的帧数缓冲里。在目前的硬件中,倾向于使用多重的渲染目标去避免重复转换矢量点。一旦所有需要的缓冲建好,就直接被读进一种着色算法中,合并在一起从而得出最后的结果。 这样,着色一个场景所需的计算和内存的带宽被减少到了这些可见的部分中,从而降低了着色深度的复杂性。
[编辑] 优势
延期着色 deferred shading的主要优势因为Z-buffer和早期 Z-buffer的出现而有所减少,但是其他的一些优点还是毋庸质疑。比如提供了一种简单的管理复杂光源的方法,去除了其他复杂的着色源的管理,让渲染流程更加简单。这些在开发软件的过程中由开发者去决定的相对来说比较小的优势,导致了无止境的争论。
延期着色 deferred shading的一个特别的用途在于推迟光照。渲染目标为了光照的着色,会调用一个G-buffer去储存各种参数。通常储存的数据是颜色,表面的法向和观察的位置。无论在加光照的步骤里是不是需要这些数据,他们理论上是可以存起来的。
[编辑] 缺陷
因为使用了多重的渲染目标,常占用一个浮点,导致使用内存的带宽会比直接渲染的技术来的多。现代图形硬件的数学计算比内存的存取来的快。再加上在未来的硬件中,可能数学计算和内存的表现会有更大的偏重, 这就导致了延期着色技术可能不是一个长久的解决方案。
延期着色的另一个重要的缺陷在于它不能计算透明。虽然这个问题在Z-buffer场景中是普遍存在的,一般会用延迟和排序的方法渲染场景中透明的部分。