AMDはRadeonCauldron 1.0SDKを簡略化されたC ++を使用するプログラミングコミュニティに拡張します

ハードウェア / AMDはRadeonCauldron 1.0SDKを簡略化されたC ++を使用するプログラミングコミュニティに拡張します 読んだ4分

広範な内部テストと驚くほど迅速な採用の後、AMDは現在Radeon Cauldron 1.0ソフトウェア開発キット(SDK)をプログラミングコミュニティに提供しています。同社は、フレームワークが非常に単純化されているだけでなく、非常に用途が広いことを保証しています。つまり、Radeon Cauldron SDKは、初心者でも簡単に理解できます。さらに、フレームワークは、新しい機能でフレームワークを拡張しようとしているプログラマーにとって非常に柔軟です。



AMDは最も人気のあるものの1つを提供しています ソフトウェア開発フレームワーク 大衆に。 Radeon Cauldron SDKの最初の包括的で安定したリリースが、プログラマーに利用可能になりました。 Radeon Cauldronは、本質的にラピッドプロトタイピング用のフレームワークライブラリです。 AMDSDKのサンプルとエフェクトで使用されます。 SDKは、VulkanまたはDirect3D 12APIのいずれかとシームレスに連携します。 AMDはフレームワーク全体を作成しました GitHubからダウンロードできます 、最近マイクロソフトに買収されたオープンソースソフトウェアの最も人気のあるリポジトリ。興味深いことに、AMDは GltfSampleをアップロードしました 。奇妙な名前のアプリは、Cauldronフレームワークを使用して設計、開発、構築されています。ちなみに、Radeon Cauldron SDKに関連するすべてのリソースは、GitHubでも入手できます。

Radeon Cauldron SDKとは何ですか?それはソフトウェア、アプリ、またはゲーム開発にどのように影響しますか?

Radeon Cauldronは、基本的に、ラピッドプロトタイピング用のフレームワーク全体または完全なソフトウェア開発キットです。これは主にAMDSDKのサンプルとエフェクトで使用されます。上記のように、Vulkanで最適に動作します。これは、推奨される低オーバーヘッドのクロスプラットフォーム3DグラフィックスおよびコンピューティングAPIです。さらに、SDKはDirect3Dの最新バージョンであるDirect3D12でも動作します。



Radeon Cauldron SDKは、AMDの内部で最初にリリースされました。予想されていましたが、最初のリリースは、AMDの内部ソフトウェア開発チームによって例外的に受け入れられ、採用されました。最初のパイロットプロジェクトの後、AMDは社内の他の接線グループでさえ関心を示し始めたことを確認しました。最終的に、SDKは、ツール、ドライバー、さらにはソフトウェアや機能のデモンストレーションを処理するチームにとって好ましいフレームワークの1つになりました。



AMDは、MITオープンソースライセンスの下でGPUOpenにRadeon Cauldron1.0を提供しています。同社は、コードの理解のしやすさとコードの拡張のしやすさを繰り返し強調してきました。つまり、経験豊富なプログラマーがいない場合でも、新しいユーザーは、複数のコンポーネントとその個々の機能、および依存関係をすばやく解読できます。これにより、複雑な開発のプロセスが大幅に簡素化され、すべてのユーザーが同じものを使用しながら自信を持って快適に使用できるようになります。さらに、プログラマーは、過去の作業を妨げたり、プロセスで何かを壊したりすることを心配することなく、コードを迅速かつ効率的に拡張できます。



フレームワークは驚くほど柔軟で用途が広く、AMDを保証します。 SDKがバニラC ++を使用しているため、この主張は真実であるように見えます。 AMDは、「1つの機能、1つのクラス、1つのファイル」の哲学に従うという明確な目的を持って同じものを開発しました。言うまでもなく、これは、プログラマーがアプリケーションまたはWebプラットフォームの動作を理解しようとするだけで、複雑で複数のファイルをナビゲートする必要がないことを意味します。 AMDは、Radeon CauldronSDKが最も単純な形式のクラスに固執することを保証しています。つまり、可能な限り、ほとんどのクラスは次のメソッドを実装します。

クラスMyTechnique

{{



bool OnCreate(…); //パイプライン、静的ジオメトリ、およびその他の1回限りの初期化を作成します

void OnDestroy(…);

void OnDraw(…)//作成されたリソースを使用してテクニックを描画します

}

Radeon Cauldron SDKでは、glTF2.0モデルをレンダリングするために必要な2つの手法が可能です。 1つはPBR(Physically Based Rendering)パスに必要ですが、もう1つは深度のみのパス用です。拡張機能として、GltfPbrPassとGltfDepthPassという2つのクラスがあります。 glTFモデルのデータは、次の3つのファイルに分割されます。

  1. GltfCommonは、シーンの変換とアニメーションをロードして処理するAPIに依存しないクラスで、skinninクラスMyTechnique {bool OnCreate(…);を含みます。 //パイプライン、静的ジオメトリ、およびその他の1回限りの初期化を作成しますvoid OnDestroy(…); void OnDraw(…)//作成されたリソースを使用してテクニックを描画します} g。
  2. GltfTexturesAndBuffersは、すべてのテクスチャ、スキニングマトリックス、およびジオメトリバッファをロードして保持するクラスです。
  3. GltfPbrPassとGltfDepthPassは、上記のクラスを使用して上記の手法でシーンをレンダリングする2つのクラスです。

Radeon Cauldronフレームワークには、グラフィックに依存しないコードとグラフィックに依存するコードの両方が含まれています。したがって、フレームワークは3つのVisualStudioプロジェクトに分割できます。

  1. Framework_DX12:名前から明らかなように、この部分はDirectX12に関連しています。つまり、すべてのDirect3D12コードが含まれています。
  2. Framework_VK:この部分には、関連するすべてのVulkanコードが含まれています。

ちなみに、上記の両方のタイプのVisualStudioプロジェクトに共通する3番目のコンポーネントもあります。この部分は「Framework_Common」と呼ばれます。共通コンポーネントには、次の側面が含まれています。

GLTF構造

  • 変換とアニメーションコード
  • 画像の読み込み
  • ウィンドウ処理
  • カメラ

Radeon Cauldronフレームワークは、ブルーム、ブラー、ダウンサンプリング、トーンマッピングなどの後処理技術をサポートしています。 SDKは、2つの新しいサブメンバーを導入します。これらは、一時的なレンダーターゲットの作成に役立ちます。

bool OnCreateWindowSizeDependentResources(…)//エフェクトに必要な一時的なレンダーターゲットを作成します

void OnDestroyWindowSizeDependentResources(…)

興味深いことに、内部でテストされたAMD Radeon Cauldron 1.0 SDKを使用すると、プログラマーはより低いレベルでも実装できます。驚いたことに、これらのレベルでも、複数のメモリマネージャーを使用して、物事がスムーズに実行されるようにすることができます。下位レベルでも機能するメモリマネージャの一部は次のとおりです。

  • StaticBufferPool:このコンポーネントは静的データを保持します。さらに、サブ割り当ても備えています。
  • DynamicBufferRing:これは循環バッファシステムです。プログラマーは、定数バッファーについてこれを信頼できます。
  • テクスチャ:テクスチャのロードとレンダーターゲットの作成を可能にします。興味深いことに、テクスチャシステムでは、レンダーターゲットのビューを作成することもできます。
  • ShaderCompilerHelper:これはソースコードのコンパイルを支援する強力なツールです。 ShaderCompilerHelperはバイナリもキャッシュします。言うまでもなく、これにより読み込み時間が大幅に短縮されます。
  • UploadHeap:このツールを使用すると、プログラマーはシステムメモリプールからサブ割り当てしてデータをアップロードできます。データには、基本的にテクスチャとバッファーが含まれています。

これはオープンソースのSDKであるため、AMDは、早期に外部の採用者に同じものをテストしてフィードバックを提供するように求めています。 AMDが同じことを分析し、Radeon CauldronSDKを改善するための提案のいくつかを実装する可能性が非常に高いです。

タグ amd AMDナビ radeon