From c16e67c4c55e4c46f12623dfbe7a03113e2e84ba Mon Sep 17 00:00:00 2001 From: shadow cat Date: Tue, 17 Sep 2024 22:47:39 -0400 Subject: [PATCH] fix cursor unlock on windows --- src/client/handle_input.rs | 6 ++--- .../render/voxel/ray_oct/shader/compute.wgsl | 4 ++-- .../voxel/ray_oct/shader/compute_struct.wgsl | 22 +++++++++++-------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/client/handle_input.rs b/src/client/handle_input.rs index 35a1692..822229c 100644 --- a/src/client/handle_input.rs +++ b/src/client/handle_input.rs @@ -47,9 +47,9 @@ impl Client<'_> { } if self.keep_cursor { let size = window.inner_size(); - window - .set_cursor_position(PhysicalPosition::new(size.width / 2, size.height / 2)) - .expect("cursor move"); + // window + // .set_cursor_position(PhysicalPosition::new(size.width / 2, size.height / 2)) + // .expect("cursor move"); } // camera orientation diff --git a/src/client/render/voxel/ray_oct/shader/compute.wgsl b/src/client/render/voxel/ray_oct/shader/compute.wgsl index 6c217ba..4a60e9f 100644 --- a/src/client/render/voxel/ray_oct/shader/compute.wgsl +++ b/src/client/render/voxel/ray_oct/shader/compute.wgsl @@ -152,7 +152,7 @@ fn trace_full(pos_view: vec4, dir_view: vec4) -> vec4 { let t_corner = vox_pos * inc_t + min_adj; let node = voxels[group.offset + node_start + (child ^ inv_dir_bits)]; if node >= LEAF_BIT { - if node != skip { + if node != skip && node != LEAF_BIT { skip = node; let normal = normals[axis]; let sun_dir = global_lights[0].dir; @@ -310,7 +310,7 @@ fn trace_light(pos_view: vec4, dir_view: vec4) -> vec4 { let t_corner = vox_pos * inc_t + min_adj; let node = voxels[group.offset + node_start + (child ^ inv_dir_bits)]; if node >= LEAF_BIT { - if node != skip { + if node != skip && node != LEAF_BIT { skip = node; if data == 3 { let dist = (t - old_t) / t_mult; diff --git a/src/client/render/voxel/ray_oct/shader/compute_struct.wgsl b/src/client/render/voxel/ray_oct/shader/compute_struct.wgsl index a56d4e8..3554f06 100644 --- a/src/client/render/voxel/ray_oct/shader/compute_struct.wgsl +++ b/src/client/render/voxel/ray_oct/shader/compute_struct.wgsl @@ -54,12 +54,14 @@ fn main(@builtin(global_invocation_id) cell: vec3) { )) - 1.0); while res.data != 0 { let data = res.data & LEAF_MASK; - let vcolor = get_color(data); - let diffuse = max(dot(global_lights[0].dir, normals[res.ray.axis]) + 0.1, 0.0); - let light = max(diffuse, ambient); - let new_color = min(vcolor.xyz * light, vec3(1.0)); - color += vec4(new_color.xyz * vcolor.a, vcolor.a) * (1.0 - color.a); - if color.a > FULL_ALPHA { break; } + if data != 0 { + let vcolor = get_color(data); + let diffuse = max(dot(global_lights[0].dir, normals[res.ray.axis]) + 0.1, 0.0); + let light = max(diffuse, ambient); + let new_color = min(vcolor.xyz * light, vec3(1.0)); + color += vec4(new_color.xyz * vcolor.a, vcolor.a) * (1.0 - color.a); + if color.a > FULL_ALPHA { break; } + } let old_t = res.ray.t; res = ray_next(res.ray, res.data); if data == 3 { @@ -76,9 +78,11 @@ fn main(@builtin(global_invocation_id) cell: vec3) { var light = 1.0; while res.data != 0 { let data = res.data & LEAF_MASK; - let vcolor = get_color(data); - if data != 3 { light -= vcolor.a * light; } - if light <= 0 { break; } + if data != 0 { + let vcolor = get_color(data); + if data != 3 { light -= vcolor.a * light; } + if light <= 0 { break; } + } let old_t = res.ray.t; res = ray_next(res.ray, res.data); if data == 3 {