大人になりたくない

プログラミング系。最近は主に vvvv 。

OpenGL ES2.0 で SSAO を実装

SSAO を実装してみた。

http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20101122

を参考に実装。

2パス使う。

ちなみに、OpenGL ES 2.0 はマルチレンダーターゲットに対応していない。

 

1パス目:

View 空間でのノーマルを書き出し。

XY 書き出せば Z は計算で求まる。

f:id:yhy:20130827035333p:plain

 

2パス目:

書き出したノーマルとデプスバッファをシェーダに持っていって SSAO。

頂点シェーダからビューでの座標、Projection マトリクスも渡してあげる。

サンプル点は uniform で。CPVRTPFXEffect::RegisterUniformSemantic で好きなセマンティクスを設定できる。

 

サンプル点の数はとりあえず 64 個。

求めた後にフィルタかけたりはしてない。

 

下は実機での画像。

f:id:yhy:20130827033137p:plain

 

iPad mini の実機でも 5fps くらいしかでない。

最適化しないとだけど、つらそうな気持ち。

焼き込みでごまかす方法も視野に入れよう。