タスク #120
未完了[調査] CSM(Cascading Shadow Maps)のブラッシュアップ用情報
説明
概要¶
一口にCSMと言っても分割の方法によっていろいろな方法がある。
実装の単純さと扱いやすさ的に、現状のExcellentShadowと同じ方式(中央を一致させて距離を変える)は安心感が強いが、何か方式的弱さが見つかった場合に改良する場合のメモをここにまとめる。
基本¶
http://dev.theomader.com/cascaded-shadow-mapping-1/ http://dev.theomader.com/cascaded-shadow-mapping-2/
視錐台距離方向の分割の方式の場合の簡単な実装の例。
一般的には Pallaler-Split-Shadow-Maps と呼ばれる。(ray-mmdで使われているのもこの方式)
基本的には分割アルゴリズム + シャドウマップ生成アルゴリズム の組み合わせで実装が変化する。
ファイル
みょうじ さんがほぼ4年前に更新
- ファイル カスケードの境界がずれる.png カスケードの境界がずれる.png を追加
- ファイル カスケードの境界がずれる改善?.png カスケードの境界がずれる改善?.png を追加
カスケードの境界がずれる問題への対応を実験。
現状の問題はアドホックな係数でのバイアス計算による。
そこを g_lightRange から計算するように修正してみる。
g_lightRange は2の乗数ということなので、log2()を取った結果を利用してみた結果。
あとはこの境界をうまくフェードできればよいが、現状のシェーダーのアルゴリズムでそれを実現するのが少し難易度が高い。
みょうじ さんがほぼ4年前に更新
- ファイル 改善させたシェーダーコード.zip 改善させたシェーダーコード.zip を追加
上記の改善を適用したシェーダーコードを添付。
変更点¶
- mmd.hlsli への g_lightRange の log2() の計算を追加。
- mmd.hlsl のVSでのバイアス計算で上記値を利用するように変更。
みょうじ さんがほぼ4年前に更新
- ファイル SlopeScaleBias改良.zip SlopeScaleBias改良.zip を追加
- Slope Scale Biasの実装。
- ソフトシャドウ利用時にぼかし幅が違うことにより境界が目立つことにぼかし幅を合わせることで対応してみるテスト。