我想要实现什么?
我想在Unity3D中实现这样一个效果:将几个摄像机叠加到一起。每个摄像机可以绘制到屏幕的特定区域。如果可能的话,我希望这些区域可以动态地改变。 我正在使用最新版本的unity和URP。
从技术上讲我怎么看:
出于实现和性能原因,似乎写入模板缓冲区是正确的方法。这样,我可以为每个相机仅渲染所需的屏幕部分。而且,使用模板之后就很容易了,因为Unity中的前向渲染设置已经提供了这些功能。
我无法弄清楚的问题:
问题是,我不知道如何有效地写入整个模板缓冲区(每帧)。最好的方式是使用计算着色器(或者可能是简单的脚本),直接在某些计算之后写入值。有没有办法这样做?如果有,怎么做?
另一种选择可能是在每个相机前面放置一个透明的四边形,并像那样写入模板缓冲区。但是 1)似乎片段缓冲区中存在SV_StencilRef关键字,但Unity尚不支持?2)无论如何我仍然会失去性能。
感谢任何有关如何解决这个问题的帮助/想法。
编辑(澄清):我想要能够渲染自由形状,而不仅仅是矩形,这样就无法使用标准的ViewportRect。 经过一些搜索,我发现Voronoi分割屏幕与我想要实现的内容非常相似(从技术角度来看)。(查看此处)