From 33487a68b29fbb908d007d5340060f94f5f5c33c Mon Sep 17 00:00:00 2001 From: numzero Date: Sat, 11 Jan 2025 02:41:07 +0300 Subject: [PATCH] =?UTF-8?q?Now=20it=E2=80=99s=208-layer=20life!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fill.wgsl | 2 +- src/present.wgsl | 2 +- src/step.wgsl | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/fill.wgsl b/src/fill.wgsl index 0b31d8c..11043c7 100644 --- a/src/fill.wgsl +++ b/src/fill.wgsl @@ -16,7 +16,7 @@ fn on_fragment(in: Varying) -> @location(0) u32 { let x = bitcast(in.screen.x); let y = bitcast(in.screen.y); let rand = hash(hash(hash(SEED) ^ hash(x)) ^ hash(y)); - return rand >> 31; + return rand >> 24; } fn hash(key : u32) -> u32 { diff --git a/src/present.wgsl b/src/present.wgsl index 656d55f..f8e33e0 100644 --- a/src/present.wgsl +++ b/src/present.wgsl @@ -16,5 +16,5 @@ fn on_vertex(@builtin(vertex_index) vi: u32) -> Varying { fn on_fragment(in: Varying) -> @location(0) vec4f { let pos = vec2u(in.screen.xy); let state = textureLoad(field, pos, 0).x; - return vec4f(f32(state)); + return vec4f(f32(state) / 255.); } diff --git a/src/step.wgsl b/src/step.wgsl index 09494c3..a84b2ca 100644 --- a/src/step.wgsl +++ b/src/step.wgsl @@ -20,6 +20,14 @@ fn on_fragment(in: Varying) -> @location(0) u32 { let b = textureGather(0, field, smp, in.uv, vec2(0, 1)); let c = textureGather(0, field, smp, in.uv, vec2(1, 0)); let d = textureGather(0, field, smp, in.uv, vec2(1, 1)); + var ret = 0u; + for (var layer = 0u; layer < 8u; layer++) { + ret |= calc(a >> vec4(layer) & vec4(1u), b >> vec4(layer) & vec4(1u), c >> vec4(layer) & vec4(1u), d >> vec4(layer) & vec4(1u)) << layer; + } + return ret; +} + +fn calc(a: vec4u, b: vec4u, c: vec4u, d: vec4u) -> u32 { let state = a.y; let n = a.x + a.z + a.w + b.x + b.y + c.y + c.z + d.y; switch (n) {