Unity着色器中的子程序“...”是什么?

问题描述 投票:4回答:1

代码的实际部分是做什么的?

//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 } };
unity3d shader
1个回答
1
投票

子程序是为特定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指定唯一着色器,作为同一个“着色器”资产的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.