UnityURP中编写的Shader不显示的问题记录

自己手写的Shader不显示了,找了老半天

之后发现和URP设置中的一个选项有关

image-20240624170455939

只要打开了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

image-20240625153551127

或者直接关闭Depth Priming Mode,但这可能会影响项目的性能

最后修改:2024 年 06 月 25 日
如果觉得我的文章对你有用,请随意赞赏