收集Unity变体工具
2023/07
03
21:07
处理步骤
1、查找所有的Material文件,收集所有Material对象的shaderKeywords
2、查找所有的Shader文件,获得 常用的Keyword列表,以及 所有的Keyword列表
3、创建ShaderVariantCollection.ShaderVariant对象svobj
4、判断Materials中的keywords如果在 常用的Keyword列表中,则追加到svobj
5、如果有自定义的EnableKeyword,判断它是否在 所有的Keyword列表中,如果在,追加到svobj
6、将svobj对象写入到 ShaderVariant 变体文件中,完成收集
总结
先把材质中用到的常用组合写入到变体中
再把代码中手动的组合写入到变体中,注意:代码中控制的宏,要用multi_compile
public int AddMultiCompileKeywords(Shader shader, ShaderVariantCollection shaderVariantCollections)
{
if (mPassTypes.Length == 0)
{
return -2;
}
foreach(var strKeywords in mAllCombinaKeywords)
{
var keywordArray = strKeywords.Split(' ');
foreach (var passType in mPassTypes)
{
var ePassType = (UnityEngine.Rendering.PassType)passType;
var shaderVariant = new ShaderVariantCollection.ShaderVariant()
{
shader = shader,
passType = ePassType,
keywords = keywordArray
};
if (!shaderVariantCollections.Contains(shaderVariant))
{
shaderVariantCollections.Add(shaderVariant);
}
}
}
return 0;
}
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: 收集Unity变体工具
Post Link: 收集Unity变体工具