スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[DirectX9]「VarianceShadows11」をDirectX9で実装した




タイトルのまんまです。
元々、シャドウマッピングを実装していましたが、今回DirectX公式サンプルの「VarianceShadows11」の各種テクニックを実装しました。

前回のHDRライティング同様、実装に関してはサンプルのまんまなので、参考にしたサイトをメモ。

参考文献
VarianceShadows11サンプルは、「分散シャドウマップ」に加えて、「カスケードシャドウマップ」と「ライト空間透視シャドウマップ」などのテクニックも取り入れられているので、各アルゴリズムごとにリンクを貼っておきます。

カスケードシャドウ(Cascaded Shadow Maps)
MSDN - カスケード シャドウ マップ
公式サンプルの解説ページです。

☆PROJECT ASURA☆ [Direct3D 11] 『平行分割シャドウマップ』
「カスケードシャドウ」に焦点を当てた解説が書かれています。
公式サンプルでは分割距離は手動でしたので、こちらで取り上げられていた平行分割を実装しました。
DirectX9ではテクスチャ配列が使えなかったので、こちらのif文での分割シャドウマップの選択も参考にしました。

分散シャドウマップ(Variance Shadow Maps)
【分散シャドウマップ】 – Variance Shadow Maps - | 株式会社ヘキサドライブ |
「分散シャドウマップ」に焦点を当てた解説が書かれています。

OpenGL ES 3.0 @ 分散シャドウマップ - ラーメンは味噌汁
OpenGLですが分散シャドウマップだけのコードも書いてあるので、比較しながらサンプルのコードを読みました。

MSDN - カスケード シャドウ マップ
カスケードシャドウマップの解説ページですが、VSMについても下の方で解説されています。

ライト空間透視シャドウマップ(Light Space Perspective Shadow Maps)
☆PROJECT ASURA☆ [OpenGL] 『Light Space Perspective Shadow Maps』
ライト空間透視シャドウマップに焦点を当てた解説をされています。

その他改良テクニック
☆PROJECT ASURA☆ [Direct3D 11] 『シャドウマッピングの基本』
下のほうに深度バイアスの計算についての解説がありますが、サンプルのRenderVarianceScene.hlslのCalculateVarianceShadow関数でこのテクニックが使われています。
DirectX9では、SampleGrad関数が使えないので、上記のサイトを元にバイアスを計算しました。


スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
プロフィール

ぴお

Author:ぴお
ようこそ

自分のゲーム制作での備忘録や製作記録を書き留めておくブログです。

■やってるサービス
Twitter:piorimumu

Pixiv
http://www.pixiv.net/member.php?id=1126385

Twitter
このページのトップへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。