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