GlowEffect的RenderWithShader

一个GlowEffect的物体发光插件,做项目的时候发现在物体前后加上一个透明物体,都会使物体自发光被挡住,查找了下原因
unity有一个替换渲染的机制,Camera.RenderWithShader(glowReplaceShader, "RenderType");简单的说,就是把场景中所有符合条件的shader的pass都替换掉,

GlowEffect的RenderWithShader_第1张图片
渲染顺序.png

找到glowReplaceShader中对应的子shader
Tags { "RenderType" = "GlowTransparent" }
ZWrite Off
可以看到,,先渲染外发光的物体,由于关闭的深度写入,后面的物体渲染时会覆盖掉该物体,导致看不到发光效果
加上一句"Queue" = "Overlay"就可以了

你可能感兴趣的:(GlowEffect的RenderWithShader)