// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' // Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt) // Simplified Diffuse shader. Differences from regular Diffuse one: // - no Main Color // - fully supports only 1 directional light. Other lights can affect it, but it will be per-vertex/SH. Shader "Carmen/SDF/The Chase" { Properties { _MainTex ("SDF", 2D) = "white" {} [ShowAsVector2] _Skew ("Skew", Vector) = (0.0, 0.0, 0.0, 0.0) _LeftColour ("Left Colour", Color) = (1.0, 0.0, 0.0, 1.0) _RightColour ("Right Colour", Color) = (0.0, 0.0, 1.0, 1.0) _LineColour ("Line Colour", Color) = (0.0, 0.0, 0.0, 1.0) _LineThickness ("Line Thickness", float) = 0.25 } SubShader { Tags { "Queue"="Overlay" "RenderType"="Opaque" "CanUseSpriteAtlas"="True" } LOD 200 Pass { Cull Back Lighting Off ZWrite Off ZTest Always CGPROGRAM #include "UnityCG.cginc" #pragma target 4.5 #pragma vertex vert #pragma fragment frag UNITY_DECLARE_TEX2D(_MainTex); float4 _MainTex_ST; half4 _Skew; half4 _LeftColour; half4 _RightColour; half4 _LineColour; float _LineThickness; struct Data { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct V2F { float4 position : SV_POSITION; float2 uv : TEXCOORD0; }; V2F vert(Data v) { V2F o; // Skew and scale as needed float4x4 skewmatrix = float4x4( 1.0, _Skew.x, 0.0, 0.0, _Skew.y, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ); o.position = mul(skewmatrix, v.vertex); o.position = mul(UNITY_MATRIX_P, mul(UNITY_MATRIX_MV, float4(0.0, 0.0, 0.0, 1.0)) + float4(o.position.x, o.position.y, 0.0, 0.0) * float4( length(unity_ObjectToWorld._m00_m10_m20), length(unity_ObjectToWorld._m01_m11_m21), 1.0, 1.0)); o.uv = TRANSFORM_TEX(v.uv, _MainTex); return o; } fixed4 frag(V2F i) : SV_TARGET { half texsample = UNITY_SAMPLE_TEX2D(_MainTex, i.uv).r; half alphastep = step(texsample, _LineThickness); if (alphastep < 0.5) discard; half linestep = step(texsample, 0.1); return lerp( _LineColour, lerp(_LeftColour, _RightColour, i.uv.x % 1.0), linestep); } ENDCG } } FallBack "Diffuse" }