batteryDiagnosis/Assets/3rdParty/Sci-Fi VFX/Shaders/SF_VFX_DecalBlended.shader

74 lines
1.8 KiB
Plaintext

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "QFX/SF_VFX/Decal/DecalBlended" {
Properties{
[HDR]_TintColor("Tint Color", Color) = (0.5,0.5,0.5,1)
_MainTex("Main Texture", 2D) = "gray" {}
_MaskPow("Alpha Pow", Float) = 1
}
Subshader{
Tags {"Queue" = "Transparent"}
Pass {
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Offset -1, -1
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
half4 _TintColor;
struct v2f {
float4 vertex : SV_POSITION;
float4 uvMainTex : TEXCOORD0;
float2 texcoord : TEXCOORD1;
float4 uvShadow : TEXCOORD2;
};
float4x4 unity_Projector;
float4x4 unity_ProjectorClip;
float4 _MainTex_ST;
half _MaskPow;
v2f vert(float4 vertex : POSITION)
{
v2f o;
#if UNITY_VERSION >= 550
o.vertex = UnityObjectToClipPos(vertex);
#else
o.vertex = UnityObjectToClipPos(vertex);
#endif
o.uvMainTex = mul(unity_Projector, vertex);
o.uvShadow = mul(unity_Projector, vertex);
o.texcoord = TRANSFORM_TEX(o.uvMainTex.xyz,_MainTex);
return o;
}
sampler2D _MainTex;
sampler2D _FalloffTex;
half4 frag(v2f i) : SV_Target
{
float clampMutliplier = 1 - step(i.uvMainTex.x, 0);
clampMutliplier *= 1 - step(1, i.uvMainTex.x);
clampMutliplier *= 1 - step(i.uvMainTex.y, 0);
clampMutliplier *= 1 - step(1, i.uvMainTex.y);
float projectedCordZ = i.uvShadow.z;
clampMutliplier *= step(projectedCordZ, 1);
clampMutliplier *= step(-1, projectedCordZ);
half4 tex = tex2D(_MainTex, i.texcoord) * clampMutliplier;
half4 res = tex * _TintColor * tex;
res.a = saturate(pow(res.a + res.a * saturate(1 - _MaskPow), _MaskPow));
return res;
}
ENDCG
}
}
}