generated from krampus/template-godot4
31 lines
660 B
Plaintext
31 lines
660 B
Plaintext
|
#pragma disable_preprocessor
|
||
|
|
||
|
shader_type canvas_item;
|
||
|
|
||
|
// 0: bypass
|
||
|
uniform float color_depth: hint_range(0, 32, 8) = 24;
|
||
|
|
||
|
uniform sampler2D dithering_pattern_texture:
|
||
|
hint_default_white, repeat_enable, filter_nearest;
|
||
|
|
||
|
void fragment()
|
||
|
{
|
||
|
vec3 base_color = texture(TEXTURE, UV).rgb;
|
||
|
|
||
|
if (color_depth > 0.0)
|
||
|
{
|
||
|
vec2 dpt_size = vec2(textureSize(dithering_pattern_texture, 0));
|
||
|
vec2 texture_size = vec2(textureSize(TEXTURE, 0));
|
||
|
|
||
|
vec3 dithering = texture(
|
||
|
dithering_pattern_texture, UV * (texture_size / dpt_size)).rgb - 0.5;
|
||
|
|
||
|
COLOR.rgb = round(
|
||
|
base_color.rgb * color_depth + dithering) / color_depth;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
COLOR.rgb = base_color;
|
||
|
}
|
||
|
}
|