Realizing Multi-Hit Ray Tracing in Embree & OSPRay
Christiaan Gribble
SURVICE Engineering Intel HPC Developer Conference 12 November 2016
in Embree & OSPRay Christiaan Gribble SURVICE Engineering - - PowerPoint PPT Presentation
Realizing Multi-Hit Ray Tracing in Embree & OSPRay Christiaan Gribble SURVICE Engineering Intel HPC Developer Conference 12 November 2016 Take-home messages Multi-hit ray traversal Enables a new class of ray-based rendering &
Christiaan Gribble
SURVICE Engineering Intel HPC Developer Conference 12 November 2016
2
3
4
5
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23
24
25
26
http://www.rtvtk.org/~cgribble/research/mhBVH/
27
28
29
http://www.rtvtk.org/~cgribble/research/ospMultiHit/
static void collectIntersectionsFilter(void* /* unused */, RTCRay& _ray) { 0 // Find index at which to store candidate intersection 1 uint idx = Nquery; 2 while (idx > 0 && ray.tfar < hits[idx-1].tval) 3 { 4 hits[idx] = hits[idx-1]; 5 --idx; 6 }
30
7 // Store intersection, possibly beyond index of the 8 // N ≤ Nquery closest intersections (i.e., at 9 // idx = Nquery) 10 HitData& hit = hits[idx]; 11 hit.geomID = ray.geomID; 12 hit.primID = ray.primID; 13 hit.tval = ray.tfar; 14 hit.Ng = ray.Ng; 15 16 // Update number of intersections identified so far 17 ray.nhits += (ray.nhits < Nquery ? 1 : 0);
31
17 if (ray.nhits < Nquery) 18 { 19 // Reject intersection to continue traversal with 20 // incoming ray interval, as in previous work 21 // [Amstutz et al. 2015] 22 ray.geomID = RTC_INVALID_GEOMETRY_ID; 23 return; 24 }
32
25 // Induce node culling 26 // Trick: set ray.tfar to farthest value among the 27 // N = Nquery intersections identified so far 28 // and (implicitly) accept intersection with 29 // modified ray interval 30 ray.tfar = hits[Nquery-1].tval; 31 }
33
35
36
37
sibe 80K tris fair 174K tris conf 282K tris truck 426K tris tank 1.0M tris hball 2.8M tris sanm 10.5M tris pplant 12.7M tris
38
0.0 20.0 40.0 60.0 80.0 100.0 120.0 140.0 10% 1 30% 70% all
Mhps
+4.60x +1.64x +1.08x 0.96x 0.97x naive culling
39
0.0 20.0 40.0 60.0 80.0 100.0 120.0 140.0 10% 1 30% 70% all
Mhps
+4.60x +1.64x +1.08x 0.96x 0.97x naive culling
40
0.0 20.0 40.0 60.0 80.0 100.0 120.0 140.0 10% 1 30% 70% all
Mhps
+4.60x +1.64x +1.08x 0.96x 0.97x naive culling
41
42
43
44
Engineering CAD visualization Vulnerability analysis
45
47
48
49
[AGGW15] Amstutz, J., Gribble, C., Gunther, J., & Wald, I. (2015) An evaluation of multi-hit ray traversal in a BVH using existing first-hit/any-hit kernels. Journal
[GNK14] Gribble, C., Naveros, A., & Kerzner, E. (2014) Multi-hit ray traversal. Journal of Computer Graphics Techniques, 3(1):1—17. [Gri16] Gribble, C. (2016) Node culling multi-hit BVH traversal. Eurographics Symposium
[GWA16] Gribble, C., Wald, I., & Amstutz, J. (2016) Implementing node culling multi-hit BVH traversal in Embree. Journal of Computer Graphics Techniques, 5(4):29—35.
50
Applied Technology Operation SURVICE Engineering 4695 Millennium Drive Belcamp, MD 21017
christiaan.gribble@survice.com
http://www.survice.com/employees/~cgribble/
51