続・Variance Shadow Mapping

| コメント(0)

VSM結構使いにくいなー。NVIDIAのGDC08資料とかGPU Gems 3に大体書いてることです。

Light Bleedingはいくつかの回避策があるのでなんとかなるのだが。

まず、レシーバのみのモデルもシャドウマップに描画しないと駄目だ。でないと分散値はぼかす際に近傍付近のピクセルが混じり合うので、本来得たい分散値とは異なる値になってしまい、影のdetailが不自然になってしまう。
で、VSM下ではレシーバのみのモデルは存在できなくなり、これもキャスタ扱いになる。本来レシーバのみで十分なモデル(ゲームでは地面がよくあるケースだろう)の形状によってはどうしても通常のシャドウマップよりも広範囲を描画しないと駄目になるので、最適なクリッピングが出来ずに解像度が稼げないということに陥る可能性がある。レシーバとキャスタの描画範囲の差が大きくないシーン(キャスタが広範囲に分散しているとか)は、VSM以外でも大変なのでクオリティに差は出にくいだろう。
減衰があって範囲が絞れるポイントライト系で使用するのが無難なのかな。カスケードで近距離のみVSMで後は別の手法というのもありだろう。

それから、当たり前だがハードウェアシャドウマップが使えないのでパフォーマンス面でも結構不利だ。NVIDIAのSIGGRAPH07資料やGPU Gems 3などで、フィルタサイズでのパフォーマンスはPCFより圧倒的に有利じゃないか的なグラフが出てたりするけど、ハードウェアシャドウマップが使えなかったり、精度的に浮動小数点バッファ推奨だったりすることを考慮すると、必ずしもPCFより高速とは言い難いんじゃないかと思う。ハードウェアシャドウマップはそれはそれでハード依存のコードが出るし、資料漁りも面倒なんだが。

コメントする

Twitter

アーカイブ

SteamCard