Auto-Vk-Toolkit ist ein Framework für die in moderne C ++ implementierte Vulkan-Grafik-API. Ziel ist es, den Sweet Spot zwischen Programmierer und Effizienz zu erreichen und gleichzeitig die volle Vulkan-Funktionalität zu unterstützen. Um dieses Ziel zu erreichen, verwendet dieses Framework Auto-VK , eine Komfort- und Produktivitätsschicht auf Vulkan-HPP.
Auto-VK-Toolkit wurde erfolgreich für schnelle Prototypen, Forschung (z.

Dieses Bild zeigt einige Arbeiten, die unter Verwendung von Auto-VK-Toolkit (von links nach rechts) entwickelt wurden: Verwendung in einem fortschrittlichen Grafikkurs zum Unterrichten moderner GPU-Konzepte auf niedriger Ebene; Visualisierung von 19.600 sphärischen Harmonischen Glyphen aus einem Gehirnscan; Aufteilung von Maschen in Meshlets und das Rendern von feinkörnigem Aussichtspunkt und Rückenwace Culling in Aufgaben- und Maschen-Shadern; Ray verfolgt Schatten und Reflexionen mithilfe der Hardware-Beschleunigten in Echtzeit-Strahlenverfolgungsgeräte. Rendering von 358K parametrisch definierten Faserkurven in Echtzeit.
Zu den Highlight-Featuren (neben den fantastischen Funktionen von Auto-VK ) gehören:
update() und render() Rückrufen zu unterschiedlichen oder festen Update -Zeiten.avk::root -Implementierung, mit Swap -Kettenhandhabung und automatischer Lebensdauermanagement von Ressourcen..fscene -Dateien aus dem ORCA: Open Research Content Archive.avk:buffer oder avk::image sowie benutzerdefinierte Typen serialisieren können; basierend auf Müsli. Auto-Vk-Toolkit ist bereit für Visual Studio oder CMake. Wenn Ihr System die Systemanforderungen erfüllt, ist alles eingerichtet, um einen Lauf direkt aus der Schachtel zu erstellen. ZB für Visual Studio, öffnen Sie visual_studio/auto_vk_toolkit.sln , setzen Sie eines der Beispielprojekte als Startprojekt, erstellen und rennen!
Hinweis: Die Version in der Entwicklungszweig ist möglicherweise auf dem neuesten Stand und enthält zusätzliche Funktionen und Korrekturen. Bitte überlegen Sie, ob Sie diese Version verwenden, insbesondere wenn Sie auf Probleme stoßen.
Hinweis: Beim ersten Lauf wird das Post -Build -Helfer -Tool erstellt. Sehen Sie sich die Registerkarte "Ausgabe" von Visual Studios für Statusnachrichten und mögliche Anweisungen an.
Für Visual Studio 2022 finden Sie unter Windows ein vorkonfiguriertes Projektaufbau.
visual_studio/README.md .)git submodule update --init um das auto-vk -Framework zu ziehen, das als Submodule unter auto_vk hinzugefügt wirdVulkan Memory Allocator header. Option, damit die Bibliothek von Vulkan Memory Allocator (VMA) installiert ist.maintenancetool.exe unter Windows) installiert werden, indem der Vulkan Memory Allocator header. Option.Desktop development with C++ Workload im Installer aus!Tools -> Options -> GLSL language integration . Für die Entwicklung von Vulkan Shader setzen Sie entweder Live compiling auf False (nur Syntax -Hervorhebung) oder setzen Sie den External compiler executable file auf den Pfad zu glslangValidator.exe !visual_studio/auto_vk_toolkit.sln und erstellen Sie die LösungOutput -TAB von Visual Studio, einigen Popup -Nachrichten und einem Symbol im Systemfach. Bitte werfen Sie einen Blick auf die Abschnittsressourcen -Mangement und den Post -Build -Helfer, um zusätzliche Informationen zu erhalten.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit , um auto-vk-toolkit als submodule im Verzeichnis auto_vk_toolkit hinzuzufügen.git submodule update --init --recursive aus, um sowohl Auto-VK-Toolkit als auch Auto-VK zu ziehen.Siehe docs/cmake.md!
| Hallo Welt | Mehrere Warteschlangen | Bildverarbeitung berechnen | Orca -Lader |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
In diesem Repository sind mehrere Beispielanwendungen enthalten:
.fscene -Dateien und rendern sie; Auch die Verwendung des Serializers| Häutnetzes | Ray -Abfrage und Strahlenverfolgung | RTX Custom Intersection | Textur Cubemap |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Für Visual Studio -Projekte gibt es ein Convenience -Tool unter visual_studio/tools/executables/ , das dazu beitragen kann, ein neues Projekt durch das Kopieren eines vorhandenen (z. B. eine der Beispielanwendungen) schnell einzurichten: create_new_project.exe
Verwenden Sie es wie folgt, um eine Kopie eines vorhandenen Projekts zu erstellen:
create_new_project.exe und wählen Sie entweder eine der Beispielanwendungen aus oder geben Sie den Pfad zum manuellen Projekt ein.auto_vk_toolkit.vxcproj zu Ihrer Visual Studio-Lösung hinzu und stellen Sie sicher, dass die neu erstellte Projektkopien sie verweisen..cpp -Datei mit einer main() -Funktion hinzufügen.#include <auto_vk_toolkit.hpp> hinzu, um auto-vk-toolkit zu verwenden. Eine gute Strategie create_new_project.exe darin, Ihrem Repository Auto-VK-Toolkit als Git-Submodule hinzuzufügen und die obigen Schritte zu verwenden, um ein ordnungsgemäß konfiguriertes Projekt in einem Verzeichnis außerhalb des Submoduls zu erstellen. Stellen Sie sicher, dass Sie das Submodul häufig aktualisieren, indem Sie aus master -Zweig von Auto-Vk-Toolkit ziehen, um die neuesten Updates zu erhalten.
Die Visual Studio-Projekte von Auto-VK-Toolkit sind so konfiguriert, dass Visual Studio selbst elegant für das Ressourcenmanagement verwendet werden kann. Das bedeutet, dass die erforderlichen Assets (3D -Modelle, Bilder, ORCA -Szenendateien) und Shader -Dateien nur zu den Filtern von Visual Studios in der Ansicht "Lösungxplorer" hinzugefügt werden können, und ein intelligentes Post -Build -Helfer -Tool stellt sicher, dass diese Ressourcen in das Zielverzeichnis der Anwendung bereitgestellt werden.
Kurz gesagt/ tl; dr :
assets die erforderlichen 3D -Modelle, Bilder und Orca -Szenen hinzu undshaders -Filter den erforderlichen Shader -Dateien direkt in Visual Studio hinzu. Erstellen Sie dann die Anwendung, warten Sie, bis der Post -Build -Helfer diese Ressourcen für das Zielverzeichnis bereitstellt, und führen Sie Ihre Bewerbung aus! Dies kann nach Folgen aussehen, wo die assets und shaders eine besondere Bedeutung haben, wie oben angedeutet: 
Eine detailliertere Erklärung und weitere Anweisungen finden Sie in visual_studio/README.md .
Sie werden feststellen, dass Post -Build -Helfer -Aktivitäten durch das Tablettsymbol:
. Das Tool bleibt aktiv, nachdem die Bereitstellung aus zwei Hauptgründen beendet ist:
Weitere Informationen zum Post-Build-Helfer finden Sie im Abschnitt "Post Build Helfer". Weitere Informationen zum Shader Hot Reloading finden Sie im folgenden Abschnitt Automatic Resource Updates.
Auto-VK ist eine plattform-agnostische Bequemlichkeit und Produktivitätsschicht auf Vulkan-HPP.
Auto-VK-Toolkit stellt die fehlende Verbindung zum Betriebssystem wie die Umstellung des Fensters fest und fügt weitere Funktionen hinzu:
VK_KHR_ray_tracing_pipeline verwendet wird, wählt ein geeignetes physisches Gerät aus und ermöglicht die erforderlichen Flags und Erweiterungen)avk::invokee Schnittstelle (z. B. initialize() , update() , render() , wobei erstere nur einmal aufgerufen wird und die beiden beiden jeweils jeden Frame angerufen werden)avk::transformavk::quake_camera und avk::orbit_camera (abgeleitet von beiden, avk::transform und avk::invokee )avk::material und a vk::material_gpu_data )avk::lightsource und avk::lightsource_gpu_data )[->VS] -Taste bereitgestellt wird, um zu der Zeile zu navigieren, die den Fehler in Visual Studio enthält.Es gibt einige Dokumentationsseiten mit weiteren Informationen:
avk::updater -Klasse, die Shwapchain Recreation und Shader Hot Reloading ermöglicht F: Kann automatisch-vk-toolkit unter Linux verwendet werden?
A: Ja. Bitte beachten Sie die CMAKE -Dokumentation unter docs/cmake.md!
F: Kann automatisch-vk-toolkit ohne Helfer des Post-Builds verwendet werden?
A: Ja. Der Post -Build -Helfer ist ein Convenience -Tool, das die Bereitstellung von Ressourcen, Asset -Abhängigkeiten und auch Dateiaktualisierungen übernimmt (hilfreich für Shader Hot Reloading, abhängig von der Projektstruktur). Wenn Sie es nicht verwenden, müssen Sie die Bereitstellung von Ressourcen verwalten und Shader-Dateien in Spire-V manuell zusammenstellen.
F: Ich habe Probleme mit dem Asset -Management in Visual Studio. Irgendwelche Ratschläge?
A: Schauen Sie sich die bekannten Probleme an und beheben Sie die Bearbeitung von WRT -Asset, die Richtlinien für die folgenden Fälle anbieten:
F: Es wurden mehr Ressourcen eingesetzt, als ich zu den Filtern von Visual Studio hinzugefügt habe. Was ist los?
A: Einige Vermögenswerte verweisen auf andere Vermögenswerte intern. Zum Beispiel verweisen 3D -Modelle häufig Bilder oder Materialdateien (im Fall von .obj -Modellen). Diese "abhängigen Vermögenswerte" werden auch vom Post -Build -Helfer im Zielverzeichnis eingesetzt. Weitere Informationen finden Sie unter Bereitstellung von abhängigen Vermögenswerten.
F: Was sind die Unterschiede zwischen Debug- , Release- und Publish -Build -Konfigurationen?
A: In Bezug auf die Kompilierungseinstellungen sind die Veröffentlichung und Veröffentlichungskonfigurationen gleich. Sie verknüpfen mit Veröffentlichungsbusten von Bibliotheken. Die Debug -Konfiguration verfügt über klassische Debug -Einstellungen, die für die Visual Studio -Projekte und Links gegen Debug -Builds von Bibliotheken konfiguriert sind. Es gibt jedoch einen Unterschied zwischen Veröffentlichungsbusten und Nicht- Veröffentlichungsbusten für die Bereitstellung von Ressourcen. Weitere Informationen finden Sie in symbolischen Links/Kopien je nach Build -Konfiguration.
F: Ich habe Probleme mit dem Post -Build -Helfer . Was zu tun?
A: Schauen Sie sich den Helfer für Post -Build an, der Richtlinien für die folgenden Fälle bietet:
can't fopen oder !RUNTIME ERROR! Couldn't load image from '...' F: Die Anwendung dauert lange, bis Vermögenswerte wie 3D -Modelle und Bilder geladen werden. Kann es beschleunigt werden?
A: Wenn Sie sich auf Debug -Builds beziehen, können Sie Post -Build -Helfer so konfigurieren, dass die Release -DLLs einiger externer Abhängigkeiten auch für Debug -Builds bereitgestellt werden. Sie sollten das Vermögensladen viel beschleunigen. Um die Bereitstellung von Release -DLLs zu aktivieren, öffnen Sie bitte die Einstellungen von Post Build Helper und aktivieren Sie die Option "Immer Release DLLs bereitstellen".
F: cereal::Exception in cereal::loadBinary , oder Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
A: Ihre serialisierte Cache -Datei (z. B. für sponza_and_terrain.fscene Dies könnte sponza_and_terrain.fscene.cache ) korrupt geworden (möglicherweise weil sie aufgrund eines zuvor vorgeschlagenen Fehlers in der Anwendung nicht vollständig geschrieben wurde oder weil die Ausführung abgebrochen wurde). Löschen Sie die Cache -Datei (z. B. sponza_and_terrain.fscene.cache ) und lassen Sie ein neues generiert werden!