Blaze is my lovely little toy renderer that I wholly use as a lab-rat for new techniques and to learn computer graphics in Vulkan.

There are a lot of goals - lot of things to learn. Blaze get’s a lot of love - but she’s not the only project I’m working on.

I use:

Some C++17 features (or did and refactored them out after my newfound love for simpler older C++ features)
Vulkan 1.1 (Will upgrade to 1.2 once I switch to an RTX card)
Some really nice libraries:

  • GLFW
  • GLM
  • Vulkan Memory Allocator
  • DearImGUI
  • spirv-reflect
  • tiny-glTF
  • STB

I do it in my free time so here are the features I’ve planned or completed on so far:

  • glTF 2.0 Model loading.
    • Position, Normal, UV, Materials etc.
    • Animations and Skeletons.
    • Extension support.
  • Physically Based Shading.
  • Forward Rendering
    • Simple
    • Tiled
  • Omni-directional (point) Shadow Maps
    • Cubemap
    • Dual Paraboloid
  • Directional Shadow Maps
    • Simple Directional Shadows
    • Cascaded Shadow Maps
    • Cascaded Perspective Shadow Maps
  • Shader Reflection
    • Pipeline Layout creation.
    • Graphics Pipeline creation.
    • Easy Descriptor Set creation.
    • Compute Pipeline creation.
  • Deferred Rendering
    • Simple
    • Visibility Buffers
    • Tiled
  • Reflections
    • Screen Space Reflection
    • Raytraced
  • Ambient Occlusion
    • SSAO
    • HBAO
  • Post Processing
    • Bloom
    • Auto-adjusing exposure
    • Filters
  • Global Illumination
    • Voxel Cone Tracing
    • Precomputed Radiance Transfer
    • Raytraced

Screen Space Ambient Occlusion

SSAO

Cascaded Shadow Maps

CSM