unity的固定管线shader

时间:2023-03-09 15:30:58
unity的固定管线shader

最近shader学习中,看的视频。

练习的固定管线的shader如下:

ps.在unity5中半透明不好用,其他的还好

 //不区分大小写
//这是固定管线的Shader
Shader "ShaderStudy/FixedShader"
{
Properties//定义属性代码块
{
//shader中使用的变量名(显示在检视面板中的变量名,变量类型)=初始值
_mainColor("Main Color", Color) = (, , , )
_ambientColor("Ambient Color", Color) = (, , , )
_specularColor("Specular Color", Color) = (, , , )
_shininess("Smooth", Range(, )) =
_emission("Emission", Color) = (, , , )
_constantColor("ConstantColor", Color) = (, , , 0.5)
_mainTexture("MainTexture", 2D) = ""{}
_secondTexture("SecondTexture", 2D) = ""{}
} SubShader
{
Tags//标签,表明渲染的顺序
{
"Queue" = "Transparent"
} Pass
{
Blend SrcAlpha OneMinusSrcAlpha//混合源alpha值和1-alpha值,使有关于alpha的改变能够正常实现
// color[_MainColor]//单纯设置颜色,这个颜色不带任何效果,[]里面放的是变量
// color(1,1,1,1)//()里面放的是常量
Material//设置材质
{
diffuse[_mainColor]//漫反射效果,需要打开光照效果才能正常使用,不然是黑的,因为没有光
Ambient[_ambientColor]//环境光效果
Specular[_specularColor]//高光效果
Shininess[_shininess]//高光集中程度,数值越大越集中,越光滑
Emission[_emission]//自发光效果
}
Lighting On//打开光照效果,即能够反射光线
// Lighting Off//关闭光照效果
SeparateSpecular On//高光效果打开
// SeparateSpecular Off//高光效果关闭 SetTexture[_mainTexture]
{
// Combine texture//仅使用texture的颜色信息进行着色
// Combine texture * primary//将texture和之前Material中的颜色计算的结果进行混合
Combine texture * primary double//颜色值相乘混合后会导致颜色偏暗,double将颜色值乘以2,提亮最终结果
// Combine texture * primary quad//颜色值相乘混合后会导致颜色偏暗,quad将所得的颜色值乘以4,提亮最终结果
} //可以设置多个texture,但是,最大支持多少个texture由硬件决定,硬件越好,支持混合的texture数量越多
//一半来讲,2个texture的基本都支持
SetTexture[_secondTexture]
{
ConstantColor[_constantColor]
// Combine texture * primary double//这会覆盖之前的texture的计算
//将texture与之前经过所有计算而得出的颜色值进行混合,alpha值进行混合
Combine texture * previous double, texture * constant
//经过测试,unity5里面半透明不好用,随着主摄像机的模式的变化,会掺杂天空盒或者是背景底色,或重复堆叠自身颜色,直至看不出半透明效果
}
}
}
}