Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
atafra committed Jul 13, 2018
1 parent fd6eca5 commit 80c0fae
Show file tree
Hide file tree
Showing 11 changed files with 67 additions and 59 deletions.
18 changes: 9 additions & 9 deletions kernels/builders/bvh_builder_msmblur.h
Expand Up @@ -354,7 +354,7 @@ namespace embree
if (cfg.singleLeafTimeSegment)
{
/* test if one primitive has more than one time segment in time range, if so split time */
for (size_t i=set.object_range.begin(); i<set.object_range.end(); i++)
for (size_t i=set.begin(); i<set.end(); i++)
{
const PrimRefMB& prim = (*set.prims)[i];
const range<int> itime_range = prim.timeSegmentRange(set.time_range);
Expand All @@ -377,8 +377,8 @@ namespace embree
{
mvector<PrimRefMB>& prims = *set.prims;

const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
const size_t begin = set.begin();
const size_t end = set.end();
const size_t center = (begin + end)/2;

PrimInfoMB linfo = empty;
Expand All @@ -398,8 +398,8 @@ namespace embree
{
if (set.size() == 0) return true;
mvector<PrimRefMB>& prims = *set.prims;
const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
const size_t begin = set.begin();
const size_t end = set.end();
unsigned int firstGeomID = prims[begin].geomID();
for (size_t i=begin+1; i<end; i++) {
if (prims[i].geomID() != firstGeomID){
Expand All @@ -412,11 +412,11 @@ namespace embree
/* split by geometry ID */
void splitByGeometry(const SetMB& set, SetMB& lset, SetMB& rset)
{
assert(set.object_range.size() > 1);
assert(set.size() > 1);

mvector<PrimRefMB>& prims = *set.prims;
const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
const size_t begin = set.begin();
const size_t end = set.end();

PrimInfoMB left(empty);
PrimInfoMB right(empty);
Expand Down Expand Up @@ -444,7 +444,7 @@ namespace embree
{
BBox1f c = empty;
BBox1f p = current.prims.time_range;
for (size_t i=current.prims.object_range.begin(); i<current.prims.object_range.end(); i++) {
for (size_t i=current.prims.begin(); i<current.prims.end(); i++) {
mvector<PrimRefMB>& prims = *current.prims.prims;
c.extend(prims[i].time_range);
}
Expand Down
18 changes: 9 additions & 9 deletions kernels/builders/bvh_builder_msmblur_hair.h
Expand Up @@ -56,7 +56,7 @@ namespace embree
: depth(depth), prims(prims) {}

__forceinline size_t size() const {
return prims.object_range.size();
return prims.size();
}

public:
Expand Down Expand Up @@ -122,8 +122,8 @@ namespace embree
__forceinline bool sameGeometry(const SetMB& set)
{
mvector<PrimRefMB>& prims = *set.prims;
unsigned int firstGeomID = prims[set.object_range.begin()].geomID();
for (size_t i=set.object_range.begin()+1; i<set.object_range.end(); i++) {
unsigned int firstGeomID = prims[set.begin()].geomID();
for (size_t i=set.begin()+1; i<set.end(); i++) {
if (prims[i].geomID() != firstGeomID){
return false;
}
Expand All @@ -136,8 +136,8 @@ namespace embree
{
mvector<PrimRefMB>& prims = *set.prims;

const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
const size_t begin = set.begin();
const size_t end = set.end();
const size_t center = (begin + end)/2;

PrimInfoMB linfo = empty;
Expand All @@ -154,9 +154,9 @@ namespace embree

void splitByGeometry(const SetMB& set, SetMB& lset, SetMB& rset)
{
assert(set.object_range.size() > 1);
const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
assert(set.size() > 1);
const size_t begin = set.begin();
const size_t end = set.end();
PrimInfoMB linfo(empty);
PrimInfoMB rinfo(empty);
unsigned int geomID = (*set.prims)[begin].geomID();
Expand All @@ -181,7 +181,7 @@ namespace embree
{
BBox1f c = empty;
BBox1f p = current.prims.time_range;
for (size_t i=current.prims.object_range.begin(); i<current.prims.object_range.end(); i++) {
for (size_t i=current.prims.begin(); i<current.prims.end(); i++) {
mvector<PrimRefMB>& prims = *current.prims.prims;
c.extend(prims[i].time_range);
}
Expand Down
6 changes: 3 additions & 3 deletions kernels/builders/heuristic_binning_array_aligned.h
Expand Up @@ -190,7 +190,7 @@ namespace embree
{
ObjectBinner binner(empty);
const BinMapping<BINS> mapping(set.size(),set.centBounds);
bin_parallel(binner,set.prims->data(),set.object_range.begin(),set.object_range.end(),PARALLEL_FIND_BLOCK_SIZE,PARALLEL_THRESHOLD,mapping);
bin_parallel(binner,set.prims->data(),set.begin(),set.end(),PARALLEL_FIND_BLOCK_SIZE,PARALLEL_THRESHOLD,mapping);
Split osplit = binner.best(mapping,logBlockSize);
osplit.sah *= set.time_range.size();
if (!osplit.valid()) osplit.data = Split::SPLIT_FALLBACK; // use fallback split
Expand All @@ -200,8 +200,8 @@ namespace embree
/*! array partitioning */
__forceinline void split(const Split& split, const SetMB& set, SetMB& lset, SetMB& rset)
{
const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
const size_t begin = set.begin();
const size_t end = set.end();
PrimInfoMB left = empty;
PrimInfoMB right = empty;
const vint4 vSplitPos(split.pos);
Expand Down
8 changes: 4 additions & 4 deletions kernels/builders/heuristic_binning_array_unaligned.h
Expand Up @@ -216,7 +216,7 @@ namespace embree
uint64_t bestGeomPrimID = -1;

/*! find curve with minimum ID that defines valid direction */
for (size_t i=set.object_range.begin(); i<set.object_range.end(); i++)
for (size_t i=set.begin(); i<set.end(); i++)
{
const PrimRefMB& prim = (*set.prims)[i];
const unsigned int geomID = prim.geomID();
Expand Down Expand Up @@ -283,7 +283,7 @@ namespace embree
BinBoundsAndCenter binBoundsAndCenter(scene,set.time_range,space);
ObjectBinner binner(empty);
const BinMapping<BINS> mapping(set.size(),set.centBounds);
bin_parallel(binner,set.prims->data(),set.object_range.begin(),set.object_range.end(),PARALLEL_FIND_BLOCK_SIZE,PARALLEL_THRESHOLD,mapping,binBoundsAndCenter);
bin_parallel(binner,set.prims->data(),set.begin(),set.end(),PARALLEL_FIND_BLOCK_SIZE,PARALLEL_THRESHOLD,mapping,binBoundsAndCenter);
Split osplit = binner.best(mapping,logBlockSize);
osplit.sah *= set.time_range.size();
if (!osplit.valid()) osplit.data = Split::SPLIT_FALLBACK; // use fallback split
Expand All @@ -294,8 +294,8 @@ namespace embree
__forceinline void split(const Split& split, const LinearSpace3fa& space, const SetMB& set, SetMB& lset, SetMB& rset)
{
BinBoundsAndCenter binBoundsAndCenter(scene,set.time_range,space);
const size_t begin = set.object_range.begin();
const size_t end = set.object_range.end();
const size_t begin = set.begin();
const size_t end = set.end();
PrimInfoMB left = empty;
PrimInfoMB right = empty;
const vint4 vSplitPos(split.pos);
Expand Down
18 changes: 9 additions & 9 deletions kernels/builders/heuristic_timesplit_array.h
Expand Up @@ -165,9 +165,9 @@ namespace embree
/*! finds the best split */
const Split find(const SetMB& set, const size_t logBlockSize)
{
assert(set.object_range.size() > 0);
assert(set.size() > 0);
TemporalBinInfo binner(empty);
binner.bin_parallel(set.prims->data(),set.object_range.begin(),set.object_range.end(),PARALLEL_FIND_BLOCK_SIZE,PARALLEL_THRESHOLD,set.time_range,set,recalculatePrimRef);
binner.bin_parallel(set.prims->data(),set.begin(),set.end(),PARALLEL_FIND_BLOCK_SIZE,PARALLEL_THRESHOLD,set.time_range,set,recalculatePrimRef);
Split tsplit = binner.best((int)logBlockSize,set.time_range,set);
if (!tsplit.valid()) tsplit.data = Split::SPLIT_FALLBACK; // use fallback split
return tsplit;
Expand All @@ -184,19 +184,19 @@ namespace embree
std::unique_ptr<mvector<PrimRefMB>> new_vector(new mvector<PrimRefMB>(device, set.size()));
PrimRefVector lprims = new_vector.get();

auto reduction_func0 = [&] ( const range<size_t>& r) {
auto reduction_func0 = [&] (const range<size_t>& r) {
PrimInfoMB pinfo = empty;
for (size_t i=r.begin(); i<r.end(); i++)
{
if (likely(prims[i].time_range_overlap(time_range0)))
{
const PrimRefMB& prim = recalculatePrimRef(prims[i],time_range0);
(*lprims)[i-set.object_range.begin()] = prim;
(*lprims)[i-set.begin()] = prim;
pinfo.add_primref(prim);
}
else
{
(*lprims)[i-set.object_range.begin()] = prims[i];
(*lprims)[i-set.begin()] = prims[i];
}
}
return pinfo;
Expand All @@ -212,7 +212,7 @@ namespace embree
lset = SetMB(linfo,lprims,time_range0);

/* calculate primrefs for second time range */
auto reduction_func1 = [&] ( const range<size_t>& r) {
auto reduction_func1 = [&] (const range<size_t>& r) {
PrimInfoMB pinfo = empty;
for (size_t i=r.begin(); i<r.end(); i++)
{
Expand All @@ -226,12 +226,12 @@ namespace embree
return pinfo;
};
PrimInfoMB rinfo = parallel_reduce(set.object_range,PARALLEL_PARTITION_BLOCK_SIZE,PARALLEL_THRESHOLD,PrimInfoMB(empty),reduction_func1,PrimInfoMB::merge2);
rinfo.object_range = range<size_t>(set.object_range.begin(), set.object_range.begin() + rinfo.size());
rinfo.object_range = range<size_t>(set.begin(), set.begin() + rinfo.size());

/* primrefs for second time range are in prims[set.object_range.begin() .. set.object_range.end()) */
/* primrefs for second time range are in prims[set.begin() .. set.end()) */
/* some primitives may need to be filtered out */
if (rinfo.size() != set.size())
rinfo.object_range._end = parallel_filter(prims.data(), set.object_range.begin(), set.object_range.end(), size_t(1024),
rinfo.object_range._end = parallel_filter(prims.data(), set.begin(), set.end(), size_t(1024),
[&](const PrimRefMB& prim) { return prim.time_range_overlap(time_range1); });

rset = SetMB(rinfo,&prims,time_range1);
Expand Down
10 changes: 9 additions & 1 deletion kernels/builders/priminfo.h
Expand Up @@ -198,7 +198,7 @@ namespace embree
CentGeom<BBox>::merge(other);
time_range.extend(other.time_range);
object_range._begin += other.object_range.begin();
object_range._end += other.object_range.end();
object_range._end += other.object_range.end();
num_time_segments += other.num_time_segments;
if (max_num_time_segments < other.max_num_time_segments) {
max_num_time_segments = other.max_num_time_segments;
Expand All @@ -209,6 +209,14 @@ namespace embree
static __forceinline const PrimInfoMBT merge2(const PrimInfoMBT& a, const PrimInfoMBT& b) {
PrimInfoMBT r = a; r.merge(b); return r;
}

__forceinline size_t begin() const {
return object_range.begin();
}

__forceinline size_t end() const {
return object_range.end();
}

/*! returns the number of primitives */
__forceinline size_t size() const {
Expand Down
2 changes: 1 addition & 1 deletion kernels/bvh/bvh_builder_hair_mb.cpp
Expand Up @@ -76,7 +76,7 @@ namespace embree
if (prims.size() == 0)
return NodeRecordMB4D(BVH::emptyNode,empty,empty);

const unsigned int geomID0 = (*prims.prims)[prims.object_range.begin()].geomID();
const unsigned int geomID0 = (*prims.prims)[prims.begin()].geomID();
if (scene->get(geomID0)->getCurveBasis() == Geometry::GTY_BASIS_LINEAR)
return LinePrimitive::createLeafMB(bvh,prims,alloc);
else
Expand Down
16 changes: 8 additions & 8 deletions kernels/bvh/bvh_builder_sah_mb.cpp
Expand Up @@ -86,15 +86,15 @@ namespace embree

__forceinline const NodeRecordMB4D operator() (const BVHBuilderMSMBlur::BuildRecord& current, const FastAllocator::CachedAllocator& alloc) const
{
size_t items = Primitive::blocks(current.prims.object_range.size());
size_t start = current.prims.object_range.begin();
size_t end = current.prims.object_range.end();
size_t items = Primitive::blocks(current.prims.size());
size_t start = current.prims.begin();
size_t end = current.prims.end();
for (size_t i=start; i<end; i++) assert((*current.prims.prims)[start].geomID() == (*current.prims.prims)[i].geomID()); // assert that all geomIDs are identical
Primitive* accel = (Primitive*) alloc.malloc1(items*sizeof(Primitive),BVH::byteNodeAlignment);
NodeRef node = bvh->encodeLeaf((char*)accel,items);
LBBox3fa allBounds = empty;
for (size_t i=0; i<items; i++)
allBounds.extend(accel[i].fillMB(current.prims.prims->data(), start, current.prims.object_range.end(), bvh->scene, current.prims.time_range));
allBounds.extend(accel[i].fillMB(current.prims.prims->data(), start, current.prims.end(), bvh->scene, current.prims.time_range));
return NodeRecordMB4D(node,allBounds,current.prims.time_range);
}

Expand Down Expand Up @@ -191,7 +191,7 @@ namespace embree
PrimInfoMB pinfo = createPrimRefArrayMSMBlur(scene,Mesh::geom_type,prims,bvh->scene->progressInterface);

/* early out if no valid primitives */
if (pinfo.object_range.size() == 0) { bvh->clear(); return; }
if (pinfo.size() == 0) { bvh->clear(); return; }

/* estimate acceleration structure size */
const size_t node_bytes = pinfo.num_time_segments*sizeof(AlignedNodeMB)/(4*N);
Expand Down Expand Up @@ -280,8 +280,8 @@ namespace embree

__forceinline const NodeRecordMB4D operator() (const BVHBuilderMSMBlur::BuildRecord& current, const FastAllocator::CachedAllocator& alloc) const
{
const size_t items = current.prims.object_range.size();
const size_t start = current.prims.object_range.begin();
const size_t items = current.prims.size();
const size_t start = current.prims.begin();

const PrimRefMB* prims = current.prims.prims->data();
/* collect all subsets with unique geomIDs */
Expand Down Expand Up @@ -617,7 +617,7 @@ namespace embree
PrimInfoMB pinfo = createPrimRefArrayMSMBlurGrid(scene,prims,bvh->scene->progressInterface);

/* early out if no valid primitives */
if (pinfo.object_range.size() == 0) { bvh->clear(); return; }
if (pinfo.size() == 0) { bvh->clear(); return; }



Expand Down
14 changes: 7 additions & 7 deletions kernels/bvh/bvh_builder_subdiv.cpp
Expand Up @@ -263,10 +263,10 @@ namespace embree
sMB += count * mesh->numTimeSteps;
}
return PrimInfoMB(s,sMB);
}, [](const PrimInfoMB& a, const PrimInfoMB& b) -> PrimInfoMB { return PrimInfoMB(a.object_range.begin()+b.object_range.begin(),a.object_range.end()+b.object_range.end()); });
}, [](const PrimInfoMB& a, const PrimInfoMB& b) -> PrimInfoMB { return PrimInfoMB(a.begin()+b.begin(),a.end()+b.end()); });

numSubPatches = pinfo.object_range.begin();
numSubPatchesMB = pinfo.object_range.end();
numSubPatches = pinfo.begin();
numSubPatchesMB = pinfo.end();
}

void rebuild(size_t numPrimitives)
Expand All @@ -288,8 +288,8 @@ namespace embree
BVH_Allocator alloc(bvh);
patch_eval_subdivision(mesh->getHalfEdge(0,f),[&](const Vec2f uv[4], const int subdiv[4], const float edge_level[4], int subPatch)
{
const size_t patchIndex = base.object_range.begin()+s;
const size_t patchIndexMB = base.object_range.end()+sMB;
const size_t patchIndex = base.begin()+s;
const size_t patchIndexMB = base.end()+sMB;
assert(patchIndex < numPrimitives);

for (size_t t=0; t<mesh->numTimeSteps; t++)
Expand All @@ -309,14 +309,14 @@ namespace embree
pinfo.object_range._end = sMB;
return pinfo;
}, [](const PrimInfoMB& a, const PrimInfoMB& b) -> PrimInfoMB { return PrimInfoMB::merge2(a,b); });
pinfo.object_range._end = pinfo.object_range.begin();
pinfo.object_range._end = pinfo.begin();
pinfo.object_range._begin = 0;

auto createLeafFunc = [&] (const BVHBuilderMSMBlur::BuildRecord& current, const Allocator& alloc) -> NodeRecordMB4D {
mvector<PrimRefMB>& prims = *current.prims.prims;
size_t items MAYBE_UNUSED = current.prims.size();
assert(items == 1);
const size_t patchIndexMB = prims[current.prims.object_range.begin()].ID();
const size_t patchIndexMB = prims[current.prims.begin()].ID();
SubdivPatch1Base& patch = subdiv_patches[patchIndexMB+0];
NodeRef node = bvh->encodeLeaf((char*)&patch,1);
size_t patchNumTimeSteps = scene->get<SubdivMesh>(patch.geomID())->numTimeSteps;
Expand Down
8 changes: 4 additions & 4 deletions kernels/geometry/curveNi_mb.h
Expand Up @@ -138,10 +138,10 @@ namespace embree
template<typename BVH, typename SetMB, typename Allocator>
__forceinline static typename BVH::NodeRecordMB4D createLeafMB(BVH* bvh, const SetMB& prims, const Allocator& alloc)
{
size_t start = prims.object_range.begin();
size_t end = prims.object_range.end();
size_t items = CurveNiMB::blocks(prims.object_range.size());
size_t numbytes = CurveNiMB::bytes(prims.object_range.size());
size_t start = prims.begin();
size_t end = prims.end();
size_t items = CurveNiMB::blocks(prims.size());
size_t numbytes = CurveNiMB::bytes(prims.size());
CurveNiMB* accel = (CurveNiMB*) alloc.malloc1(numbytes,BVH::byteAlignment);
const typename BVH::NodeRef node = bvh->encodeLeaf((char*)accel,items);

Expand Down
8 changes: 4 additions & 4 deletions kernels/geometry/linei.h
Expand Up @@ -203,10 +203,10 @@ namespace embree
template<typename BVH, typename SetMB, typename Allocator>
__forceinline static typename BVH::NodeRecordMB4D createLeafMB(BVH* bvh, const SetMB& prims, const Allocator& alloc)
{
size_t start = prims.object_range.begin();
size_t end = prims.object_range.end();
size_t items = LineMi::blocks(prims.object_range.size());
size_t numbytes = LineMi::bytes(prims.object_range.size());
size_t start = prims.begin();
size_t end = prims.end();
size_t items = LineMi::blocks(prims.size());
size_t numbytes = LineMi::bytes(prims.size());
LineMi* accel = (LineMi*) alloc.malloc1(numbytes,M*sizeof(float));
const typename BVH::NodeRef node = bvh->encodeLeaf((char*)accel,items);

Expand Down

0 comments on commit 80c0fae

Please sign in to comment.