In this project we developed a block ray tracing engine for voxel visualization of volumetric data on CUDA, and visualization software based on said engine.
The engine allows high-quality rendering of surfaces due to the refinement of the isosurface without building polygonal meshes. For volume rendering, we implemented voxel depth discrimination, whereby different transparency is achieved for distant voxels by changing their weight coefficients. Lighting, various materials and transfer functions are supported.
The engine supports section by an arbitrary plane. The construction of such sections is possible in any direction, not necessarily orthogonal.
A convenient "swinging" of the slices is provided for precise alignment of the surface (for example, the plane of a printed circuit board). Coloring of surfaces and slices using the transfer function is supported.
To increase the speed, we have implemented direct output through CUDA OpenGL Interop. As a result, we have achieved very high performance: for example, on an NVIDIA GeForce RTX 3080 GPU for a volume of 2k x 2k x 2k pixels, any manipulations are carried out at a speed of at least 60 fps.
Then, using the aforementioned engine, we have developed visualization software that supports up to 4 viewports, visualization of volume, surfaces and slices, as well as two options for transfer functions: regular interpolation and working with individual peaks (materials).