Project_WL/Assets/ResWork/Aligned Games/Polygonal Woodlands Nature .../Shaders/AlignedGamesToonUnlit.shader

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
}
}
}