unity为什么有的shader材质不能一键转换为默认支持URP的shader

您所在的位置:网站首页 洋红色是紫色吗 unity为什么有的shader材质不能一键转换为默认支持URP的shader

unity为什么有的shader材质不能一键转换为默认支持URP的shader

2023-09-04 05:53| 来源: 网络整理| 查看: 265

在unity项目中切换为URP之后,可能大部分材质都会变成粉色(错误状态),这时候我们可以点击Edit-Render Pipeline-Universal Render Pipeline下的选项来进行自动转换为支持URP的材质,但是有的时候会出现

“xxx material was not upgraded. There's no upgrader to convert xxxx shader to selected pipeline UnityEditor.Rendering.Universal.UniversalRenderPipelineMaterialUpgrader:UpgradeSelectedMaterials() (at Library/PackageCache/[email protected]/Editor/UniversalRenderPipelineMaterialUpgrader.cs:37)”

这是因为现在unity还不支持将一些自定义的shader文件一键转换为支持URP的shader文件,具体情况可以通过代码来了解。

在我们点击自动转换的选项之后,会在UniversalRenderPipelineMaterialUpgrader脚本中执行UpgradeSelectedMaterials函数:

在UpgradeSelectedMaterials函数中调用了脚本中的GetUpgraders函数:

重点就在这个函数,可以看到这个函数只把unity原本一些自带的shader添加进了upgraders变量中,所以在我们之后会调用UpgradeSelection,然后调用Upgrade函数,之后在Upgrade内部执行GetUpgrader函数时会进行一层判断

如果在upgraders变量中都找不到与要转换shader对应的名字,那么会返回null,就会出现文章开头的提示。

所以说目前unity还是只可以自动转换其自己的标准着色器。还是建议手动进行转换。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3