206 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
// Curved World <http://u3d.as/1W8h>
 | 
						|
// Copyright (c) Amazing Assets <https://amazingassets.world>
 | 
						|
 
 | 
						|
 | 
						|
 | 
						|
// Simplified VertexLit shader, optimized for high-poly meshes. Differences from regular VertexLit one:
 | 
						|
// - less per-vertex work compared with Mobile-VertexLit
 | 
						|
// - supports only DIRECTIONAL lights and ambient term, saves some vertex processing power
 | 
						|
// - no per-material color
 | 
						|
// - no specular
 | 
						|
// - no emission
 | 
						|
 | 
						|
Shader "Amazing Assets/Curved World/Mobile/VertexLit (Only Directional Lights)" 
 | 
						|
{
 | 
						|
    Properties 
 | 
						|
    {
 | 
						|
        [HideInInspector][CurvedWorldBendSettings]	  _CurvedWorldBendSettings("0|1|1", Vector) = (0, 0, 0, 0)
 | 
						|
 | 
						|
        _MainTex ("Base (RGB)", 2D) = "white" {}
 | 
						|
    }
 | 
						|
 | 
						|
    SubShader 
 | 
						|
    {
 | 
						|
        Tags { "RenderType"="CurvedWorld_Opaque" }
 | 
						|
        LOD 80
 | 
						|
 | 
						|
        Cull Back
 | 
						|
 | 
						|
        Pass 
 | 
						|
        {
 | 
						|
            Name "FORWARD"
 | 
						|
            Tags { "LightMode" = "ForwardBase" }
 | 
						|
            CGPROGRAM
 | 
						|
            #pragma vertex vert_surf
 | 
						|
            #pragma fragment frag_surf
 | 
						|
            #pragma target 2.0
 | 
						|
            #pragma multi_compile_fwdbase
 | 
						|
            #pragma multi_compile_fog
 | 
						|
            #include "HLSLSupport.cginc"
 | 
						|
            #include "UnityCG.cginc"
 | 
						|
            #include "Lighting.cginc"
 | 
						|
            #include "AutoLight.cginc"
 | 
						|
 | 
						|
 | 
						|
#define CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE
 | 
						|
#define CURVEDWORLD_BEND_ID_1
 | 
						|
#pragma shader_feature_local CURVEDWORLD_DISABLED_ON
 | 
						|
#pragma shader_feature_local CURVEDWORLD_NORMAL_TRANSFORMATION_ON
 | 
						|
#include "../../Core/CurvedWorldTransform.cginc" 
 | 
						|
 | 
						|
 | 
						|
            inline float3 LightingLambertVS (float3 normal, float3 lightDir)
 | 
						|
            {
 | 
						|
                fixed diff = max (0, dot (normal, lightDir));
 | 
						|
                return _LightColor0.rgb * diff;
 | 
						|
            }
 | 
						|
 | 
						|
            sampler2D _MainTex;
 | 
						|
 | 
						|
            struct Input 
 | 
						|
            {
 | 
						|
                float2 uv_MainTex;
 | 
						|
            };
 | 
						|
 | 
						|
            void surf (Input IN, inout SurfaceOutput o) 
 | 
						|
            {
 | 
						|
                half4 c = tex2D (_MainTex, IN.uv_MainTex);
 | 
						|
                o.Albedo = c.rgb;
 | 
						|
                o.Alpha = c.a;
 | 
						|
            }
 | 
						|
            struct v2f_surf 
 | 
						|
            {
 | 
						|
                float4 pos : SV_POSITION;
 | 
						|
                float2 pack0 : TEXCOORD0;
 | 
						|
                #ifndef LIGHTMAP_ON
 | 
						|
                fixed3 normal : TEXCOORD1;
 | 
						|
                #endif
 | 
						|
                #ifdef LIGHTMAP_ON
 | 
						|
                float2 lmap : TEXCOORD2;
 | 
						|
                #endif
 | 
						|
                #ifndef LIGHTMAP_ON
 | 
						|
                fixed3 vlight : TEXCOORD2;
 | 
						|
                #endif
 | 
						|
                LIGHTING_COORDS(3,4)
 | 
						|
                UNITY_FOG_COORDS(5)
 | 
						|
                UNITY_VERTEX_OUTPUT_STEREO
 | 
						|
            };
 | 
						|
 | 
						|
            float4 _MainTex_ST;
 | 
						|
 | 
						|
            v2f_surf vert_surf (appdata_full v)
 | 
						|
            {
 | 
						|
                v2f_surf o;
 | 
						|
                UNITY_SETUP_INSTANCE_ID(v);
 | 
						|
                UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
 | 
						|
 | 
						|
 | 
						|
                #if defined(CURVEDWORLD_IS_INSTALLED) && !defined(CURVEDWORLD_DISABLED_ON)
 | 
						|
                    #ifdef CURVEDWORLD_NORMAL_TRANSFORMATION_ON
 | 
						|
                         CURVEDWORLD_TRANSFORM_VERTEX_AND_NORMAL(v.vertex, v.normal, v.tangent)
 | 
						|
                    #else
 | 
						|
                        CURVEDWORLD_TRANSFORM_VERTEX(v.vertex)
 | 
						|
                    #endif
 | 
						|
                #endif
 | 
						|
 | 
						|
 | 
						|
 | 
						|
                o.pos = UnityObjectToClipPos(v.vertex);
 | 
						|
                o.pack0.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
 | 
						|
                #ifdef LIGHTMAP_ON
 | 
						|
                o.lmap.xy = v.texcoord1.xy * unity_LightmapST.xy + unity_LightmapST.zw;
 | 
						|
                #endif
 | 
						|
                float3 worldN = UnityObjectToWorldNormal(v.normal);
 | 
						|
                #ifndef LIGHTMAP_ON
 | 
						|
                o.normal = worldN;
 | 
						|
                #endif
 | 
						|
                #ifndef LIGHTMAP_ON
 | 
						|
 | 
						|
                o.vlight = ShadeSH9 (float4(worldN,1.0));
 | 
						|
                o.vlight += LightingLambertVS (worldN, _WorldSpaceLightPos0.xyz);
 | 
						|
 | 
						|
                #endif
 | 
						|
                TRANSFER_VERTEX_TO_FRAGMENT(o);
 | 
						|
                UNITY_TRANSFER_FOG(o,o.pos);
 | 
						|
                return o;
 | 
						|
            }
 | 
						|
 | 
						|
            fixed4 frag_surf (v2f_surf IN) : SV_Target
 | 
						|
            {
 | 
						|
                Input surfIN;
 | 
						|
                surfIN.uv_MainTex = IN.pack0.xy;
 | 
						|
                SurfaceOutput o;
 | 
						|
                o.Albedo = 0.0;
 | 
						|
                o.Emission = 0.0;
 | 
						|
                o.Specular = 0.0;
 | 
						|
                o.Alpha = 0.0;
 | 
						|
                o.Gloss = 0.0;
 | 
						|
                #ifndef LIGHTMAP_ON
 | 
						|
                o.Normal = IN.normal;
 | 
						|
                #else
 | 
						|
                o.Normal = 0;
 | 
						|
                #endif
 | 
						|
                surf (surfIN, o);
 | 
						|
                fixed atten = LIGHT_ATTENUATION(IN);
 | 
						|
                fixed4 c = 0;
 | 
						|
                #ifndef LIGHTMAP_ON
 | 
						|
                c.rgb = o.Albedo * IN.vlight * atten;
 | 
						|
                #endif
 | 
						|
                #ifdef LIGHTMAP_ON
 | 
						|
                fixed3 lm = DecodeLightmap (UNITY_SAMPLE_TEX2D(unity_Lightmap, IN.lmap.xy));
 | 
						|
                #ifdef SHADOWS_SCREEN
 | 
						|
                c.rgb += o.Albedo * min(lm, atten*2);
 | 
						|
                #else
 | 
						|
                c.rgb += o.Albedo * lm;
 | 
						|
                #endif
 | 
						|
                c.a = o.Alpha;
 | 
						|
                #endif
 | 
						|
                UNITY_APPLY_FOG(IN.fogCoord, c);
 | 
						|
                UNITY_OPAQUE_ALPHA(c.a);
 | 
						|
                return c;
 | 
						|
            }
 | 
						|
 | 
						|
            ENDCG
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        Pass 
 | 
						|
    {
 | 
						|
        Name "ShadowCaster"
 | 
						|
        Tags { "LIGHTMODE"="SHADOWCASTER" "SHADOWSUPPORT"="true" "RenderType"="CurvedWorld_Opaque" }
 | 
						|
        Cull Off
 | 
						|
        ZWrite On ZTest LEqual
 | 
						|
 | 
						|
        CGPROGRAM
 | 
						|
        #include "HLSLSupport.cginc"
 | 
						|
        #define UNITY_INSTANCED_LOD_FADE
 | 
						|
        #define UNITY_INSTANCED_SH
 | 
						|
        #define UNITY_INSTANCED_LIGHTMAPSTS
 | 
						|
        #include "UnityShaderVariables.cginc"
 | 
						|
        #include "UnityShaderUtilities.cginc"
 | 
						|
 | 
						|
 | 
						|
        #pragma vertex vert
 | 
						|
        #pragma fragment frag
 | 
						|
        #pragma target 2.0
 | 
						|
        #pragma multi_compile_shadowcaster 
 | 
						|
        #include "UnityCG.cginc"
 | 
						|
 | 
						|
 | 
						|
#define CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE
 | 
						|
#define CURVEDWORLD_BEND_ID_1
 | 
						|
#pragma shader_feature_local CURVEDWORLD_DISABLED_ON
 | 
						|
#include "../../Core/CurvedWorldTransform.cginc" 
 | 
						|
 | 
						|
#include "../../Core/Shadow.cginc" 
 | 
						|
 | 
						|
        ENDCG
 | 
						|
    }
 | 
						|
        
 | 
						|
}
 | 
						|
 | 
						|
    FallBack "Hidden/Amazing Assets/Curved World/Fallback/VertexLit"
 | 
						|
 | 
						|
    CustomEditor "AmazingAssets.CurvedWorld.Editor.DefaultShaderGUI"
 | 
						|
}
 |