之前写了个shader, 结果显示的效果和预想得相差甚远. 研究了一下才发现写了多个pass, 但是只有一个pass被渲染了.
从Frame Debug可以看到只渲染了一次
发现在urp管线下默认只渲染一个pass, 从网上搜到了解决的办法, 给不同的pass加上不同"LightMode"的tag就可以同时渲染.
public DrawObjectsPass(string profilerTag, bool opaque, RenderPassEvent evt, RenderQueueRange renderQueueRange, LayerMask layerMask, StencilState stencilState, int stencilReference)
: this(profilerTag,
new ShaderTagId[] { new ShaderTagId("SRPDefaultUnlit"), new ShaderTagId("UniversalForward"), new ShaderTagId("UniversalForwardOnly"), new ShaderTagId("LightweightForward")},
opaque, evt, renderQueueRange, layerMask, stencilState, stencilReference)
{}
从这段源码中可以看到默认有四个tag可以使用用, 如Tags{ "LightMode" = "UniversalForward" }
但是加了之后我的问题依然没有解决, 还是只渲染的一个pass. 经过排查后发现是urp的2D Render导致的.
把Render换成默认的Render就可以解决了.
问题解决, 两个pass都渲染出来了