111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | // Curved World <http://u3d.as/1W8h> | ||
|  | // Copyright (c) Amazing Assets <https://amazingassets.world> | ||
|  |   | ||
|  | 
 | ||
|  | 
 | ||
|  | Shader "Amazing Assets/Curved World/Sprites/Mask" | ||
|  | { | ||
|  |     Properties | ||
|  |     { | ||
|  |         [HideInInspector][CurvedWorldBendSettings]	  _CurvedWorldBendSettings("0|1", Vector) = (0, 0, 0, 0) | ||
|  | 
 | ||
|  |         [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} | ||
|  |         [PerRendererData] _AlphaTex ("External Alpha", 2D) = "white" {} | ||
|  |         [HideInInspector] _Cutoff ("Mask alpha cutoff", Range(0.0, 1.0)) = 0.0 | ||
|  |         _Color ("Tint", Color) = (1,1,1,0.2) | ||
|  |         [PerRendererData] _EnableExternalAlpha ("Enable External Alpha", Float) = 0 | ||
|  |         [MaterialToggle] PixelSnap ("Pixel snap", Float) = 0 | ||
|  | 
 | ||
|  |         [HideInInspector][MaterialEnum(Front,2,Back,1,Both,0)] _Cull("Face Cull", Int) = 0 | ||
|  |     } | ||
|  | 
 | ||
|  |     SubShader | ||
|  |     { | ||
|  |         Cull[_Cull]  | ||
|  | 
 | ||
|  |         Tags | ||
|  |         { | ||
|  |             "Queue"="Transparent" | ||
|  |             "IgnoreProjector"="True" | ||
|  |             "RenderType"="Transparent" | ||
|  |             "PreviewType"="Plane" | ||
|  |             "CanUseSpriteAtlas"="True" | ||
|  |         } | ||
|  | 
 | ||
|  |         Lighting Off | ||
|  |         ZWrite Off | ||
|  |         Blend Off | ||
|  |         ColorMask 0 | ||
|  | 
 | ||
|  |         Pass | ||
|  |         { | ||
|  |             CGPROGRAM | ||
|  |             #pragma vertex vert | ||
|  |             #pragma fragment frag | ||
|  |             #pragma multi_compile_local _ PIXELSNAP_ON | ||
|  |             #pragma multi_compile _ ETC1_EXTERNAL_ALPHA | ||
|  | 
 | ||
|  | 
 | ||
|  | #define CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE | ||
|  | #define CURVEDWORLD_BEND_ID_1 | ||
|  | #pragma shader_feature_local CURVEDWORLD_DISABLED_ON | ||
|  | #include "../../Core/CurvedWorldTransform.cginc"  | ||
|  | 
 | ||
|  | 
 | ||
|  |             #include "UnitySprites.cginc" | ||
|  | 
 | ||
|  |             // alpha below which a mask should discard a pixel, thereby preventing the stencil buffer from being marked with the Mask's presence | ||
|  |             fixed _Cutoff; | ||
|  | 
 | ||
|  |             struct appdata_masking | ||
|  |             { | ||
|  |                 float4 vertex : POSITION; | ||
|  |                 half2 texcoord : TEXCOORD0; | ||
|  |                 UNITY_VERTEX_INPUT_INSTANCE_ID | ||
|  |             }; | ||
|  | 
 | ||
|  |             struct v2f_masking | ||
|  |             { | ||
|  |                 float4 pos : SV_POSITION; | ||
|  |                 half2 uv : TEXCOORD0; | ||
|  |                 UNITY_VERTEX_OUTPUT_STEREO | ||
|  |             }; | ||
|  | 
 | ||
|  |             v2f_masking vert(appdata_masking IN) | ||
|  |             { | ||
|  |                 v2f_masking OUT; | ||
|  | 
 | ||
|  |                 UNITY_SETUP_INSTANCE_ID(IN); | ||
|  |                 UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); | ||
|  | 
 | ||
|  | 
 | ||
|  |                 #if defined(CURVEDWORLD_IS_INSTALLED) && !defined(CURVEDWORLD_DISABLED_ON) | ||
|  |                     CURVEDWORLD_TRANSFORM_VERTEX(IN.vertex) | ||
|  |                 #endif | ||
|  | 
 | ||
|  | 
 | ||
|  |                 OUT.pos = UnityObjectToClipPos(IN.vertex); | ||
|  |                 OUT.uv = IN.texcoord; | ||
|  | 
 | ||
|  |                 #ifdef PIXELSNAP_ON | ||
|  |                 OUT.pos = UnityPixelSnap (OUT.pos); | ||
|  |                 #endif | ||
|  | 
 | ||
|  |                 return OUT; | ||
|  |             } | ||
|  | 
 | ||
|  | 
 | ||
|  |             fixed4 frag(v2f_masking IN) : SV_Target | ||
|  |             { | ||
|  |                 fixed4 c = SampleSpriteTexture(IN.uv); | ||
|  |                 // for masks: discard pixel if alpha falls below MaskingCutoff | ||
|  |                 clip (c.a - _Cutoff); | ||
|  |                 return _Color; | ||
|  |             } | ||
|  |         ENDCG | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     CustomEditor "AmazingAssets.CurvedWorld.Editor.SpritesShaderGUI" | ||
|  | } |