OpenGL ES2.0 で SSAO を実装
SSAO を実装してみた。
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20101122
を参考に実装。
2パス使う。
ちなみに、OpenGL ES 2.0 はマルチレンダーターゲットに対応していない。
1パス目:
View 空間でのノーマルを書き出し。
XY 書き出せば Z は計算で求まる。
2パス目:
書き出したノーマルとデプスバッファをシェーダに持っていって SSAO。
頂点シェーダからビューでの座標、Projection マトリクスも渡してあげる。
サンプル点は uniform で。CPVRTPFXEffect::RegisterUniformSemantic で好きなセマンティクスを設定できる。
サンプル点の数はとりあえず 64 個。
求めた後にフィルタかけたりはしてない。
下は実機での画像。
■
iPad mini の実機でも 5fps くらいしかでない。
最適化しないとだけど、つらそうな気持ち。
焼き込みでごまかす方法も視野に入れよう。