代码的实际部分是做什么的?
//this partical >> SubProgram "opengl " { <<<
Keywords { "LIGHTMAP_ON" "DIRLIGHTMAP_ON" "HDR_LIGHT_PREPASS_OFF" }
Vector 0 [_Color]
SetTexture 0 [_MainTex] 2D 0
SetTexture 1 [_LightBuffer] 2D 1
SetTexture 2 [unity_Lightmap] 2D 2
"!!ARBfp1.0
PARAM c[2] = { program.local[0],
{ 8 } };
子程序是为特定API提供特定着色器(片段或顶点着色器)的一种方法。
所以说你有以下几点
SubShader
{
Pass
{
Tags { "RenderType"="Opaque" }
Program "vp"
{
SubProgram "opengl"
{
//Do something if we're rendering with OpenGL
}
SubProgram "gles"
{
//Do something if we're rendering with GLES
}
}
}
}
然后,您可以根据要渲染的API指定唯一着色器,作为同一个“着色器”资产的一部分。