| João Luiz Dihl Comba 1, Claudio T. Silva 2, 
                          Fábio F. Bernardon 1, Steven P. Callahan 2 1 Universidade Federal do Rio Grande do Sul (UFRGS), 
                          Instituto de Informática 2 Scientific Computing and Imaging Institute, University 
                          of Utah Harvesting the power of special-purpose Graphics Processing 
                          Units (GPUs) to produce real-time volume rendering of large unstructured 
                          meshes is a major research goal in the scientific visualization 
                          community. While, for regular grids, texture-based techniques are well-suited 
                          for current GPUs, the steps necessary for rendering unstructured 
                          meshes are not so easily mapped to current hardware.  In this tutorial we review state-of-the-art volume 
                          rendering techniques for unstructured grids that simplifies the 
                          CPU-based processing and shifts much of the processing burden 
                          to the GPU, where it can be performed more efficiently. The presentation 
                          focus on two different techniques to solve this problem using object 
                          and image space approaches. For each technique we review its fundamental 
                          ideas, describe its GPU implementation and discuss the results.  The first algorithm we review is called Hardware-Assisted 
                          Visibility Sorting (HAVS). It is a hybrid technique that operates 
                          in both object-space and image-space. In object-space, the 
                          algorithm performs a partial sort of the 3D primitives in preparation for 
                          rasterization. The goal of the partial sort is to create a list of primitives 
                          that generate fragments in nearly sorted order. In image-space, the 
                          fragment stream is incrementally sorted using a fixed-depth sorting network. 
                          In this algorithm, the object-space work is performed by the 
                          CPU and the fragment-level sorting is done completely on the GPU. 
                          Results that will be discussed demonstrates that the fragment-level sorting 
                          achieves rendering rates of between one and six million tetrahedral 
                          cells per second on an ATI Radeon 9800.  The second algorithm to be discussed is called GPU-based 
                          Ray Casting. Computation is entirely performed in the GPU 
                          by advancing intersections against the mesh while evaluating the 
                          volume rendering integral, with an efficient and compact representation 
                          for mesh data in 2D textures. In addition, a tile-based subdivision 
                          of the screen allows computation to proceed only at places where it is required, 
                          thus reducing fragment processing in the GPU. Finally, a 
                          depth-peeling approach that captures when rays re-enter the mesh 
                          is described, which is much more general and does not require a convexification 
                          algorithm. This technique can render true non-convex meshes, such 
                          as the Blunt Fin, in between 400~Ktet/sec to 1.3~Mtet/sec.  To complement the presentation of the two algorithms 
                          described above, we discuss extensions that allows handling even 
                          larger meshes using a new level-of-detail approach, and a vector 
                          quantization solution that compress time-varying scalar fields is a suitable 
                          format that allows interactive exploration. |