マイクロソフトが3月19日にアナウンスした、DirectX 12 Ultimateですが、これはPCだけでなく、XboxSeriesXにも採用されている技術で、この技術でPCとXbox Series Xがより近づくキーポイントになる技術でもあるようです。XboxSeriesXをより深く理解する上でも必要かと思い、マイクロソフトの公式アナウンスされた英文を日本語訳で掲載することにしました。
正直、技術的な用語が多く私も含めて素人には分かりにくい内容ではありますが、ある程度分かりやすくも書いてある部分もあるので、PCだけでなくXboxSeriesXにとっても重要な技術でもあり、少しでも多くの日本のXBOXユーザーさんの眼に触れるのも重要かなと思い、一応掲載します。ご興味のある方は、最後までお読み頂ければ幸いです。
※
25年近くにわたり、PCとコンソール(XBOX)のゲーマーの皆様に最新のグラフィックス・イノベーションをお届けしてきたチームから、これまでにない最高のグラフィックス・テクノロジーの集大成であるDirectX 12 Ultimateを、PCとXboxシリーズXの間に前例のない形でお届けできることを大変嬉しく思っています。
ゲーマーの皆様は、DX12 Ultimateのロゴが入ったPCグラフィックスハードウェアまたはXboxシリーズXをご購入いただくと、DirectXレイトレーシング、可変レートシェーディング、メッシュシェーダー、サンプラーフィードバックなど、次世代グラフィックスハードウェアのすべての機能をサポートすることが保証されているという安心感を得ることができます。この品質の高さは、次世代ゲームのための優れた「将来性のある」機能サポートを保証しています。
究極のグラフィックス・イノベーション
マイクロソフトのゲームスタックは、大胆で没入感のあるゲーム体験を生み出すために必要なツールを開発者に提供するために存在しており、DX12 Ultimateは、ゲームグラフィックスを向上するための理想的なツールです。DX12 Ultimateは、XboxとWindows 10がグラフィック技術の頂点に立つことを確実にするために、過去5年間に渡ってDirectX 12プラットフォームへの継続的な投資を行ってきた結果です。ゲーム開発者が驚くほど美しいビジュアルのゲームを制作できるよう、DirectX レイトレーシングや可変レートシェーディングなど、すでにゲームに変革をもたらしつつある機能を強化し、メッシュシェーダーやサンプラーフィードバックなどの主要な機能を新たに追加しました。
これらの機能は、マイクロソフトとハードウェア業界のパートナーによる長年の技術革新の賜物です。DX12 Ultimateは、これらすべての機能を1つの共通バンドルにまとめ、開発者の皆様にPCとXbox Series Xの次世代グラフィックスをアンロックするための1つの鍵を提供します。
もちろん、最も強力な機能であっても、それらをフルに活用するために必要なツールがなければ、その使用には限界があります。業界をリードするPIXグラフィックス最適化ツールとオープンソースのHLSLコンパイラにより、ゲーム開発者はDX12 Ultimateハードウェアのエコシステム全体のパフォーマンスを最後の一滴まで絞り出すことができるようになります。
追加の利点
DirectX12 Ultimateは、基本的には追加的な取り組みであり、ゲーマーの皆様に、ハードウェアが次世代ゲームの機能サポートの最高水準を満たしていることを保証するものです。
DX12 Ultimateは、DX12 Ultimateの全機能をサポートしていない既存のハードウェアとのゲーム互換性に影響を与えないことに注意してください。実際、DX12 Ultimateの機能を使用した次世代ゲームは、DX12 Ultimate以外のハードウェアでも動作し続けます。そのようなハードウェアでは、新機能の視覚的なメリットは得られませんが、ハードウェアの仕様によっては、次世代ゲームで非常に魅力的なゲーム体験を提供することができます。
PCのエコシステムには様々なハードウェアが存在しますが、DX12 Ultimateはそのエコシステムをより良いものにし、DX12 Ultimateをサポートしていないハードウェアに悪影響を与えることはありません。
好循環の増幅
ゲームをプレイする人なら誰もが認めるように、ゲームをプレイする上での利点は、よく練られた美しいグラフィックのゲームを鑑賞することに勝るものはありません。DX12 Ultimateは、ゲームのエコシステム全体に前例のないチャンスを生み出し、より良いゲーム体験につながる好循環を生み出しています。
以下のサイクルは、長年にわたって行われてきたゲームにおける一般的なグラフィックスの改善プロセスを説明したものです。新しいハードウェア(または新しい世代のゲーム機)が市場で徐々に飽和状態になると、次世代のグラフィックス機能を搭載したアドレス指定可能なソケットの数が増えていきます。これらの機能を搭載したソケットの数が増えると、その機能を採用しようとするゲームスタジオの数も増え、最終的にはハードウェアの市場が飽和状態になり、ほとんどのゲームスタジオがその機能を採用するようになります。
DX12 Ultimate以前は、この2つのサイクルの重複は限られていました。ハードウェアが類似していたとしても、ソフトウェア インターフェイスが非常に異なっていたため、開発者が一丸となって採用することはできませんでした。
DX12 Ultimateは、PCとXboxシリーズXのグラフィックス・プラットフォームを統一することで、ゲームのエコシステム全体に力を与えています。もはや、このサイクルは独立して動作するものではありません。XboxシリーズXがリリースされた時には、同じ機能を搭載したDX12 Ultimate PCグラフィックスカードが世界に何百万枚も存在し、新機能の急速な普及を促進しています。
結果は?新機能の採用に向けてアドレナリンを放出し、画期的なグラフィックをこれまで以上に早くゲーマーの手に届けることができます。
ハードウェアパートナーがDX12 Ultimateをどのようにサポートしているかについての詳細は、AMDとNVIDIAの記事をご覧ください。
- https://community.amd.com/community/gaming/blog/2020/03/19/powering-next-generation-gaming-visuals-with-amd-rdna-2-and-directx-12-ultimate
- https://www.nvidia.com/en-us/geforce/news/geforce-rtx-ready-for-directx-12-ultimate
DirectX 12 Ultimate Deep Dive
では、これらの機能がどのように機能するのか、DirectX 12 Ultimateのフードの下を深く見てみましょう。この情報の中には少し技術的なものもありますので、さらに質問がある場合は、ぜひ私たちのディスコードに参加して質問してください。
DirectX レイトレーシング 1.1
DirectX レイトレーシング (以下、DXR) は、これまでハリウッド映画のCG(コンピューターグラフィックス)特殊効果業界でしか実現できなかった、新しいレベルのグラフィックス・リアリズムをビデオゲームにもたらします。DXRによって達成されたエフェクトは、ある意味でよりリアルに感じられます。DXRでは、光の軌跡を実在の物理演算でトレースしています。
DXR 1.0の発表以来、DXR 1.0を使用したタイトルでは、これまでにないレベルのビジュアルクオリティを確認しており、開発者のフィードバックを受けてDXR 1.1を構築し、DXRを活用するためのツールをさらに充実させています。
DXR 1.1は、DXR 1.0の上にインクリメンタル(次第に増加して積み上げていく)な機能を追加したもので、3つの主要な新機能が追加されています。
GPU ワーククリエーションでレイトレーシングが可能になりました。これにより、GPU上のシェーダはCPUへの往復を介さずにレイトレーシングを呼び出すことができます。この機能は、シェーダベースのカリング / ソート / 分類 / 洗練のような適応的なレイトレーシング・シナリオに役立ちます。 基本的には、レイトレーシングの作業をGPU上で準備してからすぐにスポーンするようなシナリオです。
ストリーミングエンジンは、ゲームの世界でプレイヤーが世界を移動して新しいオブジェクトが表示されるようになったときに、必要に応じて新しいレイトレーシングシェーダーをより効率的にロードすることができます。
インラインレイトレーシングはレイトレーシングの代替形態であり、開発者がレイトレーシングプロセスをより駆動するためのオプションを提供します。コンピュートシェーダやピクセルシェーダなど、どのシェーダステージでも利用可能です。レイトレーシングのダイナミック シェーディングとインラインの両方とも、同じ不透明なアクセラレーション構造を使用します。
インラインレイトレーシングを使用する場合
インラインレイトレーシングは多くの理由で便利です。
・おそらく、開発者は、ダイナミックシェーダスケジューリングのオーバーヘッドが価値がないほど単純なシナリオであることを知っているでしょう。例えば、シャドウを計算するためのよく制約された方法です。
・ダイナミックシェーダベースのレイをサポートしていないシェーダからアクセラレーション構造を問い合わせるのは便利で効率的かもしれません。 コンピュートシェーダやピクセルシェーダのようにです。
・ダイナミックシェーダベースのレイトレーシングとインラインフォームを組み合わせると便利かもしれません。交差点シェーダや任意のヒットシェーダのようないくつかのレイトレーシングシェーダステージは、ダイナミックシェーダベースのレイトレーシングを介したレイトレーシングにさえ対応していません。 しかし、インラインフォームはどこでも利用できます。
・もう一つの組み合わせは、単純なリカーシブ・レイのためにインラインフォームに切り替えることです。 システム上のよりシンプルな動的スケジューリング負荷は、より良い効率をもたらします。
コンピュートシェーダーやピクセルシェーダーのように、ダイナミックシェーダーベースのレイをサポートしていないシェーダーからアクセラレーション構造を問い合わせるのは便利で効率的かもしれません。
多くの複雑なシェーダを持つシナリオは、大規模なインラインレイトレーシングの超大型シェーダを使用するのとは対照的に、ダイナミックシェーダベースのレイトレーシングでより良く動作します。一方、シェーディングの複雑さが最小限で、かつ/または非常に少ないシェーダーを持つシナリオは、インライン レイトレーシングでより良く動作します。
上記のすべてが非常に複雑に思えるならば、そうです。ハイレベルなポイントは、新しいインライン レイトレーシングとオリジナルのダイナミック シェーダー ベースのレイトレーシングの両方が異なる目的のために価値があるということです。DXR 1.1では、開発者はどちらかのアプローチを選択できるだけでなく、1つのレンダラー内で両方を組み合わせることもできます。ハイブリッドアプローチは、DXR レイトレーシングの両方のフレーバーが同じアクセラレーション構造フォーマットを共有し、同じ基本的なトラバーサル・ステートマシンによって駆動されるという事実によって支援されています。
何よりも、DX12 Ultimate ハードウェアを使用しているゲーマーは、開発者がどのような種類のレイトレーシング ソリューションを使用するかに関わらず、素晴らしい体験をすることができるという事です。
可変レートシェーディング
可変レートシェーディング(VRS)は、開発者がゲームのシェーディングレートを任意に変化させることを可能にします。これにより、ゲームの重要度の高い部分ではGPUパワーを「ダイヤルアップ」してビジュアルを向上させ、重要度の低い部分ではGPUパワーを「ダイヤルバック」してスピードを向上させることができます。また、可変レートシェーディングには、開発者にとって実装コストが比較的低いという利点もあります。可変レートシェーディングの詳細については、以前のブログ記事を参照してください。
メッシュシェーダー
メッシュシェーダーは、開発者にこれまで以上のプログラマビリティを提供します。一般化されたGPU計算のフルパワーを、ジオメトリパイプラインにもたらすことで、メッシュシェーダーは、これまで以上に詳細でダイナミックな世界を構築することができます。
メッシュシェーダに先立って、GPUジオメトリパイプラインは、GPUハードウェア実行の並列性を単純化されたプログラミングの抽象化の背後に隠し、開発者は一見直線的なシェーダ関数にしかアクセスできませんでした。
例えば、開発者はモデル内の各頂点に対して1回呼び出される頂点シェーダ関数を書き、シリアル実行を暗示していました。しかし、裏では、ハードウェアはSIMDウェーブを埋めるために隣接する頂点をパックし、単一のシェーダーコア上で32または64の頂点シェーダー関数を並列に実行しています。このモデルは長年にわたって非常にうまく機能してきましたが、ハードウェアが実際に何をしているかの詳細を開発者から隠すことで、パフォーマンスと柔軟性を犠牲にしています。
メッシュシェーダーは、ジオメトリ処理をコンピュートシェーダのように動作させることで、これを変更します。メッシュシェーダーは、1つの頂点やプリミティブをシェーディングする単一の関数ではなく、コンピュートスレッドグループ全体で動作し、グループの共有メモリにアクセスしたり、実際のハードウェアの実行をより細かく制御できるクロスレーンウェーブのような高度なコンピュート機能を備えています。これらのスレッドはすべて、「メッシュレット」と呼ばれる小さなインデックス付きのトライアングルリストをシェードするために一緒に動作します。通常、メッシュシェーダーには各スレッドが別々の頂点を処理するフェーズがあり、次に各スレッドが別々のプリミティブを処理するフェーズがありますが、このモデルは完全に柔軟性があり、スレッド間でデータを共有したり、必要に応じて新しい頂点やプリミティブを作成したり、既存のプリミティブをクリップしたりカリングしたりすることができます。
この新しいスレッド割り当ての柔軟性に加えて、入力データフォーマットの柔軟性も向上しました。メッシュシェーダーは、以前はメモリからインデックスと頂点データをフェッチする役割を担っていた入力アセンブラブロックを使用しなくなりました。その代わりに、シェーダーのコードは、必要なデータを任意のフォーマットから自由に読み込むことができます。これにより、インデックスバッファの圧縮や、頂点データの異なるチャンネルに複数の異なるインデックスバッファを使用するなどの新しいテクニックが可能になります。このようなアプローチは、メモリ使用量を削減し、レンダリング中に使用されるメモリ帯域幅を削減してパフォーマンスを向上させることができます。
以前のジオメトリ パイプラインよりも柔軟性が高いものの、メッシュ シェーダー モデルも非常にシンプルになっています。
メッシュシェーダーと一緒に、アンプリフィケーション・シェーダーと呼ばれる新しいシェーダーステージがオプションで用意されています。これはメッシュシェーダーの前に実行され、いくつかの計算を行い、いくつのメッシュシェーダースレッドグループが必要かを判断し、その数のメッシュシェーダーを起動します。
アンプリフィケーション・シェーダーは、どのメッシュレットが見えるかを判断し、32~256のトライアングルの各セットを、幾何学的な境界ボリューム、法線コーン、またはポータル可視平面のようなより高度なテクニックに対してテストしてから、そのメッシュレットのためにメッシュシェーダースレッドグループを起動するかどうかを決定することができるので、カリングに特に役立ちます。
以前のカリングは通常、オブジェクトを描画するかどうかを決定するために、メッシュごとの粗いレベルで実行され、ジオメトリ・パイプラインの最後には、より細かい三角形ごとのレベルで実行されていました。この新しい中間レベルのカリングにより、部分的にしか覆われていないモデルを描画する際のパフォーマンスが向上します。例えば、キャラクタの一部が画面に表示されていて、片方の腕だけが表示されていない場合、アンプリフィケーション・シェーダーは、その中のすべてのトライアングルをシェーディングするのにかかった計算量よりもはるかに少ない計算量で、その腕全体をカリングすることができます。
サンプラーフィードバック
サンプラーフィードバックは、開発者が必要なときだけテクスチャをロードできるように詳細な情報を提供することで、ビジュアル品質の向上、ロード時間の短縮、スタッタリングの低減を可能にします。
あなたがゲーム開発者で、複雑な3D シーンをシェーディングするとします。カメラはシーン全体で素早く移動し、いくつかのオブジェクトを異なるレベルの詳細に移動させます。積極的にメモリを最適化する必要があるため、異なるLOD の要求に対応するためにリソースをバインドします。テクスチャストリーミングシステムを使用しているかもしれませんし、巨大な4Kのmip0を必要としない場合は、タイル状のリソースを使用して非常駐にしているかもしれません。いずれにしても、非常に複雑なサンプリングパターンを使ってミップしたテクスチャをサンプリングするシェーダがあります。好みのものを選んでください。
サンプラーフィードバックは、実際にサンプル操作を行わなくても、シェーダがサンプリング要求を満たすためにテクスチャのどの部分が必要かを効率的に照会できるようにすることで、この問題を解決します。この情報は、ゲームのアセットストリーミングシステムにフィードバックされ、次にどのデータをストリーミングするかについて、よりインテリジェントで正確な判断を下すことができます。D3D12のタイル状リソース機能と組み合わせることで、ゲームでは、ビデオメモリの使用量を抑えながら、より大きく、より詳細なテクスチャをレンダリングすることができます。
サンプラーフィードバックは、ワールドスペースでのオブジェクトのシェーディングと、そのオブジェクトの形状のラスタライズから最終的なターゲットへのシェーディングを切り離すレンダリング技術であるTSS(Texture-space shading)も可能にします。
TSSは、ゲーム開発者がオブジェクト空間で負荷の高いライティング計算を行い、それをテクスチャに書き込むことを可能にするテクニックです。何もラスタライズされていないので、シェーディングは、グラフィックパイプラインを全く使わずに、コンピュートを使って行うことができます。
次に、別のステップで、テクスチャをバインドしてスクリーン空間にラスタライズし、デッドシンプルなサンプルを実行します。このアプローチは、エイリアシングを低減し、ラスタライズよりも少ない頻度でライティングを計算できるようにします。この 2 つのレートをデカップリングすることで、より高いフレームレートでより洗練されたライティング技術を使用することができます。
TSSをうまく動作させる上での障害の一つは、オブジェクト空間の中でオブジェクトごとに何をシェーディングするかを考え出すことです。全部ですか?それは効率的ではありません。オブジェクトの左側だけが見えるとしたらどうでしょうか?サンプラーフィードバックの力を使えば、ラスタライズ・ステップでは、要求されたテキストを記録し、そのテキストに対してのみアプリケーションの高負荷な照明計算を実行することができます。
軽く読んでくださった方で、いつになったら技術的な話が出てくるのか気になっている方のために、開発者向けにDirectX Raytracing 1.1、可変レートシェーディング、メッシュシェーダー、そしてDX12 Ultimateの4つの機能であるサンプラーフィードバックについての詳細なブログ記事を書いています。
ゲーム開発者向けに、DirectX 12 Ultimateの詳細な入門ガイドをまとめました。インサイダープログラムへの参加方法、正しいビルド、SDK、ドライバなど、DX12 Ultimateのサポートを開始するために必要なすべての詳細が含まれています。いつものように、私たちはアクティブなDiscordチャンネルにご招待しています。
via Microsoft Dev Blog Shawn Hargreaves
※
以上で、素人にも分かる説明もあれば、全く分からない部分までありましたが、一応それなりに分かる部分のみを抜粋してみました。
この解説文を書いた技術者のショーンさんも言っていますが、今回のDirectX 12 UltimateでPCとの統合がより深まり、XBOXはほぼPCと変わらない段階になったという事です。つまり、PCで使われる最新の3Dグラフィックスのトレンド技術が、Xbox Series Xで使われているという事です。
マイクロソフトもXbox Series Xのハードウェア開発において、このDirectX 12 Ultimateも含め念頭に置いて開発された事を、ハードウェアチームの方がレポート記事でも言っていましたので、今までのXBOXとは統合レベルでも次元が違うという感じがします。
7月のファーストパーティー披露のショーケースイベントではどのような物を見せてくれるのか、、フィル・スペンサーさんも5月のショーケースで批判されたハリウッドスタイルのトレイラー主体で、ゲームプレイ映像が少なかったことが、コミュニティでも批判された事を理解しているようで、「5月のフィードバックを参考に良いものを見せれると思います」と言っているので、期待したいところです。🔚
コメントを残す