Convert Figma logo to code with AI

vinjn logoawesome-vulkan

Awesome Vulkan ecosystem

3,263
275
3,263
2

Top Related Projects

One stop solution for all Vulkan samples

10,285

C++ examples for the Vulkan graphics API

Easy to integrate Vulkan memory allocation library

One stop shop for getting started with the Vulkan API

Ray tracing examples and tutorials using VK_KHR_ray_tracing

Quick Overview

The "awesome-vulkan" repository is a curated list of Vulkan resources, tools, tutorials, and related projects. It serves as a comprehensive collection for developers interested in learning about or working with the Vulkan graphics and compute API. The repository aims to be a one-stop reference for Vulkan enthusiasts and professionals.

Pros

  • Extensive collection of Vulkan-related resources in one place
  • Regularly updated with new content and contributions from the community
  • Well-organized structure, making it easy to find specific types of resources
  • Includes resources for various skill levels, from beginners to advanced users

Cons

  • May be overwhelming for newcomers due to the sheer amount of information
  • Some links may become outdated over time if not regularly maintained
  • Lacks in-depth explanations or comparisons of listed resources
  • May not cover all niche or specialized Vulkan use cases

Note: As this is not a code library, the code examples and getting started instructions sections have been omitted.

Competitor Comparisons

One stop solution for all Vulkan samples

Pros of Vulkan-Samples

  • Official repository by Khronos Group, ensuring high-quality and up-to-date samples
  • Comprehensive collection of Vulkan samples covering various aspects of the API
  • Includes performance best practices and optimization techniques

Cons of Vulkan-Samples

  • Focused solely on code samples, lacking curated lists of external resources
  • May be overwhelming for beginners due to its comprehensive nature
  • Limited to C++ implementations, not covering other language bindings

Code Comparison

Vulkan-Samples (C++):

VkCommandBufferBeginInfo beginInfo = {};
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
vkBeginCommandBuffer(commandBuffer, &beginInfo);

awesome-vulkan (Python with vulkan-cffi):

begin_info = vk.VkCommandBufferBeginInfo(
    sType=vk.VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
    flags=vk.VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
)
vk.vkBeginCommandBuffer(command_buffer, begin_info)

Summary

Vulkan-Samples provides official, high-quality C++ samples with best practices, while awesome-vulkan offers a curated list of Vulkan resources across multiple languages and platforms. Vulkan-Samples is better for in-depth C++ examples, while awesome-vulkan is more suitable for discovering a wide range of Vulkan-related projects and learning materials.

10,285

C++ examples for the Vulkan graphics API

Pros of Vulkan

  • Comprehensive collection of Vulkan examples and demos
  • Well-documented code with detailed explanations
  • Regularly updated with new features and improvements

Cons of Vulkan

  • Focused solely on Vulkan, lacking broader graphics API coverage
  • May be overwhelming for beginners due to its depth and complexity
  • Requires more setup and configuration compared to a curated list

Code Comparison

Vulkan example (basic triangle rendering):

void buildCommandBuffers()
{
    VkCommandBufferBeginInfo cmdBufInfo = {};
    cmdBufInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;

    VkClearValue clearValues[2];
    clearValues[0].color = { 0.0f, 0.0f, 0.2f, 1.0f };
    clearValues[1].depthStencil = { 1.0f, 0 };
}

awesome-vulkan doesn't contain code examples, as it's a curated list of resources.

Summary

Vulkan provides in-depth, practical examples and demos for Vulkan development, while awesome-vulkan offers a comprehensive list of Vulkan resources, tools, and libraries. Vulkan is better suited for developers looking to dive deep into Vulkan programming, while awesome-vulkan serves as an excellent starting point for exploring the Vulkan ecosystem and finding relevant resources.

Easy to integrate Vulkan memory allocation library

Pros of VulkanMemoryAllocator

  • Specialized library focused on efficient memory allocation in Vulkan
  • Provides optimized algorithms for memory management
  • Actively maintained by AMD GPUOpen team

Cons of VulkanMemoryAllocator

  • Limited scope compared to awesome-vulkan's comprehensive resource list
  • Requires integration into existing Vulkan projects
  • May have a steeper learning curve for beginners

Code Comparison

VulkanMemoryAllocator:

VmaAllocatorCreateInfo allocatorInfo = {};
allocatorInfo.physicalDevice = physicalDevice;
allocatorInfo.device = device;
vmaCreateAllocator(&allocatorInfo, &allocator);

awesome-vulkan (example from a linked resource):

VkMemoryAllocateInfo allocInfo = {};
allocInfo.sType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO;
allocInfo.allocationSize = memRequirements.size;
allocInfo.memoryTypeIndex = findMemoryType(memRequirements.memoryTypeBits, properties);

VulkanMemoryAllocator offers a more abstracted and optimized approach to memory allocation, while awesome-vulkan provides a curated list of resources that may include various memory management techniques.

One stop shop for getting started with the Vulkan API

Pros of Vulkan-Guide

  • Official guide maintained by Khronos Group, ensuring up-to-date and accurate information
  • Comprehensive coverage of Vulkan concepts, best practices, and implementation details
  • Structured learning path with clear progression from basics to advanced topics

Cons of Vulkan-Guide

  • Less focus on third-party resources and community-contributed content
  • May not cover as wide a range of Vulkan-related tools and libraries
  • More formal and technical in nature, potentially less accessible for beginners

Code Comparison

Vulkan-Guide provides more detailed code examples and explanations:

VkCommandBufferBeginInfo beginInfo = {};
beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT;
vkBeginCommandBuffer(commandBuffer, &beginInfo);

awesome-vulkan typically offers shorter code snippets or links to external resources:

VkCommandBufferBeginInfo beginInfo = { VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO };
vkBeginCommandBuffer(commandBuffer, &beginInfo);

While both repositories provide valuable information for Vulkan developers, Vulkan-Guide offers a more structured and official approach to learning Vulkan, whereas awesome-vulkan serves as a curated list of resources and tools for the Vulkan ecosystem.

Ray tracing examples and tutorials using VK_KHR_ray_tracing

Pros of vk_raytracing_tutorial_KHR

  • Focused specifically on Vulkan ray tracing, providing in-depth tutorials and examples
  • Includes practical, hands-on code samples for implementing ray tracing in Vulkan
  • Maintained by NVIDIA, ensuring up-to-date information and best practices

Cons of vk_raytracing_tutorial_KHR

  • Limited scope, covering only ray tracing aspects of Vulkan
  • May not be suitable for beginners looking for a broad overview of Vulkan
  • Less comprehensive in terms of general Vulkan resources and tools

Code Comparison

vk_raytracing_tutorial_KHR:

void createRtDescriptorSet()
{
  m_rtDescSetLayoutBind.addBinding(0, VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, 1, VK_SHADER_STAGE_RAYGEN_BIT_KHR);
  m_rtDescSetLayoutBind.addBinding(1, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, 1, VK_SHADER_STAGE_RAYGEN_BIT_KHR);
  m_rtDescSetLayout = m_rtDescSetLayoutBind.createLayout(m_device);
  m_rtDescPool      = m_rtDescSetLayoutBind.createPool(m_device);
  m_rtDescSet       = nvvk::allocateDescriptorSet(m_device, m_rtDescPool, m_rtDescSetLayout);
}

awesome-vulkan:

// No direct code comparison available as awesome-vulkan is a curated list of resources,
// not a code repository. It provides links to various Vulkan-related projects and tutorials.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Awesome Vulkan Awesome

Vulkan demo scene

A curated list of awesome Vulkan libraries, debuggers and resources. Inspired by awesome-opengl and other awesome-... stuff.

Hardware Support

SDK

Document

Tutorial

Apps

Samples

Libraries

  • 2D

    • imgui - Immediate Mode Graphical User interface. [MIT]
    • Skia - Google's 2D graphics library has a Vulkan backend, demonstrated in a cross-platform sample application with its own window library. [BSD 3-clause] website
    • VKVG - Vulkan 2D graphics library, API follows the same pattern as Cairo graphics lib, but with new functions.
  • Compute

    • libvc - Vulkan Compute for C++. [LICENSE]
    • Vulkan Kompute - Blazing fast and lightweight Vulkan Compute Framework optimized for advanced GPU processing usecases. [Apache License 2.0]
    • ncnn - High-performance neural network inference framework with Vulkan based GPU inference. [BSD 3-clause]
    • vuh - Vulkan-based C++ GPGPU computing framework. [MIT]
    • VkFFT - Efficient Vulkan FFT library [MPL-2.0 License]
  • Low Level

    • Vulkan Memory Allocator - Easy to integrate Vulkan memory allocation library from AMD. [MIT]
    • Fossilize - serialization format for various persistent Vulkan object types. [MIT]
    • vk-bootstrap - C++ utility library to jump start Vulkan development by automating instance, physical device, device, and swapchain creation. [MIT]
    • Google's vulkan-cpp-library - Vulkan abstraction library using C++11 for memory, resource management, type and thread safety as well as system independency. [Apache]
    • FrameGraph - Vulkan abstraction layer that represent frame as a task graph. [BSD 2-clause]
    • V-EZ - light-weight middleware layer for the Vulkan API targeting Professional Workstation ISVs. [MIT]
    • Vookoo - Vookoo is a set of dependency-free utilities to assist in the construction and updating of Vulkan graphics data structres. [MIT]
    • vpp - Modern C++ Vulkan Abstraction focused on performance and a straightforward interface. [MIT]
    • VulkanSceneGraph - Vulkan/C++17 scene graph project, successor to OpenSceneGraph.
    • Vulkan-WSIWindow - Multi-platform library to create a Vulkan window, and handle input events. [Apache License 2.0]
    • Screen 13 - An easy-to-use Vulkan render graph for Rust. [MIT]
  • Frameworks, Engines, Higher Level Rendering

    • Acid - A high speed C++17 Vulkan game engine. [MIT]
    • AMD's Anvil - cross-platform framework for Vulkan. [LICENSE]
    • Auto-Vk - Vulkan convenience and productivity layer for modern C++, atop Vulkan-Hpp, by the Research Unit of Computer Graphics, TU Wien. [MIT]
    • Auto-Vk-Toolkit - C++ framework around Auto-Vk for rapid prototyping, research, and teaching, by the Research Unit of Computer Graphics, TU Wien. [MIT for the framework's code]
    • bgfx - Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library. [BSD-2-clause]
    • bsf - Modern C++14 library for the development of real-time graphical applications. [MIT]
    • Cinder and the story behind. [BSD]
    • DemoFramework - NXP GTEC C++11 cross-platform demo framework including lots of samples for Vulkan, OpenGL ES, OpenVX, OpenCL, OpenVG and OpenCV. [BSD-3-clause]
    • Diligent Engine - a modern cross-platform low-level graphics library that supports OpenGL/GLES, Direct3D11/12 and Vulkan. [Apache License 2.0]
    • Falcor - Real-time rendering framework from NVIDIA, supporting mainly DX12, with experimental Vulkan support. [BSD 3-clause]
    • glfw and the guide. [LICENSE]
    • Intrinsic Engine - Intrinsic is a Vulkan based cross-platform graphics and game engine. [Apache License 2.0]
    • Introductory Vulkan sample by GPUOpen. [MIT]
    • liblava - A modern C++ and easy-to-use framework. [MIT]
    • Logi - Light-weight object oriented Vulkan abstraction framework. [BSD 2-clause]
    • Lugdunum - Modern cross-platform 3D rendering engine built with Vulkan and modern C++14. [MIT]
    • openFrameworks - the most famouse C++ creative coding framework. [MIT]
    • PowerVR SDK - C++ cross-platform 3D graphics SDK to speed up development of Vulkan and GLES. [LICENSE]
    • Pumex - cross-platform Vulkan renderer implementing frame graph and simple scene graph. Able to render on many surfaces at once [MIT]
    • SDL - added cross-platform Vulkan graphics support in SDL_vulkan.h. [zlib]
    • small3d, Tiny Vulkan based C++ cross-platform game development framework [BSD 3-clause]
    • Spectrum - Work-in-progress framework and abstraction layer around Vulkan.
    • Tephra - A modern C++17 graphics and compute library filling the gap between Vulkan and high-level APIs like OpenGL. [MIT]
    • The-Forge - DirectX 12, Vulkan, macOS Metal 2 rendering framework. [Apache License 2.0]
    • VKFS - Cross-platform easy-to-use C++ framework that allows you to quickly initialize Vulkan and get a ready-made environment. Provides high-level abstraction over basic Vulkan objects.
    • Vulkan Launchpad - Vulkan framework for Windows, macOS, and Linux. Especially well-suited for Vulkan beginners, used in university education, by the Research Unit of Computer Graphics, TU Wien. [MIT]
  • Other API Interop and Implementations

    • visor - Vulkan Ignoble Software Rasterizer. [MIT]
    • VulkanOnD3D12 - Vulkan API for D3D12. [Apache License 2.0]
    • rostkatze - C++ implementation of Vulkan sitting on D3D12 🐈[Apache License 2.0]
    • VK9 - Direct3D 9 compatibility layer using Vulkan
    • VUDA - header-only lib that provides a CUDA Runtime API interface. [MIT]
    • clspv - prototype compiler for a subset of OpenCL C to Vulkan compute shaders. [Apache License 2.0]
    • MoltenVK - run Vulkan on iOS and macOS. [Apache-2.0]
    • Zink - OpenGL implementation on top of Vulkan, part of Mesa project. [MIT]
    • glo / OpenGL Overload - OpenGL implementation on top of Vulkan.
    • gfx-portability - Vulkan Portability implementation on Metal and D3D12, based on gfx-rs.
  • Raytracing

    • Quartz - Physically based Vulkan RTX path tracer with a declarative ES7-like scene description language. [LGPL-3.0]
  • Scientific

    • datoviz - High-performance GPU interactive scientific data visualization with Vulkan. [MIT]
    • iMSTK - C++ toolkit for building surgical simulations with Vulkan and VTK backends. [Apache License 2.0]
  • Shaders

    • glslang - Library for compiling glsl to spirv [BSD 3-Clause]
    • SPIRV-Cross - Library for reflection of spirv, simplify the creation of Vulkan pipeline layouts [ Apache-2.0 License]
  • Outdated ⚠️

Bindings

  • ash - Vulkan bindings for Rust. [MIT]
  • gfx-rs - A low-overhead Vulkan-like GPU API for Rust. [Apache License 2.0]
  • libvulkan.lua - Lua bindings for Vulkan.
  • dvulkan - Auto-generated D bindings for Vulkan.
  • ErupteD - Another Auto-generated D bindings for Vulkan.
  • flextGL - Minimal Vulkan header/loader generator and the blog post about it.
  • Silk.NET - C# bindings for Vulkan and others. [MIT]
  • vulkan - Haskell bindings for Vulkan and Vulkan Memory Allocator [BSD-3-Clause]
  • nvk - JavaScript bindings for Vulkan. [MIT]
  • racket-vulkan - Racket bindings for Vulkan with detailed implementation notes. [MIT]
  • Vulkan-hpp Open-Source Vulkan C++ API originated from NVIDIA and the blog about it.
  • VulkanSharp - C# bindings for Vulkan. [MIT]
  • Vulkano - Safe and rich Rust wrapper around the Vulkan API. [MIT]
  • LWJGL - Lightweight Java Game Library 3 has Vulkan bindings. [BSD]
  • SharpVk - C# bindings for Vulkan with Linq-to-SPIR-V & NuGet package. [MIT]
  • vulkan - Ultimate Python bindings for Vulkan generated with CFFI. [Apache Licence 2.0]
  • vulkan-go - Go bindings for Vulkan. [MIT]
  • PasVulkan - Vulkan bindings plus high-level wrapper library for Object Pascal [Zlib]
  • vulkan-zig - Vulkan binding generator for Zig [MIT]
  • VK², Kotlin Wrapper for Vulkan: code expressiveness and safety meet graphic power [Apache License 2.0]
  • Vortice.Vulkan - .NET Standard 2.0 and .NET5 C# bindings [MIT]
  • Raw Node.js Vulkan API - A new Vulkan bindings for Node.JS, similar with LWJGL-3 or NVK.
  • Deno Vulkan - Vulkan API bindings for Deno. [Apache Licence 2.0]

Tools

  • Nsight™ Visual Studio Edition 5.2+.
  • LoaderAndValidationLayers - from KhronosGroup. [Apache Licence 2.0]
  • renderdoc - by baldurk, a stand-alone graphics debugging tool. [MIT]
    • RDCtoVkCpp - converts RenderDoc Vulkan capture to compilable and executable C++ code. [MIT]
  • VulkanTools - LunarG's tools including layers and configurator. [Apache Licence 2.0]
  • VKtracer - universal and easy-to-use profiler for Vulkan.
  • CodeXL - CodeXL goes open source. [MIT]
  • Qualcomm Adreno GPU Tools - samples, Adreno recommendation layer, best practice docs for Adreno GPU.
  • Qualcomm Snapdragon Profiler - includes Vulkan traces and frame captures for Adreno GPU.
  • Arm Mobile Studio - includes the Arm Graphics Analyzer to trace graphics performance issues easily, and Arm Streamline performance analyzer, for a whole-system view of performance to determine bottlenecks quickly across both the CPU and GPU.
  • Open Capture and Analytics Tool (OCAT) - provides an FPS overlay and performance measurement for D3D11, D3D12, and Vulkan. [MIT]
  • gapid - Graphics API Debugger, can trace and replay Android OpenGL ES and Vulkan applications. [Apache License 2.0]
  • Arm - PerfDoc - a validation layer against the Mali Application Developer Best Practices document. [MIT]
  • glsl_trace - library for shader debugging and profiling for Vulkan and OpenGL. [MIT]
  • MangoHud - Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load. [MIT]

Books

Papers

Khronos

Community

Related lists

  • awesome - Curated list of awesome lists.
  • awesome-opengl - Curated list of awesome OpenGL libraries, debuggers and resources.
  • gamedev - Awesome list about game development.
  • graphics-resources - List of graphic programming resources.
  • awesome-d3d12 - Curated list of awesome D3D12 libraries, debuggers and resources.

License

Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 International License.

Contributing

Please see CONTRIBUTING for details.