サンプルコード: Microsoft* DirectX* 12 を使用したダイナミック・チェッカーボード・レンダリング

イメージゲーム

この記事は、インテル® デベロッパー・ゾーンに公開されている「Code Sample: Dynamic Checkerboard Rendering Using Microsoft DirectX* 12」(https://software.intel.com/en-us/articles/code-sample-dynamic-checkerboard-rendering-using-microsoft-directx-12) の日本語参考訳です。


ファイル: ダウンロード (英語)
ライセンス: インテル・サンプル・ソース・コード使用許諾契約書
https://software.intel.com/en-us/articles/intel-sample-source-code-license-agreement

 

動作環境  
OS: 64 ビット版の Microsoft* Windows® 10
ハードウェア: GPU が必要
ソフトウェア:
(プログラミング言語、ツール、
IDE、フレームワーク)
Microsoft* Visual Studio* 2017、Microsoft* DirectX* 12
必要条件: Visual Studio* と DirectX* 12 API に精通していること

概要

チェッカーボード・レンダリング (CBR) は、シェーディングを大幅に軽減し、視覚的効果の品質への影響を最小に抑えて、高解像度のピクセルを生成する手法です。CBR は、アンチエイリアシングに対する最新の後処理アプローチと完全に互換性があり、フォワード・レンダリング・パイプラインと遅延レンダリング・パイプラインのどちらでも実装できます。

ダイナミック解像度レンダリング (DRR) は、3D シーンをレンダリングする解像度を動的に調整し、これを出力バックバッファーへスケーリングする確立された手法です。

サンプルコードは、CBR と DRR の例を示し、フォワード・レンダリング・パイプラインでの実装ベースを提供します。ホワイトペーパーは、遅延レンダリング・パイプラインでの実装を説明します。ここでは、統合グラフィックス処理ユニット (GPU) に注目しますが、フォワード・レンダリングと遅延レンダリングの実装はどちらも AMD* 製と NVIDIA* 製のディスクリート GPU 上で検証済みです。

使用方法

サンプルは、「ビルドして実行」できるように設計されており、Microsoft* DirectX-Graphics-Samples の DirectX* 12 MiniEngine を拡張したものです。リポジトリーをクローン (またはダウンロード) して、MiniEngine\ModelViewer\ModelViewer_VS17.sln ソリューションをビルドし実行します。CBR と DRR はデフォルトで有効に設定されています。BackSpace キーを押してトグルメニューを表示し、(複数のその他の後処理とともに) これらを有効/無効にできます。GitHub* からコードをダウンロードして、「インテル® インテグレーテッド・グラフィックス上でリアルタイム・アップスケーリングを実現するチェッカーボード・レンダリング」 (https://software.intel.com/en-us/articles/checkerboard-rendering-for-real-time-upscaling-on-intel-integrated-graphics-v-12) にある詳細をお読みください。

CBR オプション

以下は、トグルメニューの CBR オプションです。

  • Enable: CBR を有効/無効にします。
  • Check Shading Occlusion: フレームごとに複数のピクセルにまたがる移動中にシェーディング・オクルージョンをチェックします。有効にすると、フレーム N-1 のピクセルから正しいシェーディング情報の取得を試みます。無効にすると、シェーディングはオクルージョンされていると仮定して、フレーム N からシェーディング・カラーを抽出します。
  • Show Derived Motion: 深度バッファーから派生したモーションを持つ各ピクセルについて、カラーバッファーで赤としてレンダリングします。
  • Show Missing Pixels: アルゴリズムによってシェーディング情報が不足していると判断された各ピクセルについて、カラーバッファーで赤としてレンダリングします。
  • Show Occluded Pixels: アルゴリズムによってシェーディング情報が移動によってオクルージョンされたと判断された各ピクセルについて、カラーバッファーでショッキングピンクとしてレンダリングします。
  • Show Pixel Motion: アルゴリズムによって動きベクトルを使用してフレーム N – 1 からシェーディング情報をフェッチする必要があると判断された各ピクセルについて、カラーバッファーで緑としてレンダリングします。
  • Depth Tolerance: シェーディング情報がオクルージョンされているかどうか判断するためアルゴリズムで使用される深度の許容範囲 (近くのクリップから遠くのクリップまでの直線)。

DRR オプション

以下は、トグルメニューの DRR オプションです。

  • Enable: DRR を有効/無効にします。
  • Desired Frame Rate: DRR アルゴリズムのターゲット・フレームレート。
  • Force Scale: DRR に Min Scale で指定されたスケールでの実行を強制します。
  • Min Scale: DRR の解像度スケールの下限。
  • Resolution Increments: 解像度をスケーリングする際に DRR が使用するインクリメント。
  • _Advanced/Frame Rate Delta Resolution: 解像度を切り替える前のフレームレートで許容される「差」 (ヘッドルーム)。
  • _Advanced/Frame Rate Low Pass K: 最新のフレームレートの集計に使用される K フィルター値。
  • _Advanced/Rate of Change: DRR の内部スケールの変更レート。
  • _Internal/Frame Rate: DRR がトラッキングするフレームレート。Frame Rate Low Pass K で指定された値でフィルターされます。
  • _Internal/Scale: DRR の内部スケール。この値が Resolution Increment のしきい値を超えると解像度が変更されます。

関連情報 (英語)

Crytek* Sponza モデル
Jalal El Mansouri, Rendering Rainbow Six Siege (https://www.gdcvault.com/play/1022990/Rendering-Rainbow-Six-Siege), GDC 2016
Graham Wihlidal, 4K Checkerboard in Battlefield 1 and Mass Effect: Andromeda, GDC 2017
Doug Binks, Dynamic Resolution Rendering Updated (https://software.intel.com/en-us/articles/dynamic-resolution-rendering-article), 2011
Microsoft* DirectX-Graphics-Samples, 2018

追加の参考資料として「インテル® インテグレーテッド・グラフィックス上でリアルタイム・アップスケーリングを実現するチェッカーボード・レンダリング」 (https://software.intel.com/en-us/articles/checkerboard-rendering-for-real-time-upscaling-on-intel-integrated-graphics-v-12) もご覧ください。

更新ログ

2018 年 8 月 8 日作成

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

タイトルとURLをコピーしました