cool dithering
This commit is contained in:
parent
76aa38d71c
commit
59017b30b4
|
@ -1,2 +0,0 @@
|
||||||
36673
|
|
||||||
/home/squirrel/.local/bin/godot_mono
|
|
|
@ -4,7 +4,9 @@
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=1]
|
[sub_resource type="ShaderMaterial" id=1]
|
||||||
shader = ExtResource( 1 )
|
shader = ExtResource( 1 )
|
||||||
shader_param/param = 15.0
|
shader_param/param = 13.0
|
||||||
|
shader_param/scale = 2.0
|
||||||
|
shader_param/grid = 4
|
||||||
shader_param/anim_period = 1.65
|
shader_param/anim_period = 1.65
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer"]
|
[node name="CanvasLayer" type="CanvasLayer"]
|
||||||
|
|
|
@ -110,18 +110,57 @@ vec3 band_colors_preserve_hue_lum(vec3 rgb)
|
||||||
return hsv2rgb(hsv);
|
return hsv2rgb(hsv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uniform float scale = 2.0;
|
||||||
|
uniform int grid = 5;
|
||||||
|
|
||||||
|
vec3 band_dither(vec3 rgb, vec2 uv)
|
||||||
|
{
|
||||||
|
|
||||||
|
uv *= (1.0 / scale);
|
||||||
|
int x = int(mod(uv.x, float(grid))) + 1;
|
||||||
|
int y = int(mod(uv.y, float(grid))) + 1;
|
||||||
|
|
||||||
|
vec3 hsv = rgb2hsv(rgb);
|
||||||
|
|
||||||
|
int g = int(round(mix(float(grid), float(2), fract(hsv.r * param))));
|
||||||
|
|
||||||
|
|
||||||
|
if (x % g == 0 && y % g == 0) {
|
||||||
|
hsv.r = ceil(hsv.r * param) / param;
|
||||||
|
} else {
|
||||||
|
hsv.r = floor(hsv.r * param) / param;
|
||||||
|
}
|
||||||
|
vec3 lab = xyz2lab(rgb2xyz(rgb));
|
||||||
|
if (x % g == 0 && y % g == 0) {
|
||||||
|
lab.r = ceil(lab.r * (param / 100.0)) / (param / 100.0);
|
||||||
|
} else {
|
||||||
|
lab.r = floor(lab.r * (param / 100.0)) / (param / 100.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Into HSV
|
||||||
|
vec2 sv = rgb2hsv(xyz2rgb(lab2xyz(lab))).gb;
|
||||||
|
hsv.gb = sv;
|
||||||
|
|
||||||
|
|
||||||
|
return hsv2rgb(hsv);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
uniform float anim_period : hint_range(0.1, 5, 0.01);
|
uniform float anim_period : hint_range(0.1, 5, 0.01);
|
||||||
|
|
||||||
void fragment()
|
void fragment()
|
||||||
{
|
{
|
||||||
vec3 rgb = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0).rgb;
|
vec3 rgb = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0).rgb;
|
||||||
vec3 banded_preserved = band_colors_preserve_hue_lum(rgb);
|
vec3 banded_preserved = band_dither(rgb, FRAGCOORD.xy);
|
||||||
vec3 banded_nostalgia = band_colors(rgb);
|
//vec3 banded_nostalgia = band_colors(rgb);
|
||||||
float weight = mod(TIME, anim_period) / anim_period;
|
//float weight = mod(TIME, anim_period) / anim_period;
|
||||||
float double_weight = mod(TIME, anim_period*2.0) / (anim_period*2.0);
|
//float double_weight = mod(TIME, anim_period*2.0) / (anim_period*2.0);
|
||||||
weight = double_weight > 0.5 ? (1.-weight) : weight;
|
//weight = double_weight > 0.5 ? (1.-weight) : weight;
|
||||||
vec3 mixed = mix(banded_nostalgia, banded_preserved, weight);
|
//vec3 mixed = mix(banded_nostalgia, banded_preserved, weight);
|
||||||
COLOR.rgb = mixed;
|
//COLOR.rgb = mixed;
|
||||||
|
|
||||||
|
|
||||||
|
COLOR.rgb = banded_preserved;
|
||||||
}
|
}
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
|
@ -25,3 +25,11 @@ light_energy = 16.0
|
||||||
light_indirect_energy = 1.306
|
light_indirect_energy = 1.306
|
||||||
omni_range = 8.917
|
omni_range = 8.917
|
||||||
omni_attenuation = 2.73208
|
omni_attenuation = 2.73208
|
||||||
|
|
||||||
|
[node name="SpotLight" type="SpotLight" parent="."]
|
||||||
|
transform = Transform( -0.999987, 5.82069e-11, 0.00514878, 0.00507827, 0.164927, 0.986293, -0.000849173, 0.986306, -0.164925, 0, 4.25661, -0.823411 )
|
||||||
|
light_color = Color( 0.623529, 0.247059, 0.756863, 1 )
|
||||||
|
light_energy = 30.0
|
||||||
|
light_specular = 0.594
|
||||||
|
spot_range = 13.9301
|
||||||
|
spot_angle = 57.9366
|
||||||
|
|
Loading…
Reference in New Issue