يعد Auto-VK-Toolkit إطارًا لواجهة برمجة تطبيقات Vulkan Graphics ، التي يتم تنفيذها في C ++ الحديثة. ويهدف إلى الوصول إلى المكان الجميل بين المبرمجين والكفاءة مع عدم دعم وظائف الفلكان الكاملة. لتحقيق هذا الهدف ، يستخدم هذا الإطار Auto-VK ، طبقة الراحة والإنتاجية فوق Vulkan-HPP.
تم استخدام Auto-VK-Toolkit بنجاح في النماذج الأولية السريعة ، والأبحاث (على سبيل المثال ، حدود Meshlet المحافظة من أجل إعدام قوي من الشبكات البشرة ، والتقديم السريع للأشياء البارامترية على وحدات معالجة الرسومات الحديثة) ، والتعليم (على سبيل المثال ، خوارزميات لتقديم الوقت الفعلي).

تعرض هذه الصورة بعض الأعمال التي تم تطويرها باستخدام Auto-VK-Toolkit (من اليسار إلى اليمين): الاستخدام في دورة رسومات متقدمة لتدريس مفاهيم GPU الحديثة ذات المستوى المنخفض ؛ تصور 19600 من الحروف الكروية الكروية من مسح الدماغ. تقسيم الشبكات إلى الأعطال وجعلها مع الرؤية الرائعة ذات الحبيبات الرائعة وإعدام الخلفية في تظليل المهام والشبكة ؛ تتبع Ray الظلال والانعكاسات باستخدام ملحقات جهاز تتبع الأشعة في الوقت الفعلي المسلسل للأجهزة ؛ تقديم 358K منحنيات الألياف المحددة بشكل حار في الوقت الحقيقي.
تشمل بعض ميزاتها البارزة (إلى جانب الميزات الرائعة لـ Auto-VK ):
update() و render() عوائد في أوقات تحديث مختلفة أو ثابتة.avk::root ، مع معالجة سلسلة المبادلة وإدارة عمر الموارد التلقائي..fscene من orca: فتح أرشيف محتوى البحث.avk:buffer أو avk::image ، وكذلك الأنواع المخصصة ؛ على أساس الحبوب. Auto-VK-Toolkit جاهز للذهاب مع Visual Studio أو Cmake. إذا كان نظامك يفي بمتطلبات النظام ، فسيتم إعداد كل شيء لإنشاء تشغيل مباشرة خارج الصندوق. على سبيل المثال ، بالنسبة إلى Visual Studio ، افتح visual_studio/auto_vk_toolkit.sln ، قم بتعيين أحد المشاريع على سبيل المثال كمشروع بدء التشغيل ، والبناء والتشغيل!
تلميح: قد يكون الإصدار في فرع التطوير أكثر تحديثًا ويحتوي على ميزات وإصلاحات إضافية. يرجى النظر في استخدام هذا الإصدار ، خاصة إذا واجهت مشاكل.
ملاحظة: في المدى الأول ، يتم بناء أداة Post Build Helper . شاهد علامة التبويب "الإخراج" في Visual Studio لرسائل الحالة والتعليمات المحتملة.
يتم توفير إعداد مشروع تم تكوينه مسبقًا لـ Visual Studio 2022 على Windows.
visual_studio/README.md .)git submodule update --init لسحب إطار Auto-VK الذي يتم إضافته كوحدة فرعية تحت auto_vkVulkan Memory Allocator header. الخيار بحيث يتم تثبيت مكتبة مخصص الذاكرة Vulkan (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 ، وبعض الرسائل المنبثقة ، ورمز في علبة النظام. يرجى إلقاء نظرة على مورد مورد القسم و Post Build Helper للحصول على معلومات إضافية.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit لإضافة تلقائي toolkit كوحدة فرعية في الدليل auto_vk_toolkit .git submodule update --init --recursive من أجل سحب كلاهما ، Auto-VK-Toolkit و Auto-VK .يرجى الاطلاع على المستندات/cmake.md!
| مرحبا بالعالم | طوابير متعددة | حساب معالجة الصور | orca loader |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
يتم تضمين العديد من تطبيقات المثال في هذا المستودع:
.fscene وتقديمها ؛ أيضا كيفية استخدام المسلسل| حشوات بشرة | استعلام راي وتتبع الشعاع | تقاطع 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 . تتمثل الإستراتيجية الجيدة في إضافة توكيت تلقائيًا كوحدة فرعية GIT لمستودعك واستخدام create_new_project.exe والخطوات المذكورة أعلاه لإنشاء مشروع تم تكوينه بشكل صحيح في دليل خارج الحداثة الفرعية. تأكد من تحديث الجهاز الفرعي بشكل متكرر عن طريق السحب من فرع master التلقائي لـ VK-Toolkit للحصول على آخر التحديثات.
تم تكوين مشاريع Visual Studio التلقائية لـ Auto-Toolkit بحيث يمكن استخدام Visual Studio نفسه بشكل أنيق لإدارة الموارد. هذا يعني أنه يمكن إضافة الأصول المطلوبة (النماذج ثلاثية الأبعاد ، الصور ، ملفات مشهد ORCA) وملفات التظليل فقط إلى مرشحات Visual Studio في عرض "Solution Explorer" وأداة مساعدة Smart Post Build ، تضمن نشر هذه الموارد في الدليل المستهدف للتطبيق.
باختصار/ tl ؛ د .
assets ، وshaders مباشرة في Visual Studio. ثم قم ببناء التطبيق ، وانتظر حتى يقوم المساعد البارز بنشر هذه الموارد على الدليل المستهدف ، وقم بتشغيل التطبيق الخاص بك! يمكن أن يبدو هذا يلي ، حيث يكون assets والتظليلات shaders معنى خاص ، كما تم تلميحها أعلاه: 
وترد تفسير أكثر تفصيلاً وإرشادات أخرى في visual_studio/README.md .
ستلاحظ نشاط المساعد بعد البناء من خلال أيقونة الدرج:
. ستبقى الأداة نشطة بعد الانتهاء من النشر لسببين رئيسيين:
لمزيد من المعلومات حول مساعد البناء ، يرجى الرجوع إلى قسم Post Build Helper ، ولمزيد من المعلومات حول إعادة التحميل الساخن Shader ، يرجى الرجوع إلى قسم الموارد التلقائي أدناه.
Auto-VK هي منصة واضحة وطبقة الإنتاجية فوق فولكان-HPP.
يحدد Auto-VK-Toolkit الرابط المفقود لنظام التشغيل ، مثل معالجة النوافذ ، ويضيف المزيد من الوظائف:
VK_KHR_ray_tracing_pipeline يجب استخدامه ، فإنه يختار جهازًا فعليًا مناسبًا ويمكّن الإعلامات والامتدادات المطلوبة)avk::invokee (مثل initialize() ، update() ، render() ، حيث يتم استدعاء الأول مرة واحدة فقط ويتم استدعاء الاثنين الأخير كل إطار)avk::transformavk::quake_camera و avk::orbit_camera (مشتقة من كلاهما ، avk::transform و avk::invokee )avk::material و a vk::material_gpu_data )avk::lightsource و avk::lightsource_gpu_data )[->VS] للانتقال إلى السطر الذي يحتوي على الخطأ داخل Visual Studio.هناك بعض صفحات التوثيق التي تحتوي على مزيد من المعلومات:
avk::updater ، مما يتيح Shwapchain الترفيه وتظليل إعادة التحميل الساخن س: هل يمكن استخدام Auto-VK-Toolkit على Linux؟
ج: نعم. يرجى الاطلاع على وثائق CMake في المستندات/cmake.md!
س: هل يمكن استخدام Auto-VK-Toolkit بدون مساعد بناء ما بعد ؟
ج: نعم. يعد Post Build Helper أداة مريحة تتعامل مع نشر الموارد ، وتبعيات الأصول ، وكذلك تحديثات الملفات (مفيدة لإعادة التحميل الساخن ، اعتمادًا على بنية المشروع). إذا كنت لا تستخدمه ، فسيتعين عليك إدارة نشر الموارد ، وتجميع ملفات التظليل في SPIR-V يدويًا.
س: لدي مشاكل في إدارة الأصول في Visual Studio. أي نصيحة؟
ج: تحقق من المشكلات المعروفة واستكشاف الأخطاء وإصلاحها معالجة أصول WRT ، والتي تقدم إرشادات للحالات التالية:
س: تم نشر موارد أكثر مما أضفت إلى مرشحات Visual Studio. ماذا يحدث هنا؟
ج: بعض الأصول تشير إلى الأصول الأخرى داخليًا. على سبيل المثال ، غالبًا ما تشير النماذج ثلاثية الأبعاد إلى الصور أو ملفات المواد (في حالة نماذج .obj ). يتم نشر هذه "الأصول المعتمدة" أيضًا في الدليل المستهدف بواسطة مساعد ما بعد الإنشاء . يرجى الاطلاع على نشر الأصول التابعة لمزيد من التفاصيل.
س: ما هي الاختلافات بين تكوينات التصحيح والإصدار والنشر ؟
ج: من حيث إعدادات التجميع ، فإن تكوينات الإصدار والنشر هي نفسها. يربطون مع بنيات الإصدار من المكتبات. يحتوي تكوين التصحيح على إعدادات تصحيح التصحيح الكلاسيكي التي تم تكوينها لمشاريع Visual Studio وروابط مقابل تصميمات التصحيح للمكتبات. ومع ذلك ، هناك فرق بين Publish Builds و Publish يبني WRT نشر الموارد. يرجى الاطلاع على الروابط/النسخ الرمزية اعتمادًا على تكوين بناء لمزيد من التفاصيل.
س: لدي مشكلات مع مساعد البناء . ما يجب القيام به؟
ج: تحقق من Post Build Helper ، الذي يقدم إرشادات للحالات التالية:
can't fopen ، أو !RUNTIME ERROR! Couldn't load image from '...' أو ما شابه س: يستغرق التطبيق وقتًا طويلاً لتحميل الأصول مثل النماذج ثلاثية الأبعاد والصور. هل يمكن تسريعها؟
ج: إذا كنت تشير إلى تصميمات التصحيح ، فيمكنك تكوين Post Build Helper بحيث تقوم بنشر DLLs لبعض التبعيات الخارجية حتى بالنسبة لبنيات التصحيح . يجب عليهم تسريع تحميل الأصول كثيرًا. لتمكين نشر 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 ) واترك منشأ جديد!