44 lines
		
	
	
		
			895 B
		
	
	
	
		
			HLSL
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			895 B
		
	
	
	
		
			HLSL
		
	
	
	
	
	
|  | 
 | ||
|  | #if !defined(SPRITE_MASK_SHARED) | ||
|  | #define SPRITE_MASK_SHARED | ||
|  | 
 | ||
|  | 
 | ||
|  | // alpha below which a mask should discard a pixel, thereby preventing the stencil buffer from being marked with the Mask's presence | ||
|  | half  _Cutoff; | ||
|  | 
 | ||
|  | TEXTURE2D(_MainTex); | ||
|  | SAMPLER(sampler_MainTex); | ||
|  | 
 | ||
|  | struct Attributes | ||
|  | { | ||
|  |     float4 positionOS : POSITION; | ||
|  |     half2  texcoord : TEXCOORD0; | ||
|  | }; | ||
|  | 
 | ||
|  | struct Varyings | ||
|  | { | ||
|  |     float4 positionCS : SV_POSITION; | ||
|  |     half2  uv : TEXCOORD0; | ||
|  | }; | ||
|  | 
 | ||
|  | Varyings MaskRenderingVertex(Attributes input) | ||
|  | { | ||
|  |     Varyings output; | ||
|  | 
 | ||
|  |     output.positionCS = TransformObjectToHClip(input.positionOS.xyz); | ||
|  |     output.uv = input.texcoord; | ||
|  | 
 | ||
|  |     return output; | ||
|  | } | ||
|  | 
 | ||
|  | half4 MaskRenderingFragment(Varyings input) : SV_Target | ||
|  | { | ||
|  |     half4 c = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv); | ||
|  |     // for masks: discard pixel if alpha falls below MaskingCutoff | ||
|  |     clip(c.a - _Cutoff); | ||
|  | 
 | ||
|  |     return half4(1, 1, 1, 0.2); | ||
|  | } | ||
|  | 
 | ||
|  | #endif |