#pragma once
#include "priminfo.h"
#include "priminfo_mb.h"
#include "../../common/algorithms/parallel_reduce.h"
#include "../../common/algorithms/parallel_partition.h"
namespace embree
{
namespace isa
{
template<size_t BINS>
struct BinMapping
{ … };
template<size_t BINS>
struct BinSplit
{ … };
template<typename BBox>
struct SplitInfoT
{ … };
SplitInfo;
SplitInfo2;
template<size_t BINS, typename PrimRef, typename BBox>
struct __aligned(64) BinInfoT
{ … };
}
template<typename BinInfoT, typename BinMapping, typename PrimRef>
__forceinline void bin_parallel(BinInfoT& binner, const PrimRef* prims, size_t begin, size_t end, size_t blockSize, size_t parallelThreshold, const BinMapping& mapping)
{ … }
template<typename BinBoundsAndCenter, typename BinInfoT, typename BinMapping, typename PrimRef>
__forceinline void bin_parallel(BinInfoT& binner, const PrimRef* prims, size_t begin, size_t end, size_t blockSize, size_t parallelThreshold, const BinMapping& mapping, const BinBoundsAndCenter& binBoundsAndCenter)
{ … }
template<bool parallel, typename BinInfoT, typename BinMapping, typename PrimRef>
__forceinline void bin_serial_or_parallel(BinInfoT& binner, const PrimRef* prims, size_t begin, size_t end, size_t blockSize, const BinMapping& mapping)
{ … }
template<bool parallel, typename BinBoundsAndCenter, typename BinInfoT, typename BinMapping, typename PrimRef>
__forceinline void bin_serial_or_parallel(BinInfoT& binner, const PrimRef* prims, size_t begin, size_t end, size_t blockSize, const BinMapping& mapping, const BinBoundsAndCenter& binBoundsAndCenter)
{ … }
}