Repolode
sebbbi

sebbbi/NoGraphicsAPI

Biblioteca gráfica minimalista em C++20 para Metal 4 e Vulkan 1.4, que substitui buffers e descriptor sets por ponteiros de GPU e heaps de descritores.

Estrelas
1,699
Forks
60
Issues abertas
6
Último commit
há 7 horas

O que é?

NoGraphicsAPI é uma biblioteca gráfica de baixo nível em C++20 que implementa as ideias da proposta "No Graphics API", de Sebastian Aaltonen. Em vez de criar objetos de buffer, layouts de vértices e descriptor sets, as aplicações alocam memória de GPU em heaps, passam ponteiros de GPU de 64 bits para os shaders e referenciam texturas e samplers por índices em heaps de descritores gerenciados pela aplicação.

Cada draw ou dispatch recebe um único ponteiro de GPU para uma estrutura raiz compartilhada entre C++ e os shaders Slang. A estrutura pode conter ponteiros para dados de vértices, materiais e constantes, além de índices de texturas; assim, os vertex shaders buscam seus próprios vértices e não é preciso manter layouts de pipeline ou de bindings. As barreiras descrevem o trabalho produtor e consumidor, em vez de listas de transições de recursos, e a aplicação continua responsável pela alocação, pelo ciclo de vida e pela sincronização.

A biblioteca oferece suporte ao Metal 4 em dispositivos Apple silicon com macOS, iOS ou iPadOS 26 ou posterior, e ao Vulkan 1.4 com VK_EXT_descriptor_heap e VK_EXT_mesh_shader no Windows e Linux. Windows e macOS incluem exemplos com janela, enquanto no Linux o uso é atualmente headless.

Recursos principais

  • 01Aloca memória de GPU em heaps sem expor objetos de buffer; heaps mapeados fornecem endereços para CPU e GPU.
  • 02Os shaders acessam dados por meio de ponteiros de GPU tipados de 64 bits, compartilhados com estruturas C++.
  • 03Texturas e samplers bindless são indexados por heaps de descritores gerenciados pela aplicação.
  • 04Cada draw ou dispatch usa um único ponteiro raiz de GPU, dispensando layouts de descriptor sets e de pipeline.
  • 05Os shaders são escritos em Slang e compartilhados entre os backends Metal e Vulkan.

Casos de uso

  • Criar um renderer personalizado que precise de controle direto sobre a memória e os bindings da GPU.
  • Experimentar renderização bindless e layouts de dados dirigidos pela GPU no Metal 4 ou Vulkan 1.4.
  • Estudar uma implementação concreta das ideias de "No Graphics API" em C++ e Slang.

Início rápido

  1. 1

    Instale o Xcode 26 ou superior com o compilador Metal, o CMake e o Slang 2026.18.2 ou superior

  2. 2

    Configure o build com examples e tests ativados

    cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=macosx -DNOGRAPHICSAPI_BUILD_EXAMPLES=ON -DNOGRAPHICSAPI_BUILD_TESTS=ON -DNOGRAPHICSAPI_SLANGC=/path/to/slangc
  3. 3

    Faça o build do projeto

    cmake --build build
  4. 4

    Execute o exemplo triangle

    build/examples/triangle/example_triangle

Antes de usar

  • O backend Metal requer macOS, iOS ou iPadOS 26 ou superior e uma GPU Apple da família 7 ou mais recente; Macs com Intel não são compatíveis.
  • O backend Vulkan requer Vulkan 1.4, além de VK_EXT_descriptor_heap e VK_EXT_mesh_shader, extensões ausentes em muitas GPUs.
  • Atualmente, o Linux oferece suporte apenas ao uso headless, sem exemplos com janela.

Em coleções

Tópicos

Perguntas frequentes

O que é NoGraphicsAPI?
Biblioteca gráfica minimalista em C++20 para Metal 4 e Vulkan 1.4, que substitui buffers e descriptor sets por ponteiros de GPU e heaps de descritores. NoGraphicsAPI é uma biblioteca gráfica de baixo nível em C++20 que implementa as ideias da proposta "No Graphics API", de Sebastian Aaltonen. Em vez de criar objetos de buffer, layouts de vértices e descriptor sets, as aplicações alocam memória de GPU em heaps, passam ponteiros de GPU de 64 bits para os shaders e referenciam texturas e samplers por índices em heaps de descritores gerenciados pela aplicação.
NoGraphicsAPI é gratuito? Qual é a licença?
NoGraphicsAPI é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
NoGraphicsAPI ainda é mantido?
Manutenção ativa. O último commit de NoGraphicsAPI foi em 6 de nov. de 2026.
Para que posso usar NoGraphicsAPI?
Criar um renderer personalizado que precise de controle direto sobre a memória e os bindings da GPU. Experimentar renderização bindless e layouts de dados dirigidos pela GPU no Metal 4 ou Vulkan 1.4. Estudar uma implementação concreta das ideias de "No Graphics API" em C++ e Slang.
Como instalar NoGraphicsAPI?
Instale o Xcode 26 ou superior com o compilador Metal, o CMake e o Slang 2026.18.2 ou superior Configure o build com examples e tests ativados: cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_SYSROOT=macosx -DNOGRAPHICSAPI_BUILD_EXAMPLES=ON -DNOGRAPHICSAPI_BUILD_TESTS=ON -DNOGRAPHICSAPI_SLANGC=/path/to/slangc Faça o build do projeto: cmake --build build Execute o exemplo triangle: build/examples/triangle/example_triangle
Onde consigo NoGraphicsAPI?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/sebbbi/NoGraphicsAPI

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados