Auto-VK-Toolkit es un marco para la API de gráficos Vulkan, implementado en C ++ moderno. Su objetivo es alcanzar el punto óptimo entre la conveniencia del programador y la eficiencia, al tiempo que admite la funcionalidad vulkan completa. Para lograr este objetivo, este marco utiliza Auto-VK , una capa de conveniencia y productividad sobre Vulkan-HPP.
Auto-VK-Toolkit se ha utilizado con éxito para la prototipos rápidos, la investigación (por ejemplo, los límites conservadores de malla para el sacrificio robusto de mallas desolladas, representación rápida de objetos paramétricos en GPU modernas) y enseñanza (por ejemplo, algoritmos para la representación en tiempo real).

Esta imagen muestra algunos trabajos que se han desarrollado utilizando auto-VK-Toolkit (de izquierda a derecha): uso en un curso de gráficos avanzados para enseñar conceptos modernos de GPU de bajo nivel; visualización de 19,600 glifos de armónicos esféricos de una exploración cerebral; división de mallas en mallas y hacerlas con visión de grano fino y frustración de la espalda en la tarea y los sombreadores de malla; Ray trazó sombras y reflexiones utilizando las extensiones de dispositivos de trazado de rayos en tiempo real acelerado en hardware; Representación de 358k curvas de fibra paramétricamente definidas en tiempo real.
Algunas de sus características destacadas (además de las impresionantes características de Auto-VK ) incluyen:
update() y render() en tiempos de actualización variables o fijos.avk::root , con manejo de cadena de intercambio y gestión de vida útil automática de recursos..fscene de la ORCA: Archivo de contenido de investigación abierto.avk:buffer o avk::image , y también tipos personalizados; Basado en el cereal. Auto-VK-Toolkit está listo para ir con Visual Studio o CMake. Si su sistema cumple con los requisitos del sistema, todo está configurado para construir una ejecución de la caja. Por ejemplo, para Visual Studio, Open visual_studio/auto_vk_toolkit.sln , establezca uno de los proyectos de ejemplo como proyecto de inicio, construye y ejecute.
Sugerencia: la versión en la rama de desarrollo puede estar más actualizada y contener características y correcciones adicionales. Considere usar esa versión, especialmente si encuentra problemas.
Nota: En la primera ejecución, se está construyendo la herramienta Post Build auxil . Mire la pestaña "Salida" de Visual Studio para mensajes de estado y posibles instrucciones.
Se proporciona una configuración de proyecto preconfigurada para Visual Studio 2022 en Windows.
visual_studio/README.md .)git submodule update --init para extraer el marco Auto-VK que se agrega como un submódulo en auto_vkVulkan Memory Allocator header. Opción para que esté instalada la biblioteca Vulkan Memory Asignator (VMA).maintenancetool.exe en Windows) seleccionando el Vulkan Memory Allocator header. opción.Desktop development with C++ en el instalador!Tools -> Options -> GLSL language integration . Para el desarrollo del sombreador de Vulkan, establezca Live compiling en False (solo resaltar sintaxis) o establecer el External compiler executable file en, por ejemplo, la ruta a glslangValidator.exe !visual_studio/auto_vk_toolkit.sln y cree la soluciónOutput de Visual Studio, algunos mensajes emergentes y un icono en la bandeja del sistema. Eche un vistazo a la gestión de recursos de la sección y la publicación de Post Built a Helper para obtener información adicional.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit para agregar auto-vk-toolkit como submódulo en directorio auto_vk_toolkit .git submodule update --init --recursive para extraer ambos, Auto-VK-Toolkit y Auto-VK .¡Consulte Docs/CMake.md!
| Hola Mundo | Múltiples colas | Procesamiento de imágenes de calcular | Cargador de orca |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Se incluyen varias aplicaciones de ejemplo en este repositorio:
.fscene y renderizarlos; también cómo usar el serializador| Maletas de piel | Consulta de rayos y trazado de rayos | Intersección personalizada RTX | Textura Cubemap |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Para los proyectos de Visual Studio, existe una herramienta de conveniencia en visual_studio/tools/executables/ que puede ayudar a configurar rápidamente un nuevo proyecto copiando uno existente (por ejemplo, una de las aplicaciones de ejemplo): create_new_project.exe
Úselo como se sigue para crear una copia de un proyecto existente:
create_new_project.exe y seleccione una de las aplicaciones de ejemplo o ingrese la ruta al proyecto que se copiará manualmente.auto_vk_toolkit.vxcproj a su solución Visual Studio y asegúrese de que el proyecto recién creado copie lo haga referencia..cpp que contiene una función main() .#include <auto_vk_toolkit.hpp> para usar auto-vk-toolkit . Una buena estrategia es agregar auto-vk-toolkit como un submódulo Git a su repositorio y usar create_new_project.exe y los pasos anteriores para crear un proyecto configurado correctamente en un directorio fuera del submódulo. Asegúrese de actualizar con frecuencia el submódulo extrayendo de la rama master de Auto-VK-Toolkit para obtener las últimas actualizaciones.
Los proyectos de Visual Studio de Auto-VK-Toolkit están configurados para que Visual Studio en sí pueda usarse elegantemente para la gestión de recursos. Eso significa que los activos requeridos (modelos 3D, imágenes, archivos de escena de Orca) y los archivos de sombreador se pueden agregar a los filtros de Visual Studio en la vista "Explorador de soluciones" y una herramienta Smart Post Built Helper asegura que esos recursos se implementen en el directorio de destino de la aplicación.
En resumen/ tl; dr :
assets , yshaders directamente en Visual Studio. Luego, cree la aplicación, espere a que la publicación Built a Helper implementa estos recursos en el directorio de destino y ejecute su aplicación. Esto puede verse como SIGUS, donde los filtros assets y shaders tienen un significado especial, como se insinúa anteriormente: 
Una explicación más detallada y más instrucciones se dan en visual_studio/README.md .
Notará Post Build Helper Activity a través de su icono de bandeja:
. La herramienta permanecerá activa después de que la implementación haya terminado por dos razones principales:
Para obtener más información sobre Post Build Helper , consulte la sección Public Build Helper y para obtener más información sobre la recarga de Shader Hot, consulte la sección de actualizaciones de recursos automáticos a continuación.
Auto-VK es una capa de conveniencia y productividad de la plataforma sobre Vulkan-HPP.
Auto-VK-Toolkit establece el enlace faltante al sistema operativo, como el manejo de la ventana, y agrega una funcionalidad adicional:
VK_KHR_ray_tracing_pipeline , selecciona un dispositivo físico apropiado y permite indicadores y extensiones requeridas)avk::invokee (como initialize() , update() , render() , donde el primero se llama solo una vez y se invocan los dos últimos) cada cuadro)avk::transformavk::quake_camera y avk::orbit_camera (derivado de ambos, avk::transform and avk::invokee )avk::material y a vk::material_gpu_data )avk::lightsource y avk::lightsource_gpu_data )[->VS] para navegar a la línea que contiene el error dentro de Visual Studio.Hay algunas páginas de documentación que contienen más información:
avk::updater , habilitando Shwapchain Recreation y Shader Hot Reloading P: ¿Se puede usar auto-vk-toolkit en Linux?
A: Sí. ¡Consulte la documentación de CMake en Docs/CMake.md!
P: ¿Se puede usar auto-vk-toolkit sin el cojinete de la construcción de post ?
A: Sí. Post Build Helper es una herramienta de conveniencia que maneja la implementación de recursos, las dependencias de activos y también las actualizaciones de archivos (útiles para la recarga en caliente del sombreador, dependiendo de la estructura del proyecto). Si no lo está utilizando, tendrá que administrar la implementación de recursos y la compilación de archivos de sombreadores en SIG-V manualmente.
P: Tengo problemas con la gestión de activos en Visual Studio. ¿Algún consejo?
R: Consulte los problemas conocidos y la resolución de problemas de manejo de activos WRT, que ofrece pautas para los siguientes casos:
P: Se han implementado más recursos de los que he agregado a los filtros de Visual Studio. ¿Qué está sucediendo?
R: Algunos activos hacen referencia a otros activos internamente. Por ejemplo, los modelos 3D a menudo hacen referencia a imágenes o archivos de material (en el caso de los modelos .obj ). Estos "activos dependientes" también se implementan en el directorio de destino por Post Build Helper . Consulte la implementación de activos dependientes para obtener más detalles.
P: ¿Cuáles son las diferencias entre las configuraciones de construcción de depuración , versión y publicación ?
R: En términos de configuraciones de compilación, las configuraciones de lanzamiento y publicación son las mismas. Vinculan contra construcciones de liberación de bibliotecas. La configuración de depuración tiene configuraciones de depuración clásica configuradas para los proyectos y enlaces de Visual Studio contra las compilaciones de bibliotecas de depuración . Sin embargo, existe una diferencia entre las compilaciones de publicaciones y las compilaciones que no son publicaciones WRT la implementación de recursos. Consulte los enlaces/copias simbólicas dependiendo de la configuración de compilación para obtener más detalles.
P: Tengo problemas con la publicación de Build Helper . ¿Qué hacer?
R: Consulte Post Build Helper, que ofrece pautas para los siguientes casos:
can't fopen , o !RUNTIME ERROR! Couldn't load image from '...' o similar P: La aplicación tarda mucho en cargar activos como modelos e imágenes 3D. ¿Se puede acelerar?
R: Si se refiere a las compilaciones de depuración , puede configurar Post Build aelper para que implementa DLL de lanzamiento de algunas dependencias externas incluso para construcciones de depuración . Deben acelerar mucho la carga de activos. Para habilitar la implementación de DLL de lanzamiento , abra la configuración de Post Build Helper y habilite la opción "Siempre implementa DLL de lanzamiento".
P: Obtener cereal::Exception en cereal::loadBinary , o Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
R: Su archivo de caché serializado (por ejemplo, para sponza_and_terrain.fscene esto podría ser sponza_and_terrain.fscene.cache ) se ha corrompido (tal vez porque no estaba completamente escrito debido a un error previamente ocurrido en la aplicación, o porque la ejecución fue anulada). Elimine el archivo de caché (por ejemplo, sponza_and_terrain.fscene.cache ) y deje que se genere uno nuevo.