Real-time approximate sorting for self shadowing and transparency in hair rendering

When rendering materials represented by high frequency geometry such as hair, smoke or clouds, standard shadow mapping or shadow volume algorithms fail to produce good self shadowing results due to aliasing. Moreover, in all of the aforementioned examples, properly approximating self shadowing is crucial to getting realistic results. To cope with this problem, opacity shadow maps have been used. I.e., an opacity function is rendered into a set of slices parallel to the light-plane. The original Opacity Shadow Map technique [Kim and Neumann 2001] requires the geometry to be rendered once for each slice, making it impossible to render complex geometry into a large set of slices in real time. In this paper we present a method for sorting n line primitives into s number of sub-sets, where the primitives of one set occupy a single slice, in O(nlog(s)), making it possible to render hair into opacity maps in linear time. It is also shown how the same method can be used to roughly sort the geometry in back-to-front order for alpha blending, to allow for transparency. Finally, we present a way of rendering self shadowed geometry using a single 2D opacity map, thereby reducing the memory usage significantly.

[1]  Steve Marschner,et al.  Light scattering from human hair fibers , 2003, ACM Trans. Graph..

[2]  Abraham Mammen,et al.  Transparency and antialiasing algorithms implemented with the virtual pixel maps technique , 1989, IEEE Computer Graphics and Applications.

[3]  P. Hanrahan,et al.  Light Scattering from Human Hair Fibers , 2003 .

[4]  Lance Williams,et al.  Casting curved shadows on curved surfaces , 1978, SIGGRAPH.

[5]  Ulrich Neumann,et al.  Opacity Shadow Maps , 2001, Rendering Techniques.

[6]  James T. Kajiya,et al.  Rendering fur with three dimensional textures , 1989, SIGGRAPH.

[7]  Tom Lokovic,et al.  Deep shadow maps , 2000, SIGGRAPH.

[8]  Markus Hadwiger,et al.  GPU-accelerated deep shadow maps for direct volume rendering , 2006, GH '06.

[9]  Enhua Wu,et al.  Multi-layer depth peeling via fragment sort , 2009, 2009 11th IEEE International Conference on Computer-Aided Design and Computer Graphics.

[10]  Cem Yuksel,et al.  Deep Opacity Maps , 2008, Comput. Graph. Forum.

[11]  Franklin C. Crow,et al.  Shadow algorithms for computer graphics , 1977, SIGGRAPH.

[12]  Ulf Assarsson,et al.  Fast parallel GPU-sorting using a hybrid algorithm , 2008, J. Parallel Distributed Comput..

[13]  C. A. R. Hoare,et al.  Algorithm 64: Quicksort , 1961, Commun. ACM.

[14]  Cass W. Everitt,et al.  Interactive Order-Independent Transparency , 2001 .