186 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			GLSL
		
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			GLSL
		
	
	
	
// Curved World <http://u3d.as/1W8h>
 | 
						|
// Copyright (c) Amazing Assets <https://amazingassets.world>
 | 
						|
 
 | 
						|
Shader "Amazing Assets/Curved World/One Directional Light (Outline)"
 | 
						|
{
 | 
						|
	Properties    
 | 
						|
	{                   
 | 
						|
 | 
						|
[HideInInspector][CurvedWorldBendSettings]	  _CurvedWorldBendSettings("0|1|1", Vector) = (0, 0, 0, 0)
 | 
						|
 | 
						|
 | 
						|
[HideInInspector][MaterialEnum(Front,2,Back,1,Both,0)] _Cull("Face Cull", Int) = 0
 | 
						|
 | 
						|
		[HideInInspector][Toggle] _AmbientLights("", float) = 0
 | 
						|
		[HideInInspector][Toggle] _PerVertexLights("", float) = 0
 | 
						|
		
 | 
						|
		[HideInInspector] _LightLookupTex("", 2D) = "grey"{}
 | 
						|
		[HideInInspector] _LightLookupOffset("", Range(-1, 1)) = 0
 | 
						|
 | 
						|
		[HideInInspector][CurvedWorldToggleFloat] _IncludeVertexColor("", float) = 0
 | 
						|
		[HideInInspector] _Color ("Color (RGB)", Color) = (1, 1, 1, 1)
 | 
						|
        [HideInInspector] _MainTex ("Base (RGB)", 2D) = "white" { }
 | 
						|
		[HideInInspector][CurvedWorldUVScroll] _MainTex_Scroll("", vector) = (0, 0, 0, 0)
 | 
						|
        [HideInInspector] _Cutoff("Alpha Cutoff", Range(0.0, 1.0)) = 0.5
 | 
						|
 | 
						|
		[HideInInspector][KeywordEnum(None, By Main Alpha, By Secondary Alpha, Multiple, Additive, By Vertex Alpha)] _TextureMix ("", Float) = 0
 | 
						|
		[HideInInspector] _SecondaryTex ("", 2D) = "white" { }
 | 
						|
		[HideInInspector][CurvedWorldUVScroll] _SecondaryTex_Scroll("", vector) = (0, 0, 0, 0)
 | 
						|
		[HideInInspector] _SecondaryTex_Blend("", Range(-1, 1)) = 0
 | 
						|
		
 | 
						|
		[HideInInspector] _NormalMapStrength("", float) = 1
 | 
						|
		[HideInInspector][Normal] _NormalMap("", 2D) = "bump" {}
 | 
						|
		[HideInInspector] _NormalMap_Scroll ("", vector) = (0, 0, 0, 0)
 | 
						|
		[HideInInspector][Normal] _SecondaryNormalMap("", 2D) = "bump"{}
 | 
						|
		[HideInInspector] _SecondaryNormalMap_Scroll ("", vector) = (0, 0, 0, 0)
 | 
						|
 | 
						|
		[HideInInspector] _SpecularColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 1)
 | 
						|
		[HideInInspector] _Shininess("Shininess", Range(0, 1)) = 0.7 
 | 
						|
		[HideInInspector] _SpecularMaskOffset("", Range(-1, 1)) = 0
 | 
						|
 | 
						|
		[HideInInspector] _ReflectionColor("", color) = (1, 1, 1, 1)
 | 
						|
		[HideInInspector] _ReflectionMaskOffset("", Range(-1, 1)) = 0
 | 
						|
		[HideInInspector] _ReflectionCubeMap("", Cube) = "_Skybox"{}	
 | 
						|
		[HideInInspector] _ReflectionFresnelBias("", Range(-1, 1)) = 0
 | 
						|
 | 
						|
		[HideInInspector][HDR] _RimColor("", color) = (1, 1, 1, 1)
 | 
						|
		[HideInInspector] _RimBias("", Range(-1, 1)) = 0
 | 
						|
 | 
						|
		[HideInInspector][HDR] _EmissionColor("", color) = (0, 0, 0, 0)
 | 
						|
		[HideInInspector] _EmissionMap("", 2D) = "white"{}
 | 
						|
		[HideInInspector] _EmissionMap_Scroll ("", vector) = (0, 0, 0, 0)
 | 
						|
 | 
						|
 | 
						|
		[HideInInspector] _OutlineColor("", Color) = (0, 0, 0, 1)
 | 
						|
		[HideInInspector] _OutlineWidth ("", float) = 1
 | 
						|
		[HideInInspector][CurvedWorldToggleFloat] _OutlineSizeIsFixed ("", float) = 1
 | 
						|
 | 
						|
 | 
						|
        // Blending state
 | 
						|
        [HideInInspector] _Mode ("__mode", Float) = 0.0
 | 
						|
        [HideInInspector] _SrcBlend ("__src", Float) = 1.0
 | 
						|
        [HideInInspector] _DstBlend ("__dst", Float) = 0.0
 | 
						|
        [HideInInspector] _ZWrite ("__zw", Float) = 1.0
 | 
						|
	}
 | 
						|
 | 
						|
 
 | 
						|
	SubShader 
 | 
						|
	{
 | 
						|
		Tags { "RenderType"="CurvedWorld_Opaque" } 
 | 
						|
		LOD 200		
 | 
						|
		Cull[_Cull]     
 | 
						|
		
 | 
						|
		//PassName "Forward"
 | 
						|
		Pass
 | 
						|
	    {
 | 
						|
			Name "Forward"
 | 
						|
			Tags { "LightMode" = "ForwardBase" } 
 | 
						|
 | 
						|
			//Blend [_SrcBlend] [_DstBlend]	- Outline shaders do not use Blend, always opaque
 | 
						|
        	//ZWrite [_ZWrite]
 | 
						|
 | 
						|
			CGPROGRAM       
 | 
						|
			#pragma vertex vert  
 | 
						|
	    	#pragma fragment frag  
 | 
						|
			#pragma multi_compile_instancing 
 | 
						|
			#pragma multi_compile_fwdbase nodirlightmap nodynlightmap
 | 
						|
			#pragma multi_compile_fog	       
 | 
						|
			//#pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON - Outline shader is always opaque
 | 
						|
  
 | 
						|
			#pragma shader_feature_local _AMBIENTLIGHTS_ON
 | 
						|
			#pragma shader_feature_local _PERVERTEXLIGHTS_ON
 | 
						|
			#pragma shader_feature_local _LIGHTLOOKUP
 | 
						|
			#pragma shader_feature_local _ _TEXTUREMIX_BY_MAIN_ALPHA _TEXTUREMIX_BY_SECONDARY_ALPHA _TEXTUREMIX_MULTIPLE _TEXTUREMIX_ADDITIVE _TEXTUREMIX_BY_VERTEX_ALPHA
 | 
						|
			#pragma shader_feature_local _NORMALMAP
 | 
						|
			#pragma shader_feature_local _SPECULAR
 | 
						|
			#pragma shader_feature_local _REFLECTION
 | 
						|
			#pragma shader_feature_local _RIM
 | 
						|
			#pragma shader_feature_local _EMISSION
 | 
						|
 | 
						|
 | 
						|
#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 "ForwardBase.cginc" 
 | 
						|
			
 | 
						|
			ENDCG    
 | 
						|
			 
 | 
						|
		} //Pass "Forward"
 | 
						|
 | 
						|
 | 
						|
		//PassName "ShadowCaster" 
 | 
						|
		Pass 
 | 
						|
    	{
 | 
						|
			Name "ShadowCaster"
 | 
						|
			Tags { "LIGHTMODE"="SHADOWCASTER" "SHADOWSUPPORT"="true" "RenderType"="CurvedWorld_Opaque" }
 | 
						|
 | 
						|
			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"
 | 
						|
 | 
						|
			//#pragma shader_feature_local _ _ALPHATEST_ON _ALPHABLEND_ON _ALPHAPREMULTIPLY_ON	- Outline shader is always opaque
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#define CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE
 | 
						|
#define CURVEDWORLD_BEND_ID_1
 | 
						|
#pragma shader_feature_local CURVEDWORLD_DISABLED_ON
 | 
						|
 | 
						|
#include "../../Core/Shadow.cginc" 
 | 
						|
 | 
						|
			
 | 
						|
			ENDCG
 | 
						|
		}	//Pass "ShadowCaster"
 | 
						|
 | 
						|
 | 
						|
		//PassName "Outline" 
 | 
						|
		Pass  
 | 
						|
		{ 
 | 
						|
			Name "Outline"
 | 
						|
			Tags{ "LightMode" = "Always" }
 | 
						|
			
 | 
						|
			Cull Front 
 | 
						|
			ZWrite On 
 | 
						|
			ColorMask RGB
 | 
						|
			Blend SrcAlpha OneMinusSrcAlpha
 | 
						|
			 
 | 
						|
			CGPROGRAM
 | 
						|
			#pragma vertex vert
 | 
						|
			#pragma fragment frag  
 | 
						|
			#pragma multi_compile_instancing
 | 
						|
			#pragma multi_compile_fog
 | 
						|
 | 
						|
 | 
						|
#define CURVEDWORLD_BEND_TYPE_CLASSICRUNNER_X_POSITIVE
 | 
						|
#define CURVEDWORLD_BEND_ID_1
 | 
						|
#include "../../Core/Outline.cginc"   
 | 
						|
 | 
						|
 | 
						|
						      
 | 
						|
			ENDCG  
 | 
						|
		} //Pass "Outline"
 | 
						|
		
 | 
						|
			
 | 
						|
	} //SubShader
 | 
						|
 | 
						|
 | 
						|
	Fallback "Hidden/Amazing Assets/Curved World/Fallback/VertexLit"
 | 
						|
	CustomEditor "AmazingAssets.CurvedWorld.Editor.OneDirectionalLightShaderGUI"
 | 
						|
} //Shader
 |