我想产生一种效果,其中某些对象仅在它们落在某个空间内时才会被渲染。想想一个“神奇的解码器卷”,当它们在里面时,它会揭示秘密物体。
让我们假设秘密对象和揭示体积都是球体。我首先渲染非秘密对象。然后我将显示体积的背面渲染到深度和模板缓冲区中。如果我只渲染通过深度和模板测试的秘密对象,它们也会被绘制在显示体积的前面。我希望能够创建第二个深度缓冲区来保持显示体积的前面。有没有标准的方法来做到这一点?
我想我可能可以将近剪裁平面设置为穿过显示球体的中心。然后我可以将近剪裁平面拉回更靠近眼睛的位置,渲染显示体积的正面并将远剪裁平面设置为其中心,仅渲染大于深度测试并通过模板测试的秘密对象顶点.
这种两遍方法感觉有点难看,如果体积中有一个非秘密物体应该在一个秘密物体的前面,它可能会因为反向深度测试而被压扁。我对着色器没有太多经验,但我猜这就是要走的路?