         
         const float rayCount = (float)(rayPartition.y - rayPartition.x);
         const float sphereCount = (float)(spherePartition.y - spherePartition.x);
-        const bool fewOfAPrimitive = rayCount * sphereCount <= 11.0f * (rayCount + sphereCount);
+        const bool fewOfAPrimitive = rayCount * sphereCount <= 32.0f * (rayCount + sphereCount);
 
         return lowestBound || fewOfAPrimitive;
     }

    nextRayPartitions[id*2+1] = make_uint2(pivot.x, partition.y);
}

struct CreateBoundsFromPartitions {
    unsigned int* rayMortonCodes;

    CreateBoundsFromPartitions(thrust::device_vector<unsigned int>& codes)
        : rayMortonCodes(RawPointer(codes)) {}
    
    __host__ __device__
    MortonBound operator()(const uint2 rayPartition) const {
        const MortonCode min = rayMortonCodes[rayPartition.x];

      nextSphereIndices(capacity), nextSphereIndexPartition(capacity),
      leafSphereIndices(0) {}

struct RayMortonCoder {
    
    // TODO Copy these fields to CUDA as constants (After I'm done doing host testing)
