Fixed Function Shaders

"固定功能管线着色器"

Posted by PandaL33 on May 24, 2017

固定功能管线着色器

固定功能管线着色器一般用于不支持高级着色器特性的旧硬件上,采用ShaderLab语言进行编写,其关键代码一般在Pass的材质设置Material{}和纹理设置SetTexture{}部分。

下面以Unity3D内建的顶点光照着色器为例进行说明:

//顶点光照着色器代码
Shader "VertexLit"{
    Properties{//属性定义
        _Color("Main Color",Color)=(1,1,1,0.5)
        _SpecColor("Sec Color",Color)=(1,1,1,1)
        _Emission("Emmisive Color",Color)=(0,0,0,0)
        _Shininess("Shinniness",Range(0.01,1))=0.7
        _MainTex("Base (RGB)",2D)="white"{}
    }
    SubShader{
        Pass{//Pass定义
            Material{//设置光照所需的材质参数
                Diffuse[_Color]
                Ambient[_Color]
                Shininess[_Shininess]
                Specular[_SpecColor]
                Emission[_Emission]
            }
            Lighting On  //开启光照
            SeparateSecular On //开启高光颜色
            SetTexture[_MainTex]{//设置纹理
                constantColor[_Color] //设置一个常量颜色值
                combine texture*primary DOUBLE,texture*constant //混合命令
            }
        }
    }
}