Unity Shader 关于“表面着色器”切换URP渲染管线Shader不可用的问题

Shader主流上分为两类:

表面着色器(surface shader):更高级的封装,减少人工工作量,能实现大部分效果,缺点是自定义程度不 高,相对局限;
片段着色器(fragment shader):可以让你做更多的效果,但是此shader更难写。你也可以用它做一些底层的工作,比如顶点光照(Vertex lighting,即在每个顶点存储该点的光照信息)。顶点光照对于移动设备很有用。该shader对于一些需要多通道(multiple passes)的高级渲染效果也很有效。—引用文章:Unity3D Shader 新手教程(1/6)

将“片段着色器”Shader由通用渲染管线转换至URP渲染管线

本文主要是由于在一开始构建Shader时没有考虑到后期更改渲染管线的问题,所以才会出现后期转换Shader。
在渲染管线从通用切换至URP时,基于原Shader创建的材质出现紫红色报错,使用Unity内部的转换材质球无效,考虑从Shader入手。
解决办法:
(1)就是在第一个“Pass”下增加一行代码:

Tags{“LightMode” = “UniversalForward”} //LWRP不可用此Tag

(2)修改“Tag”代码:

Tags{“LightMode” = “ForwardBase”} 修改为:Tags{“LightMode” = “UniversalForward”} 。

需要注意的问题是:
1.我的Unity版本为2021;
2.老版本能否兼容并未测试;
3.其他未知错误…

原文:Unity Shader 学习笔记(一)关于“表面着色器”切换渲染管线Shader不可用的问题

猜你喜欢

转载自blog.csdn.net/weixin_42565127/article/details/130486897