summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-03-10 21:47:56 +0100
committerskal <pascal.massimino@gmail.com>2026-03-10 21:47:56 +0100
commit58112b4fbc95d188ce2c001f84a810b2c57fe3c2 (patch)
treec2486e67e077100a7415bf6257e59d94c6115f5a /src
parent3e9c66284b7a0f09a747c52cf9334c39c14b71de (diff)
change dither_c64() signature to take 'dimension' directly
Diffstat (limited to 'src')
-rw-r--r--src/effects/rotating_cube.wgsl5
-rw-r--r--src/shaders/math/color_c64.wgsl8
2 files changed, 7 insertions, 6 deletions
diff --git a/src/effects/rotating_cube.wgsl b/src/effects/rotating_cube.wgsl
index abd584c..fcb4774 100644
--- a/src/effects/rotating_cube.wgsl
+++ b/src/effects/rotating_cube.wgsl
@@ -89,6 +89,7 @@ fn get_cube_normal(vid: u32) -> vec3f {
let ambient = 0.3;
let lighting = ambient + diffuse * 0.7;
- let color = object.color.rgb * lighting;
- return rgba_to_luma_chroma_phase(vec4f(color, 1.0), screen_uv.y, 264.);
+ var color = object.color * lighting;
+ color = dither_c64(color, screen_uv, uniforms.resolution / 2.);
+ return rgba_to_luma_chroma_phase(color, screen_uv.y, 264.);
}
diff --git a/src/shaders/math/color_c64.wgsl b/src/shaders/math/color_c64.wgsl
index 60fde28..2a86919 100644
--- a/src/shaders/math/color_c64.wgsl
+++ b/src/shaders/math/color_c64.wgsl
@@ -44,10 +44,10 @@ fn colorDistance(color: vec4f, c1: vec4f, c2: vec4f, frac: f32) -> f32 {
}
// Quantize col to the nearest C64 color pair using 8x8 Bayer dithering.
-// xsize/ysize: virtual pixel grid dimensions (e.g. 54.*8., 33.*8.).
-fn dither_c64(col: vec4f, uv: vec2f, xsize: f32, ysize: f32) -> vec4f {
- let ix = u32(floor(uv.x * xsize / 2.)) % 8;
- let iy = u32(floor(uv.y * ysize / 2.)) % 8;
+// dimension: virtual pixel grid dimensions (e.g. {54.*8., 33.*8.}).
+fn dither_c64(col: vec4f, uv: vec2f, dimension: vec2f) -> vec4f {
+ let ix = u32(floor(uv.x * dimension.x)) % 8;
+ let iy = u32(floor(uv.y * dimension.y)) % 8;
let thresh = f32(BAYER_8X8[ix + 8 * iy]) / 64.;
var color = min(col, vec4f(1.));