Auto-VK-Toolkit adalah kerangka kerja untuk API Grafis Vulkan, yang diimplementasikan dalam C ++ modern. Ini bertujuan untuk mencapai sweet spot antara programmer-convenience dan efisiensi sambil tetap mendukung fungsionalitas vulkan penuh. Untuk mencapai tujuan ini, kerangka kerja ini menggunakan Auto-VK , lapisan kenyamanan dan produktivitas di atas Vulkan-HPP.
Auto-VK-Toolkit telah berhasil digunakan untuk prototyping cepat, penelitian (misalnya, batas meshlet konservatif untuk pemusnahan jerat berkulit yang kuat, rendering objek parametrik yang cepat pada GPU modern), dan pengajaran (misalnya, algoritma untuk rending waktu-nyata).

Gambar ini menampilkan beberapa karya yang telah dikembangkan menggunakan Auto-VK-Toolkit (dari kiri ke kanan): Penggunaan dalam kursus grafis canggih untuk mengajar konsep GPU tingkat rendah modern; Visualisasi 19.600 glyph harmonik bola dari pemindaian otak; Divisi jerat menjadi meshlets dan menjadikannya dengan frustum view-berbutir halus dan culling backface dalam tugas dan shader mesh; Ray melacak bayangan dan refleksi menggunakan ekstensi perangkat penelusuran ray real-time yang dipercepat perangkat keras; Render 358K kurva serat yang ditentukan secara parametrikal secara real time.
Beberapa fitur sorotnya (selain fitur yang luar biasa dari Auto-VK ) meliputi:
update() dan render() callbacks pada waktu pembaruan yang bervariasi atau tetap.avk::root , dengan penanganan rantai swap dan manajemen seumur hidup sumber daya otomatis..fscene dari ORCA: Open Research Content Archive.avk:buffer atau avk::image , dan juga tipe khusus; berdasarkan sereal. Auto-VK-Toolkit siap digunakan dengan Visual Studio atau CMake. Jika sistem Anda memenuhi persyaratan sistem, semuanya diatur untuk membangun jalan keluar dari kotak. Misalnya, untuk Visual Studio, buka visual_studio/auto_vk_toolkit.sln , atur salah satu contoh proyek sebagai proyek startup, build and run!
Petunjuk: Versi di cabang pengembangan mungkin lebih mutakhir dan berisi fitur dan perbaikan tambahan. Harap pertimbangkan untuk menggunakan versi itu, terutama jika Anda mengalami masalah.
Catatan: Pada menjalankan pertama, alat pembantu Build Post sedang dibangun. Tonton tab "output" Visual Studio untuk pesan status dan kemungkinan instruksi.
Pengaturan proyek yang telah dikonfigurasi sebelumnya disediakan untuk Visual Studio 2022 di Windows.
visual_studio/README.md .)git submodule update --init untuk menarik kerangka Auto-VK yang ditambahkan sebagai submodule di bawah auto_vkVulkan Memory Allocator header. Opsi sehingga perpustakaan Vulkan Memory Allocator (VMA) diinstal.maintenancetool.exe pada Windows) dengan memilih Vulkan Memory Allocator header. pilihan.Desktop development with C++ di installer!Tools -> Options -> GLSL language integration . Untuk pengembangan vulkan shader, atur Live compiling ke False (sintaks hanya menyorot), atau atur External compiler executable file ke, misalnya, jalur ke glslangValidator.exe !visual_studio/auto_vk_toolkit.sln , dan bangun solusinyaOutput Visual Studio -TAB, beberapa pesan sembulan, dan ikon di baki sistem. Silakan lihat mangement sumber daya bagian dan penolong pembuatan pos untuk informasi tambahan.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit untuk menambahkan auto-vk-toolkit sebagai submodule di direktori auto_vk_toolkit .git submodule update --init --recursive untuk menarik keduanya, Auto-VK-Toolkit dan Auto-VK .Silakan lihat Docs/Cmake.md!
| Halo dunia | Beberapa antrian | Hitung pemrosesan gambar | Orca loader |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Beberapa contoh aplikasi disertakan dalam repositori ini:
.fscene dan membuatnya; juga cara menggunakan serializer| Meshlets berkulit | Ray Query dan Ray Tracing | Persimpangan Kustom RTX | Tekstur Cubemap |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Untuk proyek Visual Studio, ada alat kenyamanan di bawah visual_studio/tools/executables/ yang dapat membantu untuk dengan cepat mengatur proyek baru dengan menyalin yang sudah ada (misalnya salah satu aplikasi contoh): create_new_project.exe
Gunakan seperti berikut untuk membuat salinan proyek yang ada:
create_new_project.exe dan pilih salah satu contoh aplikasi atau masukkan jalur ke proyek yang akan disalin secara manual.auto_vk_toolkit.vxcproj ke solusi Visual Studio Anda dan memastikan bahwa salinan proyek yang baru dibuat merujuknya..cpp yang berisi fungsi main() .#include <auto_vk_toolkit.hpp> untuk menggunakan auto-vk-toolkit . Strategi yang baik adalah menambahkan Auto-VK-Toolkit sebagai submodule Git ke repositori Anda dan menggunakan create_new_project.exe dan langkah-langkah di atas untuk membuat proyek yang dikonfigurasi dengan benar di direktori di luar submodule. Pastikan untuk sering memperbarui submodule dengan menarik dari cabang master Auto-VK-Toolkit untuk mendapatkan pembaruan terbaru.
Proyek Visual Studio Visual Auto-VK-Toolkit dikonfigurasi sehingga Visual Studio sendiri dapat digunakan secara elegan untuk manajemen sumber daya. Itu berarti, aset yang diperlukan (model 3D, gambar, file adegan orca) dan file shader hanya dapat ditambahkan ke filter Visual Studio di tampilan "Solution Explorer" dan alat pembantu Smart Post Build memastikan bahwa sumber daya tersebut digunakan ke direktori target aplikasi.
Singkatnya/ tl; dr :
assets , danshaders langsung di Visual Studio. Kemudian bangun aplikasi, tunggu helper Post Build untuk menggunakan sumber daya ini ke direktori target, dan jalankan aplikasi Anda! Ini bisa terlihat seperti berikut, di mana filter assets dan shaders memiliki makna khusus, seperti yang diisyaratkan di atas: 
Penjelasan yang lebih rinci dan instruksi lebih lanjut diberikan dalam visual_studio/README.md .
Anda akan melihat Post Build Helper Activity melalui ikon baki:
. Alat ini akan tetap aktif setelah penempatan selesai karena dua alasan utama:
Untuk informasi lebih lanjut tentang Helper Build Post , silakan merujuk ke bagian Helper Build Post, dan untuk informasi lebih lanjut tentang Shader Hot Reloading, silakan merujuk ke bagian Pembaruan Sumber Daya Otomatis di bawah ini.
Auto-VK adalah lapisan kenyamanan dan produktivitas platform-agnostik di atas Vulkan-HPP.
Auto-VK-Toolkit membuat tautan yang hilang ke sistem operasi, seperti penanganan jendela, dan menambahkan fungsionalitas lebih lanjut:
VK_KHR_ray_tracing_pipeline harus digunakan, ia memilih perangkat fisik yang sesuai dan memungkinkan bendera dan ekstensi yang diperlukan)avk::invokee (seperti initialize() , update() , render() , di mana yang pertama hanya dipanggil sekali dan dua yang terakhir dipanggil setiap bingkai)avk::transformavk::quake_camera dan avk::orbit_camera (berasal dari keduanya, avk::transform and avk::invokee )avk::material dan a vk::material_gpu_data )avk::lightsource dan avk::lightsource_gpu_data )[->VS] untuk menavigasi ke baris yang berisi kesalahan dalam Visual Studio.Ada beberapa halaman dokumentasi yang berisi informasi lebih lanjut:
avk::updater , Mengaktifkan Rekreasi Shwapchain dan Shader Hot Reloading T: Bisakah Auto-VK-Toolkit digunakan di Linux?
A: Ya. Silakan lihat dokumentasi CMake di Docs/Cmake.md!
T: Dapatkah Auto-VK-Toolkit digunakan tanpa penolong Post Build ?
A: Ya. Helper Post Build adalah alat kenyamanan yang menangani penyebaran sumber daya, dependensi aset, dan juga pembaruan file (berguna untuk pemuatan ulang hot shader, tergantung pada struktur proyek). Jika Anda tidak menggunakannya, Anda harus mengelola penyebaran sumber daya, dan kompilasi file shader menjadi spir-v secara manual.
T: Saya memiliki masalah dengan manajemen aset di Visual Studio. Ada saran?
A: Lihat masalah yang diketahui dan pemecahan masalah penanganan aset WRT, yang menawarkan pedoman untuk kasus -kasus berikut:
T: Lebih banyak sumber daya telah digunakan daripada yang saya tambahkan ke filter Visual Studio. Apa yang terjadi?
A: Beberapa aset merujuk aset lain secara internal. Misalnya, model 3D sering merujuk gambar atau file material (dalam kasus .obj Model). "Aset dependen" ini juga digunakan ke direktori target oleh penolong Post Build . Silakan lihat penyebaran aset dependen untuk lebih jelasnya.
T: Apa perbedaan antara debug , rilis , dan publikasi konfigurasi build?
A: Dalam hal pengaturan kompilasi, rilis dan publikasi konfigurasi adalah sama. Mereka menghubungkan dengan rilis pembangunan perpustakaan. Konfigurasi Debug memiliki pengaturan debug klasik yang dikonfigurasi untuk proyek -proyek Visual Studio dan tautan terhadap pembangunan debug perpustakaan. Namun, ada perbedaan antara publikasi build dan non- publish membangun WRT penyebaran sumber daya. Silakan lihat tautan/salinan simbolik tergantung pada konfigurasi build untuk detail lebih lanjut.
T: Saya memiliki masalah dengan penolong Build Post . Apa yang harus dilakukan?
A: Lihat Helper Build Post, yang menawarkan pedoman untuk kasus -kasus berikut:
can't fopen , Atau !RUNTIME ERROR! Couldn't load image from '...' atau yang serupa T: Aplikasi membutuhkan waktu lama untuk memuat aset seperti model dan gambar 3D. Bisakah itu dipercepat?
A: Jika Anda mengacu pada Debug Builds, Anda dapat mengonfigurasi Helper Build Post sehingga menggunakan DLL rilis dari beberapa dependensi eksternal bahkan untuk pembuatan debug . Mereka harus banyak mempercepat pemuatan aset. Untuk mengaktifkan penyebaran rilis DLL, silakan buka pengaturan Helper Build Post dan aktifkan opsi "Selalu menggunakan DLL Release".
T: Mendapatkan cereal::Exception dalam cereal::loadBinary , atau Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
A: File cache serial Anda (misalnya, untuk sponza_and_terrain.fscene ini bisa jadi sponza_and_terrain.fscene.cache ) telah menjadi korup (mungkin karena tidak sepenuhnya ditulis karena kesalahan yang terjadi sebelumnya dalam aplikasi, atau karena eksekusi dibatalkan). Hapus file cache (misalnya, sponza_and_terrain.fscene.cache ) dan biarkan yang baru dihasilkan!