0评论

Unity中简单实现渐变着色器

文章来自https://blog.csdn.net/u014761712/article/details/74360457 2019-03-18 199浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏开发行业精英群711501594

本篇文章给大家分享在Unity开发中简单实现渐变着色器。

可以控制模型的的本身坐标以及渐变参数进行测试:
 Shader "Custom/CotrolGradient_3Color" {
     Properties {
         [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
         _ColorTop ("Top Color", Color) = (1,1,1,1)
         _ColorMid ("Mid Color", Color) = (1,1,1,1)
         _ColorBot ("Bot Color", Color) = (1,1,1,1)
         _Middle ("Middle", Range(0.001, 0.999)) = 1
         _test ("Test", Range(0.001, 0.999)) = 1
     }
     SubShader {
          Tags {"Queue"="Background"  "IgnoreProjector"="True"}
         LOD 100
         ZWrite On
         Pass {
         CGPROGRAM
         #pragma vertex vert  
         #pragma fragment frag
         #include "UnityCG.cginc"
         fixed4 _ColorTop;
         fixed4 _ColorMid;
         fixed4 _ColorBot;
         float  _Middle;
         float _test ;
         struct v2f {
             float4 pos : SV_POSITION;
             float4 texcoord : TEXCOORD0;
         };
         v2f vert (appdata_full v) {
             v2f o;
             if(v.vertex.y > _test)
             {
                v.vertex.y = _test;
             }
             o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
             o.texcoord = v.texcoord;
             return o;
         }
         fixed4 frag (v2f i) : COLOR {
             fixed4 c = lerp(_ColorBot, _ColorMid, i.texcoord.y / _Middle) * step(i.texcoord.y, _Middle);
             c += lerp(_ColorMid, _ColorTop, (i.texcoord.y - _Middle) / (1 - _Middle)) * step(_Middle, i.texcoord.y);
             c.a = 1;
             return c;
         }
         ENDCG
         }
     }
 }

以上就是简单实现渐变着色器的全部内容,希望能对大家有所帮助。