テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル


log

2014.07.19 C++:The Last of Us的なAOその3

TLoUAO第3弾。今回はメリット、デメリットについてまとめますが、とりあえず正式名称
が分からず面倒なのでTLoUAOと省略します笑。

TLoUAOのメリット
・ざっくり挙げるならば"綺麗"。
・SSAOのようにサンプリング距離の制限が無い。

TLoUAOのデメリット
・良くも悪くもDraw数はAOSphereの数に比例する。
・Self AO(自身のAOSphereによる間違ったAO)を除去するのが難しい。

Self AOについてですが、自身のジオメトリをすっぽりと覆うようにAOSphereを生成
した場合、単純にTLoUAOを計算すると全てAOとして判定されるので真っ黒になって
しまいます。これを防ぐための手法としては自分が思いつく限り挙げると以下の通りです。

・自身のSelfAO(+隣接のSelfAO)を考慮しないようにする。
・AO計算時のSample座標を球中心からSample方向に半径サイズ分ずらす。
・AO半径をジオメトリを覆わないように調節。

1つ目は自分がまず始めに思いついた手法ですが、この場合"自身のSelfAOかをどう
やって判断するか"が必要となるためDeffered Renderingに向かないデメリット
があります。そこでVolumeAOを元にして考えたのが2つ目の手法となります。
3つ目も後で思いつきましたが、3は根本的にSelfAOが弱くなるだけで除去ではないので
Biasパラメータ的な位置づけです。

シーンにもよるので一概に言えないですが、概ねのケースでは2つ目が正解でいい
気がします。ただしTLoUのスライドにはこの辺りの実装がまったく載ってないため、
この辺の改善案については完全にオリジナルです。「実装したけどうまくいかねーゾ!」
っていう苦情を出したところで自分からの案はこれ以上でないのであしからずです笑。