# SaschaWillems/Vulkan

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/saschawillems-vulkan).**

11,755 stars · 2,193 forks · GLSL · mit

## Links

- GitHub: https://github.com/SaschaWillems/Vulkan
- awesome-repositories: https://awesome-repositories.com/repository/saschawillems-vulkan.md

## Topics

`glsl` `hlsl` `slang` `vulkan` `vulkan-api`

## Description

This project is a comprehensive collection of educational resources and functional code samples designed to demonstrate modern graphics programming using the Vulkan API. It serves as a practical framework for developers to learn how to implement high-performance rendering pipelines, manage GPU resources, and execute complex graphics tasks across different hardware architectures.

The repository distinguishes itself by providing concrete implementations of advanced rendering techniques, including physically based materials, skeletal animation, and hardware-accelerated ray tracing. It emphasizes low-level control through explicit pipeline state management, command buffer recording, and efficient descriptor-based resource binding, allowing for granular optimization of the rendering process.

The project covers a broad spectrum of graphics capabilities, ranging from scene graph management and hierarchical node transformations to compute-driven geometry processing and post-processing effects. It includes utilities for memory-efficient data handling, such as direct buffer access and dynamic uniform buffer management, alongside techniques for realistic lighting and surface detail.

These examples are structured to guide developers through the complexities of modern graphics APIs, offering a clear reference for integrating compute shaders, managing multi-threaded command submission, and implementing sophisticated rendering algorithms in real-time applications.

## Tags

### Graphics & Multimedia

- [Graphics API Frameworks](https://awesome-repositories.com/f/graphics-multimedia/graphics-api-frameworks.md) — A collection of functional code samples demonstrating modern rendering techniques, compute shaders, and ray tracing using the Vulkan API.
- [Graphics Rendering APIs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/graphics-rendering-apis.md) — Demonstrates modern rendering pipelines and geometry processing using the Vulkan graphics API.
- [Hardware-Accelerated Ray Tracing](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/3d-intersection-ray-calculators/hardware-accelerated-ray-tracing.md) — The graphics engine integrates hardware-accelerated ray tracing for realistic lighting, reflections, and shadows within a real-time rendering environment. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/))
- [3D Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/3d-rendering-engines.md) — The graphics engine displays complex three-dimensional objects using vertex buffers and index buffers to define geometry and surface topology for real-time rendering. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gears))
- [Real-Time 3D Rendering Engines](https://awesome-repositories.com/f/graphics-multimedia/real-time-neural-renderers/real-time-3d-rendering-engines.md) — Implements physically based materials, skeletal animation, and advanced lighting in a high-performance rendering framework.
- [Screen Space Ambient Occlusion](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/lighting-systems/logit-space-lighting-adjusters/screen-space-ambient-occlusion.md) — The graphics engine calculates ambient occlusion in screen space by sampling depth and normal buffers to simulate realistic soft shadows in crevices and corners. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/ssao))
- [Physically Based Rendering Materials](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/physically-based-rendering-materials.md) — Simulates realistic surface appearances using material properties like roughness and metallic values.
- [Vertex Layout Definitions](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-pipeline-configurations/vertex-buffer-generators/vertex-layout-definitions.md) — Defines the structure and memory layout of vertex data to optimize GPU access patterns during the rendering pipeline. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/vertexattributes))
- [Adaptive Ray Marchers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/scene-renderers/adaptive-ray-marchers.md) — Integrates hardware-accelerated ray tracing for realistic lighting, reflections, and shadows.
- [Shader Resource Binders](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/shader-resource-binders.md) — Associates graphics buffers and textures with shaders via defined descriptor layouts.
- [Indirect Rendering Systems](https://awesome-repositories.com/f/graphics-multimedia/graphics-and-media/indirect-rendering-systems.md) — The graphics engine issues multiple draw calls for different geometries using parameters stored in a graphics buffer to reduce processor overhead for complex scenes. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/indirectdraw))
- [Dynamic Pipeline Generators](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/dynamic-pipeline-generators.md) — The graphics engine creates dynamic graphics pipelines based on individual material properties to handle varying rendering requirements like transparency and culling within a single shader. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfscenerendering))
- [Scene Renderers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/scene-renderers.md) — Loads and renders complex three-dimensional scenes from standard file formats using hierarchical node structures. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfscenerendering))
- [Compute Shader Dispatchers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/compute-shader-dispatchers.md) — Offloads vertex manipulation and culling tasks to general-purpose shader units on the graphics processor.
- [Skeletal Animation](https://awesome-repositories.com/f/graphics-multimedia/mesh-processing-apis/skeletal-animation.md) — Deforms 3D meshes using hierarchical bone structures and vertex weights to animate characters. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfskinning))
- [Cross-Platform Graphics Tooling](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-apis-bindings/cross-platform-graphics-tooling.md) — Provides resources for managing GPU resources and rendering pipelines across different hardware architectures.
- [Vertex Skinning Systems](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/graphics-pipeline-configurations/vertex-buffer-generators/vertex-skinning-systems.md) — Calculates final vertex positions in shaders by weighting vertex influences across multiple joints. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfskinning))
- [High Dynamic Range Rendering](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/systems/3d-graphics-pipelines/scene-renderers/high-quality-scene-rendering/high-dynamic-range-rendering.md) — The graphics engine calculates lighting using floating-point color values to preserve detail in both the brightest and darkest areas of a scene. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/hdr))
- [Interactive Scene Management Layers](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/interactive-scene-management-layers.md) — Coordinates object transformations and animation states to facilitate dynamic 3D application development. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gears))
- [Scene Graphs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/scene-management-systems/scene-graphs.md) — Organizes 3D entities into hierarchical tree structures to manage spatial transformations and property propagation. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfskinning))
- [Order Independent Transparency Techniques](https://awesome-repositories.com/f/graphics-multimedia/order-independent-transparency-techniques.md) — The graphics engine calculates pixel color by blending multiple overlapping semi-transparent surfaces without requiring manual sorting of geometry to ensure correct visual depth and layering. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/oit))
- [Bloom Effects](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/post-processing-effects/bloom-effects.md) — The graphics engine extracts bright areas from a scene into a separate buffer, applies a Gaussian blur, and composites them back to create a glowing light effect. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/bloom))
- [Mipmap Generation](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/shaders/compute-shader-dispatchers/mipmap-generation.md) — The graphics engine creates a complete mip-chain for a texture at runtime using image blits and barriers to improve rendering performance and visual stability. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/texturemipmapgen))
- [Keyframe Animations](https://awesome-repositories.com/f/graphics-multimedia/media-production-suites/animation-tools/keyframe-skeletal-systems/keyframe-animations.md) — Computes intermediate transformation values between animation keyframes using linear or spherical interpolation. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfskinning))

### Repository Format

- [Awesome List](https://awesome-repositories.com/f/repository-format/awesome-list.md) — A community-curated directory that catalogs and links out to other open-source projects, rather than a standalone tool you run yourself.

### Data & Databases

- [Dynamic Uniform Buffers](https://awesome-repositories.com/f/data-databases/data-buffering/gpu-buffer-allocators/buffer-content-updaters/dynamic-uniform-buffers.md) — The graphics engine consolidates multiple object data sets into a single memory buffer and applies dynamic offsets during binding to minimize descriptor overhead and accelerate updates. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/dynamicuniformbuffer))
- [Graphics Memory Mapping](https://awesome-repositories.com/f/data-databases/data-access-querying/memory-mapped-file-access/graphics-memory-mapping.md) — Facilitates high-speed data transfers between the processor and GPU by mapping graphics memory directly.

### Game Development

- [Deferred Command Encoders](https://awesome-repositories.com/f/game-development/engine-architecture/command-buffers/deferred-command-encoders.md) — Buffers graphics commands across multiple threads to improve rendering throughput and CPU utilization.

### Operating Systems & Systems Programming

- [Hardware Acceleration](https://awesome-repositories.com/f/operating-systems-systems-programming/hardware-interfacing-drivers/hardware-acceleration.md) — Utilizes dedicated silicon structures for real-time intersection testing and light path calculation.

### Software Engineering & Architecture

- [Graphics Pipeline State Objects](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/immutable-data-strategies/immutable-state-patterns/graphics-pipeline-state-objects.md) — Pre-compiles graphics states into immutable objects to allow hardware optimization before execution.
- [Binding Caching Strategies](https://awesome-repositories.com/f/software-engineering-architecture/performance-optimization-resources/binding-caching-strategies.md) — The graphics engine organizes complex data structures and memory allocations to streamline communication between the application and graphics hardware while reducing state change overhead. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/))

### Web Development

- [Texture Loaders](https://awesome-repositories.com/f/web-development/web-infrastructure-deployment/asset-management-build-tools/asset-loading-resolution/texture-loaders.md) — The graphics engine imports GPU-ready texture files directly from disk to improve loading performance and utilize pre-computed mipmap chains. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfscenerendering))

### User Interface & Experience

- [Tangent Space Normal Mapping](https://awesome-repositories.com/f/user-interface-experience/texture-mapping/tangent-space-normal-mapping.md) — The graphics engine enhances surface detail by calculating tangent space normals from loaded model data during the fragment shading process. ([source](https://github.com/SaschaWillems/Vulkan/tree/master/examples/gltfscenerendering))
