Volume Rendering

Volume rendering is a visualization technique that enables users to see into 3D volumetric datasets. Volume rendering can make parts of the data transparent or opaque depending on a volume transfer function, which maps data values to colors and opacities.

VisIt supports different volume rendering modes:

  • Splatting
  • 3D texturing
  • Ray casting

All of the volume rendering modes except for "Ray casting" are hardware accelerated, meaning that they are OpenGL-based and take advantage of your graphics card in order to produce an image. Since hardware accelerated modes use the graphics card, and typical VisIt data are large, the data must be resampled down to a smaller size that can fit on the graphics card. This resampling is done in parallel. The smaller grid is then rendered using graphics hardware and should be very interactive. The "number of samples" default is probably too low and you should crank that way up (from 50000) if you have a good graphics card.

Of course, unless you have a small data set, the resampling process will miss some of your data. For this reason, the hardware accelerated volume rendering modes are less suited to producing high quality images that encompass all of the data. However, they are very useful for exploring the volume and designing transfer functions which can then be adapted for ray casting.

If you want to guarantee that all of your data is hit, switch to the ray casting mode. It is much slower because so much computation is being done, but it is fully parallelized and produces superior quality images.

All of VisIt's volume renderers allow volume rendering to be combined with opaque geometry produced by other plots. This capability allows you to embed solid features in your volume renderings, which can help provide context.

Splatting

The splatting volume renderer is hardware accelerated and makes use of a technique known as "splatting". In the splatting technique, the data is resampled to a rectilinear grid and then each voxel is drawn from back to front, based on the camera orientation, using a small polygon with a gaussian texture whose color and opacity are based on the voxel's data and the volume transfer function. Splatting supports lower end graphics card that lack support for more advanced features such as 3D texturing or shaders. The disadvantages of splatting are that the images produced look fuzzy and the polygons for the splats must be sorted based on the camera orientation, which lowers interactivity somewhat.

3D texturing

The 3D texturing volume renderer is hardware accelerated and like the Splatting renderer relies on the data being resampled into a rectilinear grid. In 3D texturing, the data in its rectilinear form transformed using the volume transfer function to produce a 3D texture consisting of color values and opacities for each voxel. This entire texture is downloaded to the graphics card and is used to texture large polygonal slices through the volume that are drawn back to front. There are far fewer polygons generated using the 3D texture method as opposed to splatting so interactivity is much higher. In addition, the images that are produced are typically much higher quality.

Ray casting

VisIt's ray casting volume renderer is software based and operates in parallel on all of the available data instead of a resampled version. Ray casting volume renderers shoot rays from the camera through each pixel in the output image which then intersect the cells in the volume and are combined via the transfer function to make a color for the pixel. This ray intersection of the data is handled in parallel since data may exist on different processors if the dataset has been domain-decomposed. For a more complete description of the algorithm, see A Scalable,Hybrid Scheme for Volume Rendering Massive Data Sets .

The ray casting volume renderer is slower than the hardware accelerated methods but it produces superior images and shows all of the data instead of a resampled version.

Lighting and Ray casting

As of version 1.11.0, VisIt's ray caster will support lighting (more correctly referred to as shading). This lighting/shading is done by calculating the gradient of the scalar field and applying a standard Phong lighting model using the gradient as an approximation for an underlying surface normal. The picture below shows examples of lighting (on the left) versus unlit (on the right).

Visit0014.jpg

Note that the gradient calculation and evaluation is expensive and that ray casting is substantially faster when it is not on. You can disable lighting by turning off "Lighting" in the Volume Plot attributes.