Shader 固定管线详解二

来源:互联网 发布:中级程序员报名 编辑:程序博客网 时间:2024/06/06 17:04
Shader "Sbi/ff2" {    //属性    Properties    {         _Color("Main Color",color)=(1,1,1,1)        //"Main Color"是unity面板中显示的颜色        _Ambient("Ambient",color)=(0.3,0.3,0.3,0.3)        _Specular("Specular",color)=(1,1,1,1)        _Shininess("Shininess",range(0,8))=4//参数float,也可以是range 表示范围        _Emession("Emession",color)=(1,1,1,1)        _Constant("ConstantColor",color)=(1,1,1,0.3)         _MainTex("MainTex",2d)=""         _SecendTex("SecendTex",2d)=""    }    SubShader{            Tags {"Queue" = "Transparent"}// 改变渲染次序         Pass{            Blend SrcAlpha OneMinusSrcAlpha //开启混合透明//          color(1,1,1,1)//使用小括号,表示固定值,在Inspector面板中不可见//          color[_Color] //使用中括号,表示参数值,可在Inspector面板随时更改            Material{                diffuse[_Color]//漫反射,表示默认漫反射的颜色                ambient[_Ambient]//环境光                specular[_Specular]//镜面高光                shininess[_Shininess]//表示高光反射的强度与区域                emission[_Emission]//自放光               }                lighting on //打开光照 on表示打开                separatespecular on//独立的镜面高光                //SetTexture 命令必须处在Pass的末尾                //格式为SetTexture [TexturePropertyName] { Texture Block }                //TextureName 必须是被当做纹理的属性来定义。在TextureBlock中设置如何定义这个纹理。            settexture[_MainTex]{                //combine 命令 用法形式有8种                //combine src1 * src2        结果纹理将比输入纹理更暗。                //combine src1 + src2        结果纹理将比输入纹理更明亮。                //combine src1 - src2        高亮的部分将变暗                //combine src1 +- src2       src1和src2相加,然后减去0.5                //combine src1 lerp (src2)   src3  在src3和src1之间做插值,使用src2的alpha值。请注意插值是相反的方向,当alpha为1时候src1使用,当alpha为0时候src3使用。                //combine src1 * src2+src3   src1与src2的alpha值混合,然后添加src3                //combine src1 * src2+-src3 src1与src2的alpha值混合,然后和有符号的src3相加                //所有src属性都可以为:previous, constant, primary 或texture                //所有src属性,除lerp外,可以使用符号-来使最终颜色反相。                //所有的src属性后面可以有且仅有1个alpha.                //combine texture                //combine texture * primary //primary代表之前颜色值加光照的计算结果                //combine texture * primary double                //combine texture - primary quad                 combine texture * primary quad                 //Double或者Quad使结果的颜色2倍或者4倍明亮。             }             settexture[_SecondTex]{                constantColor[_Constant]                combine texture * previous double,texture * constant// constant表示 常量颜色从ConstantColor设置中得到 ,constant 只取了constantColor的alpha通道值                //double逗号后面的texture 表示只使用纹理自身的alpha通道,之前的coloralpha值失效             }          }    }}

0 0
原创粉丝点击