バイラテラルフィルタ

シェーダネタ2
テスト週間の現実逃避にバイラテラルフィルタを実装してました.

バイラテラルフィルタは簡単にいうと画像のエッジは残しつつ,平滑化を行うフィルタです.
実装はt-potさんのページを参考に,いろいろいじりながら作りました.

下のような元画像に対して,デプス値によるエッジを考慮しながらガウシアンフィルタをかけます.
 

下の画像がフィルタ結果です.左がσr=1.0, 右がσr=0.2です.
σrはデプス値による重みの分散で,小さいほどエッジを残そうとします.
結果は,σr=1.0ではポットの輪郭がぼけているのに対して,σr=0.2では輪郭は残しつつポットの領域をぼかすことができています.
 

効果がわかり辛いため,チェック模様に対してフィルタをかけてみました.
左から,元画像,σd = 1.0, σd = 0.2です.σd=0.2のほうが輪郭部分で元の模様が強くでています.
  

前回作ったSSAOは遮蔽度のサンプリング数が少ないとレンダリング結果が汚くなるので,このバイラテラルフィルタをかけてやるといいらしいです.

実行ファイルソース

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください