Auto-VK-Toolkit é uma estrutura para a API de gráficos Vulkan, implementada no C ++ moderno. O objetivo é atingir o ponto ideal entre a conveniência do programador e a eficiência, enquanto ainda suporta a funcionalidade completa da Vulkan. Para atingir esse objetivo, essa estrutura usa o Auto-VK , uma camada de conveniência e produtividade no topo de Vulkan-HPP.
Auto-VK-Toolkit tem sido usada com sucesso para prototipagem rápida, pesquisa (por exemplo, limites conservadores de malha para abate robustos de malhas esfoladas, renderização rápida de objetos paramétricos nas GPUs modernas) e ensino (por exemplo, algoritmos para renderização em tempo real).

Esta imagem mostra algum trabalho que foi desenvolvido usando auto-vk-toolkit (da esquerda para a direita): uso em um curso de gráficos avançados para ensinar conceitos modernos de GPU de baixo nível; visualização de 19.600 glifos de harmônicos esféricos de uma varredura cerebral; Divisão de malhas em malhetas e tornando-as com visualização de granulação fina e abate de backface nos shaders de tarefas e malha; Ray rastreia sombras e reflexões usando as extensões de dispositivos de rastreamento de raios em tempo real acelerados por hardware; renderização de 358k curvas de fibra definidas parametricamente em tempo real.
Algumas de suas características de destaque (além dos impressionantes características do Auto-VK ) incluem:
update() e render() retornos de chamada em horários de atualização variados ou fixa.avk::root , com manuseio de cadeia de troca e gerenciamento automático de vida útil..fscene do Orca: Open Research Content Archive.avk:buffer ou avk::image Instâncias e também tipos personalizados; baseado em cereais. Auto-VK-Toolkit está pronto para ir com o Visual Studio ou Cmake. Se o seu sistema atender aos requisitos do sistema, tudo será configurado para criar uma corrida imediatamente. Por exemplo, para o Visual Studio, open visual_studio/auto_vk_toolkit.sln , defina um dos projetos de exemplo como projeto de inicialização, construir e executar!
Dica: a versão na filial de desenvolvimento pode estar mais atualizada e conter recursos e correções adicionais. Por favor, considere usar essa versão, especialmente se você encontrar problemas.
Nota: Na primeira execução, a ferramenta Post Build Helper está sendo construída. Assista à guia "saída" do Visual Studio para mensagens de status e possíveis instruções.
Uma configuração de projeto pré -configurada é fornecida para o Visual Studio 2022 no Windows.
visual_studio/README.md .)git submodule update --init para puxar a estrutura Auto-VK , que é adicionada como um submódulo sob auto_vkVulkan Memory Allocator header. Opção para que a biblioteca Alocador de Memória Vulkan (VMA) seja instalada.maintenancetool.exe no Windows) selecionando o Vulkan Memory Allocator header. opção.Desktop development with C++ no instalador!Tools -> Options -> GLSL language integration . Para o desenvolvimento de shader vulkan, defina Live compiling como False (apenas destaque da sintaxe) ou defina o External compiler executable file , por exemplo, o caminho para glslangValidator.exe !visual_studio/auto_vk_toolkit.sln e construa a soluçãoOutput do Visual Studio, algumas mensagens pop -up e um ícone na bandeja do sistema. Por favor, dê uma olhada na seção de recursos de recursos e no ajudante de compilação para obter informações adicionais.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit para adicionar auto-vk-toolkit como submodule no diretório auto_vk_toolkit .git submodule update --init --recursive para puxar os dois, auto-vk-toolkit e auto-VK .Por favor, consulte Docs/cmake.md!
| Olá mundo | Várias filas | Calcule o processamento da imagem | Carregador orca |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Vários aplicativos de exemplo estão incluídos neste repositório:
.fscene e renderizá -los; também como usar o serializador| Meshetas com pele | Ray Query e Ray Rating | Interseção personalizada RTX | Textura cubemap |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Para projetos do Visual Studio, existe uma ferramenta de conveniência no visual_studio/tools/executables/ que pode ajudar a configurar rapidamente um novo projeto copiando um existente (por exemplo, um dos aplicativos de exemplo): create_new_project.exe
Use -o como segue para criar uma cópia de um projeto existente:
create_new_project.exe e selecione um dos aplicativos de exemplo ou insira o caminho para o projeto a ser copiado manualmente.auto_vk_toolkit.vxcproj à sua solução Visual Studio e garanta que a cópia do projeto recém-criada faça referência a ela..cpp contendo uma função main() .#include <auto_vk_toolkit.hpp> para usar auto-vk-toolkit . Uma boa estratégia é adicionar auto-vk-toolkit como um submódulo Git ao seu repositório e usar create_new_project.exe e as etapas acima para criar um projeto configurado corretamente em um diretório fora do submódulo. Certifique-se de atualizar frequentemente o submódulo, retirando-se da filial master do Auto-VK-Toolkit para obter as atualizações mais recentes.
Os projetos do Visual Studio do Auto-VK-Toolkit são configurados para que o próprio Visual Studio possa ser elegantemente usado para gerenciamento de recursos. Isso significa que os ativos necessários (modelos 3D, imagens, arquivos de cena orca) e arquivos de shader podem ser adicionados apenas aos filtros do Visual Studio na visualização "Solution Explorer" e uma ferramenta Smart Post Build Helper garante que esses recursos sejam implantados no diretório de destino do aplicativo.
Em curto/ tl; dr :
assets eshaders filtram diretamente no Visual Studio. Em seguida, crie o aplicativo, aguarde o auxiliar de compilação do post implantar esses recursos no diretório de destino e execute seu aplicativo! Isso pode parecer seguinte, onde os filtros assets e shaders têm significado especial, como sugerido acima: 
Uma explicação mais detalhada e instruções adicionais são fornecidas em visual_studio/README.md .
Você notará a atividade do Helper Helper por meio do ícone da bandeja:
. A ferramenta permanecerá ativa após o término da implantação por dois motivos principais:
Para obter mais informações sobre o ajudante de compilação do Post Build , consulte a seção Post Build Helper e para obter mais informações sobre o recarregamento a quente do Shader, consulte a seção Automatic Recursos-Updates abaixo.
O Auto-VK é uma camada de conveniência e produtividade de conveniência e produtividade da plataforma no topo de Vulkan-HPP.
Auto-vk-toolkit estabelece o link que falta para o sistema operacional, como o manuseio de janelas, e adiciona mais funcionalidade:
VK_KHR_ray_tracing_pipeline for usado, ele seleciona um dispositivo físico apropriado e permite sinalizadores e extensões necessários)avk::invokee (como initialize() , update() , render() , onde o primeiro é chamado apenas uma vez e os dois últimos são invocados cada quadro)avk::transformavk::quake_camera e avk::orbit_camera (derivado de ambos, avk::transform e avk::invokee )avk::material e a vk::material_gpu_data )avk::lightsource e avk::lightsource_gpu_data )[->VS] para navegar até a linha que contém o erro no Visual Studio.Existem algumas páginas de documentação contendo mais informações:
avk::updater , permitindo que a recreação e recarregamento quente do shader Shwapchain P: Pode ser usado automaticamente o Linux?
A: Sim. Consulte a documentação do CMake em docs/cmake.md!
P: Pode ser usado automaticamente o Auto-VK-Toolkit sem o ajudante de compilação ?
A: Sim. O ajudante de compilação de post é uma ferramenta de conveniência que lida com a implantação de recursos, dependências de ativos e também atualizações de arquivos (úteis para recarregamento a quente do shader, dependendo da estrutura do projeto). Se você não estiver usando, precisará gerenciar a implantação de recursos e a compilação de arquivos de shader no SPIR-V manualmente.
P: Tenho problemas com o gerenciamento de ativos no Visual Studio. Algum conselho?
R: Confira problemas conhecidos e solução de problemas de ativos da WRT, que oferece diretrizes para os seguintes casos:
P: Mais recursos foram implantados do que eu adicionei aos filtros do Visual Studio. O que está acontecendo?
R: Alguns ativos fazem referência a outros ativos internamente. Por exemplo, os modelos 3D geralmente referenciam imagens ou arquivos de material (em caso de modelos .obj ). Esses "ativos dependentes" também são implantados no diretório de destino pelo ajudante de construção . Consulte a implantação de ativos dependentes para obter mais detalhes.
P: Quais são as diferenças entre depuração , lançamento e publicação de configurações de construção?
R: Em termos de configurações de compilação, as configurações de liberação e publicação são as mesmas. Eles vinculam as compilações de liberação de bibliotecas. A configuração de depuração tem configurações clássicas de depuração configuradas para os projetos e links do Visual Studio contra construções de depuração de bibliotecas. Há, no entanto, uma diferença entre as compilações publicadas e as compilações não publicadas , a implantação de recursos. Consulte Links/cópias simbólicas, dependendo da configuração de construção para obter mais detalhes.
P: Tenho problemas com o ajudante de construção . O que fazer?
R: Confira o Helper Post Build, que oferece diretrizes para os seguintes casos:
can't fopen ou !RUNTIME ERROR! Couldn't load image from '...' ou similar P: O aplicativo leva muito tempo para carregar ativos como modelos e imagens 3D. Pode ser acelerado?
R: Se você estiver se referindo ao Debug Builds, poderá configurar o Helper Post Build para que ele implante DLLs de liberação de algumas dependências externas, mesmo para construções de depuração . Eles devem acelerar muito o carregamento de ativos. Para permitir a implantação das DLLs de liberação , abra as configurações do post Build Helper e ative a opção "Sempre implante DLLs de liberação".
P: Obtendo cereal::Exception em cereal::loadBinary ou Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
R: Seu arquivo de cache serializado (por exemplo, para sponza_and_terrain.fscene , isso pode ser sponza_and_terrain.fscene.cache ) se tornou corrupto (talvez porque não tenha sido totalmente escrito devido a um erro anteriormente ocorrido no aplicativo ou porque a execução foi abortada). Exclua o arquivo de cache (por exemplo, sponza_and_terrain.fscene.cache ) e deixe um novo ser gerado!