【Unity3D杂谈】记一次升级Unity3D到2021.3.26f1版本shader踩坑

项目组在升级Unity3D版本后遇到模型渲染问题,通过逐行排查Shader代码发现是URP版本升级导致的阴影相关引用变化。最终通过调整编译关系解决了问题。
摘要由CSDN通过智能技术生成

一、问题描述

之前项目组一直在使用的是Unity3D 2021.3.11版本,但是跑了一点时间,发现崩溃明显增多,于是决定将Unity3D 2021.3.26f1版本。

其实理论上只是最后一位的小版本升级,应该没有太大的兼容性问题才对,升级完其他的问题没有发现,但是发现游戏里一些模型渲染不出来了,整体工程也没有报错。而且最诡异的是,电脑上显示是正常的,只有打到安卓和iOS设备是不正常的。

二、追查过程

由于没有明显的报错,只能拿到必现的那个渲染不出来的模型,改它的shader, 用减法的形式,把shader代码一点点注掉,打到手机里,看看减到哪一步就能渲染出来了。

思路感觉没问题,但是出乎意料的是,最后删完所有逻辑代码,shader内只剩下一个最最简单的贴图采样,都不能正常的渲染。但是新建的一个shader却可以。

此时基本上已经断定是shader库的API变动或引用关系变动的问题了。仔细对比了一下这个shader和新建的shader的区别,找到差异的地方进行实验,最后终于发现了问题所在。

三、解决方案

仔细看了下升级的内容,发现URP版本也有一个小版本升级:
>    从
    "com.unity.render-pipelines.universal": "12.1.7",
    升级到了
    "com.unity.render-pipelines.universal": "12.1.11"

最后发现和阴影相关的引用关系有变化:改法如下:

>           
    旧的编译关系:
    #pragma multi_compile _ _MAIN_LIGHT_SHADOWS
    #pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
    修改后的编译关系:
    #pragma multi_compile _ _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MAIN_LIGHT_SHADOWS_SCREEN

再重新出包,到手机上就好了。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留待舞人归

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值