ActionScript で立体のブーリアン演算+AGALで擬似屈折+反射シェーダ(1)


Boolean Crystal | Si+ (wonderfl.net)

FlashPlayer11 ではステンシルバッファが使えるようになったので、お約束の立体ブーリアン演算をやってみました。ただ、コレだけだと寂しいので、incubator時代に実装したAGAL擬似屈折+反射シェーダーの改良版と組み合わせてみました。あんまり本筋と関係ないところでなかなか苦労はしたのですが、全体を通してわりと素直に実装できました。FlashPlayer11の仮想GPU、良いね!
今回はFlashPlayer11で扱えるようになった3D基本技術のごった煮みたいな感じです。擬似屈折+反射シェーダには Cube Texture を使って、ブーリアン演算にはステンシルバッファを使っています。ブレンドファンクションはまだポイントスプライト用加算演算くらいにしか使ってないですが、これで一応一通り触ってみた感じにはなるのかな。


ここではまず,立体のブーリアン演算方法について解説したいと思います。一見3次元計算をしているようですが、実は2次元の画像処理で描画しています。近年のリアルタイム3DCGでは(といってもかなり昔からですが)、こういった2次元画像処理による擬似3次元計算技術が、実際の3次元計算以上に重要になって来ています。ちょっと頑張って解説を書いてみたので、3DCGにおける2次元画像処理について少しでも理解が深まれば幸いです。
なお、擬似屈折についてはまた次回詳しく解説したいと思っています。

続きを読む