71 lines
1.8 KiB
Plaintext
71 lines
1.8 KiB
Plaintext
Shader "AlignedGames/ToonUnlit"
|
|
|
|
{
|
|
|
|
Properties {
|
|
_TextureMap ("Texture", 2D) = "" {}
|
|
_TileAmount ("Scale Multiplier", float) = 1
|
|
_ShadowBrightness ("Shadow Brightness", Range(0, 1)) = 0
|
|
_Color ("Main Color", Color) = (1, 1, 1, 1)
|
|
}
|
|
|
|
SubShader {
|
|
Pass {
|
|
Tags {"LightMode" = "ForwardBase"}
|
|
CGPROGRAM
|
|
#pragma vertex VSMain
|
|
#pragma fragment PSMain
|
|
#pragma multi_compile_fwdbase
|
|
#include "AutoLight.cginc"
|
|
|
|
sampler2D _TextureMap;
|
|
float _TileAmount;
|
|
float _ShadowBrightness;
|
|
fixed4 _Color;
|
|
|
|
struct SHADERDATA {
|
|
float4 position : SV_POSITION;
|
|
float2 uv : TEXCOORD0;
|
|
float4 _ShadowCoord : TEXCOORD1;
|
|
};
|
|
|
|
float4 ComputeScreenPos(float4 p) {
|
|
float4 o = p * 0.5;
|
|
return float4(float2(o.x, o.y * _ProjectionParams.x) + o.w, p.zw);
|
|
}
|
|
|
|
SHADERDATA VSMain(float4 vertex : POSITION, float2 uv : TEXCOORD0) {
|
|
SHADERDATA vs;
|
|
vs.position = UnityObjectToClipPos(vertex);
|
|
vs.uv = uv;
|
|
vs._ShadowCoord = ComputeScreenPos(vs.position);
|
|
return vs;
|
|
}
|
|
|
|
fixed4 PSMain(SHADERDATA ps) : SV_TARGET {
|
|
fixed4 col = tex2D(_TextureMap, ps.uv * _TileAmount);
|
|
return lerp(col * float4(_ShadowBrightness, _ShadowBrightness, _ShadowBrightness, 1), col, step(0.5, SHADOW_ATTENUATION(ps))) * _Color;
|
|
}
|
|
|
|
ENDCG
|
|
}
|
|
|
|
Pass {
|
|
Tags{ "LightMode" = "ShadowCaster" }
|
|
CGPROGRAM
|
|
#pragma vertex VSMain
|
|
#pragma fragment PSMain
|
|
|
|
float4 VSMain(float4 vertex : POSITION) : SV_POSITION {
|
|
return UnityObjectToClipPos(vertex);
|
|
}
|
|
|
|
float4 PSMain(float4 vertex : SV_POSITION) : SV_TARGET {
|
|
return 0;
|
|
}
|
|
|
|
ENDCG
|
|
}
|
|
}
|
|
}
|