74 lines
1.8 KiB
Plaintext
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
|
|
}
|
|
}
|
|
}
|