輪っかも回してみた


ボタンを押すたびに増えるので増やしてみた。
おーおー、なんかすでにそれっぽいぞ。


しかし、これには色々と罠があるのであった。
つづく。

アルファブレンディングとZバッファの相性問題

結構有名な問題だそうな。


まず最初にこの画像。コーンをでかくしたのは後々見やすいように。

輪っかの板ポリの形状に沿って弾が消えてるのがわかるだろうか。
深度テストを有効にして「輪っか→弾」の順に描画しているため、奥の弾が消えてしまうのだ。
じゃあ弾を先に描画してみよう。

いい感じ。
深度テストが効いているので、輪っかの向こう側はちゃんと自機や弾に隠れている(弾が隠れるのはシューティングゲーム的にはまずいのだが・・・)。
ところが、これも不都合なことがあるのだ。
輪っかを二つにするとこうなる。

交差したポリゴンに対して深度テストがかかるとこうなってしまうのだ。
じゃあ輪っかのときだけは深度テストを無効にすればいいのでは?
すると今度はこうなる。

輪っかの向こう側まで手前に描画されてしまう。当たり前やね。

  • 深度テストなしだと半透明と不透明が交差したとき困る。
  • 深度テストありだと半透明同士が交差したとき困る。

どうすればいいんじゃ〜。