Auto-VK-Toolkit เป็นกรอบสำหรับ Vulkan Graphics API ซึ่งใช้ใน C ++ ที่ทันสมัย มันมีจุดมุ่งหมายที่จะตีจุดที่น่าสนใจระหว่างโปรแกรมเมอร์--ความสามารถในการประชุมและประสิทธิภาพในขณะที่ยังคงสนับสนุนฟังก์ชั่น Vulkan เต็มรูปแบบ เพื่อให้บรรลุเป้าหมายนี้เฟรมเวิร์กนี้ใช้ Auto-VK ความสะดวกสบายและเลเยอร์การผลิตบน Vulkan-HPP
Auto-VK-Toolkit ถูกนำมาใช้อย่างประสบความสำเร็จในการสร้างต้นแบบอย่างรวดเร็วการวิจัย (เช่นขอบเขต meshlet อนุรักษ์นิยมสำหรับการกำจัดที่แข็งแกร่งของตาข่ายที่มีผิวหนังการแสดงผลอย่างรวดเร็วของวัตถุพารามิเตอร์บน GPU ที่ทันสมัย) และการสอน (เช่นอัลกอริธึมสำหรับการแสดงผลจริง)

ภาพนี้นำเสนองานบางอย่างที่ได้รับการพัฒนาโดยใช้ Auto-VK-Toolkit (จากซ้ายไปขวา): การใช้งานในหลักสูตรกราฟิกขั้นสูงสำหรับการสอนแนวคิด GPU ระดับต่ำที่ทันสมัย การสร้างภาพของ 19,600 ฮาร์มอนิกส์ทรงกลมออกมาจากการสแกนสมอง การแบ่งของตาข่ายเป็น meshlets และแสดงผลด้วยการเลือกมุมมองที่ดีและ backface culling ในงานและเฉดสีตาข่าย; Ray Traced Shadows and Reflections โดยใช้อุปกรณ์ติดตามอุปกรณ์เรย์เวลาเรียลไทม์ที่เร่งความเร็วแบบฮาร์ดแวร์ การแสดงผลของเส้นโค้งเส้นใยที่กำหนดพารามิเตอร์ 358K แบบเรียลไทม์
บางส่วนของคุณสมบัติ (นอกเหนือจากคุณสมบัติที่ยอดเยี่ยมของ Auto-VK ) รวมถึง:
update() และ render() การเรียกกลับที่แตกต่างกันหรือแก้ไขเวลาอัปเดตavk::root พร้อมการจัดการโซ่แลกเปลี่ยนและการจัดการอายุการใช้งานทรัพยากรอัตโนมัติ.fscene จาก ORCA: Open Research Content Archiveavk:buffer หรือ avk::image และประเภทที่กำหนดเอง; ขึ้นอยู่กับซีเรียล Auto-VK-Toolkit พร้อมที่จะไปกับ Visual Studio หรือ CMake หากระบบของคุณตรงตามข้อกำหนดของระบบทุกอย่างจะถูกตั้งค่าเพื่อสร้างการวิ่งออกจากกล่อง เช่นสำหรับ Visual Studio ให้เปิด visual_studio/auto_vk_toolkit.sln ตั้งค่าหนึ่งในโครงการตัวอย่างเป็นโครงการเริ่มต้นสร้างและเรียกใช้!
คำแนะนำ: เวอร์ชันใน สาขาการพัฒนา อาจเป็นข้อมูลล่าสุดและมีคุณสมบัติและการแก้ไขเพิ่มเติม โปรดพิจารณาใช้เวอร์ชันนั้นโดยเฉพาะถ้าคุณพบปัญหา
หมายเหตุ: ในการรันครั้งแรกเครื่องมือ สร้างโพสต์ จะถูกสร้างขึ้น ดูแท็บ "เอาต์พุต" ของ Visual Studio สำหรับข้อความสถานะและคำแนะนำที่เป็นไปได้
การตั้งค่าโครงการที่กำหนดค่าไว้ล่วงหน้ามีไว้สำหรับ Visual Studio 2022 บน Windows
visual_studio/README.md )git submodule update --init เพื่อดึงเฟรมเวิร์ ก Auto-VK ซึ่งเพิ่มเป็น submodule ภายใต้ auto_vkVulkan Memory Allocator header. ตัวเลือกเพื่อให้มีการติดตั้งไลบรารี Vulkan Memory Allocator (VMA)maintenancetool.exe บน Windows) โดยเลือก Vulkan Memory Allocator header. ตัวเลือก.Desktop development with C++ ในตัวติดตั้ง!Tools -> Options -> GLSL language integration สำหรับการพัฒนา Vulkan Shader ไม่ว่าจะเป็นการ Live compiling เป็น False (การไฮไลต์ไวยากรณ์เท่านั้น) หรือตั้ง External compiler executable file เป็นเช่นเส้นทางไปยัง glslangValidator.exe !visual_studio/auto_vk_toolkit.sln และสร้างโซลูชันOutput ของ Visual Studio, ข้อความป๊อปอัปและไอคอนในถาดระบบ โปรดดูที่การจัดการทรัพยากรส่วนและตัวช่วยสร้างโพสต์สำหรับข้อมูลเพิ่มเติมgit submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit เพื่อเพิ่ม auto-vk-toolkit เป็น submodule ในไดเรกทอรี auto_vk_toolkitgit submodule update --init --recursive เพื่อดึงทั้งสอง Auto-VK-Toolkit และ Auto-VKโปรดดู docs/cmake.md!
| สวัสดีโลก | หลายคิว | คำนวณการประมวลผลภาพ | orca loader |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
แอปพลิเคชันตัวอย่างหลายตัวอย่างรวมอยู่ในที่เก็บนี้:
.fscene และแสดงผล นอกจากนี้วิธีการใช้ serializer| meshlets ผิวหนัง | Ray Query และการติดตามเรย์ | ทางแยกที่กำหนดเอง RTX | พื้นผิว cubemap |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
สำหรับโครงการ Visual Studio มีเครื่องมือความสะดวกสบายภายใต้ visual_studio/tools/executables/ ที่สามารถช่วยในการตั้งค่าโครงการใหม่ได้อย่างรวดเร็วโดยการคัดลอกโครงการที่มีอยู่ (เช่นหนึ่งในแอปพลิเคชันตัวอย่าง): create_new_project.exe
ใช้มันเหมือนติดตามเพื่อสร้างสำเนาของโครงการที่มีอยู่:
create_new_project.exe และเลือกหนึ่งในแอปพลิเคชันตัวอย่างหรือป้อนเส้นทางไปยังโครงการเพื่อคัดลอกด้วยตนเองauto_vk_toolkit.vxcproj ไปยังโซลูชัน Visual Studio ของคุณและตรวจสอบให้แน่ใจว่าการคัดลอกโครงการที่สร้างขึ้นใหม่.cpp อย่างน้อยที่มีฟังก์ชั่น main()#include <auto_vk_toolkit.hpp> เพื่อใช้ auto-vk-toolkit กลยุทธ์ที่ดีคือการเพิ่ม Auto-VK-Toolkit เป็น git submodule ไปยังที่เก็บของของคุณและใช้ create_new_project.exe และขั้นตอนข้างต้นเพื่อสร้างโครงการที่กำหนดค่าไว้อย่างเหมาะสมในไดเรกทอรีด้านนอกของ submodule ตรวจสอบให้แน่ใจว่าได้อัปเดต submodule บ่อยครั้งโดยดึงจากสาขา master ของ Auto-VK-Toolkit เพื่อรับการอัปเดตล่าสุด
โครงการ Visual Studio ของ Auto-VK-Toolkit ได้รับการกำหนดค่าเพื่อให้ Visual Studio สามารถใช้อย่างหรูหราสำหรับการจัดการทรัพยากร นั่นหมายความว่าสินทรัพย์ที่จำเป็น (รุ่น 3D, รูปภาพ, ไฟล์ฉาก ORCA) และไฟล์ shader สามารถเพิ่มลงในตัวกรองของ Visual Studio ในมุมมอง "Solution Explorer" และเครื่องมือ สร้างตัวช่วยการสร้างสมาร์ทโพสต์ ทำให้มั่นใจได้ว่าทรัพยากรเหล่านั้นจะถูกปรับใช้กับไดเรกทอรีเป้าหมายของแอปพลิเคชัน
ในระยะสั้น/ tl; DR :
assets และshaders โดยตรงใน Visual Studio จากนั้นสร้างแอปพลิเคชันรอ ตัวช่วยสร้างโพสต์ เพื่อปรับใช้ทรัพยากรเหล่านี้ไปยังไดเรกทอรีเป้าหมายและเรียกใช้แอปพลิเคชันของคุณ! สิ่งนี้สามารถมีลักษณะดังต่อไปนี้โดยที่ assets และ shaders มีความหมายพิเศษดังที่ได้กล่าวไว้ข้างต้น: 
คำอธิบายโดยละเอียดเพิ่มเติมและคำแนะนำเพิ่มเติมได้รับใน visual_studio/README.md
คุณจะสังเกตเห็น โพสต์สร้างกิจกรรมผู้ช่วย ผ่านไอคอนถาด:
- เครื่องมือจะยังคงทำงานหลังจากการปรับใช้เสร็จสิ้นด้วยเหตุผลหลักสองประการ:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ตัวช่วยการสร้างโพสต์ โปรดดูส่วนการสร้างโพสต์ตัวช่วยและสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการโหลดซ้ำของ Shader Hot โปรดดูส่วนการอัปเดตทรัพยากรอัตโนมัติด้านล่าง
Auto-VK เป็นความสะดวกสบายของแพลตฟอร์มและเลเยอร์ผลผลิตบน Vulkan-HPP
Auto-VK-Toolkit สร้างลิงก์ที่ขาดหายไปไปยังระบบปฏิบัติการเช่นการจัดการหน้าต่างและเพิ่มฟังก์ชั่นเพิ่มเติม:
VK_KHR_ray_tracing_pipeline จะใช้จะเลือกอุปกรณ์ทางกายภาพที่เหมาะสมและเปิดใช้งานสถานะและส่วนขยายที่จำเป็น)avk::invokee (เช่น initialize() , update() , render() , ที่อดีตเรียกเพียงครั้งเดียวและสองหลังจะถูกเรียกใช้แต่ละเฟรม)avk::transformavk::quake_camera และ avk::orbit_camera (มาจากทั้งสอง, avk::transform and avk::invokee )avk::material และ a vk::material_gpu_data )avk::lightsource และ avk::lightsource_gpu_data )[->VS] เพื่อนำทางไปยังบรรทัดที่มีข้อผิดพลาด ภายใน Visual Studioมีบางหน้าเอกสารที่มีข้อมูลเพิ่มเติม:
avk::updater ทำให้ SHWAPCHAIN Recreation และ Shader Hot Reloading ถาม: สามารถใช้ Auto-VK-Toolkit บน Linux ได้หรือไม่?
ก. ใช่. โปรดดูเอกสาร CMAKE ที่ DOCS/CMAKE.MD!
ถาม: สามารถใช้ Auto-VK-Toolkit ได้โดยไม่ต้องใช้ ตัวช่วยสร้างโพสต์ได้ หรือไม่?
ก. ใช่. Post Build Helper เป็นเครื่องมือสะดวกซื้อที่จัดการการปรับใช้ทรัพยากรการพึ่งพาสินทรัพย์และการอัปเดตไฟล์ (มีประโยชน์สำหรับการโหลดซ้ำของ Shader ขึ้นอยู่กับโครงสร้างโครงการ) หากคุณไม่ได้ใช้มันคุณจะต้องจัดการการปรับใช้ทรัพยากรและการรวบรวมไฟล์ shader ลงใน SPIR-V ด้วยตนเอง
ถาม: ฉันมีปัญหากับการจัดการสินทรัพย์ใน Visual Studio คำแนะนำใด ๆ ?
ตอบ: ตรวจสอบปัญหาที่รู้จักและการแก้ไขปัญหาการจัดการสินทรัพย์ WRT ซึ่งเสนอแนวทางสำหรับกรณีต่อไปนี้:
ถาม: มีการปรับใช้ทรัพยากรเพิ่มเติมมากกว่าที่ฉันได้เพิ่มลงในตัวกรองของ Visual Studio เกิดอะไรขึ้น?
ตอบ: สินทรัพย์บางส่วนอ้างอิงสินทรัพย์อื่น ๆ ภายใน ตัวอย่างเช่นโมเดล 3 มิติมักจะอ้างอิงรูปภาพหรือไฟล์วัสดุ (ในกรณีของโมเดล .obj ) "สินทรัพย์ที่พึ่งพา" เหล่านี้จะถูกนำไปใช้กับไดเรกทอรีเป้าหมายโดย ผู้ช่วยสร้างโพสต์ โปรดดูการปรับใช้สินทรัพย์ที่ขึ้นอยู่กับสำหรับรายละเอียดเพิ่มเติม
ถาม: อะไรคือความแตกต่างระหว่าง การดีบัก การเปิดตัว และ เผยแพร่ การกำหนดค่าการสร้าง?
ตอบ: ในแง่ของการตั้งค่าการรวบรวม การเปิดตัว และ การเผยแพร่ การกำหนดค่าจะเหมือนกัน พวกเขาเชื่อมโยงกับการ สร้าง การสร้างห้องสมุด การกำหนดค่า การดีบัก มีการตั้งค่าการดีบักแบบคลาสสิกที่กำหนดค่าไว้สำหรับโครงการ Visual Studio และลิงก์กับการ ดีบัก Builds of Libraries อย่างไรก็ตามมีความแตกต่างระหว่างการ เผยแพร่ การสร้างและการสร้างที่ไม่ เผยแพร่ WRT การปรับใช้ทรัพยากร โปรดดูลิงค์/สำเนาสัญลักษณ์ขึ้นอยู่กับการกำหนดค่าการสร้างสำหรับรายละเอียดเพิ่มเติม
ถาม: ฉันมีปัญหากับ ผู้ช่วยสร้างโพสต์ จะทำอย่างไร?
ตอบ: ตรวจสอบ Post Build Helper ซึ่งเสนอแนวทางสำหรับกรณีต่อไปนี้:
can't fopen หรือ !RUNTIME ERROR! Couldn't load image from '...' หรือคล้ายกัน ถาม: แอปพลิเคชันใช้เวลานานในการโหลดสินทรัพย์เช่นรุ่น 3 มิติและรูปภาพ สามารถเร่งความเร็วได้หรือไม่?
ตอบ: หากคุณอ้างถึงการดีบัก บิ๊ก คุณสามารถกำหนดค่า โพสต์บิลด์ตัวช่วย เพื่อให้สามารถใช้ งาน DLL ของการพึ่งพาภายนอกบางอย่างแม้กระทั่งสำหรับการ ดีบัก บิลด์ พวกเขาควรเร่งการโหลดสินทรัพย์เป็นจำนวนมาก หากต้องการเปิดใช้งานการ ปรับใช้ DLLS โปรดเปิดการตั้งค่า Post Build Helper และเปิดใช้งานตัวเลือก "ปรับใช้ DLLS" เสมอ "
ถาม: การรับ cereal::Exception ใน cereal::loadBinary หรือ Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
ตอบ: ไฟล์แคชอนุกรมของคุณ (เช่นสำหรับ sponza_and_terrain.fscene นี่อาจเป็น sponza_and_terrain.fscene.cache ) ได้รับความเสียหาย (อาจเป็นเพราะมันไม่ได้เขียนอย่างสมบูรณ์เนื่องจากข้อผิดพลาดที่เกิดขึ้นก่อนหน้านี้ในแอปพลิเคชันหรือเพราะการดำเนินการถูกยกเลิก) ลบไฟล์แคช (เช่น sponza_and_terrain.fscene.cache ) และปล่อยให้ไฟล์ใหม่ถูกสร้างขึ้น!