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

85 lines
1.9 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/AlphaBlendAlphaWrite"
{
Properties {
_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
_MainTex ("Particle Texture", 2D) = "white" {}
//_InvFade ("Soft Particles Factor", Range(0.01,3.0)) = 1.0
_ClipRect("Clip Rect", Vector) = (0,0,0,0)
_UseMask("UseMask",Float) = 0
}
Category {
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" }
Blend One OneMinusSrcAlpha
//Blend One One//, One One
//ColorMask RGB
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"
float _UseMask;
float4 _ClipRect;
sampler2D _MainTex;
fixed4 _TintColor;
struct appdata_t {
float4 vertex : POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
};
struct v2f {
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
float3 vpos : TEXCOORD2;
UNITY_FOG_COORDS(1)
};
float4 _MainTex_ST;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.vpos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.color = v.color;
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = i.color * _TintColor * tex2D(_MainTex, i.texcoord);
col.a = clamp(col.a, 0, 1);
UNITY_APPLY_FOG(i.fogCoord, col);
col.rgb *= col.a;
if (_UseMask >= 1)
col *= UnityGet2DClipping(i.vpos.xy, _ClipRect);
return col;
}
ENDCG
}
}
}
}