Shader /*ase_name*/ "Hidden/Templates/Legacy/Multi Pass Unlit" /*end*/ { Properties { /*ase_props*/ } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull Off CGINCLUDE #pragma target 3.0 ENDCG /*ase_pass*/ Pass { /*ase_main_pass*/ Name "ForwardBase" Tags { "LightMode"="ForwardBase" } /*ase_all_modules*/ CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdbase #define UNITY_PASS_FORWARDBASE #include "UnityCG.cginc" /*ase_pragma*/ /*ase_globals*/ struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; UNITY_VERTEX_INPUT_INSTANCE_ID /*ase_vdata:p=p;n=n*/ }; struct v2f { float4 pos : SV_POSITION; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO /*ase_interp(1,):sp=sp.xyzw*/ }; v2f vert ( appdata v /*ase_vert_input*/) { v2f o; UNITY_INITIALIZE_OUTPUT(v2f,o); UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); UNITY_TRANSFER_INSTANCE_ID(v, o); /*ase_vert_code:v=appdata;o=v2f*/ v.vertex.xyz += /*ase_vert_out:Local Vertex;Float3;_Vertex*/ float3(0,0,0) /*end*/; o.pos = UnityObjectToClipPos(v.vertex); #if ASE_SHADOWS #if UNITY_VERSION >= 560 UNITY_TRANSFER_SHADOW( o, v.texcoord ); #else TRANSFER_SHADOW( o ); #endif #endif return o; } float4 frag (v2f i /*ase_frag_input*/) : SV_Target { float3 outColor; float outAlpha; /*ase_frag_code:i=v2f*/ outColor = /*ase_frag_out:Color;Float3;_Color*/float3(1,1,1)/*end*/; outAlpha = /*ase_frag_out:Alpha;Float;_Alpha*/1/*end*/; clip(outAlpha); return float4(outColor,outAlpha); } ENDCG } /*ase_pass*/ Pass { Name "ForwardAdd" Tags { "LightMode" = "ForwardAdd" } ZWrite Off Blend One One CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fwdadd_fullshadows #define UNITY_PASS_FORWARDADD #include "UnityCG.cginc" /*ase_pragma*/ /*ase_globals*/ struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; UNITY_VERTEX_INPUT_INSTANCE_ID /*ase_vdata:p=p;n=n*/ }; struct v2f { float4 pos : SV_POSITION; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO /*ase_interp(1,):sp=sp.xyzw*/ }; v2f vert ( appdata v /*ase_vert_input*/) { v2f o; UNITY_INITIALIZE_OUTPUT(v2f,o); UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); UNITY_TRANSFER_INSTANCE_ID(v, o); /*ase_vert_code:v=appdata;o=v2f*/ v.vertex.xyz += /*ase_vert_out:Local Vertex;Float3;_Vertex*/ float3(0,0,0) /*end*/; o.pos = UnityObjectToClipPos(v.vertex); #if ASE_SHADOWS #if UNITY_VERSION >= 560 UNITY_TRANSFER_SHADOW( o, v.texcoord ); #else TRANSFER_SHADOW( o ); #endif #endif return o; } float4 frag (v2f i /*ase_frag_input*/) : SV_Target { float3 outColor; float outAlpha; /*ase_frag_code:i=v2f*/ outColor = /*ase_frag_out:Color;Float3;_Color*/float3(1,1,1)/*end*/; outAlpha = /*ase_frag_out:Alpha;Float;_Alpha*/1/*end*/; clip(outAlpha); return float4(outColor,outAlpha); } ENDCG } /*ase_pass*/ Pass { Name "Deferred" Tags { "LightMode" = "Deferred" } /*ase_all_modules*/ CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_prepassfinal #define UNITY_PASS_DEFERRED #include "UnityCG.cginc" /*ase_pragma*/ /*ase_globals*/ struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; UNITY_VERTEX_INPUT_INSTANCE_ID /*ase_vdata:p=p;n=n*/ }; struct v2f { float4 pos : SV_POSITION; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO /*ase_interp(1,):sp=sp.xyzw*/ }; v2f vert ( appdata v /*ase_vert_input*/) { v2f o; UNITY_INITIALIZE_OUTPUT(v2f,o); UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); UNITY_TRANSFER_INSTANCE_ID(v, o); /*ase_vert_code:v=appdata;o=v2f*/ v.vertex.xyz += /*ase_vert_out:Local Vertex;Float3;_Vertex*/ float3(0,0,0) /*end*/; o.pos = UnityObjectToClipPos(v.vertex); #if ASE_SHADOWS #if UNITY_VERSION >= 560 UNITY_TRANSFER_SHADOW( o, v.texcoord ); #else TRANSFER_SHADOW( o ); #endif #endif return o; } void frag (v2f i /*ase_frag_input*/, out half4 outGBuffer0 : SV_Target0, out half4 outGBuffer1 : SV_Target1, out half4 outGBuffer2 : SV_Target2, out half4 outGBuffer3 : SV_Target3) { /*ase_frag_code:i=v2f*/ outGBuffer0 = /*ase_frag_out:GBuffer0;Float4*/0/*end*/; outGBuffer1 = /*ase_frag_out:GBuffer1;Float4*/0/*end*/; outGBuffer2 = /*ase_frag_out:GBuffer2;Float4*/0/*end*/; outGBuffer3 = /*ase_frag_out:GBuffer3;Float4*/0/*end*/; } ENDCG } /*ase_pass*/ Pass { /*ase_hide_pass:SyncP*/ Name "ShadowCaster" Tags { "LightMode"="ShadowCaster" } ZWrite On ZTest LEqual CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_shadowcaster #define UNITY_PASS_SHADOWCASTER #include "UnityCG.cginc" /*ase_pragma*/ /*ase_globals*/ struct appdata { float4 vertex : POSITION; float3 normal : NORMAL; UNITY_VERTEX_INPUT_INSTANCE_ID /*ase_vdata:p=p;n=n*/ }; struct v2f { V2F_SHADOW_CASTER; UNITY_VERTEX_INPUT_INSTANCE_ID UNITY_VERTEX_OUTPUT_STEREO /*ase_interp(1,):sp=sp.xyzw*/ }; v2f vert ( appdata v /*ase_vert_input*/) { v2f o; UNITY_INITIALIZE_OUTPUT(v2f,o); UNITY_SETUP_INSTANCE_ID(v); UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); UNITY_TRANSFER_INSTANCE_ID(v, o); /*ase_vert_code:v=appdata;o=v2f*/ v.vertex.xyz += /*ase_vert_out:Local Vertex;Float3;_Vertex*/ float3(0,0,0) /*end*/; TRANSFER_SHADOW_CASTER_NORMALOFFSET(o) return o; } float4 frag (v2f i /*ase_frag_input*/) : SV_Target { float3 outColor; float outAlpha; /*ase_frag_code:i=v2f*/ outColor = /*ase_frag_out:Color;Float3;_Color*/float3(1,1,1)/*end*/; outAlpha = /*ase_frag_out:Alpha;Float;_Alpha*/1/*end*/; clip(outAlpha); SHADOW_CASTER_FRAGMENT(i) } ENDCG } /*ase_pass_end*/ } CustomEditor "ASEMaterialInspector" }