Files
my-project/Assets/Blocks/Shaders/BlockBreak.shader
unknown 087db550f1 bloak
2026-04-16 18:19:23 +05:00

59 lines
1.7 KiB
Plaintext

Shader "Blocks/BlockBreak"
{
// Оверлей анимации разрушения блока.
// Рендерится поверх чанкового меша отдельным объектом 1x1x1.
Properties
{
_Progress ("Break Progress", Range(0,1)) = 0
_CrackTex ("Crack Texture", 2D) = "black" {}
_Color ("Tint", Color) = (0,0,0,1)
}
SubShader
{
Tags
{
"Queue" = "Transparent+1"
"RenderType" = "Transparent"
"IgnoreProjector" = "True"
}
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Offset -1, -1 // рисуем чуть поверх, без z-fighting
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _CrackTex;
float4 _CrackTex_ST;
float _Progress;
fixed4 _Color;
struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; };
struct v2f { float4 pos : SV_POSITION; float2 uv : TEXCOORD0; };
v2f vert(appdata v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _CrackTex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
fixed4 crack = tex2D(_CrackTex, i.uv);
// crack.r — интенсивность трещины; накладывается по прогрессу
float alpha = crack.r * _Progress;
return fixed4(_Color.rgb, alpha);
}
ENDCG
}
}
}