A. Volume Data Representation
At the start, volume data have to be stored in memory in a suitable format after either coming from the digital backend of the ultrasound machine or streamed from a stored sample on the hard disk drive. This is considered as a preparation step to make the data ready in a suitable form to be downloaded to the graphics hardware as textures. Depending on the kind of proxy geometry used, the volume can be either stored in a single block, when view-aligned slices together with a single 3D texture are used, or split up into three stacks of 2D slices, when object-aligned slices together with multiple 2D textures are used. Usually, it is more convenient to store the volume only in a single 3D array, which can be downloaded as a single 3D texture, and extract data for 2D textures on-the-fly, just as needed. This requires having a graphics hardware that supports 3D texture mapping. Depending on the complexity of the rendering mode, classification and illumination, there may even be several volumes containing all the information needed. Likewise, the actual storage format of voxels depends on the rendering mode and the type of volume, e.g., densities, gradients, gradient magnitudes, etc. Conceptually different volumes may also be combined into the same actual volume such as combining gradient data and density data in RGBA voxels. Although data representation is usually a part of preprocessing, it is not necessarily so. New data may have to be generated on-the-fly when the rendering mode or specific parameters are changed. This component is usually executed only once at startup or only executed when the rendering mode changes.