Vulkan White Label
Specs
Vulkan API GLSL HLSL
Education
Vulkan Reference Pages Vulkan Feature Descriptions Vulkan Guide Vulkan Samples Vulkan Tutorial YouTube More Info at Vulkan.org
Feedback
Report a Problem
Community
Vulkan Discord Reddit Stack Overflow Mastodon

Khronos Vulkan Tutorial

    • Introduction
    • Overview
    • Development environment
    • Drawing a triangle
      • Setup
        • Base Code
        • Instance
        • Validation layers
        • Physical devices and queue families
        • Logical device and queues
      • Presentation
        • Window surface
        • Swap chain
        • Image views
      • Graphics pipeline basics
        • Introduction
        • Shader modules
        • Fixed functions
        • Dynamic rendering
        • Conclusion
      • Drawing
        • Dynamic rendering
        • Command buffers
        • Rendering and presentation
        • Frames in flight
      • Swap chain recreation
    • Vertex buffers
      • Vertex input description
      • Vertex buffer creation
      • Staging buffer
      • Index buffer
    • Uniform buffers
      • Descriptor layout and buffer
      • Descriptor pool and sets
    • Texture mapping
      • Images
      • Image view and sampler
      • Combined image sampler
    • Depth buffering
    • Loading models
    • Generating Mipmaps
    • Multisampling
    • Compute Shader
    • Ecosystem Utilities and GPU Compatibility
    • Vulkan Profiles
    • Android
    • Migrating to Modern Asset Formats: glTF and KTX2
    • Rendering Multiple Objects
    • Multithreading
    • Ray Tracing
      • Overview
      • Dynamic rendering
      • Acceleration structures
      • Ray query shadows
      • TLAS animation
      • Shadow transparency
      • Reflections
      • Conclusion
    • How to write a Vulkan application in 2026
    • Building a Simple Engine
      • Introduction
      • Engine Architecture
        • Introduction
        • Architectural patterns
        • Component systems
        • Resource management
        • Rendering pipeline
        • Event systems
        • Conclusion
      • Camera Transformations
        • Introduction
        • Math foundations
        • Transformation matrices
        • Camera implementation
        • Vulkan integration
        • Conclusion
      • Lighting & Materials
        • Introduction
        • Lighting models
        • Push constants
        • Lighting implementation
        • Vulkan integration
        • Shadows
        • Conclusion
      • GUI
        • Introduction
        • ImGui setup
        • Input handling
        • UI elements
        • Vulkan integration
        • Conclusion
      • Loading Models
        • Introduction
        • Project setup
        • Model system
        • Loading glTF
        • PBR rendering
        • Multiple objects
        • Scene rendering
        • Animations
        • Conclusion
      • Subsystems
        • Introduction
        • Audio basics
        • Vulkan audio
        • Physics basics
        • Vulkan physics
        • Conclusion
      • Tooling
        • Introduction
        • CI/CD
        • Debugging & RenderDoc
        • Crash minidumps
        • Extensions
        • Packaging & distribution
        • Conclusion
      • Mobile Development
        • Introduction
        • Platform considerations
        • Performance optimizations
        • Rendering approaches
        • Vulkan extensions
        • Conclusion
      • Extra Courses
        • Opacity Micromaps
          • Introduction
          • The shadow problem
          • Why alpha testing is expensive
          • What are micromaps
          • Hardware traversal with OMM
          • Implementation overview
          • Results, guidance and tradeoffs
          • Conclusion
      • Advanced Topics
        • Introduction
        • Rendering pipeline overview
        • Forward vs Forward+ vs Deferred
        • Forward+ rendering
        • Culling
        • Mipmaps & LOD
        • Push constants per object
        • Synchronization & streaming
        • Synchronization2 & frame pacing
        • Descriptor indexing (UpdateAfterBind)
        • Separate image/sampler descriptors
        • Shader tile image
        • glTF animation
        • Planar reflections
        • Ray query rendering
        • Ray query: reflections & transparency
        • Dynamic rendering local read
        • Robustness2
      • Appendix
        • Appendix
    • AI-Assisted Vulkan Development
      • Introduction
      • Environment Setup
        • Introduction
        • JetBrains CLion & Android Studio
        • Visual Studio
        • Xcode & Apple Silicon
        • Goose & local agents
        • Model Context Protocol (MCP)
      • Model Selection & Specialization
        • Introduction
        • Selecting the base model
        • Hardware & VRAM budgeting
        • MCP & RAG specialization
        • Fine-tuning for your engine
      • Multimodal AI
        • Introduction
        • Multimodal models
        • Visual bug diagnosis
        • Expectations & limits
      • Workflow
        • Introduction
        • Phase 1: Planning
        • Phase 2: Implementation
        • Phase 3: Refactoring
      • Debugging
        • Introduction
        • The VUID auto-fix
        • AI + RenderDoc integration
        • Shader debugging & log parsing
        • AI-assisted trace analysis: GFXReconstruct
      • Advanced MCP Tooling
        • Introduction
        • Vulkan Registry & GPUInfo MCP
        • Agentic automation & performance audits
      • Deployment
        • Introduction
        • Android & iOS
        • Embedded & safety critical
      • FAQ
      • Final project: the AI-driven graphics lab
    • Advanced Vulkan Compute
      • Introduction
      • The Compute Architecture and Execution Model
        • Introduction
        • Workgroups and Invocations
        • Occupancy and Latency Hiding
        • Vulkan 1.4 Scalar Layouts
      • Memory Models and Consistency
        • Introduction
        • The Vulkan Memory Model
        • Shared Memory (LDS)
        • Memory Consistency
      • Subgroup Operations: The Hidden Power
        • Introduction
        • Cross-Invocation Communication
        • Subgroup Partitioning
        • Non-Uniform Indexing
      • Heterogeneous Ecosystem: OpenCL on Vulkan
        • Introduction
        • Setup and Installation
        • The clspv Pipeline
        • Kernel Portability
        • clvk and Layering
        • A Practical Sample
        • Developing with clspv
      • Advanced Data Structures on the GPU
        • Introduction
        • GPU-Resident Trees
        • Global Atomic Management
        • Device-Addressable Buffers
      • Indirect Dispatch and GPU-Driven Pipelines
        • Introduction
        • Indirect Dispatch
        • GPU-Side Command Generation
        • Multi-Draw Indirect (MDI)
      • Asynchronous Compute Orchestration
        • Introduction
        • Concurrent Execution
        • Timeline Semaphores
        • Queue Priority
      • Cooperative Matrices and Specialized Math
        • Introduction
        • Cooperative Matrices
        • Mixed Precision
      • Performance Auditing and Optimization
        • Introduction
        • Instruction Throughput Analysis
        • The "Divergence" Audit
      • Diagnostics and AI-Assisted Compute Refinement
        • Introduction
        • Compute Validation
        • Assistant-Led Optimization
      • Mobile and Embedded Compute
        • Introduction
        • Compute on Android
        • Optimizing for Mobile GPUs
        • Beyond Mobile: Embedded and Headless Compute
      • Conclusion
    • Synchronization 2
      • Introduction
      • Anatomy of a Dependency
        • Introduction
        • Execution vs. Memory
        • Sync 2 Advantage
        • Refined Pipeline Stages
        • Conclusion
      • Pipeline Barriers and Transitions
        • Introduction
        • The Image Barrier
        • Queue Family Ownership
        • Global vs. Local Barriers
      • Timeline Semaphores
        • Introduction
        • Unifying Sync
        • Monotonic Counter
        • Wait Before Signal
      • Frame-in-Flight Architecture
        • Introduction
        • Managing Concurrent Frames
        • Resource Lifetimes
      • Asynchronous Compute & Overlap
        • Introduction
        • Maximizing Throughput
        • Async Post-processing
        • The Bubble Problem
      • Transfer Queues & Asset Streaming Sync
        • Introduction
        • Non-blocking Uploads
        • Staging Sync
      • Synchronization in Dynamic Rendering
        • Introduction
        • Subpass Replacement
        • Local Read Sync
      • Host Image Copies & Memory Mapped Sync
        • Introduction
        • CPU-to-Image Access
        • Visibility Flushes
      • Debugging with Synchronization Validation
        • Introduction
        • Validation Layer
        • Interpreting VUIDs
      • Profiling, Batching, and Optimization
        • Introduction
        • Barrier Batching
        • Visualizing Stalls
    • Advanced glTF: High-Performance Character Pipelines
      • Introduction
      • Scene Graph & Transform Hierarchy
        • Introduction
        • Engine expansion
        • Physics syncing
        • Metadata & physics extras
        • Conclusion
      • Skeletal & Compute Skinning
        • Introduction
        • The mathematics of skinning
        • The compute skinning pipeline
        • Skin once, use everywhere
        • Interpolation & blending
        • Conclusion
      • Physics Integration
        • Introduction
        • Bone proxy colliders
        • Constraints & joint limits
        • Ragdoll handoff
        • Self-collision filtering
        • Conclusion
      • Procedural Animation & IK
        • Introduction
        • CCD IK
        • FABRIK
        • Foot placement
        • Look-at
        • Physics-driven lean
        • Conclusion
      • Morph Targets & Facial Animation
        • Introduction
        • Shape key ingestion
        • Bindless morph buffers
        • Conclusion
      • Tooling & Production Pipeline
        • Introduction
        • Blender workflow
        • Validation
        • glTF viewer audit
        • Conclusion
      • Debugging & Visual Auditing
        • Introduction
        • Debug drawers
        • Skinning heatmaps
        • RenderDoc analysis
        • Conclusion
      • Appendix: Common Types Reference
    • Machine Learning Inference
      • Introduction
      • ML Inference Pipeline
        • Introduction
        • What is Machine Learning
        • Neural Networks Fundamentals
        • Inference Explained
        • Transfer Learning
        • Model Formats
        • Mental Model: GPU Execution
      • Integrating Third-Party ML Libraries
        • Introduction
        • ONNX Runtime
        • TensorFlow Lite
        • PyTorch Mobile
        • DirectML
        • Integration Patterns
        • GPU Resource Sharing
        • Data Transfer Optimization
        • Practical Examples
        • Choosing the Right Library
        • ML Compilers Overview
        • IREE
        • Apache TVM
        • Mojo / MAX
        • OpenXLA
        • Choosing the Right ML Compiler
      • Vulkan Compute for ML
        • Introduction
        • Compute Pipeline Review
        • Element-wise Operations
        • Matrix Operations
        • Data Management
        • Synchronization
        • Vector Addition Example
      • Building the Inference Engine
        • Introduction
        • Hardcoded Forward Prop
        • From Hardcoded to Flexible
        • Model Representation
        • Model Formats as Input
        • NNEF Introduction
        • Putting it Together
      • Debugging and Performance
        • Introduction
        • Debugging Vulkan Compute
        • Verifying Correctness
        • Performance Profiling
        • Optimization Techniques
      • Desktop Applications
        • Introduction
        • Image Classification
        • Practical Implementation
        • CI/CD Render Validation
        • Real-time Camera
        • RL Automated Exploration
        • Ray Tracing Optimization
        • Future Directions
      • Advanced Topics
        • Introduction
        • Quantization Strategies
        • Vendor Optimizations
        • Memory Management
        • Model Optimization
      • Embedded Applications
        • Introduction
        • Cross Compilation
        • Camera Integration
        • Power Optimization
        • Complete Example
        • Scene Understanding with OpenXR
        • ML Compilers on Embedded Devices
        • NNEF on Embedded: Example
        • Conclusion
      • Glossary
    • OpenXR and Vulkan 1.3 Spatial Computing
      • Introduction
      • The OpenXR-Vulkan 1.3 Handshake
        • Introduction
        • System Integration
        • Hardware Alignment
        • Vulkan 1.3 Feature Requirements
        • Incorporating into the Engine
      • Runtime-Owned Swapchains
        • Introduction
        • External Image Negotiation
        • RAII Resource Integration
        • Memory Ownership Lifecycle
        • Incorporating into the Engine
      • Dynamic Rendering for Spatial Views
        • Introduction
        • Rendering into Spatial Swapchains
        • Stereo Viewport & Scissor Management
        • Incorporating into the Engine
      • The Predictive Frame Loop
        • Introduction
        • The XR Lifecycle
        • Display Time Prediction
        • Incorporating into the Engine
      • Late Latching
        • Introduction
        • The Last-Second Update
        • Implementation
        • Incorporating into the Engine
      • Action Spaces and Input
        • Introduction
        • The OpenXR Action System
        • Space Manifolds
        • Incorporating into the Engine
      • Slang for Spatial Shaders
        • Introduction
        • Native Multiview (N=2)
        • Slang Architecture
        • Incorporating into the Engine
      • Quad-Views and Foveated Rendering
        • Introduction
        • Primary Stereo with Insets
        • Multi-Layer Composition
        • Incorporating into the Engine
      • Variable Rate Shading
        • Introduction
        • Fragment Density Control
        • Gaze-Driven Logic
        • Incorporating into the Engine
      • Canted Displays
        • Introduction
        • Non-Parallel Projections
        • Viewport Swizzling
        • Incorporating into the Engine
      • CAVE Architecture
        • Introduction
        • Projector-Based Spatial Tech
        • Hardware Sync
        • Incorporating into the Engine
      • Warp and Blend
        • Introduction
        • Geometric Correction
        • Post-Process Warping
        • Incorporating into the Engine
      • LightField Theory
        • Introduction
        • 4D LightField Representation
        • High-Density View Arrays
        • Incorporating into the Engine
      • Plenoptic Synthesis
        • Introduction
        • Synthesis Shaders
        • Ray Traced Synthesis
        • Incorporating into the Engine
      • Scene Understanding
        • Introduction
        • Environmental Ingestion
        • Zero-Copy Hand-off
        • Incorporating into the Engine
      • ML Inference for Spatial Data
        • Introduction
        • On-GPU Inference
        • Refining Spatial Data
        • Incorporating into the Engine
      • Semantic Occlusion
        • Introduction
        • ML-Driven Segmentation
        • Per-Pixel Masking
        • Incorporating into the Engine
      • Platform Divergence
        • Introduction
        • Desktop High-End
        • Mobile Mastery
        • Incorporating into the Engine
      • Spatial Diagnostics
        • Introduction
        • Spatial Debugging
        • Automated QA
        • Incorporating into the Engine
      • Conclusion
    • FAQ
    • GitHub Repository
Khronos Vulkan Tutorial latest
  • Khronos Vulkan Tutorial
    • latest
  • OpenGL Shading Language Specification
    • latest
  • Vulkan API Reference Pages
    • latest
  • Vulkan Feature Descriptions
    • latest
  • Vulkan Guide
    • latest
  • Vulkan Samples
    • latest
  • Vulkan Specification
    • latest
  • Khronos Vulkan Tutorial
  • Building a Simple Engine
  • Advanced Topics
  • Introduction

Advanced Topics (Simple Engine)

Welcome — this section collects short, conversational guides that explain what each feature is, why we use it, and how it’s implemented in the Simple Engine.

Start anywhere that matches your interest:

  • Planar Reflections

  • Ray Query Rendering

  • Ray Query Reflections and Transparency

  • Rendering Pipeline Overview

  • Forward, Forward+, Deferred

  • Forward+ Rendering

  • Frustum Culling and Distance LOD

  • Mipmaps and LOD

  • glTF Animation & Transform Composition

  • Push Constants (per‑object material)

  • Descriptor Indexing & Stable Updates

  • Separate Image/Sampler

  • Synchronization & Streaming

  • Synchronization 2 & Frame Pacing

  • VK_EXT_robustness2

  • Dynamic Rendering Local Read

  • Shader Tile Image

Back to Building a Simple Engine