Repolode
sebbbi

sebbbi/NoGraphicsAPI

GPU 포인터와 디스크립터 힙을 사용해 버퍼와 디스크립터 세트를 대체하는 Metal 4 및 Vulkan 1.4용 최소한의 C++20 그래픽 라이브러리입니다.

스타
1,699
포크
60
열린 이슈
6
마지막 커밋
어제

어떤 프로젝트인가요?

NoGraphicsAPI는 Sebastian Aaltonen의 "No Graphics API" 제안에 담긴 아이디어를 구현한 저수준 C++20 그래픽 라이브러리입니다. 버퍼 객체, 버텍스 레이아웃, 디스크립터 세트를 만드는 대신, 애플리케이션은 힙에서 GPU 메모리를 할당하고 64비트 GPU 포인터를 셰이더에 전달하며, 애플리케이션이 소유한 디스크립터 힙의 인덱스로 텍스처와 샘플러를 참조합니다.

각 드로우 또는 디스패치는 C++와 Slang 셰이더가 공유하는 루트 구조체에 대한 GPU 포인터 하나를 받습니다. 이 구조체에는 버텍스 데이터, 머티리얼, 상수, 텍스처 인덱스에 대한 포인터를 담을 수 있어 버텍스 셰이더가 필요한 버텍스를 직접 가져오며, 파이프라인 레이아웃이나 바인딩 레이아웃을 관리할 필요가 없습니다. 배리어는 리소스 전환 목록이 아니라 생산자와 소비자 작업을 기술하며, 메모리 할당과 수명 관리, 동기화는 여전히 애플리케이션의 책임입니다.

이 라이브러리는 macOS, iOS 또는 iPadOS 26 이상을 실행하는 Apple silicon 기기에서 Metal 4를 지원하고, Windows와 Linux에서는 VK_EXT_descriptor_heap 및 VK_EXT_mesh_shader가 포함된 Vulkan 1.4를 지원합니다. Windows와 macOS에는 윈도우를 사용하는 예제가 있으며, Linux는 현재 헤드리스 사용을 지원합니다.

핵심 기능

  • 01공개 버퍼 객체 없이 힙에서 GPU 메모리를 할당하며, 매핑된 힙은 CPU와 GPU 주소를 모두 제공합니다.
  • 02셰이더는 C++ 구조체와 공유하는 타입이 지정된 64비트 GPU 포인터를 통해 데이터에 접근합니다.
  • 03바인드리스 텍스처와 샘플러는 애플리케이션이 소유한 디스크립터 힙의 인덱스로 참조합니다.
  • 04각 드로우 또는 디스패치는 GPU 루트 포인터 하나를 사용해 디스크립터 세트와 파이프라인 레이아웃을 없앱니다.
  • 05셰이더는 Slang으로 작성하며 Metal과 Vulkan 백엔드에서 공유합니다.

활용 사례

  • GPU 메모리와 바인딩을 직접 제어하려는 커스텀 렌더러를 개발하는 경우.
  • Metal 4 또는 Vulkan 1.4에서 바인드리스 렌더링과 GPU 기반 데이터 레이아웃을 실험하는 경우.
  • C++와 Slang으로 구현한 "No Graphics API" 아이디어의 구체적인 사례를 살펴보는 경우.

빠른 시작

  1. 1

    Metal 컴파일러가 포함된 Xcode 26 이상, CMake, Slang 2026.18.2 이상을 설치합니다

  2. 2

    examples와 tests를 활성화해 빌드를 구성합니다

    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

    프로젝트를 빌드합니다

    cmake --build build
  4. 4

    triangle 예제를 실행합니다

    build/examples/triangle/example_triangle

사용 전 알아둘 점

  • Metal 백엔드에는 macOS, iOS 또는 iPadOS 26 이상과 Apple GPU 제품군 7 이상이 필요합니다. Intel Mac은 지원되지 않습니다.
  • Vulkan 백엔드에는 Vulkan 1.4와 VK_EXT_descriptor_heap, VK_EXT_mesh_shader가 필요하지만, 이를 지원하지 않는 GPU가 많습니다.
  • Linux는 현재 헤드리스 사용만 지원하며, 창을 표시하는 예제는 없습니다.

포함된 컬렉션

토픽

자주 묻는 질문

NoGraphicsAPI은(는) 무엇인가요?
GPU 포인터와 디스크립터 힙을 사용해 버퍼와 디스크립터 세트를 대체하는 Metal 4 및 Vulkan 1.4용 최소한의 C++20 그래픽 라이브러리입니다. NoGraphicsAPI는 Sebastian Aaltonen의 "No Graphics API" 제안에 담긴 아이디어를 구현한 저수준 C++20 그래픽 라이브러리입니다. 버퍼 객체, 버텍스 레이아웃, 디스크립터 세트를 만드는 대신, 애플리케이션은 힙에서 GPU 메모리를 할당하고 64비트 GPU 포인터를 셰이더에 전달하며, 애플리케이션이 소유한 디스크립터 힙의 인덱스로 텍스처와 샘플러를 참조합니다.
NoGraphicsAPI은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
NoGraphicsAPI은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
NoGraphicsAPI은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. NoGraphicsAPI의 마지막 커밋은 2026년 11월 6일입니다.
NoGraphicsAPI은(는) 어디에 사용할 수 있나요?
GPU 메모리와 바인딩을 직접 제어하려는 커스텀 렌더러를 개발하는 경우. Metal 4 또는 Vulkan 1.4에서 바인드리스 렌더링과 GPU 기반 데이터 레이아웃을 실험하는 경우. C++와 Slang으로 구현한 "No Graphics API" 아이디어의 구체적인 사례를 살펴보는 경우.
NoGraphicsAPI는 어떻게 설치하나요?
Metal 컴파일러가 포함된 Xcode 26 이상, CMake, Slang 2026.18.2 이상을 설치합니다 examples와 tests를 활성화해 빌드를 구성합니다: 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 프로젝트를 빌드합니다: cmake --build build triangle 예제를 실행합니다: build/examples/triangle/example_triangle
NoGraphicsAPI은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/sebbbi/NoGraphicsAPI

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트