i3dlogo I have been at Boston last few days to attend the I3D (ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games) conference where I presented our paper on GigaVoxel. The presentation went well and a lot of people seemed to  be interested by our method. I like I3D conference because it’s a good opportunity to meet people and to share and discuss about everybody’s research. In addition there is usually a lot of GPU guys here 😉

This year, the invited banquet speaker was Austin Robinson from NVIDIA research group and he announced in exclusivity NVIRT, the NVIDIA Ray-Tracing engine. NVIRT is a low level API layered over CUDA and it seems to use a lot of functionalities of NVSG (NVIDIA scene graph).

nvidia_logo The principle is to provide the API with an object scene graph and a ray generator, then it gives you the ray-intersections through a traversal black box. It seems to be quite flexible since intersection shaders can be written, allowing to compute arbitrary shadings or to launch secondary rays (for reflection, refractions or shadows).  Shaders are written in CUDA and the whole API generate PTX assembly. Efficiency strategies can be defined for rays,  they can be configured to can return the closest intersection or to terminate on the first intersection, found that is usefull for shadows computations. Different acceleration structures seem to be avalaible to store objects, like kd-trees for static objects and BVH (Bounding Volume Hierarchy) for dynami ones. This SDK seems to be thought quite generic to allow more than only ray-tracing rendering  (like collision detection, illumination or why not AI. The SDK should come with a lot of samples.

Since it runs on CUDA, it inherits the limitations from this one, like the cost of context switch between graphics API and CUDA and the current impossibility to share textures or render targets directly. That will limit in a first tim ethe usability of the API for mixed algorithms, but It seems to be a really cool toy to test ray-tracing algorithms, and will provide to NVIDIA a good black box to enhance ray-tracing support in their future hardware.

EDIT: It seems to take a little time before something appears on NVIDIA website, so since Austin shared it’s slides with some people present at i3D, Eric Haines put them on it’s blog: http://realtimerendering.com/downloads/NVIRT-Overview.pdf