Unity3dShader_凹凸紋理顯示+邊緣顏色與強(qiáng)度

shader知識(shí):http://imgtec.eetrend.com/blogs/%E5%A2%A8%E5%8D%8A%E6%88%90%E9%9C%9C

    //-----------------------------------------------【Shader說(shuō)明】----------------------------------------------
    //  Shader功能:   凹凸紋理顯示+自選邊緣顏色和強(qiáng)度(創(chuàng)建material到游戲?qū)ο螅x值此shader到material即可看到效果)
    //     使用語(yǔ)言:   Shaderlab
    //---------------------------------------------------------------------------------------------------------------------
    Shader "My/NormalRimShader"
    {
        //-------------------------------【屬性】-----------------------------------------
        Properties
        {
            _MainTex ("【紋理】Texture", 2D) = "white" {}
            _BumpMap ("【凹凸紋理】Bumpmap", 2D) = "bump" {}
            _RimColor ("【邊緣顏色】Rim Color", Color) = (0.17,0.36,0.81,0.0)
            _RimPower ("【邊緣顏色強(qiáng)度】Rim Power", Range(0.6,9.0)) = 1.0
        }
 
        //----------------------------【開(kāi)始一個(gè)子著色器】---------------------------
        SubShader
        {
            //RenderType渲染類(lèi)型為Opaque,不透明
            Tags { "RenderType" = "Opaque" }
 
        //-------------------開(kāi)始CG著色器編程語(yǔ)言段-----------------
        CGPROGRAM
 
        //指令,表面著色器,名稱(chēng),使用蘭伯特光照模式
        #pragma surface surf Lambert
 
        //輸入結(jié)構(gòu)體
        struct Input
        {
            float2 uv_MainTex;         //紋理貼圖
            float2 uv_BumpMap;      //法線(xiàn)貼圖
            float3 viewDir;              //觀(guān)察方向
        };
 
        //變量聲明
        sampler2D _MainTex;         //主紋理
        sampler2D _BumpMap;      //凹凸紋理
        float4 _RimColor;              //邊緣顏色
        float _RimPower;              //邊緣顏色強(qiáng)度
 
        //表面著色函數(shù)的編寫(xiě)
        void surf (Input IN, inout SurfaceOutput o)
        {
            //表面反射顏色為紋理顏色
            o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
            //表面法線(xiàn)為凹凸紋理的顏色
            o.Normal = UnpackNormal (tex2D (_BumpMap, IN.uv_BumpMap));
            //邊緣顏色
            half rim = 1.0 - saturate(dot (normalize(IN.viewDir), o.Normal));
            //邊緣顏色強(qiáng)度
            o.Emission = _RimColor.rgb * pow (rim, _RimPower);
        }
 
        //-------------------結(jié)束CG著色器編程語(yǔ)言段------------------
        ENDCG
        }
 
        //“備胎”為普通漫反射
        Fallback "Diffuse"
    }

最終效果

注明:學(xué)習(xí)的案例參考unity3D學(xué)習(xí)網(wǎng)
鏈接:http://www.unity.5helpyou.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • ## 2015.06.05 - [開(kāi)源利弊淺談 - 張超耀](移動(dòng)組周技術(shù)分享總結(jié)#開(kāi)源利弊淺談---張超耀) -...
    XcodeYang閱讀 1,504評(píng)論 1 3
  • ¥關(guān)閉¥ 【雷霆戰(zhàn)機(jī)】 〖http://pan.baidu.com/s/1kVstszX〗 《解壓源碼后直接用AI...
    小菜c閱讀 9,503評(píng)論 0 19
  • @synthesize和@dynamic分別有什么作用?@property有兩個(gè)對(duì)應(yīng)的詞,一個(gè)是 @synthes...
    筆筆請(qǐng)求閱讀 531評(píng)論 0 1
  • 阿甘正傳,一部IP電影,因?yàn)槲业挠∠罄镉幸槐窘凶觥栋⒏收齻鳌返臅?shū),我只是知道,并沒(méi)有看過(guò)。今天看了電影,也就想寫(xiě)一...
    蒼峰冷冽閱讀 1,541評(píng)論 1 5
  • 感想很多,但卻如珍珠一樣散落,找不到一根線(xiàn)穿起來(lái),姑且先記錄下來(lái)。 1.關(guān)于孩哥。這估計(jì)是我看過(guò)的武俠片...
    秦德喜閱讀 4,771評(píng)論 2 1