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
 |