@@ -23,25 +23,25 @@ namespace cuBQL {
2323 _terminate_ a traveral, but ordering child nodes is not required
2424 because ordering shouldn't matter */
2525 namespace fixedRayQuery {
26- template <typename Lambda, typename T, int D >
26+ template <typename Lambda, typename T>
2727 inline __cubql_both
2828 void forEachLeaf (const Lambda &lambdaToExecuteForEachCandidate,
29- cuBQL::bvh_t <T, D > bvh,
30- cuBQL::ray3f ray,
29+ cuBQL::bvh_t <T, 3 > bvh,
30+ cuBQL::ray_t <T> ray,
3131 bool dbg=false );
3232
33- template <typename Lambda, typename T, int D, int W>
33+ template <typename Lambda, typename T, int W>
3434 inline __cubql_both
3535 void forEachLeaf (const Lambda &lambdaToExecuteForEachCandidate,
36- cuBQL::WideBVH<T, D , W> bvh,
37- cuBQL::ray3f ray,
36+ cuBQL::WideBVH<T, 3 , W> bvh,
37+ cuBQL::ray_t <T> ray,
3838 bool dbg=false );
3939
40- template <typename Lambda, typename bvh_t >
40+ template <typename Lambda, typename T >
4141 inline __cubql_both
4242 void forEachPrim (const Lambda &lambdaToExecuteForEachCandidate,
43- bvh_t bvh,
44- cuBQL::ray3f ray,
43+ bvh_t <T, 3 > bvh,
44+ cuBQL::ray_t <T> ray,
4545 bool dbg=false );
4646
4747 /* ! traverse BVH with given fixed-length, axis-aligned ray, and
@@ -86,31 +86,40 @@ namespace cuBQL {
8686 /* ! single level BVH ray traversal, provided lambda covers what
8787 happens when a ray wants to intersect a given prim within that
8888 bvh */
89- template <typename Lambda, typename T, int D, typename ray_t >
89+ template <typename Lambda, typename T>
9090 inline __cubql_both
9191 float forEachLeaf (const Lambda &lambdaToCallOnEachLeaf,
92- bvh_t <T, D > bvh,
93- ray_t ray,
92+ bvh_t <T, 3 > bvh,
93+ ray_t <T> ray,
9494 bool dbg=false );
9595
9696 /* ! single level BVH ray traversal, provided lambda covers what
9797 happens when a ray wants to intersect a given prim within that
9898 bvh */
99- template <typename Lambda, typename T, int D, int W, typename ray_t >
99+ template <typename Lambda, typename T, int W >
100100 inline __cubql_both
101101 float forEachLeaf (const Lambda &lambdaToCallOnEachLeaf,
102- WideBVH<T, D , W> bvh,
103- ray_t ray,
102+ WideBVH<T, 3 , W> bvh,
103+ ray_t <T> ray,
104104 bool dbg=false );
105105
106106 /* ! single level BVH ray traversal, provided lambda covers what
107107 happens when a ray wants to intersect a given prim within that
108108 bvh */
109- template <typename Lambda, typename bvh_t , typename ray_t >
109+ template <typename Lambda, typename T >
110110 inline __cubql_both
111111 void forEachPrim (const Lambda &lambdaToExecuteForEachCandidate,
112- bvh_t bvh,
113- ray_t &ray,
112+ BinaryBVH<T,3 > bvh,
113+ ray_t <T> &ray,
114+ bool dbg=false );
115+ /* ! single level BVH ray traversal, provided lambda covers what
116+ happens when a ray wants to intersect a given prim within that
117+ bvh */
118+ template <typename Lambda, typename T, int W>
119+ inline __cubql_both
120+ void forEachPrim (const Lambda &lambdaToExecuteForEachCandidate,
121+ WideBVH<T,3 ,W> bvh,
122+ ray_t <T> &ray,
114123 bool dbg=false );
115124
116125 namespace twoLevel {
@@ -272,14 +281,15 @@ namespace cuBQL {
272281 forEachLeaf (leafCode,bvh,ray,dbg);
273282 }
274283
275- template <typename Lambda, typename T, int D >
284+ template <typename Lambda, typename T>
276285 inline __cubql_both
277286 void fixedRayQuery::forEachLeaf (const Lambda &lambdaToCallOnEachLeaf,
278- cuBQL::bvh_t <T,D > bvh,
287+ cuBQL::BinaryBVH <T,3 > bvh,
279288 cuBQL::ray_t <T> ray,
280289 bool dbg)
281290 {
282- using node_admin_t = typename bvh_t <T,D>::node_t ::Admin;
291+ using node_t = typename BinaryBVH<T,3 >::node_t ;
292+ using node_admin_t = typename node_t ::Admin;
283293 enum { stackDepth = 64 };
284294 struct StackEntry {
285295 uint32_t idx;
@@ -304,10 +314,10 @@ namespace cuBQL {
304314
305315 uint32_t n0Idx = (uint32_t )node.offset +0 ;
306316 uint32_t n1Idx = (uint32_t )node.offset +1 ;
307- bvh3f:: node_t n0 = bvh.nodes [n0Idx];
308- bvh3f:: node_t n1 = bvh.nodes [n1Idx];
309- bool o0 = rayIntersectsBox (ray,n0.bounds ,dbg );
310- bool o1 = rayIntersectsBox (ray,n1.bounds ,dbg );
317+ node_t n0 = bvh.nodes [n0Idx];
318+ node_t n1 = bvh.nodes [n1Idx];
319+ bool o0 = rayIntersectsBox (ray,n0.bounds );
320+ bool o1 = rayIntersectsBox (ray,n1.bounds );
311321 if (o0) {
312322 if (o1) {
313323 *stackPtr++ = n1.admin ;
@@ -367,14 +377,14 @@ namespace cuBQL {
367377 }
368378 }
369379
370- template <typename Lambda, typename T, int D, int W>
380+ template <typename Lambda, typename T, int W>
371381 inline __cubql_both
372382 void fixedRayQuery::forEachLeaf (const Lambda& lambdaToCallOnEachLeaf,
373- cuBQL::WideBVH<T, D , W> bvh,
374- cuBQL::ray3f ray,
383+ cuBQL::WideBVH<T, 3 , W> bvh,
384+ cuBQL::ray_t <T> ray,
375385 bool dbg)
376386 {
377- using node_t = typename WideBVH<T, D , W>::node_t ;
387+ using node_t = typename WideBVH<T, 3 , W>::node_t ;
378388
379389 int traversalStack[64 ], * stackPtr = traversalStack;
380390 int nodeID = 0 ;
@@ -454,11 +464,11 @@ namespace cuBQL {
454464
455465 /* ! this query assumes lambads that return CUBQL_CONTINUE_TRAVERSAL
456466 or CUBQL_TERMINATE_TRAVERSAL */
457- template <typename Lambda, typename bvh_t >
467+ template <typename Lambda, typename T >
458468 inline __cubql_both
459469 void fixedRayQuery::forEachPrim (const Lambda &lambdaToExecuteForEachCandidate,
460- bvh_t bvh,
461- cuBQL::ray3f ray,
470+ bvh_t <T, 3 > bvh,
471+ cuBQL::ray_t <T> ray,
462472 bool dbg)
463473 {
464474 /* the code we want to have executed for each leaf that may
@@ -479,15 +489,15 @@ namespace cuBQL {
479489 forEachLeaf (leafCode,bvh,ray,dbg);
480490 }
481491
482- template <typename Lambda, typename T, int D, typename ray_t >
492+ template <typename Lambda, typename T>
483493 inline __cubql_both
484494 float shrinkingRayQuery::forEachLeaf (const Lambda &lambdaToCallOnEachLeaf,
485- bvh_t <T, D > bvh,
486- ray_t ray,
495+ BinaryBVH <T, 3 > bvh,
496+ ray_t <T> ray,
487497 bool dbg)
488498 {
489499 using scalar_t = T;
490- using node_t = typename bvh_t <T, D >::node_t ;
500+ using node_t = typename BinaryBVH <T, 3 >::node_t ;
491501 using node_admin_t = typename node_t ::Admin;
492502 struct StackEntry {
493503 uint32_t idx;
@@ -578,14 +588,14 @@ namespace cuBQL {
578588 }
579589 }
580590
581- template <typename Lambda, typename T, int D, int W, typename ray_t >
591+ template <typename Lambda, typename T, int W >
582592 inline __cubql_both
583593 float shrinkingRayQuery::forEachLeaf (const Lambda& lambdaToCallOnEachLeaf,
584- WideBVH<T, D , W> bvh,
585- ray_t ray,
594+ WideBVH<T, 3 , W> bvh,
595+ ray_t <T> ray,
586596 bool dbg)
587597 {
588- using node_t = typename WideBVH<T, D , W>::node_t ;
598+ using node_t = typename WideBVH<T, 3 , W>::node_t ;
589599
590600 int traversalStack[64 ], * stackPtr = traversalStack;
591601 int nodeID = 0 ;
@@ -662,11 +672,11 @@ namespace cuBQL {
662672 return T (CUBQL_INF);
663673 }
664674
665- template <typename Lambda, typename bvh_t , typename ray_t >
675+ template <typename Lambda, typename T >
666676 inline __cubql_both
667677 void shrinkingRayQuery::forEachPrim (const Lambda &lambdaToExecuteForEachCandidate,
668- bvh_t bvh,
669- ray_t &ray,
678+ bvh_t <T, 3 > bvh,
679+ ray_t <T> &ray,
670680 bool dbg)
671681 {
672682 auto perLeaf = [dbg,bvh,&ray,lambdaToExecuteForEachCandidate]
@@ -695,24 +705,24 @@ namespace cuBQL {
695705 template <typename EnterBlasLambda,
696706 typename LeaveBlasLambda,
697707 typename ProcessLeafLambda,
698- typename bvh_t , typename ray_t >
708+ typename T >
699709 inline __cubql_both
700710 void shrinkingRayQuery::twoLevel::
701711 forEachLeaf (const EnterBlasLambda &enterBlas,
702712 const LeaveBlasLambda &leaveBlas,
703713 const ProcessLeafLambda &processLeaf,
704- bvh_t bvh,
714+ BinaryBVH<T, 3 > bvh,
705715 /* ! REFERENCE to a ray, so 'enterBlas()' can modify it */
706- ray_t &ray,
716+ ray_t <T> &ray,
707717 bool _dbg)
708718 {
709719#ifdef NDEBUG
710720 const bool dbg = false ;
711721#else
712722 bool dbg = _dbg;
713723#endif
724+ using bvh_t = BinaryBVH<T,3 >;
714725 using node_t = typename bvh_t ::node_t ;
715- using T = typename bvh_t ::scalar_t ;
716726 using scalar_t = typename bvh_t ::scalar_t ;
717727 using vec3_t = typename cuBQL::vec_t <scalar_t ,3 >;
718728 struct StackEntry {
0 commit comments