diff --git a/assets/shaders/game_of_life.wgsl b/assets/shaders/game_of_life.wgsl index d2a63c975cde42..8858b20751e3c9 100644 --- a/assets/shaders/game_of_life.wgsl +++ b/assets/shaders/game_of_life.wgsl @@ -11,6 +11,7 @@ fn hash(value: u32) -> u32 { state = state * 2654435769u; return state; } + fn randomFloat(value: u32) -> f32 { return f32(hash(value)) / 4294967295.0; } @@ -18,7 +19,6 @@ fn randomFloat(value: u32) -> f32 { @compute @workgroup_size(8, 8, 1) fn init(@builtin(global_invocation_id) invocation_id: vec3, @builtin(num_workgroups) num_workgroups: vec3) { let location = vec2(i32(invocation_id.x), i32(invocation_id.y)); - let location_f32 = vec2(f32(invocation_id.x), f32(invocation_id.y)); let randomNumber = randomFloat(invocation_id.y * num_workgroups.x + invocation_id.x); let alive = randomNumber > 0.9; @@ -27,7 +27,6 @@ fn init(@builtin(global_invocation_id) invocation_id: vec3, @builtin(num_wo textureStore(texture, location, color); } - fn is_alive(location: vec2, offset_x: i32, offset_y: i32) -> i32 { let value: vec4 = textureLoad(texture, location + vec2(offset_x, offset_y)); return i32(value.x); @@ -49,7 +48,6 @@ fn update(@builtin(global_invocation_id) invocation_id: vec3) { let location = vec2(i32(invocation_id.x), i32(invocation_id.y)); let n_alive = count_alive(location); - let color = vec4(f32(n_alive) / 8.0); var alive: bool; if (n_alive == 3) { @@ -60,8 +58,9 @@ fn update(@builtin(global_invocation_id) invocation_id: vec3) { } else { alive = false; } + let color = vec4(f32(alive)); storageBarrier(); - textureStore(texture, location, vec4(f32(alive))); + textureStore(texture, location, color); } \ No newline at end of file