unity的坑,RenderWithShader(Shader shader, string replacementTag) 应用起来才知道坑深。replacementTag各种纠结,用没有详细清晰的文档,官方说的又不清不楚。。
经测试才了解意思。
本来做EdgeDetectPostEffect需要渲染深度图,但场景的虫巢是动态的shader,顶点会随着时间更新,问题来了,用同一的简单shader不能达到目的,本来看到replacementTag眼前一亮,但各种问题。最后才确定要如此应用。
对虫巢的shader要这样写:
SubShader
{
Tags { "RenderType"="Wormhole" }
Pass
{
.................................
}
}
而对应的渲染深度的shader:
SubShader
{
Tags { "RenderType"="Opaque" }
Pass
{
.................................
}
}
SubShader
{
Tags { "RenderType"="Wormhole" }
Pass
{
................................
}
}
代码中渲染的地方:
camera.RenderWithShader(shader, "RenderType");
OK,搞定收工