针对硬件能够执行的命令而编写的shader,功能有限,速度快。
Properties:属性
Material:材质
Lighting:启用顶点光照
Settexture:设置纹理
Pass:通道
First Shader----基础shader
Shader"Custom/ff1" //shader名称
{
//通过properties,可以在着色器可配置参数部分,设置颜色
properties
{
//属性名称,显示在面板上的名称,参数类型
_Color("Main Color",color)=(1,1,1,1)
_Ambient("Ambient",color)=(0.3,0.3,0.3,0.3)
_Specular("Specular",color)=(1,1,1,1)
_Shininess("Shininess",range(0,8))=4
_Emission("Emission",color)=(1,1,1,1)
}
SubShader
{
pass{ //编辑渲染通道
//固定值 color(1,0,0,1) 描述颜色信息,红色
//参数值,属性中设置的颜色用于通道中的颜色,中括号中为属性值
// color[_Color]
//体现三维立体,需要光照
material //命令块
{
//描述材质漫反射颜色,物体本身固有颜色
diffuse[_Color]
//环境对背光面的影响参数
ambient[_Ambient]
//光滑的物体,会看到独立的高光部分
specular[_Specular]
//描述specular的强度,高光反射的区域
shininess[_Shininess]
//自发光
emission[_Emission]
}
//启动光照,显示物体的固有颜色,有两个参数on/off,有向光面和背光面,针对属性diffuse
lighting on
//使用高光必须添加独立的镜面高光,大面积高光,不符合实际,高光反射得不够集中,需要shininess控制。
separatespecular on
}
}
}
Second Shader----贴图shader
Shader"Custom/shaderbase1"
{
Properties
{
_Color("Main Color",color)=(1,1,1,1)
_Ambient("Ambient",color)=(0.3,0.3,0.3,0.3)
_Specular("Specular",color)=(1,1,1,1)
_Shininess("Shininess",range(0,8))=4
_Emission("Emission",color)=(1,1,1,1)
_MainTex("MainTex",2D)=""
}
SubShader
{
pass
{
material
{
diffuse[_Color]
ambient[_Ambient]
specular[_Specular]
shininess[_Shininess]
emission[_Emission]
}
lighting on
SeparateSpecular on
settexture[_MainTex]
{
combine texture*primary quad
}
}
}
}
ThirdShader----纹理混合
Shader"Custom/shaderbase2"
{
Properties
{
_Color("Main Color",color)=(1,1,1,1)
_Ambient("Ambient",color)=(0.3,0.3,0.3,0.3)
_Specular("Specular",color)=(1,1,1,1)
_Shininess("Shininess",range(0,8))=4
_Emission("Emission",color)=(1,1,1,1)
//第一张纹理
_MainTex("MainTex",2D)=""
//第二张纹理
_SecondTex("SecondTex",2D)=""
}
SubShader
{
//改变渲染顺序
Tags{"Queue"="Transparent"}
pass
{
material
{
diffuse[_Color]
ambient[_Ambient]
specular[_Specular]
shininess[_Shininess]
emission[_Emission]
}
lighting on
SeparateSpecular on
settexture[_MainTex]
{
//当前纹理*顶点光照颜色
combine texture*primary quad
}
settexture[_SecondTex]
{
//previous:当前纹理*之前所有计算和采样后的结果
combine texture*previous double,texture
}
}
}
ForthShader----半透明
Shader"Custom/transparent"
{
Properties
{
_Color("Main Color",color)=(1,1,1,1)
_Ambient("Ambient",color)=(0.3,0.3,0.3,0.3)
_Specular("Specular",color)=(1,1,1,1)
_Shininess("Shininess",range(0,8))=4
_Emission("Emission",color)=(1,1,1,1)
//第一张纹理
_MainTex("MainTex",2D)=""
//第二张纹理
_SecondTex("SecondTex",2D)=""
}
SubShader
{
Tags{"Queue"="Transparent"}
pass
{
Blend SrcAlpha OneMinusSrcAlpha //源alpha与(1-源alpha)的比例去混合之前已经渲染的场景颜色
material
{
diffuse[_Color]
ambient[_Ambient]
specular[_Specular]
shininess[_Shininess]
emission[_Emission]
}
lighting on
SeparateSpecular on
settexture[_MainTex]
{
//当前纹理*顶点光照颜色
combine texture*
primary quad
}
settexture[_SecondTex]
{
//previous:当前纹理*之前所有计算和采样后的结果
combine texture*previous double,texture
}
}
}
}
贴图很重要
Settexture:设置贴图
Combine:
Constantcolor
Blend:@混合
Tags:控制渲染顺序