Page 1 of 1

super fast mbvh4 traversal and triangle intersection

Posted: Thu Jan 14, 2016 12:07 pm
by mpeterson
we have developed 2 new traversal methods for mbvh4. One for coherent transport and one for incoherent ray traversal (e.g. diffuse bounces >= 2nd order). on top of that new triangle intersectors have been implemented to further speedup the process of rendering triangle meshes. the traversal methods outperform current embree kernels by up to 4x for camera rays, primary occlusion, ao and 2x for incoherent ray transport. we also did some measurements against gpu hardware (titan and others). for some setups our kernels perform better than any state of the art gpu implementation (e.g. "understanding the efficiency of ray traversal on gpus") when only simple shading was activated. a highly optimized cpu path tracer (developed with the techniques above) outperforms easily any gpu pt when it comes to complex light transport. intels upcoming avx-512 enabled cpus will push this gap even further. more infos are available here: http://rapt.technology/

Re: super fast mbvh4 traversal and triangle intersection

Posted: Thu Jan 14, 2016 6:39 pm
by dr_eck
Congratulations! I had been beginning to wonder if anyone on this board would be able to invent a better ray tracing algorithm, and you have done it.

Re: super fast mbvh4 traversal and triangle intersection

Posted: Fri Jan 15, 2016 9:38 am
by koiava
Well done! great improvements :)
I tried once multifrusta packet tracing with 2 level BVH and remember that there was problems with packet transformations. If one ray in packet hits leaf of upper BVH you have to transform whole packet to leaf space to continue traversal in lower leaf BVH. As I guess this is relevant for all packet tracers. Did you tried your method with 2 level bvh?

Re: super fast mbvh4 traversal and triangle intersection

Posted: Wed Jan 27, 2016 4:01 pm
by mpeterson
koiava wrote:Well done! great improvements :)
I tried once multifrusta packet tracing with 2 level BVH and remember that there was problems with packet transformations. If one ray in packet hits leaf of upper BVH you have to transform whole packet to leaf space to continue traversal in lower leaf BVH. As I guess this is relevant for all packet tracers. Did you tried your method with 2 level bvh?
hallo, yes we did.
when we hit a leaf of the upper tree, a mask for all active rays/packets is available. we then just copy/transform all active rays
into our batch queue and continue with that one.