Unity之Shader Pass 的通用指令 LOD - 五

Pass 的通用指令 LOD

// 通过对SubShader 设定一个整形 Level Of Detail 即 LOD 数值,
//可以在运行时根据硬件设备的能力决定是否使用此shader, 
//以及使用哪一个层级的 SubShader 
//下面Shader中包含两个数值的LOD  LOD 600 和 LOD 500

Shader "Custom/PassOne" {
    Properties {
        //定义一个颜色
        _Color ("Main Color", Color) = (0, 0, 1, 0.5)
        //定义一个贴图
        _MainTex ("Base (RGB)", 2D) = "white" {} 
    }
    SubShader 
    {       
        Tags {"RenderType" = "Opaque" "IGNOREPROJECTOR" = "TRUE" "QUEUE" = "Transparent"}
        //在此设置该shader的LOD 为 600 如果机器能支持 LOD值 为 600 那么该shader执行该SubShader
        LOD 600

        Pass
        {
            Material
            {
                Diffuse [_Color]  // 使用定义的颜色为漫反射
                //或者  Diffuse (0, 1, 0, 1) 直接写颜色数值  
            }

            // 打开光照, 在此要打开,因为本shader 没写自发光,
            // 只能依靠反射世界中的其他光才能显示出颜色, 
            // 如果 设置为 Lighting Off,关掉光照,那么就成黑色的了
            Lighting On 

            //给材质设置 贴图 
            SetTexture [_MainTex] 
            {
                Combine texture * primary double
            }
        }
    } 

    SubShader 
    {       
        //此处设置LOD 为 500 如果机器无法支持 600,那么机器在渲染的时候
        //将跳过第一个SubShader,如果能支持 500,那么 跳过 第一个SubShader后
        //会执行本 SubShader
        LOD 500

        Pass
        {
            Material
            {           
                Diffuse (0, 1, 0, 1) //在此直接写颜色值     
            }
            Lighting On
        }
    } 

    FallBack "Diffuse"
}

效果如下
Unity之Shader Pass 的通用指令 LOD - 五_第1张图片

在此仅仅设置了颜色,没有添加贴图
Unity之Shader Pass 的通用指令 LOD - 五_第2张图片

下面添加了贴图,颜色设置为(1, 1, 1, 1)

Unity之Shader Pass 的通用指令 LOD - 五_第3张图片

效果如下
Unity之Shader Pass 的通用指令 LOD - 五_第4张图片

你可能感兴趣的:(Unity之Shader)