Posts

The annual High Performance Graphics conference (HPG’17) is kicking off today in LA with a very promising line-up of papers.
A side effect of the continued VR hype is an increased interest in ray tracing methods motivated by adaptive rendering algorithms.
In addition, production rendering has seen wide-spread adoption of ray tracing.
So these are good times for ray tracing research and HPG offers two papers focused on accelerated ray traversal methods, one targeted at the GPU by Nvidia (view), and one targeted at the CPU by myself.
You can read my contribution here, and after that keep on reading this blog post which describes some further optimizations of the algorithm (named WiVe) introduced in the paper.

The best known BVH construction algorithm in terms of ray tracing performance is the BVH with spatial splits (SBVH).
In contrast to a standard BVH where sibling nodes overlap in space if the corresponding primitives do, the SBVH allows to split overlapping primitives resulting in spatially disjunct sibling nodes.
Primitive splitting is a costly operation and considerably complicates multi-threaded BVH construction due to recursively growing memory buffers.

This is the first part of a series about the inner workings of the raPT renderer, uncovering techniques and implementation details.
The topic for today is the acceleration structure implemented in raPT to speed up the calculation of ray-geometry intersections.

Currently I’m implementing a HDR pipeline for environment map lighting in raPT, and I have found HDR image processing to be quite demanding computationally.
In particular the generation of full resolution CDF tables for importance sampling can take a long time with a straightforward single-threaded implementation.
For example, only building the CDF table for a 8k×4k HDR image (floats) already requires about 600ms on my Intel Xeon E5 v3. Since I want to use a slider to adjust exposure and rotation of the environment maps in my scenes, this is real annoyance instead of real time.