中激光枪被融的效果,另外需要一个灰度噪声图

本文介绍了一个Unity Shader实例,用于实现带有纹理坐标溶解效果的游戏对象。通过调整多种参数,如颜色、高光、溶解开始阈值等,可以创建复杂的视觉效果。Shader使用了Blinn-Phong光照模型,并包含了一些条件判断来实现溶解边界上的颜色渐变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多注释的地方可以不注释,clip( alpha-0.5) 是剔除alpha小于0.5的部分。



Shader "Dissolve/Dissolve_TexturCoords" {

Properties {
    //_Color ("Main Color", Color) = (1,1,1,1)
    _SpecColor ("Specular Color"Color) = (0.50.50.51)
    _Shininess ("Shininess"Range (0.031)) = 0.078125
    _Amount ("Amount"Range (01)) = 0.5
    _StartAmount("StartAmount"float) = 0.1
    _Illuminate ("Illuminate"Range (01)) = 0.5
    _Tile("Tile"float) = 1
    _DissColor ("DissColor"Color) = (1,1,1,1)
    _ColorAnimate ("ColorAnimate"vector) = (1,1,1,1)
    _MainTex ("Base (RGBGloss (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 vout Input o) {}

void surf (Input INinout SurfaceOutput o) {
    fixed4 tex = tex2D(_MainTexIN.uv_MainTex);
    o.Albedo = tex.rgb//_Color.rgb;
    
    float ClipTex = tex2D (_DissolveSrcIN.uv_MainTex/_Tile).r ;
    float ClipAmount = ClipTex - _Amount;
    //float Clip = 0;
    //float4 DematBump =  tex2D (_DissolveSrcBump,IN.uv_MainTex/_Tile);
    //o.Normal = UnpackNormal(tex2D(_BumpMapIN.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*10;///_StartAmount;
          
            //if (_ColorAnimate.y == 0)
            //    Color.y = _DissColor.y;
            //else
                Color.y = ClipAmount*10;//_StartAmount;
          
            //if (_ColorAnimate.z == 0)
            //    Color.z = _DissColor.z;
            //else
                Color.z = ClipAmount*10;//_StartAmount;

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

 
if (ClipAmount <0)
{
    clip(-0.1);
}

   
    //////////////////////////////////
    //
    o.Gloss = tex.a;
    o.Alpha = tex.a;// * _Color.a;
    o.Specular = _Shininess;
    clip(o.Alpha-0.5);// my adding
}
ENDCG
}

FallBack "Specular"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值