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设置总结
- Shader Stripping包括以下几个方面:
- 光照模式
- 雾模式
- GPU Instance
- 预加载变体
- 按实际使用勾选,如果全勾选, 打包shader几个小时都编不完
- 如果选择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 打包遇到的问题相关推荐
- shader变体是什么_Shader Variants 打包遇到的问题
遇到的问题 最常见的是打包到手机后效果与PC上不一致,具体情况比如: 光照贴图失效 雾失效 透明或者cutoff失效 以上首先需要检查的地方是Shader变体的编译设置 超级着色器编译成N个变体 如果 ...
- #pragma multi_compile_fwdbase会增加很多个shader variants
#pragma multi_compile_fwdbase是unity内置的用于前向渲染的关键字快捷方式,它包含了前向渲染光照计算需要的大多数关键字,因此会被shader带来很多的变体. 下面这个简单 ...
- Unity shader build 打包android和PC机显示效果不一样
做了一个次表面皮肤SSSS效果,发现PC正常,打包到andoird机上这个功能就消失了,很奇怪,下面写一个一一排除的过程 CPU代码方面 一开始以为是rendertexture dont care的问 ...
- Unity Shader variants (shader 变体)
官方地址 https://docs.unity3d.com/cn/2022.2/Manual/SL-MultipleProgramVariants.html 教程可以看这里 https://www.j ...
- 解决打包AssetBundle时Shader(材质)丢失问题
从Unity4.2开始,为了减少首包大小,不会默认将所有Shader引擎加到游戏程序中,据Unity技术支持人员所说, Unity会将Shader引擎打包到Assetbundle资源中,但是我测试发现 ...
- Unity Shader - Making multiple shader program variants 制作shader程序多变体
目录:Unity Shader - 知识点目录(先占位,后续持续更新) 原文:Making multiple shader program variants 版本:2019.1 Making mult ...
- shader变体是什么_GitHub - 7732050/ShaderVariantCollector
一种Shader变体收集和打包编译优化的思路 介绍 什么是变体 引用Unity官方文档的解释: ShaderVariant In Unity, many shaders internally have ...
- Unity Shader中各部分定义内容详解
Unity Shader中各部分定义内容详解 样板 Shader "Practice/Unlit/SimpleUnlit" {Properties{_MainTex (" ...
- combotree 可以异步加载吗_Unity AssetBundle 资源打包,加载,本地缓存方式,安卓,PC本地加载路径问题...
AssetBundle的定义和作用: 1,AssetBundle是一个压缩包包含模型.贴图.预制体.声音.甚至整个场景,可以在游戏运行的时候被加载. 2,AssetBundle自身保存着互相的依赖关系 ...
最新文章
- libsvm java api文档,libsvm-javaAPI
- Linux 忘记root密码(记录)
- Windows中如何正确认识和安装驱动程序
- docker新增目录映射_开发也需了解的运维知识之Docker
- python 异常和弹出框
- 16 分频 32 分频是啥意思_Verilog 数字分频器的设计及验证
- junit:junit_简而言之,JUnit:Hello World
- v-if、v-for、v-model、v-on
- 关于static 和 const
- 使用Material Design的Flutter应用
- 蓝桥杯2016年第七届C/C++省赛B组第三题-凑算式
- spark入门Intellj环境配置scalark入门Intellj环境配置scala
- ASP.NET WebAPI构建API接口服务实战演练
- 梯度下降与一元线性回归
- php 聚合广告平台,带统计功能的广告管理系统PHP源码 多维度投放策略 多种风格后台...
- 人工智能python编程面试题_5000字纯干货|人工智能笔试题目及答案
- 求幂级数展开的部分和 / 求分数序列前N项和 / 特殊a串数列求和
- 后羿采集器怎么导出数据_数据采集教程_智能模式_基本操作流程_后羿采集器
- DICOM之常用Tag
- 腾讯课堂小白训练——仿百度登陆页面