diff --git a/SurfaceNetsWorld/compute_samples.gd b/SurfaceNetsWorld/compute_samples.gd index 2b64c5b..d4f5cab 100644 --- a/SurfaceNetsWorld/compute_samples.gd +++ b/SurfaceNetsWorld/compute_samples.gd @@ -9,7 +9,7 @@ var shader_pass2: RID var start_time := Time.get_ticks_msec() / 1000.0 var color = Color.CORAL @export var iout_surface_points = [] -var player_edits = PackedFloat32Array() +var player_edits = PackedFloat32Array([0.0, 0.0, 0.0, 1.0]) var pipeline1 var pipeline2 @@ -75,8 +75,7 @@ func compute_mesh(world_size: int, threshold: float, chunk_pos: Vector3) -> Arra rd.buffer_update(chunk_position_buffer, 0, chunk_position_bytes.size(), chunk_position_bytes) var player_edits_bytes = player_edits.to_byte_array() - if player_edits_bytes.size() > 0: - player_edits_buffer = rd.storage_buffer_create(player_edits_bytes.size()) + rd.buffer_update(player_edits_buffer, 0, player_edits_bytes.size(), player_edits_bytes) var u_time := Time.get_ticks_msec() / 1000.0 - start_time @@ -131,7 +130,7 @@ func compute_mesh(world_size: int, threshold: float, chunk_pos: Vector3) -> Arra uniform_params.add_id(params_buffer) var uniform_set1 := rd.uniform_set_create([uniform_buf, uniform_params, surface_uniform_buf, normal_uniform, idx_uniform, counter_uniform, chunk_position_uniform, player_edits_uniform], shader_pass1, 0) # the last parameter (the 0) needs to match the "set" in our shader file - var uniform_set2 := rd.uniform_set_create([uniform_buf, uniform_params, surface_uniform_buf, normal_uniform, idx_uniform, counter_uniform], shader_pass2, 0) + var uniform_set2 := rd.uniform_set_create([uniform_buf, uniform_params, surface_uniform_buf, idx_uniform, counter_uniform], shader_pass2, 0) var dispatch_count = int(ceil(world_size / 4.0)) @@ -142,6 +141,8 @@ func compute_mesh(world_size: int, threshold: float, chunk_pos: Vector3) -> Arra rd.compute_list_bind_uniform_set(compute_list, uniform_set1, 0) rd.compute_list_dispatch(compute_list, dispatch_count, dispatch_count, dispatch_count) rd.compute_list_end() + + rd.compute_list_add_barrier(compute_list) # 2. Dispatch PASS 2 (Generate Indices) pipeline2 = rd.compute_pipeline_create(shader_pass2) # Indices only diff --git a/SurfaceNetsWorld/compute_surface_points.glsl b/SurfaceNetsWorld/compute_surface_points.glsl index 1beca4b..237634c 100644 --- a/SurfaceNetsWorld/compute_surface_points.glsl +++ b/SurfaceNetsWorld/compute_surface_points.glsl @@ -13,6 +13,7 @@ layout(set = 0, binding = 1) uniform Params { int world_size; float threshold; float u_time; + float padding; } params; layout(set = 0, binding = 2, std430) buffer SurfaceBuffer {