diff --git a/shaders/compiled/rt_compute.spv b/shaders/compiled/rt_compute.spv
index c0e451b..1cbfcfe 100644
Binary files a/shaders/compiled/rt_compute.spv and b/shaders/compiled/rt_compute.spv differ
diff --git a/shaders/rt_compute.comp b/shaders/rt_compute.comp
index 13f9361..f1854b4 100644
--- a/shaders/rt_compute.comp
+++ b/shaders/rt_compute.comp
@@ -175,9 +175,9 @@ void main() {
     uint compound_start = 0;
     // iterate over the compounds and find the work index inside of it
     while (index > compounds[compound_start] * compounds[compound_start]) {
-        compound_start = compounds[compound_start + 2];
-        index -= compounds[compound_start] * compounds[compound_start];
         output_offset += compounds[compound_start] * compounds[compound_start] * compounds[compound_start];
+        index -= compounds[compound_start] * compounds[compound_start];
+        compound_start = compounds[compound_start + 2];
     }
     // grid pos in the task
     uint compound_grid_size = compounds[compound_start];
@@ -307,7 +307,7 @@ void main() {
         }
 
         if (render) {
-            add_cube(gl_GlobalInvocationID.x * compound_grid_size + z, compound_scale, check_pos, color);
+            add_cube(output_offset + index * compound_grid_size + z, compound_scale, check_pos, color);
         }
     }
 
diff --git a/src/main.rs b/src/main.rs
index 9b36399..71bae1b 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -124,7 +124,7 @@ fn main() -> Result<()> {
                 },
                 WindowEvent::KeyboardInput { device_id, event, is_synthetic } => {
                     if event.logical_key == "w" {
-                        app.cur_pos += app.view_direction * 0.1;
+                        app.cur_pos += app.view_direction * 0.5;
                     }
                     if event.logical_key == "s" {
                         app.cur_pos -= app.view_direction * 0.1;
diff --git a/src/scene/generators.rs b/src/scene/generators.rs
index 3aa7c64..b86a385 100644
--- a/src/scene/generators.rs
+++ b/src/scene/generators.rs
@@ -118,7 +118,7 @@ pub fn generate_test_scene(scene: &mut Scene, data: &mut AppData) -> Result<(Poi
     let tree_ref_two = Rc::new(RefCell::new(oct_tree2.clone()));
     scene.oct_trees = vec![vec![vec![tree_ref_two.clone(), tree_ref_two.clone(), tree_ref_two.clone()], vec![tree_ref_two.clone(), tree_ref_one.clone(), tree_ref_two.clone()], vec![tree_ref_two.clone(), tree_ref_two.clone(), tree_ref_two.clone()]], vec![vec![tree_ref_two.clone(), tree_ref_two.clone(), tree_ref_two.clone()], vec![tree_ref_two.clone(), tree_ref_one.clone(), tree_ref_two.clone()], vec![tree_ref_two.clone(), tree_ref_two.clone(), tree_ref_two.clone()]]];
 
-    let mut comp = ShapeComposition::new(64);
+    let mut comp = ShapeComposition::new(128);
     comp.included_shapes.push(Rc::new(RefCell::new(Sphere::new(Vector3 { x: 5.0 + grid_size as f32, y: 5.0 + grid_size as f32, z: 10.0 }, Vector3 { x: 0.0, y: 0.0, z: 0.0 }, 2.0, Vector3 { x: 0, y: 255, z: 0 }, 64, false))));
     comp.included_shapes.push(Rc::new(RefCell::new(Sphere::new(Vector3 { x: 5.0 + grid_size as f32, y: 5.0 + grid_size as f32, z: 10.0 }, Vector3 { x: 0.0, y: 0.0, z: 0.0 }, 2.5, Vector3 { x: 255, y: 0, z: 0 }, 64, false))));
     comp.excluded_shapes.push(Rc::new(RefCell::new(Sphere::new(Vector3 { x: 5.0 + grid_size as f32, y: 5.0 + grid_size as f32, z: 11.5 }, Vector3 { x: 0.0, y: 0.0, z: 0.0 }, 1.5, Vector3 { x: 0, y: 255, z: 0 }, 64, false))));