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).
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
March 12th, 2009 on 6:53 pm
AO Also, have you tried implementing ambient occlusion and shadowing in your engine?
March 13th, 2009 on 1:37 pm
RE: sparse voxel octrees &AO HI, I have read john carmack interview, in fact he have been interested by voxel representation for a long time now. I have not been in contact with him, but I am in contact with Jon Olick who was working at ID on this topic. I should contact john carmack also.
About AO and shadows, I have tried shadows through secondary rays and simple shadow-maps. But secondary rays are still too much incoherent. AO is part of my future work 😉
March 12th, 2009 on 6:46 pm
sparse voxel octrees Hi Cyril,
first, congrats on all your material, it\’s really interesting.
Have you read that John Carmack interview (a year old) regarding sparse voxel octrees?
pcper.com/article.php?aid=532
Have you contacted him?
-bob