模板缓冲区在现代OpenGL中是否仍然相关?

时间:2016-08-10 22:23:55

标签: opengl graphics opengl-3 opengl-4 stencil-buffer

我和一位朋友一直在讨论模板缓冲区。简而言之,我还没有找到模板缓冲区比OpenGL 3.2+中的可编程管道工具更具优势的情况。现代OpenGL中的模板缓冲区有用吗?

[编辑]

感谢大家对该主题的所有意见。

3 个答案:

答案 0 :(得分:12)

它比以往更有用,因为您可以从片段着色器中对模板索引纹理进行采样。甚至不应该认为模板缓冲区不是可编程管道的一部分。

深度缓冲区用于简单的通过/失败片段拒绝,模板缓冲区也可以按照注释中的建议执行。但是,模板缓冲区还可以累积多次传递的测试结果信息。存在各种逻辑和计数应用,例如测量场景的深度复杂度,构造实体几何等。

答案 1 :(得分:9)

为了向Andon的回答添加一个最近的例子,GTA V使用模板缓冲区有点像ID缓冲区来标记玩家角色,汽车,植被等。

它随后使用模板缓冲器来例如仅对字符应用次表面散射或将其排除在运动模糊之外。

请参阅GTA V Graphics Study(强烈推荐,这是一个很好的阅读!)

编辑:确定你可以用软件做到这一点。但你也可以在软件中进行光栅化或曲面细分......最后,我猜测它是关于性能的。使用depth24stencil8,你有一个很好的硬件支持格式,模板测试很可能比片段着色器中的丢弃更快。

答案 2 :(得分:-1)

仅提供另一个用例,阴影卷(又名"模板阴影")仍然非常相关:https://en.wikipedia.org/wiki/Shadow_volume

它们对于阴影应该是像素完美的室内场景非常有用,并且您不太可能让经过alpha测试的树叶弄乱挤出的阴影卷。

阴影贴图更常见,但我怀疑,一旦大脑死亡的Createive / 3DLabs专利在zfail方法上失效,模板阴影就会卷土重来。