Files
JJBB/Assets/Project/Shader/ParticleAlphaMask.shader
2024-08-23 15:49:34 +08:00

77 lines
1.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Author: Blastom
// 仅用于摄像机拍摄UI面板的RenderTexture
// 该材质会向颜色Buffer中写入Alpha值因此不会在没有背景时被剔除
Shader "Zhanyou/Particles/AlphaBlendMask"
{
Properties {
_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
_MainTex ("Particle Texture", 2D) = "white" {}
_MaskTex ("Mask Texture", 2D) = "white" {}
}
Category {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend one OneMinusSrcAlpha
Cull Off
Lighting Off
ZWrite Off
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#pragma multi_compile_fog
#include "UnityCG.cginc"
#include "UnityUI.cginc"
uniform fixed4 _TintColor;
uniform sampler2D _MainTex;
uniform float4 _MainTex_ST;
uniform sampler2D _MaskTex;
uniform float4 _MaskTex_ST;
struct appdata_t
{
float4 vertex : POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 uv0 : TEXCOORD0;
float2 uv1 : TEXCOORD1;
UNITY_FOG_COORDS(2)
};
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.color = v.color;
o.uv0 = TRANSFORM_TEX(v.texcoord, _MainTex);
o.uv1 = TRANSFORM_TEX(v.texcoord, _MaskTex);
UNITY_TRANSFER_FOG(o, o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 maskCol = tex2D(_MaskTex, i.uv1);
fixed4 col = i.color * _TintColor * fixed4(tex2D(_MainTex, i.uv0).rgb,maskCol.a) * 2.0;
col.a = clamp(col.a, 0, 1);
UNITY_APPLY_FOG(i.fogCoord, col);
col.rgb *= col.a;
return col;
}
ENDCG
}
}
}
}