diff --git a/shaders/rt_quad.frag b/shaders/rt_quad.frag
index 73093c7..806c1d3 100644
--- a/shaders/rt_quad.frag
+++ b/shaders/rt_quad.frag
@@ -20,6 +20,8 @@ layout(binding = 0) uniform UniformBufferObject {
 // 1 - location for the max iterations per light
 // 2 - diffuse raster samples (2*n + 1) * (2*n + 1) so as to always have at least the central fragment covered
 // 3 - diffuse raster size (float, needs to be decoded)
+// 4 - max recursive rays
+// 5 - diffuse rays per hit
 layout(binding = 2) buffer SceneInfoBuffer{
      uint infos[]; 
 } scene_info;
diff --git a/src/app_data.rs b/src/app_data.rs
index 2464a26..789c374 100644
--- a/src/app_data.rs
+++ b/src/app_data.rs
@@ -65,4 +65,6 @@ pub struct AppData {
     pub max_iterations_per_light: u32,
     pub diffuse_raster_steps: u32,
     pub diffuse_raster_size: f32,
+    pub max_recursive_rays: u32,
+    pub diffuse_rays_per_hit: u32,
 }
\ No newline at end of file
diff --git a/src/main.rs b/src/main.rs
index 2ac22ee..8da19cf 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -58,7 +58,7 @@ const DEVICE_EXTENSIONS: &[vk::ExtensionName] = &[
     vk::KHR_SWAPCHAIN_EXTENSION.name
 ];
 
-const MAX_FRAMES_IN_FLIGHT: usize = 3;
+const MAX_FRAMES_IN_FLIGHT: usize = 30;
 
 fn main() -> Result<()> {
     pretty_env_logger::init();
@@ -182,6 +182,8 @@ impl App {
         data.max_iterations_per_light = 20;
         data.diffuse_raster_steps = 2;
         data.diffuse_raster_size = 0.01;
+        data.max_recursive_rays = 10;
+        data.diffuse_rays_per_hit = 1;
         let mut scene_handler = scene::Scene::default();
         
         //load_model::load_model(&mut data)?;
diff --git a/src/scene/mod.rs b/src/scene/mod.rs
index 0ed0efb..1927171 100644
--- a/src/scene/mod.rs
+++ b/src/scene/mod.rs
@@ -149,11 +149,13 @@ impl Scene {
         let index = self.sized_vertices.len();
         cube.draw(&data.topology, index, self);
         
-        let mut memory_index = 4; 
+        let mut memory_index = 6; 
         // 0 - location for the maximum number of lights referenced per chunk (also will be the invalid memory allocation for pointing to a nonexistant neighbor)
         // 1 - location for the max iterations per light
         // 2 - diffuse raster samples (2*n + 1) * (2*n + 1) so as to always have at least the central fragment covered
         // 3 - diffuse raster size
+        // 4 - max recursive rays
+        // 5 - diffuse rays per hit
         for light in &mut self.point_lights {
             light.memory_start = memory_index;
             memory_index += light.get_buffer_mem_size() as usize;
@@ -175,6 +177,8 @@ impl Scene {
         volume_vec[1] = data.max_iterations_per_light;
         volume_vec[2] = data.diffuse_raster_steps;
         volume_vec[3] = u32::from_ne_bytes(data.diffuse_raster_size.to_ne_bytes());
+        volume_vec[4] = data.max_recursive_rays;
+        volume_vec[5] = data.diffuse_rays_per_hit;
         
         for volume in &empty_volumes {
             volume_vec = volume.borrow().insert_into_memory(volume_vec, data.num_lights_per_volume, &self.point_lights);