1.Unity的3种Shader流程图
上面三种Shader在unity中都能够使用一种ShaderLab 的语法来进行编写Shader。基本的ShaderLab的基本结构如下
Shader “ name” =
{
[Properties]
[SubShader]
[FallBack]
}
Properties : 属性,他定义了一些引用变量,可以在 Unity简视面板上进行查看,设置。
SubShader :一个shader可以有多个Subshader,在执行的时候,只会执行一个图形硬件支持的SubShader,判断顺序从第一种以此往后边进行怕断,判断到哪一个subshader当前能够执行,就执行那一个。
FallBack:当上述所有的SubShader图形硬件都不能够执行的话就会执行FallBack。
2.Unity官方自带的Shader类型流程图
Properties{
_Color("Main Color",color) = (1,1,1,1) //漫反射的颜色
_Ambient("Ambient Color",color) = (0.3,0.3,0.3,0.3)
_Specuar("Specular Color",color) = (1,1,1,1) //高光的强度
_Shininess("Shininess",Range(0,8)) = 4 //高光的强度
_Emission("Emission",color) = (1,0,0,1) // 自发光的颜色
_MainTexture("Main Texture",2D) = "white"{}
_SecondTexture("Main Texture",2D) = "white"{}
_Constant("ConstantColor",color) = (1,1,1,1)
}
Subshader{
Tags { "Queue" = "Transparent" }
pass{
//进行混合渲染
Blend SrcAlpha OneMinusDstColor
material
{
diffuse[_Color]
ambient[_Ambient]
specular[_Specuar]
shininess[_Shininess]
emission[_Emission]
}
lighting on
separatespecular on
settexture[_MainTexture]
{
combine texture * primary double //混合之前的颜色
}
// primary 总是当前纹理 和顶点光照后的颜色进行混合
// previous 当前的纹路 和之前所以的纹理 和定点颜色进行混合
settexture[_SecondTexture]
{
constantcolor [_Constant]
combine texture * previous double ,texture * constant //混合之前的颜色 后面加 texture 只是通过贴图的alpha 来作为 透明通道
}
}
}
}
关键点的函数
上面三种Shader在unity中都能够使用一种ShaderLab 的语法来进行编写Shader。基本的ShaderLab的基本结构如下
Shader “ name” =
{
[Properties]
[SubShader]
[FallBack]
}
Properties : 属性,他定义了一些引用变量,可以在 Unity简视面板上进行查看,设置。
SubShader :一个shader可以有多个Subshader,在执行的时候,只会执行一个图形硬件支持的SubShader,判断顺序从第一种以此往后边进行怕断,判断到哪一个subshader当前能够执行,就执行那一个。
FallBack:当上述所有的SubShader图形硬件都不能够执行的话就会执行FallBack。
2.Unity官方自带的Shader类型流程图
3.FiexdFunction shader 片段,主要的命令及其规则
4,来奉上FixedFunction Shader 的代码片段
Properties{
_Color("Main Color",color) = (1,1,1,1) //漫反射的颜色
_Ambient("Ambient Color",color) = (0.3,0.3,0.3,0.3)
_Specuar("Specular Color",color) = (1,1,1,1) //高光的强度
_Shininess("Shininess",Range(0,8)) = 4 //高光的强度
_Emission("Emission",color) = (1,0,0,1) // 自发光的颜色
_MainTexture("Main Texture",2D) = "white"{}
_SecondTexture("Main Texture",2D) = "white"{}
_Constant("ConstantColor",color) = (1,1,1,1)
}
Subshader{
Tags { "Queue" = "Transparent" }
pass{
//进行混合渲染
Blend SrcAlpha OneMinusDstColor
material
{
diffuse[_Color]
ambient[_Ambient]
specular[_Specuar]
shininess[_Shininess]
emission[_Emission]
}
lighting on
separatespecular on
settexture[_MainTexture]
{
combine texture * primary double //混合之前的颜色
}
// primary 总是当前纹理 和顶点光照后的颜色进行混合
// previous 当前的纹路 和之前所以的纹理 和定点颜色进行混合
settexture[_SecondTexture]
{
constantcolor [_Constant]
combine texture * previous double ,texture * constant //混合之前的颜色 后面加 texture 只是通过贴图的alpha 来作为 透明通道
}
}
}
}
关键点的函数
基于alpha测试阶段的流程