チュートリアル: Direct3D 11 の深度バッファーを使ったシャドウ ボリュームの実装

このチュートリアルでは、すべての Direct3D 機能レベルのデバイスで Direct3D 11 を使い、深度マップを利用してシャドウ ボリュームをレンダリングする方法について説明します。

トピック 説明

深度バッファーのデバイス リソースの作成

シャドウ ボリュームの深度のテストをサポートするために必要な Direct3D デバイス リソースを作成する方法について説明します。

深度バッファーへのシャドウ マップのレンダリング

ライトの視点からレンダリングして、シャドウ ボリュームを表す 2 次元の深度マップを作成します。

深度のテストを使ったシーンのレンダリング

シャドウ効果を作成するには、頂点 (またはジオメトリ) シェーダーとピクセル シェーダーに深度のテストを追加します。

ハードウェアの範囲でのシャドウ マップのサポート

より高速なデバイスでは高品質なシャドウを、性能が低いデバイスではよりすばやいシャドウをレンダリングします。

 

Direct3D 9 デスクトップに対するシャドウ マップの適用の移植

Windows 8 で、機能レベル 9_1 と 9_3 に深度の比較機能が追加されました。 シャドウ ボリュームを含むレンダリング コードを DirectX 11 に移行できるようになりました。Direct3D 11 レンダラーは機能レベル 9 のデバイスと下位互換性を持ちます。 このチュートリアルでは、Direct3D 11 のアプリやゲームで深度のテストを使って従来のシャドウ ボリュームを実装する方法を説明します。 コードは次のプロセスに対応しています。

  1. シャドウ マッピング用の Direct3D デバイス リソースを作成する。
  2. レンダリング パスを追加して深度マップを作成する。
  3. 深度のテストをメイン レンダリング パスに渡す。
  4. 必要なシェーダー コードを実行する。
  5. 下位レベル ハードウェアでのレンダリングを高速化するためのオプション。

このチュートリアルを終了すると、機能レベル 9_1 以上と互換性のある Direct3D 11 で互換性のある基本的なシャドウ ボリュームの手法を実装する方法を理解できます。

前提条件

ユニバーサル Windows プラットフォーム (UWP) DirectX ゲームの開発環境を準備する必要があります。 テンプレートはまだ必要ありませんが、このチュートリアルのコード サンプルをビルドするために Microsoft Visual Studio 2015 が必要です。

Direct3D

シャドウ マッピングに関する技術記事