川瀬式MGF

次回作CDDLのテーマでもあるエフェクトの1つグロウ
シェーダーで実装することも考えたけど、川瀬式MGFを組み込み。


川瀬式MGFは、光りの溢れ出し(ライトブルームと呼ばれている)を表現する技術の一つ。
ガウシアン関数を使って画像の輝度を散らすわけですが、一回ではいい表現が出てこないため、フィルタ径を変えてガウシアンフィルタを複数回に行う(Multiple Gaussian Filte)ってから合成するわけですが、ガウシアンフィルタはフィルタ径が大きいほど処理が重くなる。*1


そこで川瀬正樹さんが編み出した負荷軽減策が川瀬式MGFと呼ばれている技術。
ガウシアンフィルタの径は小さいまま、データを出力する際、元画像の1/2・1/4・1/8という感じに、徐々に縮小していき、最後に合成する際に、大きさを2・4・8倍に拡大して元に戻して描画する。
要は径を広げるのではなく、描画する画像サイズを小さくして、相対的にフィルタ径を大きくしちゃおうと言うのが、この方法の概要。


・フィルタ径が変わらないのでピクセル単位の負荷は一定
・フィルタ結果の画像サイズが小さくなるので、全体的な負荷の軽減でき、かつ使用VRAMが抑えられる
・サイズが小さくなるので画像が荒くなるが、元々画素を散らす処理であるので、拡大時にバイリニアなどを使えば、見た目は変わらない。


結果は(続きを読む)へGO!
オリジナル画像
http://www.onionknights.net/diary/image/glow_surface.png


川瀬式MGF適用
http://www.onionknights.net/diary/image/glow_complete.png


オリジナル画像の周囲に緑色の溢れ領域が、今回の川瀬式MGFの出力結果。
結構いい感じかもしれん。

*1:1つのピクセルの色を決定するのに、参照するピクセル数が多くなるため