模版缓冲

编辑
本词条由“匿名用户” 建档。
模板缓冲区是现代图形硬件上除颜色缓冲区和 Z 缓冲区之外的额外数据缓冲区。 缓冲区以像素为单位并处理整数值,通常深度为每个像素一个字节。 Z 缓冲区和模板缓冲区通常共享图形硬件 RAM 中的同一区域。 在最简单的情况下,模板缓冲区用于限制渲染区域(stenciling)。 模板缓冲区的更高级用法利用渲染管道中 Z 缓冲区和模板缓冲区之间的强连接。 例如,可以为每个未通过或通过深度测试的像...

模版滚冲

编辑

模板缓冲区是现代图形硬件上除颜色缓冲区和 Z 缓冲区之外的额外数据缓冲区。 缓冲区以像素为单位并处理整数值,通常深度为每个像素一个字节。 Z 缓冲区和模板缓冲区通常共享图形硬件 RAM 中的同一区域。

在最简单的情况下,模板缓冲区用于限制渲染区域(stenciling)。 模板缓冲区的更高级用法利用渲染管道中 Z 缓冲区和模板缓冲区之间的强连接。 例如,可以为每个未通过或通过深度测试的像素自动增加/减少模板值。

深度测试和模板修改器的简单组合使大量效果成为可能(例如模板阴影体积、双面模板、合成、贴花、溶解、淡入淡出、滑动、剪影、轮廓图或突出显示复杂基元之间的交叉点 ) 尽管它们通常需要多次渲染过程,因此会给图形硬件带来沉重的负担。

最典型的应用还是给3D应用添加阴影。 它也用于平面反射。

其他渲染技术,例如门户渲染,以其他方式使用模板缓冲区; 例如,它可用于查找被门户遮挡的屏幕区域并正确重新渲染这些像素。

架构

编辑

模板缓冲区通常与 Z 缓冲区共享相同的内存空间,通常比率为 Z 缓冲区的 24 位 + 模板缓冲区的 8 位,或者在过去,Z 缓冲区的 15 位 + 模板缓冲区的 1 位 . 另一个变体是 4 + 24,其中使用了 32 位中的 28 位,忽略了 4 位。 模板和 Z 缓冲区是帧缓冲区的一部分,与颜色缓冲区耦合。 xxx个面向更广泛市场的芯片是 3Dlabs 的 Permedia II,它支持一位模板缓冲区。

分配给模板缓冲区的位可以用来表示 [0, 2n-1] 范围内的数值,也可以作为布尔矩阵(n 是分配的位数),其中的每一个都可以用来控制 场景的特定部分。 这两种使用可用内存的方式的任意组合也是可能的。

模板测试

编辑

Stencil 测试或 Stenciling 是对像素/片段(每像素操作)的操作之一,位于 alpha 测试之后和深度测试之前。 模板测试确保不需要的像素不会达到深度测试。 这节省了场景的处理时间。 同样,alpha 测试可以阻止相应的像素到达模板测试。

测试本身是通过模板缓冲区对其中的某个值执行的,或者更改或使用它,并通过所谓的模板功能和模板操作执行。 模板函数是将某个像素的模板值与给定参考值进行比较的函数。 如果此比较在逻辑上为真,则模板测试通过。 否则不会。

这样做时,比较三种不同的state-depth和stencil buffer的结果可能引起的反应:

  • 模板测试未通过
  • 模板测试通过但深度测试未通过
  • 两项测试均通过(或模板测试通过,深度未启用)

对于这些情况中的每一种,都可以对检查的像素设置不同的操作。 在OpenGL模板函数中,引用值和掩码分别定义了函数glStencilFunc。 在 Direct3D 中,这些组件中的每一个都使用当前控制设备的 SetRenderState 方法单独调整。 此方法需要两个参数,xxx个是设置的条件,另一个是它的值。 模版缓冲

管理

编辑

尽管模板缓冲区的应用范围相当广泛,但我们可以举出几个众所周知的应用。

相比之下,在 stensilinga中,这种影响被完全消除,即使它们是共面表面。

Z-战斗

编辑

由于 Z 缓冲区中缺乏精度,短程或重叠的共面多边形可以描绘为具有多个不规则横截面的单个平面。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/198017/

(4)
词条目录
  1. 模版滚冲
  2. 架构
  3. 模板测试
  4. 管理
  5. Z-战斗

轻触这里

关闭目录

目录