码迷,mamicode.com
首页 > 其他好文 > 详细

Shader Variants 打包遇到的问题

时间:2019-01-30 17:14:40      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:tle   问题   总结   bubuko   不可   选中   编译   不同的   uber   

遇到的问题

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

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

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

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

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

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

在Unity中设置shader变体编译

Shader Stripping

菜单位置: Edit - Graphic Setting - Shader Stripping
技术分享图片
包括以下几个方面:

  • 光照模式
  • 雾模式
  • GPU Instance
  • 预加载变体

变体预加载搜集

右下角的 "Save to asset" 按钮, 可以把自动搜集打开过场景的shader变体,存到一个文件中,然后通过这个变体搜集文件可以实现shader变体的预加载, 当然这个功能不够可靠, 做完要仔细检查
技术分享图片

在变体搜集文件中修改预加载变体

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

Shader Stripping设置总结

  1. 按实际使用勾选,如果全勾选, 打包shader几个小时都编不完
  2. 如果选择Auto, 结果可能不受控制
  3. 自动搜集场景中的Shader Variants Collection不可靠, 要打包实测技术分享图片技术分享图片技术分享图片

Shader Variants 打包遇到的问题

标签:tle   问题   总结   bubuko   不可   选中   编译   不同的   uber   

原文地址:https://www.cnblogs.com/CloudLiu/p/10338642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!