// - Vertex Lit + ShadowCaster // - Premultiplied Alpha Blending (Optional straight alpha input) // - Double-sided, ZWrite Shader "Spine/Skeleton Lit ZWrite Bill" { Properties { _Cutoff ("Depth alpha cutoff", Range(0,1)) = 0.1 _ShadowAlphaCutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 [NoScaleOffset] _MainTex ("Main Texture", 2D) = "black" {} [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 [Toggle(_DOUBLE_SIDED_LIGHTING)] _DoubleSidedLighting("Double-Sided Lighting", Int) = 0 [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default // Outline properties are drawn via custom editor. [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 _ScaleX("Scale X", Float) = 1.0 _ScaleY("Scale Y", Float) = 1.0 } SubShader { Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } LOD 100 Stencil { Ref[_StencilRef] Comp[_StencilComp] Pass Keep } Pass { Name "Normal" Tags { "LightMode"="Vertex" "Queue"="Transparent" "IgnoreProjector"="true" "RenderType"="Transparent" } ZWrite On Cull Off Blend One OneMinusSrcAlpha CGPROGRAM #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT #pragma shader_feature _ _DOUBLE_SIDED_LIGHTING //#pragma vertex vertBill #pragma vertex vert #pragma fragment frag #pragma target 2.0 #define _ALPHA_CLIP #pragma multi_compile __ POINT SPOT #include "CGIncludes/Spine-Skeleton-Lit-Common.cginc" ENDCG } Pass { Name "Caster" Tags { "LightMode"="ShadowCaster" } Offset 1, 1 Fog { Mode Off } ZWrite On ZTest LEqual Cull Off Lighting Off CGPROGRAM #pragma vertex vertShadow #pragma fragment fragShadow #pragma multi_compile_shadowcaster #pragma fragmentoption ARB_precision_hint_fastest #define SHADOW_CUTOFF _ShadowAlphaCutoff #include "CGIncludes/Spine-Skeleton-Lit-Common-Shadow.cginc" ENDCG } //Pass { // CGPROGRAM // #pragma vertex vert // #pragma fragment frag // // User-specified uniforms // uniform sampler2D _MainTex; // uniform float _ScaleX; // uniform float _ScaleY; // struct vertexInput { // float4 vertex : POSITION; // float4 tex : TEXCOORD0; // }; // struct vertexOutput { // float4 pos : SV_POSITION; // float4 tex : TEXCOORD0; // }; // vertexOutput vert(vertexInput input) // { // vertexOutput output; // output.pos = mul(UNITY_MATRIX_P, // mul(UNITY_MATRIX_MV, float4(0.0, 0.0, 0.0, 1.0)) + float4(input.vertex.x, input.vertex.y, 0.0, 0.0) * float4(_ScaleX, _ScaleY, 1.0, 1.0)); // output.tex = input.tex; // return output; // } // float4 frag(vertexOutput input) : COLOR // { // return tex2D(_MainTex, float2(input.tex.xy)); // } // ENDCG //} } CustomEditor "SpineShaderWithOutlineGUI" }