1. 程式人生 > >unity shader實現中槍散紅效果,(參考別人演算法)

unity shader實現中槍散紅效果,(參考別人演算法)

Shader"Custom/RedBound2" {
Properties {
_MainTex ("Base (RGB)"2D) = "white" {}
_Pow ("Pow"Range(7.0,10.0)) = 8.0
    }
SubShader {
Tags { "RenderType"="Opaque" }
//LOD200

Pass
        {
CGPROGRAM
#pragmavertexvert
#pragmafragmentfrag
#include "UnityCG.cginc"
sampler2D_MainTex;
uniformfloat4_MainTex_ST;
float_Pow;
structv2f
 {
float4pos : POSITION;
//fixed4color : COLOR;
//float4normal : NORMAL;
float2texcoord : TEXCOORD0;
floatamount:TEXCOORD1;
            };
v2fvert(appdata_basev)
        {
v2fo;
float3nm;
o.pos = mul (UNITY_MATRIX_MVPv.vertex);
nm = mul (UNITY_MATRIX_IT_MVfloat4(v.normal,0)).xyz;
//nm = mul (UNITY_MATRIX_MVfloat4(
v.normal,0)).xyz;
//mul (UNITY_MATRIX_MVP,v.normal.xyzz).xyz;
nm = normalize(nm);
o.texcoord = TRANSFORM_TEX(v.texcoord_MainTex);
o.amount =  saturate((nm.x*nm.x + nm.y*nm.y - nm.z*nm.z*0.3));
//o.amount =  saturate((nm.x*nm.x + nm.y*nm.y));
o.amount =pow(o.amount,_Pow);
returno;
        }
fixed4frag(v2fi) : COLOR

         {
fixed4ret;
fixed4f4=tex2D(_MainTex,i.texcoord);
ret.rgb=lerp(f4.rgb,fixed3(1,0,0),i.amount);
ret.a=f4.a;
returnret;
         }
ENDCG
        }
    }
}