Volume rendering is a useful technique for visualizing three dimensional arrays of sampled data. Examples of sampled 3D data can range from computational fluid dynamics, medical data from CAT or MRI scanners, seismic data, or any volumetric information where geometric surfaces are difficult to generate or unavailable. Volume visualization provides a way to see through the data, revealing complex 3D relationships.
There are a number of approaches for visualization of volume data. Many of them use data analysis techniques to find the contour surfaces inside the volume of interest, then render the resulting geometry with transparency.
The 3D texture approach is a direct data visualization technique, using 2D or 3D textured data slices, combined using a blending operator . The approach described here is equivalent to ray casting  and produces the same results. Unlike ray casting, where each image pixel is built up ray by ray, this approach takes advantage of spatial coherence. The 3D texture is used as a voxel cache, processing all rays simultaneously, one 2D layer at a time. Since an entire 2D slice of the voxels are ``cast'' at one time, the resulting algorithm is much faster with hardware-accelerated texture than ray casting.
This section is divided into two approaches, one using 2D textures, the other using a 3D texture. Although the 3D texture approach is simpler and yields superior results overall, 3D textures are currently still an EXT extension in OpenGL and are not universally available like 2D textures. 3D texturing will be available as part of OpenGL 1.2, so both methods  are described here.