UnityURP中编写的Shader不显示的问题记录
自己手写的Shader不显示了,找了老半天
之后发现和URP设置中的一个选项有关
只要打开了Depth Priming Mode,我的Shader就会不显示
官网的解释如下
Depth Priming Mode 指定何时执行深度引导 (depth priming)。深度引导是一种优化方法,用于检查 URP 在基础摄像机的不透明渲染通道中不需要渲染的像素。它会使用在深度预通道中生成的深度缓冲区。选项包括: • Disabled:URP 不执行深度引导。 • Auto:URP 为需要深度预通道的渲染通道执行深度引导。 • Forced:URP 始终执行深度引导。为此,它还会为每个渲染通道执行深度预通道。 仅当 Rendering Path 设置为 Forward 时,才会显示此属性
看起来像是提前Ztest,
查找到一篇介绍如何解决的博文
记录Unity的URP项目中使用自定义shader导致材质无法显示的解决办法 - 哔哩哔哩 (bilibili.com) 《Unity的URP项目中使用自定义shader导致材质消失的解决办法》-CSDN博客 本文禁止转载或摘编 )
具体的解决方法就是在自定义Shader中手动实现depth pass和depth normal pass
有一个简单的方法就是直接use LitShader中的pass
或者直接关闭Depth Priming Mode,但这可能会影响项目的性能