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"
							 | 
						||
| 
								 | 
							
								}
							 |