AlphaToCoverage考察 その2
SS(セガサターン)みたいなディザリングを使った半透明はわかるんだけど、なんでアンチエイリアスを上手く使うことで描画順が必要なくなるのかがわからない。
アンチエイリアスってどうやってやるんだっけ?
http://www.mokehehe.com/assari/index.php?%A5%A2%A5%F3%A5%C1%A5%A8%A5%A4%A5%EA%A5%A2%A5%B7%A5%F3%A5%B0
倍の描画領域を用意して倍の解像度でレンダンリングしてFlip時にバイリニアで元の解像度に戻すだけでいいん?
AlphaToCoverageはその手法でやるのか?
- αが抜きの所はZが書き込まれないので穴あきのZバッファになる
- 先に手前の半透明物体が描かれていても穴が空いてるので、後から奥の半透明(もしくは不透明)な物を描いても穴が空いてる所には描画できる
金網みたいなものが沢山重なっているような状態になるわけね。
- 最終的には縮小されて穴が空いた所にかかれた色も縮小した時にブレンドされて半透明になる
おお!できた!?
- 2x2のAAの場合近傍4点のカラーしか混ざらないので4階調分のαしか表現不可能
つまり256段階のαを表現しようとしたら16x16のAAとかやらないとダメって事っすか。
16x16のAAって256点サンプリングするんだよね。
そんな便利なモードがDirectX(もしくはGL)にはあるというのですか!?
バイリニアじゃ4点しか取ってこれないしなー。
ああでも縦横16倍の領域を作って半分ずつ縮小してけば出来るか。
2のn乗以外のAAってどうやってやるんだろう。