Catnip Renderer
Catnip is a physically-based real-time Vulkan renderer built from scratch. It focuses on a modern, deferred rendering pipeline implemented entirely with Vulkan.
Features
Deferred Rendering & Lighting
- Non-forward Deferred Rendering Pipeline with a Depth Prepass.
- Physically Based Lighting (PBR) using the Cook-Torrance BRDF, including texture-driven materials.
- Support for Point and Directional Lights, measured in physically-based units (lumens, lux).
- Directional Light Shadows using a shadow map.
- Image Based Lighting (IBL) for Diffuse Irradiance only using HDR images.
Post-Processing
- Tone Mapping (Reinhard and Uncharted 2 operators).
- Exposure Control driven by simulated physical camera settings.
Architecture
The renderer uses a multi-pass deferred rendering architecture implemented directly in Vulkan. Rendering is separated into multiple passes like depth pre-pass, geometry pass, lighting pass, and shadow pass.
- Depth pre-pass to reduce overdraw.
- G-buffer storing albedo, normals, and material properties (like specular, roughness, and metallic).
- Lighting pass using PBR.
- Shadow pass for the directional light.
- Post-processing pass for tone mapping and exposure control.
The renderer abstracts Vulkan's complexity with a custom rendering framework that manages resources, buffers, synchronization etc.
Hover to view the render passes!
Hover to view the render passes!