65 lines
1.8 KiB
Plaintext
65 lines
1.8 KiB
Plaintext
Shader "Hidden/TrashMaze/RevealStamp"
|
|
{
|
|
Properties
|
|
{
|
|
_StampPos ("Stamp Position", Vector) = (0.5, 0.5, 0, 0)
|
|
_StampRadius ("Stamp Radius", Float) = 0.2
|
|
}
|
|
|
|
SubShader
|
|
{
|
|
Tags { "Queue"="Overlay" "RenderType"="Opaque" }
|
|
|
|
// Additive blend to accumulate stamps
|
|
Blend One One
|
|
ZTest Always
|
|
ZWrite Off
|
|
Cull Off
|
|
|
|
Pass
|
|
{
|
|
HLSLPROGRAM
|
|
#pragma vertex vert
|
|
#pragma fragment frag
|
|
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
|
|
|
|
struct Attributes
|
|
{
|
|
float4 positionOS : POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
};
|
|
|
|
struct Varyings
|
|
{
|
|
float4 positionCS : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
};
|
|
|
|
float4 _StampPos;
|
|
float _StampRadius;
|
|
|
|
Varyings vert(Attributes input)
|
|
{
|
|
Varyings output;
|
|
output.positionCS = TransformObjectToHClip(input.positionOS.xyz);
|
|
output.uv = input.uv;
|
|
return output;
|
|
}
|
|
|
|
half4 frag(Varyings input) : SV_Target
|
|
{
|
|
// Calculate distance from stamp center
|
|
float dist = distance(input.uv, _StampPos.xy);
|
|
|
|
// Binary circle: 1.0 inside radius, 0.0 outside
|
|
float alpha = dist < _StampRadius ? 1.0 : 0.0;
|
|
|
|
// Return white with calculated alpha (additive blend accumulates)
|
|
return half4(alpha, alpha, alpha, alpha);
|
|
}
|
|
ENDHLSL
|
|
}
|
|
}
|
|
}
|
|
|