Auto-VK-Toolkitは、最新のC ++で実装されたVulkanグラフィックスAPIのフレームワークです。完全なVulkan機能をサポートしながら、プログラマーの慣習と効率の間のスイートスポットにヒットすることを目指しています。この目標を達成するために、このフレームワークは、Vulkan-HPPの上の利便性と生産性層であるAuto-VKを使用します。
Auto-VK-Toolkitは、迅速なプロトタイピング、研究(例えば、肌のメッシュの堅牢なcullingの保守的なメッシュレット境界、最新のGPUのパラメトリックオブジェクトの速いレンダリング)、および教育(リアルタイムレンダリングのアルゴリズムなど)に成功裏に使用されています。

この画像は、Auto-VK-Toolkit (左から右)を使用して開発されたいくつかの作業を紹介します。最新の低レベルGPUコンセプトを教えるための高度なグラフィックコースでの使用。脳スキャンからの19,600の球状高調波グリフの視覚化。メッシュをメッシュレットに分割し、タスクとメッシュシェーダーで微調整されたビューフルスタムとバックフェイスをcullingしてレンダリングします。レイは、ハードウェアがアクセル化されたリアルタイムレイトレースデバイス拡張機能を使用して、影と反射をトレースしました。 358Kのパラメトリックに定義されたファイバー曲線のレンダリングは、リアルタイムで。
そのハイライトフィーチュアの一部( Auto-VKの素晴らしい機能を除く)は次のとおりです。
update()とrender()コールバックを使用してループフレームワークをレンダリングします。avk::root実装、スワップチェーンの取り扱いと自動リソースのライフタイム管理を備えています。.fsceneファイルのロード:Open Research Content Archive。avk:bufferまたはavk::image Instances、およびカスタムタイプなどのVulkanリソースをシリアル化できる汎用性の高いシリアナーサポート。シリアルに基づいています。Auto-VK-Toolkitは、 Visual StudioまたはCmakeを使用する準備ができています。システムがシステム要件を満たしている場合、すべてが設定されており、すぐに実行されます。たとえば、Visual Studioの場合は、 visual_studio/auto_vk_toolkit.slnを開いて、プロジェクトの例の1つをスタートアッププロジェクト、ビルド、実行として設定します。
ヒント:開発ブランチのバージョンは、より最新であり、追加の機能と修正が含まれている場合があります。特に問題が発生した場合は、そのバージョンの使用を検討してください。
注:最初の実行では、ポストビルドヘルパーツールが構築されています。ステータスメッセージと可能な指示については、Visual Studioの「出力」タブをご覧ください。
WindowsでVisual Studio 2022用に、事前に設定されたプロジェクトのセットアップが提供されています。
visual_studio/README.mdを参照してください。)git submodule update --init auto_vkの下でサブモジュールとして追加される自動VKフレームワークをプルするVulkan Memory Allocator header. Vulkan Memory Allocator(VMA)ライブラリがインストールされるようにオプション。maintenancetool.exeなど)を介してインストールできますVulkan Memory Allocator header.オプション。Desktop development with C++を選択してください!Tools -> Options -> GLSL language integration 。 Vulkanシェーダー開発の場合、 Live compiling False (構文の強調表示のみ)に設定するか、 External compiler executable fileをglslangValidator.exeへのパスに設定します!visual_studio/auto_vk_toolkit.slnを開き、ソリューションを構築しますOutput -Tab、いくつかのポップアップメッセージ、およびシステムトレイのアイコンのポストビルドヘルパーツールからのメッセージが認識されます。追加情報については、セクションリソースマージメントとポストビルドヘルパーをご覧ください。git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit 、ディレクトリauto_vk_toolkitのサブモジュールとしてauto-vk-toolkitを追加できます。git submodule update --init --recursive編成の両方、 Auto-VK-Toolkit 、 Auto-VKの両方をプルするために実行します。docs/cmake.mdをご覧ください!
| こんにちは世界 | 複数のキュー | 画像処理を計算します | ORCAローダー |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
このリポジトリには、アプリケーションがいくつか含まれています。
.fsceneファイルをロードしてレンダリングする方法。また、シリアナーの使用方法| スキンメッシュレット | レイクエリとレイトレース | RTXカスタム交差点 | テクスチャキューブマップ |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Visual Studioプロジェクトには、 visual_studio/tools/executables/の下に便利なツールがあります。これは、既存のプロジェクトをコピーすることで新しいプロジェクトをすばやく設定するのに役立ちますcreate_new_project.exe
次のように使用して、既存のプロジェクトのコピーを作成します。
create_new_project.exeを開き、アプリケーションの例のいずれかを選択するか、プロジェクトへのパスを入力して手動でコピーします。auto_vk_toolkit.vxcprojへの参照をVisual Studioソリューションに手動で追加し、新しく作成したプロジェクトコピーが参照していることを確認します。main()関数を含む少なくとも.cppファイルを追加する必要があります。#include <auto_vk_toolkit.hpp>を追加して、auto-vk-toolkitを使用します。良い戦略は、リポジトリにGitサブモジュールとしてAuto-VK-Toolkitを追加し、 create_new_project.exeと上記の手順を使用して、サブモジュールの外側のディレクトリに適切に構成されたプロジェクトを作成することです。 Auto-VK-Toolkitのmaster Branchから引っ張って、最新の更新を取得して、サブモジュールを頻繁に更新してください。
Auto-VK-ToolkitのVisual Studioプロジェクトは、Visual Studio自体をリソース管理にエレガントに使用できるように構成されています。つまり、必要なアセット(3Dモデル、画像、ORCAシーンファイル)とシェーダーファイルは、「ソリューションエクスプローラー」ビューでVisual Studioのフィルターに追加でき、スマートポストビルドヘルパーツールにより、これらのリソースがアプリケーションのターゲットディレクトリに展開されるようになります。
略して/ tl; dr :
assetsフィルターに追加し、shadersフィルターに直接追加します。次に、アプリケーションを構築し、ポストビルドヘルパーがターゲットディレクトリにこれらのリソースを展開するのを待ち、アプリケーションを実行してください!これは、上記のように、フィルターassetsとshaders特別な意味を持つように見えることがあります。 
より詳細な説明とさらなる指示はvisual_studio/README.mdに記載されています。
トレイアイコンを介してポストビルドヘルパーアクティビティに気付くでしょう。
。 2つの主な理由で展開が終了した後、ツールはアクティブのままになります。
ポストビルドヘルパーの詳細については、ポストビルドヘルパーセクションを参照してください。シェーダーホットリロードの詳細については、以下の自動リソースアップデートセクションを参照してください。
Auto-VKは、Vulkan-HPPの上のプラットフォームに依存しない利便性と生産性層です。
Auto-VK-Toolkitは、ウィンドウの処理などのオペレーティングシステムへのミッシングリンクを確立し、さらに機能を追加します。
VK_KHR_ray_tracing_pipelineを使用する場合、適切な物理デバイスを選択し、必要なフラグと拡張機能を有効にします)avk::invokeeインターフェイス( initialize() 、 update() 、 render()を介してコールバックメソッドを使用するのに便利なゲームループ/レンダリングループハンドリング。avk::transformavk::quake_camera and avk::orbit_camera (両方から派生した、 avk::transform :: avk::invokee )avk::material and a vk::material_gpu_data )avk::lightsource and avk::lightsource_gpu_data )になります)[->VS]ボタンを提供して、Visual Studio内にエラーを含む行に移動します。詳細情報を含むドキュメントページがいくつかあります。
avk::updaterクラスを介した自動リソースアップデート、ShwapChainレクリエーションとシェーダーホットリロードを可能にしますQ:LinuxでAuto-VK-Toolkitを使用できますか?
A:はい。 docs/cmake.mdのcmakeドキュメントをご覧ください!
Q:ポストビルドヘルパーなしでAuto-VK-Toolkitを使用できますか?
A:はい。ポストビルドヘルパーは、リソースの展開、アセットの依存関係を処理し、ファイルの更新を処理する便利なツールです(プロジェクト構造に応じて、シェーダーホットリロードに役立ちます)。使用していない場合は、リソースの展開を管理し、シェーダーファイルを手動でSPIR-Vに編集する必要があります。
Q:Visual Studioで資産管理に問題があります。何かアドバイス?
A:既知の問題とトラブルシューティングWRTアセット処理をチェックしてください。これは、次のケースのガイドラインを提供します。
Q:Visual Studioのフィルターに追加したよりも多くのリソースが展開されています。どうしたの?
A:一部の資産は、他の資産を内部的に参照しています。たとえば、3Dモデルは、多くの場合、画像またはマテリアルファイルを参照します( .objモデルの場合)。これらの「従属資産」も、ポストビルドヘルパーによってターゲットディレクトリに展開されます。詳細については、従属資産の展開をご覧ください。
Q:デバッグ、リリース、公開のビルド構成の違いは何ですか?
A:コンピレーション設定に関しては、リリースおよび公開構成は同じです。ライブラリのリリースビルドに対してリンクします。デバッグ構成には、ビジュアルスタジオプロジェクト用に構成されたクラシックデバッグ設定と、ライブラリのデバッグビルドとのリンクがあります。ただし、パブリッシュビルドと非パブリッシュビルドWRTのリソースの展開との間には違いがあります。詳細については、ビルド構成に応じて、シンボリックリンク/コピーを参照してください。
Q:ポストビルドヘルパーに問題があります。何をするか?
A:以下のケースのガイドラインを提供するPost Build Helperをご覧ください。
can't fopen 、または!RUNTIME ERROR! Couldn't load image from '...' Q:アプリケーションは、3Dモデルや画像などの資産をロードするのに長い時間がかかります。加速できますか?
A:デバッグビルドを参照している場合は、デバッグビルドの場合でも、一部の外部依存関係のリリースDLLを展開するように、ポストビルドヘルパーを構成できます。彼らは、資産の負荷を多く加速する必要があります。リリースDLLの展開を有効にするには、 Post Build Helperの設定を開き、オプションを有効にしてください。
Q: cereal::Exception cereal::loadBinary 、またはUnhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
A:シリアル化されたキャッシュファイル( sponza_and_terrain.fsceneの場合、これはsponza_and_terrain.fscene.cacheである可能性があります)が破損している可能性があります(アプリケーションで以前に発生したエラーのため、または実行が中止されたために完全に書かれていないためです)。キャッシュファイル( sponza_and_terrain.fscene.cacheなど)を削除し、新しいファイルを生成します!