     }
 
     // Raytracing constants
-    const int loop_max = 256;
+    const int loop_max = 512;
     const float ray_epsilon = 1.0005;
-    const float hit_bias = 0.002;
+    const float hit_bias = 0.001;
 
     // Limit the maximum amount of mipmaps. This important, choosing a too
     // high value will introduce artifacts.

    vec3 pos = ray_start;

    // Move pos by a small bias to avoid self intersection
    pos += ray_dir * 0.02;


    while (mipmap > -1 && max_iter --> 0)

        // Check if we are out of screen bounds, if so, return
        if (pos.x < 0.0 || pos.y < 0.0 || pos.x > 1.0 || pos.y > 1.0)
        {
            return vec3(0);
        }

        work_size = textureSize(DownscaledDepth, mipmap).xy;
