上次实现的是Per-pixel Linked Lists方法,能做到高效地在单pass内剥离多层物体,但内存消耗不可控,而且性能和每个pixel的fragment list长度很有关系。HPG 2011上intel有个改进的方法,称为Adaptive Transparency(AT),号称能在可控的内存内做到稳定的性能和高质量的OIT。于是我打算实现一下这个方法。
方法描述
AT首先从alpha blending的方程本身下手。Alpha blending需要一个迭代的过程:
[latex]C_{n} = \alpha_{n} C_{n}+(1-\alpha_{n}) C_{n-1}[/latex]
透明渲染需要按照顺序,也就是因为这个迭代所致。AT引入了一个可见性函数
[latex]vis(z) = \prod_{0<z_{i}<z}(1-\alpha_{i})[/latex]
于是alpha blending方程就能重构 ...