Shader编程笔记(二)<新手入门> 固定管线Shader

本文重点介绍combine 命令的使用

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值失效
             }  

        }

    }

}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值