Fixed function shader

Fixed function shader(固定功能的Shader),针对硬件能够执行的基本的命令,这个Shader功能有限,编写较为简单,但处理却是最快的。

Shader "GK/TEST" 
{
	properties
	{
		_Color("主颜色",color)=(1,1,1,1)
		_Ambient("环境光",color)=(0.3,0.3,0.3,0.3)
		_Specular("高光",color)=(1,1,1,1)
		_Shininess("高光范围",range(0,8))=4
		_Emission("自发光",color)=(1,1,1,1)
		_MainTex("主纹理",2d)=""{}
		_SecondTex("副纹理",2d)=""{}
		_Constant("ConstantColor",color)=(1,1,1,0.3)
	}
	SubShader 
	{
		tags{"Queue"="Transparent"}//如果需要透明,则需要调整渲染次序
		pass 
		{
			Blend SrcAlpha OneMinusSrcAlpha//混合方式,原自身的透明度与1-原自身透明度混合
			//color(1,0,0,1)//着色颜色
			//color[_Color]//中括号代表的这是一个参数值,小括号代表的是一个固定值
			material//材质
			{
				diffuse[_Color]//材质的漫反射,本身固有的颜色,但是没有光照,是无法表现出来
				ambient[_Ambient]//环境光对物体的影响
				specular[_Specular]//高光
				shininess[_Shininess]//高光范围
				emission[_Emission]//自发光
			}
				lighting on//打开光
				separatespecular on//要用高光 必须开启

			settexture[_MainTex]//设置纹理
			{
				combine texture*primary double //合并纹理,primary指的是顶点光照过后的颜色,double 是指前面的颜色值x2
			}                        
			settexture[_MainTex]//设置多个纹理的时候,可以直接写settexture,不同的显卡有不同的纹理混合张数的上线
			{
				constantColor[_Constant]//颜色参数
				combine texture*previous double,texture*constant //合并纹理,previous指的是前面所有采样过后的结果,double 是指前面的颜色值x2,texture是指混合自身纹理的透明通道(如果不填,则混合上面所计算的透明通道),constant是前面的颜色参数 少了一个Color
			}

		}
	} 
	
}