52 lines
1.1 KiB
Plaintext
52 lines
1.1 KiB
Plaintext
|
|
Shader "Custom/Solid Shader" {
|
||
|
|
Properties
|
||
|
|
{
|
||
|
|
_MainTex("Texture", 2D) = "white" {}
|
||
|
|
_SprTex("Texture", 2D) = "white" {}
|
||
|
|
_TintColor ("Tint Color", Color) = (1.0, 0.6, 0.6, 1.0)
|
||
|
|
}
|
||
|
|
SubShader
|
||
|
|
{
|
||
|
|
Pass
|
||
|
|
{
|
||
|
|
CGPROGRAM
|
||
|
|
#pragma vertex vert_img
|
||
|
|
#pragma fragment frag
|
||
|
|
|
||
|
|
#include "UnityCG.cginc"
|
||
|
|
|
||
|
|
sampler2D _MainTex;
|
||
|
|
sampler2D _SprTex;
|
||
|
|
float4 _Color = float4(1, 1, 1, 1);
|
||
|
|
float2 BlockCount;
|
||
|
|
float2 BlockSize;
|
||
|
|
|
||
|
|
float4 _TintColor;
|
||
|
|
|
||
|
|
fixed4 frag(v2f_img i) : SV_Target
|
||
|
|
{
|
||
|
|
float2 blockPos = floor(i.uv * BlockCount);
|
||
|
|
float2 blockCenter = blockPos * BlockSize + BlockSize * 0.5;
|
||
|
|
|
||
|
|
float4 del = float4(1, 1, 1, 1) - _Color;
|
||
|
|
|
||
|
|
float4 tex = tex2D(_MainTex, blockCenter) - del + _TintColor;
|
||
|
|
float grayscale = dot(tex.rgb, float3(0.3, 0.59, 0.11));
|
||
|
|
grayscale = clamp(grayscale, 0.0, 1.0);
|
||
|
|
|
||
|
|
float dx = floor(grayscale * 16.0);
|
||
|
|
|
||
|
|
float2 sprPos = i.uv;
|
||
|
|
sprPos -= blockPos*BlockSize;
|
||
|
|
sprPos.x /= 16;
|
||
|
|
sprPos *= BlockCount;
|
||
|
|
sprPos.x += 1.0 / 16.0 * dx;
|
||
|
|
|
||
|
|
float4 tex2 = tex2D(_SprTex, sprPos);
|
||
|
|
return tex2;
|
||
|
|
}
|
||
|
|
ENDCG
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|