SaschaWillems/Vulkan

C++ examples for the Vulkan graphics API

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 39 minutes ago
Added to GitGenius on June 22nd, 2026
Created on June 21st, 2015
Open Issues & Pull Requests: 17 (+0)
Number of forks: 2,229
Total Stargazers: 12,126 (+0)
Total Subscribers: 391 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 8.4 hours
Mean response time: 34.8 days
90th percentile: 22.7 days
Tracked items: 85

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 13% of issues opened in the past year have been closed. Three people close 93% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 9
New in 7 days: 1
Closed in 7 days: 1
Avg open age: 354 days
Stale 30+ days: 9
Stale 90+ days: 8

Recent activity

Opened in 7 days: 0
Closed in 7 days: 1
Comments in 7 days: 1
Events in 7 days: 2

Top labels

  • validation (8)
  • Platform: Android (5)
  • Platform: MacOS (2)
  • bug (2)
  • Platform: Linux (1)
  • Vendor: NVIDIA (1)
  • help wanted (1)
  • question (1)

Most active issues this week

Detailed Description

The saschawillems/vulkan repository is a comprehensive collection of open source C++ examples and demonstrations for the Vulkan graphics API, maintained primarily by Sascha Willems. The repository serves as an educational resource for developers learning Vulkan, offering practical implementations across a wide range of graphics programming concepts and techniques. While Khronos has since released an official Vulkan Samples repository that Willems has been involved with, this repository continues to be actively maintained and contains examples that may not fit within the official collection.

The repository is organized into multiple categories of examples, starting with foundational concepts in the Basics section. These include simple triangle rendering using both Vulkan 1.0 and Vulkan 1.3, pipeline state objects, descriptor sets, dynamic uniform buffers, push constants, and specialization constants. The texture mapping examples cover 2D textures, texture arrays, cube maps, cube map arrays, and 3D textures with various sampling techniques. Additional basic examples demonstrate input attachments, sub passes, offscreen rendering, particle systems, stencil buffers, and vertex attributes.

The glTF section provides detailed implementations of the glTF 2.0 3D format, including model loading and rendering, vertex skinning with animation data, and complete scene rendering with complex materials and normal mapping. The Advanced section covers more sophisticated rendering techniques such as multisample anti-aliasing, alpha to coverage, high dynamic range rendering with bloom and tone mapping, and shadow mapping with depth bias and PCF filtering.

The repository includes specialized examples for compute shaders, geometry shaders, tessellation shaders, hardware accelerated ray tracing, headless rendering, user interface integration, visual effects, and various Vulkan extensions. Additional miscellaneous examples round out the collection with diverse graphics programming scenarios.

Shader support is a key feature of this repository. Examples are provided with GLSL as the primary shader language, with most samples also including Slang and HLSL shader sources to facilitate comparison between different shading languages. The Rust GPU project maintains separate Rust shader sources in an external repository. All shaders are compiled to SPIR-V, Vulkan's intermediate representation format.

The repository supports building and running on multiple platforms including Windows, Android, iOS, and macOS using MoltenVK, with all examples requiring a C++ compiler supporting C++20. The codebase contains submodules for external dependencies and assets, and comprehensive build documentation is provided. Command line options allow users to select specific GPUs and configure example behavior at runtime.