シャドウマップへの道(険しい)
自作のDx11ベースエンジンにシャドウマップを組み込む
その1
第1章:シャドウマップの考え方 この章の目的 コードを書く前に、なぜ「ライトから見たZ値」を比べると影がわかるのかを理解する。 この章は説明だけ。コード変更はしない。 1. 普通のライト計算だ...
その2
第2章:ライトを仮想カメラとして扱う この章の目的 シャドウマップを作るには、ライトから見た画面が必要になる。 そのために、ライト用のビュー行列と射影行列を追加する。 この章では、まだ画面は変わ...
その3
第3章:シャドウマップ用テクスチャを作る この章の目的 ライトから見たZ値を保存するためのテクスチャを作る。 まだそのテクスチャには何も描かない。 この章でも画面は変わらない。 考え方 シャド...
その4
第4章:深度だけを書く ShadowMap.hlsl を作る この章の目的 ライト視点で深度だけを書くための専用シェーダーを作る。 通常描画用の Simple3D.hlsl とは別に、Shado...
その5
第5章:モデルをシャドウマップに描けるようにする この章の目的 通常描画用の Draw() とは別に、シャドウマップ作成用の DrawShadow() を追加する。 この章でも画面は変わらない。...
その6
第6章:描画を2パス構成にする この章でやること Stage::Draw() の描画を2回に分けます。 パス1:ライト視点で深度だけ描く(シャドウパス) パス2:カメラ視点で普通に描く(メインパ...
その7
第7章:Simple3D.hlslで深度比較して影を出す この章でやること Simple3D.hlsl のピクセルシェーダーで、シャドウマップを読んで影を判定します。 この章で初めて画面に影が出...
その8
第8章:比較サンプラーで影のエッジをなめらかにする この章でやること 影のエッジのジャギー(ギザギザ)を改善します。 第7章では Sample() で1点だけ読んで影を判定していました。 この章...
その9(おまけ)
第9章:影が出ないときの確認ポイント 目的 つまずきやすいところを、症状別に確認できるようにする。 1. 影がまったく出ない 確認すること Stage::Draw() で Direct3D:...