アルファブレンディングの調査
~ survey of alpha blending ~
■はじめに
所用で半透明合成の方法を調べていたら、結構あったので、書き出してみました。
ただ、まだまだ最近のものも出てきています、ご注意を。
■一般的な話
■ 擬似半透明系
・ | Sort-Independent Alpha Blending(Houman Meshkin, 2007) |
: | 順序に依存する項を落として描画。透明度が高いときに良い近似になっている。 |
・ | Hair Self Shadowing and Transparency Depth Ordering Using Occupancy maps(Erik Sintorn, Ulf Assarsson, 2009) |
: | 髪のような同じ物が多く重なるときに、透明度を補正して半透明を順序非依存で近似する。 |
・ | Stochastic Transparency(Eric Enderton, Erik Sintorn, Peter Shirley, David Luebke, 2010) |
: | フラグメントごとにピクセルのサブサンプリングパターンを変えて不透明描画で擬似半透明描画を行う。 |
・ | Stratified Sampling for Stochastic Transparency(Samuli Laine, Tero Karras, 2011) |
: | stochastic transparency のノイズを削減。zテストによるカバレッジを考慮。普通のシェーダとしては実行できない。 |
・ | Weighted Blended Order-Independent Transparency(Morgan McGuire, Louis Bavoil, 2013) |
: | 深度とalpha値に基づく加重平均で透明度を近似計算。[shikihuikuさん解説] |
■ Depth Peeling系
■ 深度に応じた減衰率の作成系
■ k-buffer系
・ | The A-buffer, an antialiased hidden surface method(Loren Carpenter, 1984) |
: | 1ピクセル内のたくさんの情報を事前に保存しておいて、後からまとめる手法。 |
・ | Z3: An economical hardware technique for high-quality antialiasing and transparency(Norman P. Jouppi, Chun-Fa Changy, 1999) |
: | ピクセルごとにzと勾配を複数もって、サブサンプリング情報を高圧縮で格納して、同時に複数のフラグメント情報を持つ。 |
・ | Hardware-assisted visibility sorting for unstructured volume rendering (Steven P. Callahan, Milan Ikits, Joao L. D. Comba, Claudio T. Silva, 2005) |
: | k-bufferでのボリュームレンダリング |
・ | Multi-fragment effects on the gpu using the k-buffer (Louis Bavoil, Steven P. Callahan, Aaron Lefohn, João L. D. Comba, Cláudio T. Silva, 2007) |
: | k-bufferによる半透明描画 |
・ | FreePipe: A Programmable, Parallel Rendering Architecture for Efficient Multi-Fragment Effects(Fang Liu, Mengcheng Huang, Xuehui Liu, Enhua Wu, 2010) |
: | アトミック関数を使ったピクセルごとのマルチフラグメントのソートであるmulti-depth テストと、アトミックインクリメントを使ったa-bufferで書き込みのハザードをなくした1ジオメトリパスのアルファソートのシステムを提案。 |
・ | Toward Accurate and Efficient Order-Independent Transparency(Ethan Kerzner, Chris Wyman, Lee Butler, Christiaan Gribble, 2013) |
: | シェーディングの結果を別バッファから参照することにして、A-bufferをコンパクトにした |
・ | k+-buffer: Fragment Synchronized k-buffer(Andreas A. Vasilakis, Ioannis Fudos, 2013) |
: | ジオメトリソートなし、メモリ最大使用量あり、メモリの頻繁な読み書きなし、事前z有効な改良 |
・ | Memory-Hazard-Aware K-Buffer Algorithm for Order-Independent Transparency Rendering(Zhang N, 2013) |
: | エラー補正符号化でメモリの読み書きのハザードを減らした。 |
■ Per-Pixel Linked List系
・ | Real-time concurrent linked list construction on the GPU(Jason C. Yang, Justin Hensley, Holger Grün, Nicolas Thibieroz, 2010) |
: | OpenGL 4.0 や DirectX 11のatomic命令を使ってのper-pixel linked listの効率的な実装。[AMD資料] |
・ | Fragment-Parallel Composite and Filter (Anjul Patney, Stanley Tzeng, John D. Owens, 2010) |
: | 半透明のコンポジットの処理に関して、ピクセルごとに処理を行うのではなく、描画しうるフラグメントを密にフラグメントシェーダに流し込むことによって、GPUの利用率を上げる。 |
・ | Memory-Efficient Order-Independent Transparency(Marilena Maule, Joao L. D. Comba, Rafael Torchelsen, Rui Bastos, 2012) |
: | ベースアドレスとデータ個数の2つのバッファ(Dynamic Fragment Buffer)についてPrefix sumを使って、per-pixel linked listを高速にGPU実装した論文。 |
・ | Order Independent Transparency In OpenGL 4.x (Christoph Kubisch, 2014) |
: | 手前のk個のフラグメントを保持し、ソートして描画。atomic loop を使うことで、リンクをたどるよりも高速に順序付けが可能。 |
・ | Backwards Memory Allocation and Improved OIT(P. Knowles, G. Leach, F. Zambetta, 2013) |
: | 重なりを最初に計算し、Linked-listに必要なメモリをピクセルごとに計算することで、メモリ効率化を図った。 |
■さいごに
いやぁ、いっぱいありますね。
間違いや重要な欠落がありましたら、教えてください。
もどる
imagire@gmail.com