Shader "Unlit/BlackAreaBlit" { Properties { _MainTex ("Texture", 2D) = "white" {} _MaskTex ("Mask Texture", 2D) = "white" {} } SubShader { Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline" } LOD 100 Pass { ZTest Off ZWrite Off Cull Off CGPROGRAM #pragma target 2.0 #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; sampler2D _MaskTex; float4 _MaskTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } fixed4 frag (v2f i) : SV_Target { // sample the texture fixed4 col = tex2D(_MainTex, i.uv); fixed4 mask = tex2D(_MaskTex, i.uv); fixed4 black = fixed4(0, 0, 0, 1); float minAlpha = 0.02; if (mask.r > minAlpha) { float scale = mask.r * 1; scale = min(scale, 1); scale = max(scale, minAlpha); return col * scale; } return col * minAlpha; } ENDCG } } }