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

Shader Variants 打包遇到的问题相关推荐

  1. shader变体是什么_Shader Variants 打包遇到的问题

    遇到的问题 最常见的是打包到手机后效果与PC上不一致,具体情况比如: 光照贴图失效 雾失效 透明或者cutoff失效 以上首先需要检查的地方是Shader变体的编译设置 超级着色器编译成N个变体 如果 ...

  2. #pragma multi_compile_fwdbase会增加很多个shader variants

    #pragma multi_compile_fwdbase是unity内置的用于前向渲染的关键字快捷方式,它包含了前向渲染光照计算需要的大多数关键字,因此会被shader带来很多的变体. 下面这个简单 ...

  3. Unity shader build 打包android和PC机显示效果不一样

    做了一个次表面皮肤SSSS效果,发现PC正常,打包到andoird机上这个功能就消失了,很奇怪,下面写一个一一排除的过程 CPU代码方面 一开始以为是rendertexture dont care的问 ...

  4. Unity Shader variants (shader 变体)

    官方地址 https://docs.unity3d.com/cn/2022.2/Manual/SL-MultipleProgramVariants.html 教程可以看这里 https://www.j ...

  5. 解决打包AssetBundle时Shader(材质)丢失问题

    从Unity4.2开始,为了减少首包大小,不会默认将所有Shader引擎加到游戏程序中,据Unity技术支持人员所说, Unity会将Shader引擎打包到Assetbundle资源中,但是我测试发现 ...

  6. Unity Shader - Making multiple shader program variants 制作shader程序多变体

    目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Making multiple shader program variants 版本:2019.1 Making mult ...

  7. shader变体是什么_GitHub - 7732050/ShaderVariantCollector

    一种Shader变体收集和打包编译优化的思路 介绍 什么是变体 引用Unity官方文档的解释: ShaderVariant In Unity, many shaders internally have ...

  8. Unity Shader中各部分定义内容详解

    Unity Shader中各部分定义内容详解 样板 Shader "Practice/Unlit/SimpleUnlit" {Properties{_MainTex (" ...

  9. combotree 可以异步加载吗_Unity AssetBundle 资源打包,加载,本地缓存方式,安卓,PC本地加载路径问题...

    AssetBundle的定义和作用: 1,AssetBundle是一个压缩包包含模型.贴图.预制体.声音.甚至整个场景,可以在游戏运行的时候被加载. 2,AssetBundle自身保存着互相的依赖关系 ...

最新文章

  1. libsvm java api文档,libsvm-javaAPI
  2. Linux 忘记root密码(记录)
  3. Windows中如何正确认识和安装驱动程序
  4. docker新增目录映射_开发也需了解的运维知识之Docker
  5. python 异常和弹出框
  6. 16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证
  7. junit:junit_简而言之,JUnit:Hello World
  8. v-if、v-for、v-model、v-on
  9. 关于static 和 const
  10. 使用Material Design的Flutter应用
  11. 蓝桥杯2016年第七届C/C++省赛B组第三题-凑算式
  12. spark入门Intellj环境配置scalark入门Intellj环境配置scala
  13. ASP.NET WebAPI构建API接口服务实战演练
  14. 梯度下降与一元线性回归
  15. php 聚合广告平台,带统计功能的广告管理系统PHP源码 多维度投放策略 多种风格后台...
  16. 人工智能python编程面试题_5000字纯干货|人工智能笔试题目及答案
  17. 求幂级数展开的部分和 / 求分数序列前N项和 / 特殊a串数列求和
  18. 后羿采集器怎么导出数据_数据采集教程_智能模式_基本操作流程_后羿采集器
  19. DICOM之常用Tag
  20. 腾讯课堂小白训练——仿百度登陆页面

热门文章

  1. Scrum 学习篇 -- Backlog之浅析 (三)
  2. 用友开发者中心应用构建实践指引!
  3. 2023 点击微信号复制跳转微信网页源码
  4. 对偶理论和灵敏度分析(单纯形法矩阵形式、对偶理论及转化、影子价格、机会成本、差额成本、对偶单纯形法、灵敏度分析)
  5. DCSync:攻击与检测
  6. uni-app,微信小程序实现全局水印
  7. 看PS自学教程 提高设计效率
  8. 《深入理解Linux网络技术内幕》阅读笔记(十一)
  9. CodeForces-691E Xor-sequences(矩阵快速幂)
  10. 初次联系导师短信模板_干货:如何联系导师?如何写自荐信?(复试篇)