Shader Variants 打包遇到的问题

1. 遇到的问题

最常见的是打包到手机后效果与PC上不一致,具体情况比如:

  • 光照贴图失效
  • 雾失效
  • 透明或者cutoff失效
    以上首先需要检查的地方是Shader变体的编译设置

2. 超级着色器编译成N个变体

如果需要多吧功能类似的shader, 比把透明,Cutoff和不透明等多个功能集合到一个Shader上,通常把这样的Shader称之为"超级着色器(uber shader)"

实际上这种集合是对shader代码的分支管理, 通过开关不同的宏代码实现功能的切换, 所以在Unity打包时,需要预编译所有可能出现的分支版本.

变体的数量可能非常恐怖, Unity blog有一篇详提到过变体的编译: Stripping scriptable shader variants

3. 在Unity中管理shader变体编译

3.1 Shader Stripping

菜单位置: Edit - Graphic Setting - Shader Stripping

Shader Stripping设置总结
  1. Shader Stripping包括以下几个方面:
    • 光照模式
    • 雾模式
    • GPU Instance
    • 预加载变体
  2. 按实际使用勾选,如果全勾选, 打包shader几个小时都编不完
  3. 如果选择Auto, 结果可能不受控制

3.2 Shader Variant Collection

手动创建

手动修改

选中存出来的Shader Variants Collection文件, 直接在Inspector面板中点击+ -号添加或删除:

自动生成

Edit - Project Settings - Graphics

运行游戏, 让游戏跑一会, 按下"Save to asset" 按钮, 可以把自动搜集打开过场景的shader变体,存到一个文件中:

通过这个变体集合文件进行依赖打AssetBundle包的方式可以实现shader变体的预加载.

注意

自动搜集的功能不够可靠, 做完还是要打包验证,查缺补漏去除冗余是必须的.

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

转载于:https://www.cnblogs.com/CloudLiu/p/10338642.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值