function that splits a build primitive */
| 260 | |
| 261 | /* function that splits a build primitive */ |
| 262 | struct Splitter |
| 263 | { |
| 264 | Splitter (RTCSplitPrimitiveFunction splitPrimitive, unsigned geomID, unsigned primID, void* userPtr) |
| 265 | : splitPrimitive(splitPrimitive), geomID(geomID), primID(primID), userPtr(userPtr) {} |
| 266 | |
| 267 | __forceinline void operator() (PrimRef& prim, const size_t dim, const float pos, PrimRef& left_o, PrimRef& right_o) const |
| 268 | { |
| 269 | prim.geomIDref() &= BVHBuilderBinnedFastSpatialSAH::GEOMID_MASK; |
| 270 | splitPrimitive((RTCBuildPrimitive*)&prim,(unsigned)dim,pos,(RTCBounds*)&left_o,(RTCBounds*)&right_o,userPtr); |
| 271 | left_o.geomIDref() = geomID; left_o.primIDref() = primID; |
| 272 | right_o.geomIDref() = geomID; right_o.primIDref() = primID; |
| 273 | } |
| 274 | |
| 275 | __forceinline void operator() (const BBox3fa& box, const size_t dim, const float pos, BBox3fa& left_o, BBox3fa& right_o) const |
| 276 | { |
| 277 | PrimRef prim(box,geomID & BVHBuilderBinnedFastSpatialSAH::GEOMID_MASK,primID); |
| 278 | splitPrimitive((RTCBuildPrimitive*)&prim,(unsigned)dim,pos,(RTCBounds*)&left_o,(RTCBounds*)&right_o,userPtr); |
| 279 | } |
| 280 | |
| 281 | RTCSplitPrimitiveFunction splitPrimitive; |
| 282 | unsigned geomID; |
| 283 | unsigned primID; |
| 284 | void* userPtr; |
| 285 | }; |
| 286 | |
| 287 | /* build BVH */ |
| 288 | void* root = BVHBuilderBinnedFastSpatialSAH::build<void*>( |
no outgoing calls
no test coverage detected