- CUDA based application showing gpu volume raycasting using single pass Stegmaier et al. technique.
The cuda raycasting implementation is the same approach as the Stegmaier one but with some minor changes and simplifications:
- CUDA kernel
- The volume is a cube: width, height and depth are all the same.
- Proxy geometry (the six quads or the cube) is normalized and translated so the center its the same as the center of the scene.
The intersection code is really unoptimized. It’s just a straightforward implementation of the intersection ray-aabox function shown in “Real time collision detection” by Christer Ericson. I would suggest you to see the implementation of this function within the nvidia sdk volume render sample .
- Left click plus mouse movement to rotate the camera around the volume.
- Right click to show the context menu.
- Middle click plus vertical movement to increase/decrease the density window width.
- Middle click plus horizontal movement to move right/left the density window.
- Opengl 2.1
- Glut for Win32
- Microsoft Visual Studio 2008 Professional Edition
Develop/Build/Test Machine Specs
- Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz
- 3072 Mb RAM
- Nvidia GeForce GTX 260
- Nvidia Driver Version: 196.21 WHQL
- Microsoft Windows 7 Professional x64
- [SSKE05] S. Stegmaier, M. Strengert, T. Klein, and T. Ertl.
A Simple and Flexible Volume Rendering Framework for Graphics-Hardware-based Raycasting,
Proceedings of Volume Graphics 2005, Stony Brook, New York, USA, pp.187-195, 2005
- A Simple and Flexible Volume Rendering Framework for Graphics-Hardware-based Raycasting website. Includes paper, dataset and source code.
- The Volume Library
- NVIDIA GPU Computing Developer Home Page
- GLEW: The OpenGL Extension Wrangler Library