最近在在实现volume rendering和isosurface的mixed rendering,仔细研究了depth peeling以及相关的应用。
detph peeling基于z-buffer的多层渲染,每一层渲染是基于上一层渲染的深度值基础上进行的。
它是由Mamman 1989年在Transparency and antialiasing algorithms implemented with the
virtual pixel maps technique中提出的。Everitt在2001年给出该方法在GPU上的实现,文章是Interactive order-independent transparency.
在这之后,该方法得到大量的应用。首先是在03年,Zoltan Nagy将其用到基于纹理的体会制中绘制多层等值面,Depth-Peeling for Texture-Based Volume Rendering
05年Govindaraju在I3D05提出Vis-Sort来实现depth peeling的效果。该方法假设没有交叉图元。Interactive Visibility Ordering and Transparency Computations among
Geometric Primitives in Complex Environments
05年Jan Fischer该方法直接绘制基于mesh表示的等值面,并用defered shading来实现illustrative 效果。Illustrative display of hidden iso-surface structures
该文章是将GPU的depth peeling的geometry pass与image processing pass相结合。
另外Steven05年提出了用K-buffer对无规则的多边形排序,实现无结构体会制。Hardware-Assisted Visibility Sorting for Unstructured Volume Rendering
06年Fabio用depth peeling实现了gpu-based tiled ray casting,GPU-based Tiled Ray Casting using Depth Peeling
06年Baoquan Liu 和liyi Wei利用fragment sort做多层depth peeling,从而减少depth peeling需要的pass.
07年Bavoil Louis “Multi-Fragment Effects on the GPU using the k-Buffer”推广了Steven05年的k-buffer,利用frament的read-modivy-write操作,使multi-pass的depth peeling变成一个pass 成为可能。同时该文给出了未来GPU上如何实现该方法的方案。
07年Ivan的学生用depth peeling实现了volume 和mesh的混合绘制,http://www.ii.uib.no/vis/teaching/vis-project/2007-fall/nes/index.html。
08年Yoshihiro Kanamori等人利用depth peeling来渲染metaballs,发表在EG08上。GPU-based Fast Ray Casting for a Large Number of Metaballs
08年Nvidia SDK给出了dual depth peeling的实现。
在grpahic hardware08上,有一篇Coherent Layer Peeling for Transparent High-Depth-Complexity Scenes。目前还没有认真看
Robust Soft Shadow Mapping with Backprojection and Depth Peeling 将depth peeling用到shadow map中
http://www.sci.utah.edu/~bavoil/research/shadows/melissa/
在SIGGRAPH07年上, Kevin Myers 和Louis Bavoil提出了Stencil Routed A-Buffer,用A-buffer来实现depth peeling,速度提高了8倍。不过我还没有实现
对于VIS而言, depth peeling不仅能绘制透明结构,而且能利用defered shading产生illustrative 效果。