【发布时间】:2017-02-23 10:38:24
【问题描述】:
我已经构建了一个工作表面着色器(称为“仙境”),它呈现为不可见,除非从相机的角度来看伴随的“lookGlass”着色器与其相交。简单的模板着色器排列。
简单易懂。
我可以添加着色器设置来指定一个平面,甚至只是一个最小的世界空间 Z 值,并使用 clip() 只在该平面的一侧渲染像素......(换句话说,我可以使用它来修剪 Stencil 允许的内容。)
我想要做的是“通过镜子”在表面上使用模板(以显示镜子内部的几何图形)并始终在这些表面位于镜子的“我们”一侧时渲染这些表面(如果他们在镜子入口的这一侧,总是向他们展示)。例如,如果 z=0,则不考虑渲染。
现在,在 Unity 中,我可以将两种材质附加到 MeshRenderer 组件(一种带有模板着色器,一种带有“平面截止”着色器)——效果很好。实际上,它非常棒,至少在视觉上是这样。但是,虽然我还没有对它进行基准测试,但我本能地相信,如果有许多对象、相当复杂的几何图形等以这种方式设置,它会极大地影响帧速率。
(我还可以在代码中管理着色器附件,并且仅在我期望某些东西发生过渡时才这样做,但我真的希望从中获得一个统一的着色器以避免不必要的绘制调用。)
【问题讨论】: