       nextSphereIndices(capacity), nextSphereIndexPartition(capacity),
       leafSphereIndices(0) {}
 
-// TODO Apply the reduced upper bounds to the next levels partition bounds, to
-// avoid to many false positives (in case of cone intersection, this will
-// reduce the area between the hypercube and the cone, where false positives
-// occur)
-/// This can be done by storing all 6 reduced bounds in constant memory,
-/// MortonBound[6], and then performing min and max.
-
 struct RayMortonCoder {
     
     // TODO Copy these fields to CUDA as constants (After I'm done doing host testing)

    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];

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

        return lowestBound || fewOfAPrimitive;
    }
