当 shader 使用:
#pragma multi_compile _ A1 A2 A3
#pragma multi_compile _ B1 B2 B3
4个multi_compile,2组,一共16个情况
3档,2个平台,6个情况,总计16*6=96个变体
添加处理:
using System.Collections.Generic;
using UnityEditor.Build;
using UnityEditor.Rendering;
using UnityEngine;
public class ShaderVarBuildProcess: IPreprocessShaders
{
public int callbackOrder { get { return 0; } }
public UwShaderVarBuildProcess()
{
}
public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList<ShaderCompilerData> data)
{
if("Unlit/NewUnlitShader" != shader.name)
{
return;
}
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.AppendFormat("shader={3}, passType={0}, passName={1}, shaderType={2}\n",
snippet.passType, snippet.passName, snippet.shaderType, shader.name);
for(int i=0;i<data.Count; ++i)
{
var pdata = data[i];
sb.AppendFormat("{0}.{1},{2}: ", i, pdata.graphicsTier, pdata.shaderCompilerPlatform);
var ks = pdata.shaderKeywordSet.GetShaderKeywords();
foreach(var k in ks)
{
sb.AppendFormat("{0}, ", k.GetKeywordName());
}
sb.Append("\n");
}
Debug.Log(sb.ToString());
}
}
输出以下日志:
shader=Unlit/NewUnlitShader, passType=ForwardBase, passName=MyShader, shaderType=Vertex
0.Tier1,GLES20:
1.Tier2,GLES20:
2.Tier3,GLES20:
3.Tier1,GLES3x:
4.Tier2,GLES3x:
5.Tier3,GLES3x:
6.Tier1,GLES20: B1,
7.Tier2,GLES20: B1,
8.Tier3,GLES20: B1,
9.Tier1,GLES3x: B1,
10.Tier2,GLES3x: B1,
11.Tier3,GLES3x: B1,
12.Tier1,GLES20: B2,
13.Tier2,GLES20: B2,
14.Tier3,GLES20: B2,
15.Tier1,GLES3x: B2,
16.Tier2,GLES3x: B2,
17.Tier3,GLES3x: B2,
18.Tier1,GLES20: B3,
19.Tier2,GLES20: B3,
20.Tier3,GLES20: B3,
21.Tier1,GLES3x: B3,
22.Tier2,GLES3x: B3,
23.Tier3,GLES3x: B3,
24.Tier1,GLES20: A1,
25.Tier2,GLES20: A1,
26.Tier3,GLES20: A1,
27.Tier1,GLES3x: A1,
28.Tier2,GLES3x: A1,
29.Tier3,GLES3x: A1,
30.Tier1,GLES20: A1, B1,
31.Tier2,GLES20: A1, B1,
32.Tier3,GLES20: A1, B1,
33.Tier1,GLES3x: A1, B1,
34.Tier2,GLES3x: A1, B1,
35.Tier3,GLES3x: A1, B1,
36.Tier1,GLES20: A1, B2,
37.Tier2,GLES20: A1, B2,
38.Tier3,GLES20: A1, B2,
39.Tier1,GLES3x: A1, B2,
40.Tier2,GLES3x: A1, B2,
41.Tier3,GLES3x: A1, B2,
42.Tier1,GLES20: A1, B3,
43.Tier2,GLES20: A1, B3,
44.Tier3,GLES20: A1, B3,
45.Tier1,GLES3x: A1, B3,
46.Tier2,GLES3x: A1, B3,
47.Tier3,GLES3x: A1, B3,
48.Tier1,GLES20: A2,
49.Tier2,GLES20: A2,
50.Tier3,GLES20: A2,
51.Tier1,GLES3x: A2,
52.Tier2,GLES3x: A2,
53.Tier3,GLES3x: A2,
54.Tier1,GLES20: A2, B1,
55.Tier2,GLES20: A2, B1,
56.Tier3,GLES20: A2, B1,
57.Tier1,GLES3x: A2, B1,
58.Tier2,GLES3x: A2, B1,
59.Tier3,GLES3x: A2, B1,
60.Tier1,GLES20: A2, B2,
61.Tier2,GLES20: A2, B2,
62.Tier3,GLES20: A2, B2,
63.Tier1,GLES3x: A2, B2,
64.Tier2,GLES3x: A2, B2,
65.Tier3,GLES3x: A2, B2,
66.Tier1,GLES20: A2, B3,
67.Tier2,GLES20: A2, B3,
68.Tier3,GLES20: A2, B3,
69.Tier1,GLES3x: A2, B3,
70.Tier2,GLES3x: A2, B3,
71.Tier3,GLES3x: A2, B3,
72.Tier1,GLES20: A3,
73.Tier2,GLES20: A3,
74.Tier3,GLES20: A3,
75.Tier1,GLES3x: A3,
76.Tier2,GLES3x: A3,
77.Tier3,GLES3x: A3,
78.Tier1,GLES20: A3, B1,
79.Tier2,GLES20: A3, B1,
80.Tier3,GLES20: A3, B1,
81.Tier1,GLES3x: A3, B1,
82.Tier2,GLES3x: A3, B1,
83.Tier3,GLES3x: A3, B1,
84.Tier1,GLES20: A3, B2,
85.Tier2,GLES20: A3, B2,
86.Tier3,GLES20: A3, B2,
87.Tier1,GLES3x: A3, B2,
88.Tier2,GLES3x: A3, B2,
89.Tier3,GLES3x: A3, B2,
90.Tier1,GLES20: A3, B3,
91.Tier2,GLES20: A3, B3,
92.Tier3,GLES20: A3, B3,
93.Tier1,GLES3x: A3, B3,
94.Tier2,GLES3x: A3, B3,
95.Tier3,GLES3x: A3, B3,
shader=Unlit/NewUnlitShader, passType=ForwardBase, passName=MyShader, shaderType=Fragment
0.Tier1,GLES20:
1.Tier2,GLES20:
2.Tier3,GLES20:
3.Tier1,GLES3x:
4.Tier2,GLES3x:
5.Tier3,GLES3x:
6.Tier1,GLES20: B1,
7.Tier2,GLES20: B1,
8.Tier3,GLES20: B1,
9.Tier1,GLES3x: B1,
10.Tier2,GLES3x: B1,
11.Tier3,GLES3x: B1,
12.Tier1,GLES20: B2,
13.Tier2,GLES20: B2,
14.Tier3,GLES20: B2,
15.Tier1,GLES3x: B2,
16.Tier2,GLES3x: B2,
17.Tier3,GLES3x: B2,
18.Tier1,GLES20: B3,
19.Tier2,GLES20: B3,
20.Tier3,GLES20: B3,
21.Tier1,GLES3x: B3,
22.Tier2,GLES3x: B3,
23.Tier3,GLES3x: B3,
24.Tier1,GLES20: A1,
25.Tier2,GLES20: A1,
26.Tier3,GLES20: A1,
27.Tier1,GLES3x: A1,
28.Tier2,GLES3x: A1,
29.Tier3,GLES3x: A1,
30.Tier1,GLES20: A1, B1,
31.Tier2,GLES20: A1, B1,
32.Tier3,GLES20: A1, B1,
33.Tier1,GLES3x: A1, B1,
34.Tier2,GLES3x: A1, B1,
35.Tier3,GLES3x: A1, B1,
36.Tier1,GLES20: A1, B2,
37.Tier2,GLES20: A1, B2,
38.Tier3,GLES20: A1, B2,
39.Tier1,GLES3x: A1, B2,
40.Tier2,GLES3x: A1, B2,
41.Tier3,GLES3x: A1, B2,
42.Tier1,GLES20: A1, B3,
43.Tier2,GLES20: A1, B3,
44.Tier3,GLES20: A1, B3,
45.Tier1,GLES3x: A1, B3,
46.Tier2,GLES3x: A1, B3,
47.Tier3,GLES3x: A1, B3,
48.Tier1,GLES20: A2,
49.Tier2,GLES20: A2,
50.Tier3,GLES20: A2,
51.Tier1,GLES3x: A2,
52.Tier2,GLES3x: A2,
53.Tier3,GLES3x: A2,
54.Tier1,GLES20: A2, B1,
55.Tier2,GLES20: A2, B1,
56.Tier3,GLES20: A2, B1,
57.Tier1,GLES3x: A2, B1,
58.Tier2,GLES3x: A2, B1,
59.Tier3,GLES3x: A2, B1,
60.Tier1,GLES20: A2, B2,
61.Tier2,GLES20: A2, B2,
62.Tier3,GLES20: A2, B2,
63.Tier1,GLES3x: A2, B2,
64.Tier2,GLES3x: A2, B2,
65.Tier3,GLES3x: A2, B2,
66.Tier1,GLES20: A2, B3,
67.Tier2,GLES20: A2, B3,
68.Tier3,GLES20: A2, B3,
69.Tier1,GLES3x: A2, B3,
70.Tier2,GLES3x: A2, B3,
71.Tier3,GLES3x: A2, B3,
72.Tier1,GLES20: A3,
73.Tier2,GLES20: A3,
74.Tier3,GLES20: A3,
75.Tier1,GLES3x: A3,
76.Tier2,GLES3x: A3,
77.Tier3,GLES3x: A3,
78.Tier1,GLES20: A3, B1,
79.Tier2,GLES20: A3, B1,
80.Tier3,GLES20: A3, B1,
81.Tier1,GLES3x: A3, B1,
82.Tier2,GLES3x: A3, B1,
83.Tier3,GLES3x: A3, B1,
84.Tier1,GLES20: A3, B2,
85.Tier2,GLES20: A3, B2,
86.Tier3,GLES20: A3, B2,
87.Tier1,GLES3x: A3, B2,
88.Tier2,GLES3x: A3, B2,
89.Tier3,GLES3x: A3, B2,
90.Tier1,GLES20: A3, B3,
91.Tier2,GLES20: A3, B3,
92.Tier3,GLES20: A3, B3,
93.Tier1,GLES3x: A3, B3,
94.Tier2,GLES3x: A3, B3,
95.Tier3,GLES3x: A3, B3,