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

同カテゴリーの次の記事

インテル® インテグレーテッド・グラフィックス上でリアルタイム・アップスケーリングを実現するチェッカーボード・レンダリング

この記事は、インテル® デベロッパー・ゾーンに公開されている「Code Sample: Dynamic Checkerboard Rendering Using Microsoft DirectX* 12」の日本語参考訳です。


ファイル: ダウンロード (英語)
ライセンス: インテル・サンプル・ソース・コード使用許諾契約書 (英語)

 

動作環境  
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* からコードをダウンロードして、「インテル® インテグレーテッド・グラフィックス上でリアルタイム・アップスケーリングを実現するチェッカーボード・レンダリング」 (英語) にある詳細をお読みください。

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, 2011
Microsoft* DirectX-Graphics-Samples, 2018

追加の参考資料として「インテル® インテグレーテッド・グラフィックス上でリアルタイム・アップスケーリングを実現するチェッカーボード・レンダリング」 (英語) もご覧ください。

更新ログ

2018 年 8 月 8 日作成

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

関連記事

  • ゲームエンジンのタスク処理 (アニメーション) - サンプル・プロジェクトのダウンロードゲームエンジンのタスク処理 (アニメーション) - サンプル・プロジェクトのダウンロード この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Game Engine Tasking - Animation」の日本語参考訳です。 機能/説明 6 コア、12 ハードウェア・スレッドのゲーム用デスクトップが市場に登場してからかなり経ち、今ではラップトップでさえも 4 コア CPU […]
  • 小惑星と DirectX* 12: パフォーマンスと省電力小惑星と DirectX* 12: パフォーマンスと省電力 この記事は、インテル® デベロッパー・ゾーンに公開されている「Asteroids and DirectX* 12: Performance and Power Savings」の日本語参考訳です。 サンプルコードのダウンロード (Web サイト) インテルが開発した小惑星 (asteroids) […]
  • Direct3D* 12 特集Direct3D* 12 特集 2014 年 3 月にサンフランシスコで開催されたゲーム・デベロッパー・カンファレンス (GDC) で、Microsoft 社は 2009 年以降に初めてのグラフィック API を、DirectX 12 としてアップデートすることを発表しました。DirectX 12 は、Windows だけでなく Windows […]
  • SIGGRAPH 2014: IA 上の DirectX* 12 サポートSIGGRAPH 2014: IA 上の DirectX* 12 サポート この記事は、インテル® デベロッパー・ゾーンに掲載されている「SIGGRAPH 2014: DirectX 12 on Intel」の日本語参考訳です。 SIGGRAPH 2014 で、インテルはパフォーマンスと消費電力の関係に注目して、今後登場するマイクロソフトの DirectX12 API […]
  • Direct3D* 12 フリップモデルのスワップチェーンのサンプル・アプリケーションDirect3D* 12 フリップモデルのスワップチェーンのサンプル・アプリケーション この記事は、インテル® デベロッパー・ゾーンに公開されている「Sample Application for Direct3D 12 Flip Model Swap Chains」の日本語参考訳です。 この記事の PDF 版はこちらからご利用になれます。 サンプルコード D3D12 のほうが D3D11 […]