模板缓冲的目的是什么?更准确地说,计算机图形中的模具是什么?


41

我经常阅读模板词,但不知道它在计算机图形学中的真正目的是什么。

在Wikipedia上看到黑白照片,我仍然遇到问题。

为什么我们使用模板或模板缓冲区,而Z缓冲区有何区别?为什么使用这个在图形设计中似乎具有一定意义的单词?


很好的问题,我所知道的是它用于渲染阴影...但是我很想听到对此的完整解释!
莉吉特

Answers:


40

在其最初的版本中,模板缓冲区是每像素一位(即黑色或白色,但没有灰色)的帧缓冲区。您可以像其他任何帧缓冲区一样随意渲染它。然后,稍后,当您绘制到常规缓冲区时,可以使用该缓冲区的内容来“模具化”或屏蔽掉。

一个例子:假设您正在做一个驾驶游戏。您想要在屏幕上显示一个小的后视镜,以向您显示汽车后面的情况。您需要渲染一个指向汽车后面的视图,但是您只想在后视镜的小圆角矩形内渲染该视图。典型的解决方案是:

  1. 将圆角矩形形状渲染到模板缓冲区。
  2. 启用模板。
  3. 将向后指向的视图渲染到常规缓冲区上。

然后,模板将对其进行掩盖,以便您仅绘制成镜子的形状。

现在渲染管道更加灵活和可编程,模板缓冲区仅用作通用的1位帧缓冲区,您可以用它来做任何想做的事情。阴影是一个常见的用例。


10
换句话说,它基本上具有与实际模版相同的功能,在施加墨水时会掩盖零件。
Kaj 2010年

4
目前,几乎所有设备都支持8位模板缓冲区。
克里斯·豪

我并没有真正得到您的榜样,就像有第二次挫折吗?它会栅格化场景的另一部分吗?你能举一个带有阴影的例子吗?
jokoon 2010年

这只是第二帧缓冲区。您始终可以在将视锥锥体渲染之前对其进行更改(我认为这是阴影系统所做的事情),但这不是核心概念的一部分。
优厚的

9

除了人们已经讨论过的模版缓冲区的功能用法之外,模版缓冲区还可以用于优化。

由于模板测试在图形管线中的位置(像素着色之前),可以使用模板测试杀死不需要阴影的像素。通常,这样做的粒度比单个像素要大。一像素像素,因此在粗光栅化阶段通常也可以剔除工作。


4

它只是一个缓冲区,用于控制渲染多边形时可以修改哪些像素。对于每个像素,都有一个相应的模板值,可以根据这些值有条件地修改/忽略像素

最简单的说,它可以像物理模具一样使用-允许某些像素通过并阻止其他像素被修改的蒙版。

它的行为与z缓冲区非常相似-像深度测试一样,模板测试是对/错测试,并且有相似的设置来控制模板测试(如果大于/小于/等于则通过)。但是,通常不会写入深度,而是向其写入预定义的值,或者在绘制像素时将其增加/减少,如模板阴影算法中所使用的那样。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.