next up previous contents index
Next: Color Computations Up: Cell-Ray Intersections Previous: ZSWEEP   Contents   Index


Rectilinear Grid Resampling

Volume rendering rectilinear grids is significantly easier than for unstructured grids. For example, tracing a ray through a rectilinear grid is a simple operation and would make for a reasonable, if naïve, ray caster. However, this type of implementation is not optimal. For example, as the ray traverses the volume it skips over large portions of data in memory, usually killing cache performance. Furthermore, nearby rays may touch the same elements in the rectilinear grid, which causes the same values to be loaded multiple times.

Lacroute and Levoy [56] provide a way to resample a rectilinear volume that is significantly faster than the naïve approach. They call their method shear-warp factorization. The shear-warp factorization algorithm's ability to traverse the volume memory consecutively helps make it the fastest known algorithm for CPU-based volume rendering.7

Figure 1.10: Shear-warp factorization. The image on the left shows the traditional casting of rays. The image on the right shows a progression of shear, project, and then warp transformations that provide the equivalent ray-cell intersections.
\includegraphics[width=.95\linewidth,bb=134 483 473 638,clip=true]{previous_work/shear_warp}

Rather than trace rays through the volume, Lacroute and Levoy instead traverse the volume data in the order it is stored in memory, slice by slice. They warp the slices to project properly on the image plane. As the algorithm moves from one slice to the next, it shears the slices of the volume so that the same warp may be used. Figure 1.10 demonstrates how this approach is equivalent to casting rays.

We can use commodity graphics hardware also to render rectilinear volumes effectively. The most successful approaches simply render slices of the volume as polygons while using the texture hardware to map the data onto the slices. Only the speed at which fragments may be processed and the amount of texture memory available limit the method. We can obtain greater speeds by using fewer slices, but this reduces the sampling of the grid and, therefore, aliasing quickly becomes a problem.

Figure 1.11: Potential slicing of rectilinear volumes for texture-based volume rendering. On the left are object-aligned slices. On the right are view-aligned slices.
\includegraphics[width=.95\linewidth,bb=162 503 449 611,clip=true]{previous_work/rec_volume_slices}

When using texture hardware to render rectilinear volumes, the system may slice the volume in one of two ways [12], as shown in Figure 1.11. The first mode of slicing is object-aligned slicing. With object-aligned slicing, the slices are fixed to the volume, much like in shear-warp factorization. Because the slices are fixed with respect to the volume, the data for each slice may be stored in a 2D texture. Of course, slices will not be visible if they are parallel to the viewing rays. For object-aligned slices to work, there must be at least three copies of the slices where each set is perpendicular to a principle axis of the volume. Furthermore, as the viewing rays deviate from the principle axes, the spacing and interpolation between the slices changes, leading to errors. Recent advances in graphics hardware allow us to compensate for these errors [79].

The second mode of slicing is view-aligned slicing. With view-aligned slicing, the slices are always perpendicular to the view plane and the renderer trilinearly interpolates the volume data to map onto the slice. Cabral, Cam, and Foran [6] perform this interpolation on the CPU [6], but a more efficient approach is to use 3D textures [106].

A significant problem with using texture hardware on a traditional OpenGL pipeline is that the texture holds the final colors. This means that classification and shading cannot change without reloading all the texture data. However, recent research and hardware improvements have largely corrected this problem [13,22,68,79,95,101].


next up previous contents index
Next: Color Computations Up: Cell-Ray Intersections Previous: ZSWEEP   Contents   Index
Kenneth D Moreland 2004-07-16