- Started reworking Modem cameras. - Finally fixed ScreenUV shader, so the Modem's static looks correct.
112 lines
3.2 KiB
Plaintext
112 lines
3.2 KiB
Plaintext
// 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)
|
|
|
|
_LeftLineColour ("Left Line Colour", Color) = (0.0, 0.0, 0.0, 1.0)
|
|
_RightLineColour ("Right 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 _LeftLineColour;
|
|
half4 _RightLineColour;
|
|
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);
|
|
half uvrange = i.uv.x % 1.0;
|
|
return lerp(
|
|
lerp(_LeftLineColour, _RightLineColour, uvrange),
|
|
lerp(_LeftColour, _RightColour, uvrange),
|
|
linestep);
|
|
}
|
|
ENDCG
|
|
}
|
|
}
|
|
FallBack "Diffuse"
|
|
}
|
|
|