当前位置:   article > 正文

unity为什么有的shader材质不能一键转换为默认支持URP的shader_unity 自定义shader转变为urp

unity 自定义shader转变为urp

在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/com.unity.render-pipelines.universal@7.3.1/Editor/UniversalRenderPipelineMaterialUpgrader.cs:37)”

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

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

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/98298
推荐阅读
相关标签
  

闽ICP备14008679号