Dissove溶解特效,这个shader的作用就是让贴图模型贴图出现的形式有燃烧的特效感觉

Shader "Dissolve/Dissolve_TexturCoords" {
Properties {
    _Color ("Main Color", Color) = (1,1,1,1)
    _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
    _Shininess ("Shininess", Range (0.03, 1)) = 0.078125
    _Amount ("Amount", Range (0, 1)) = 0.5
    _StartAmount("StartAmount", float) = 0.1
    _Illuminate ("Illuminate", Range (0, 1)) = 0.5
    _Tile("Tile", float) = 1
    _DissColor ("DissColor", Color) = (1,1,1,1)
    _ColorAnimate ("ColorAnimate", vector) = (1,1,1,1)
    _MainTex ("Base (RGB) Gloss (A)", 2D) = "white" {}
    _BumpMap ("Normalmap", 2D) = "bump" {}
    _DissolveSrc ("DissolveSrc", 2D) = "white" {}
    _DissolveSrcBump ("DissolveSrcBump", 2D) = "white" {}

}
SubShader { 
    Tags { "RenderType"="Opaque" }
    LOD 400
    cull off
    
    
CGPROGRAM
#pragma target 3.0
#pragma surface surf BlinnPhong addshadow



sampler2D _MainTex;
sampler2D _BumpMap;
sampler2D _DissolveSrc;
sampler2D _DissolveSrcBump;

fixed4 _Color;
half4 _DissColor;
half _Shininess;
half _Amount;
static half3 Color = float3(1,1,1);
half4 _ColorAnimate;
half _Illuminate;
half _Tile;
half _StartAmount;



struct Input {
    float2 uv_MainTex;
    float2 uv_BumpMap;
    float2 uvDissolveSrc;
};

void vert (inout appdata_full v, out Input o) {}

void surf (Input IN, inout SurfaceOutput o) {
    fixed4 tex = tex2D(_MainTex, IN.uv_MainTex);
    o.Albedo = tex.rgb * _Color.rgb;
    
    float ClipTex = tex2D (_DissolveSrc, IN.uv_MainTex/_Tile).r ;
    float ClipAmount = ClipTex - _Amount;
    float Clip = 0;
    float4 DematBump =  tex2D (_DissolveSrcBump,IN.uv_MainTex/_Tile);
    o.Normal = UnpackNormal(tex2D(_BumpMap, IN.uv_BumpMap));
if (_Amount > 0)
{
    if (ClipAmount <0)
    {
        Clip = 1; //clip(-0.1);
    
    }
     else
     {
    
        if (ClipAmount < _StartAmount)
        {
            if (_ColorAnimate.x == 0)
                Color.x = _DissColor.x;
            else
                Color.x = ClipAmount/_StartAmount;
          
            if (_ColorAnimate.y == 0)
                Color.y = _DissColor.y;
            else
                Color.y = ClipAmount/_StartAmount;
          
            if (_ColorAnimate.z == 0)
                Color.z = _DissColor.z;
            else
                Color.z = ClipAmount/_StartAmount;

            o.Albedo  = (o.Albedo *((Color.x+Color.y+Color.z))* Color*((Color.x+Color.y+Color.z)))/(1 - _Illuminate);
            o.Normal = UnpackNormal(tex2D(_DissolveSrcBump, IN.uvDissolveSrc));
        
        }
     }
 }

 
if (Clip == 1)
{
clip(-0.1);
}

   
    //////////////////////////////////
    //
    o.Gloss = tex.a;
    o.Alpha = tex.a * _Color.a;
    o.Specular = _Shininess;
    
}
ENDCG
}

FallBack "Specular"
}
Dissove

 

posted on 2018-03-21 10:23  虾球  阅读(819)  评论(0)    收藏  举报

导航