|
Search
Main Pages
|
Neophytos Neophytou - GPU SplattingGPU-accelerated Image Aligned SplattingNeophytos Neophytou and Klaus Mueller
Abstract:Splatting is a popular technique for volume rendering, where voxels are represented by Gaussian kernels, whose pre-integrated footprints are accumulated to form the image. Splatting has been mainly used to render pre-shaded volumes, which can result in significant blurring in zoomed views. This can be avoided in the image-aligned splatting scheme, where one accumulates kernel slices into equi-distant, parallel sheet buffers, followed by classification, shading, and compositing. In this work we attempt to evolve this algorithm to the next level: GPU based acceleration. First we describe the challenges that the highly parallel “Gather” architecture of modern GPUs poses to the “Scatter” based nature of a splatting algorithm. We then describe a number of strategies that exploit newly introduced features of the latest-generation hardware to address these limitations. Two crucial operations to boost the performance in image-aligned splatting are the early elimination of hidden splats and the skipping of empty buffer-space. We will describe mechanisms which take advantage of the early z-culling hardware facilities to accomplish both of these operations efficiently in hardware. Paper:N.Neophytou and K. Mueller,
GPU Accelerated Image Aligned Splatting,
proceedings of the International Workshop on
Volume Graphics, Stony Brook, NY, USA June 2005
Implementation Notes:The main technical contribution of this work is the suggested mechanism for enabling empty-space skipping and early-splat elimination by exploiting GPU features.We use the early-z culling optimization which is present on most NVidia (5600, 5900, 6800) and ATI boards. However, the extension seems to be quite tricky on the NVidia boards and it is sensitive to many undocumented conditions. The implementation section of the paper explains in more detail how we got this to work. In summary, to take advantage of the early z-culling optimization for empty space skipping, this implementation maintains the rasterization buffers as a set of surfaces of an off screen buffer, which share the same depth buffer. Three surfaces are used as slicing and temporary copy buffers, and one surface acts as the final composited image buffer. Sharing the same depth buffer between the slicing slabs, where the splatting occurs, and the compositing buffer, where the shading and compositing occurs, enables the tagging of active pixels during the splatting stage using their depth component. We then use the GL_Depth_Bounds_Test_EXT to enable the rendering of fragments of a specific range, which in this case are the fragments with the tag associated to the current slice. To enable early-splat-elimination, the shading/compositing fragment programs were slightly modified in order to accept the contents of the final image buffer as a texture input. During the compositing process, the program compares the alpha channel of the image buffer to a pre-set opacity threshold (usually 0.98). If the current opacity has passed the threshold, then the depth component for the pixel is set to 0 for the current fragment, which will disable its processing in all subsequent stages. This will disable the fragment in both the splatting and the compositing stages. Note that the use of the GL_Depth_Bounds_Test extension enables early-z culling, even in the case where the fragment program writes to the depth component. This is a specific problem of NVidia hardware, where early-z culling is disabled if the fragment programs writes to the depth buffer. Go back to Research |