103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			HLSL
		
	
	
	
		
		
			
		
	
	
			103 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			HLSL
		
	
	
	
| 
								 | 
							
								// Curved World <http://u3d.as/1W8h>
							 | 
						||
| 
								 | 
							
								// Copyright (c) Amazing Assets <https://amazingassets.world>
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef UNITY_SPRITES_INCLUDED
							 | 
						||
| 
								 | 
							
								#define UNITY_SPRITES_INCLUDED
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "UnityCG.cginc"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef UNITY_INSTANCING_ENABLED
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    UNITY_INSTANCING_BUFFER_START(PerDrawSprite)
							 | 
						||
| 
								 | 
							
								        // SpriteRenderer.Color while Non-Batched/Instanced.
							 | 
						||
| 
								 | 
							
								        UNITY_DEFINE_INSTANCED_PROP(fixed4, unity_SpriteRendererColorArray)
							 | 
						||
| 
								 | 
							
								        // this could be smaller but that's how bit each entry is regardless of type
							 | 
						||
| 
								 | 
							
								        UNITY_DEFINE_INSTANCED_PROP(fixed2, unity_SpriteFlipArray)
							 | 
						||
| 
								 | 
							
								    UNITY_INSTANCING_BUFFER_END(PerDrawSprite)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    #define _RendererColor  UNITY_ACCESS_INSTANCED_PROP(PerDrawSprite, unity_SpriteRendererColorArray)
							 | 
						||
| 
								 | 
							
								    #define _Flip           UNITY_ACCESS_INSTANCED_PROP(PerDrawSprite, unity_SpriteFlipArray)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // instancing
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CBUFFER_START(UnityPerDrawSprite)
							 | 
						||
| 
								 | 
							
								#ifndef UNITY_INSTANCING_ENABLED
							 | 
						||
| 
								 | 
							
								    fixed4 _RendererColor;
							 | 
						||
| 
								 | 
							
								    fixed2 _Flip;
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								    float _EnableExternalAlpha;
							 | 
						||
| 
								 | 
							
								CBUFFER_END
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Material Color.
							 | 
						||
| 
								 | 
							
								fixed4 _Color;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct appdata_t
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    float4 vertex   : POSITION;
							 | 
						||
| 
								 | 
							
								    float4 color    : COLOR;
							 | 
						||
| 
								 | 
							
								    float2 texcoord : TEXCOORD0;
							 | 
						||
| 
								 | 
							
								    UNITY_VERTEX_INPUT_INSTANCE_ID
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								struct v2f
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    float4 vertex   : SV_POSITION;
							 | 
						||
| 
								 | 
							
								    fixed4 color    : COLOR;
							 | 
						||
| 
								 | 
							
								    float2 texcoord : TEXCOORD0;
							 | 
						||
| 
								 | 
							
								    UNITY_VERTEX_OUTPUT_STEREO
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								inline float4 UnityFlipSprite(in float3 pos, in fixed2 flip)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    return float4(pos.xy * flip, pos.z, 1.0);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								v2f SpriteVert(appdata_t IN)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    v2f OUT;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    UNITY_SETUP_INSTANCE_ID (IN);
							 | 
						||
| 
								 | 
							
								    UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    CURVEDWORLD_TRANSFORM_VERTEX(IN.vertex)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    OUT.vertex = UnityFlipSprite(IN.vertex, _Flip);
							 | 
						||
| 
								 | 
							
								    OUT.vertex = UnityObjectToClipPos(OUT.vertex);
							 | 
						||
| 
								 | 
							
								    OUT.texcoord = IN.texcoord;
							 | 
						||
| 
								 | 
							
								    OUT.color = IN.color * _Color * _RendererColor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    #ifdef PIXELSNAP_ON
							 | 
						||
| 
								 | 
							
								    OUT.vertex = UnityPixelSnap (OUT.vertex);
							 | 
						||
| 
								 | 
							
								    #endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return OUT;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sampler2D _MainTex;
							 | 
						||
| 
								 | 
							
								sampler2D _AlphaTex;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								fixed4 SampleSpriteTexture (float2 uv)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    fixed4 color = tex2D (_MainTex, uv);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if ETC1_EXTERNAL_ALPHA
							 | 
						||
| 
								 | 
							
								    fixed4 alpha = tex2D (_AlphaTex, uv);
							 | 
						||
| 
								 | 
							
								    color.a = lerp (color.a, alpha.r, _EnableExternalAlpha);
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return color;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								fixed4 SpriteFrag(v2f IN) : SV_Target
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    fixed4 c = SampleSpriteTexture (IN.texcoord) * IN.color;
							 | 
						||
| 
								 | 
							
								    c.rgb *= c.a;
							 | 
						||
| 
								 | 
							
								    return c;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // UNITY_SPRITES_INCLUDED
							 |