1. LOD:
通过给SubShader设定一个整型的Level of DetaiI,即LOD数值,可以在运行时根据硬件设备能力来决定是否使用此Shader,以及使用哪一个层级的SubShader。
用法eg:
SubShader
{
LOD 600
Pass { }
}
可以针对某一特定的Shader设置最大LOD,也可以在运行时设置一个全局的LOD。
eg1:
public Shader m_Shader;
void Awake()
{
m_Shader.maximumLOD = 800;//改变指定的
Shader.globalMaximumLOD = 600;// 改变全局的
}
最终结果,如果上述值为全局设为600,特定shader的设为800时,那么Unity所有的Shader(除设置了LOD为800的shader)中LOD为600的SubShader,特定shader的设为800时,选用了LOD为800的SubShader。
测试代码:
Shader "Tut/Shader/Common/_SetShader" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0.5)
_MainTex ("Base (RGB)", 2D) = "white" { }
}
SubShader {
LOD 800
Pass {
Material { Diffuse (0,0,1,1)}
Lighting On
SetTexture [_MainTex] {Combine texture * primary double}
}
}
SubShader {
LOD 600
Pass {
Material { Diffuse (0,1,0,1)}
Lighting On
SetTexture [_MainTex] {Combine texture * primary double}
}
}
SubShader {
LOD 500
Pass {
Material {Diffuse (1,1,0,1)}
Lighting On
}
}
SubShader {
LOD 400