unity shader内存占用优化

shader文件 内存占用多的原因

最大的原因就是multi_compile变种太多。变种越多文件越大。

查看变种数量

unity shader内存占用优化_第1张图片
standard shader 变种特别多,一般都不用,都自定义shader.建议一般变种数不要超过100

减少变种数量方法

减少变种数量可以多角度去处理。

一、graphic设置

unity shader内存占用优化_第2张图片
限制 工程的里的烘焙方案,雾方案等。

二、shader_feature使用

例子: #pragma shader_feature _NORMALMAP
shader_feature指令的变种再没有使用的时候 ,不会编译到最终文件里,那样可以减少最终变种数量。
注意:这个功能的使用如果是5.4.4p4, 5.5.1p4, and 5.6.0b8版本或者之前的要打到assetbundle里需要 材质和shader在同一个assetbundle里。之后的版本可以用ShaderVariantCollection处理,不过shadert variant文件也要在同一个assetbundle里。(所谓的同一个assetbundle里,就是他们用的同一个包名AssetImporter.assetBundleName)

三、skip_variants使用

这个指令使用在shader里。
例子:
#pragma skip_variants FOG_EXP
#pragma skip_variants FOG_EXP2

四、#define 使用

这个也用在shader里,举个例子。#pragma multi_compile_fog 这个指令有多个,但你明确只用一个,就可以去掉这个指令,用#define FOG_LINEAR 这个代替。

你可能感兴趣的:(unity,游戏引擎)