← Ixil Miniussi

glTF + PBR Renderer

December 2025

Vulkan C++ GLFW GLSL

GitHub

Whisper Engine is a rendering engine for my own personal projects, where I wanted to apply lessons from my previous attempts. Render-graphs, art imports and code reflection were the aspects I wanted to work on most. For any serious project, I need to make sure artists can import models and have them look as they expect, which is why I focused on supporting glTF and PBR materials.

PBR model render PBR model render

Context

The decisions were made with a 3D open world game in a forest in mind. This means few light sources, solid ambient lighting, and performant techniques.

Adam Head, Unity Technologies (Sketchfab) — Lieutenant Head, Unity Technologies (Sketchfab)

Forward+

Due to the hypothetically low light source count, I went with forward+ over deferred rendering. '+' stands for a depth and normals prepass which we use for basic culling as well as a Screen Space Ambient Occlusion effect. Having profiled my project with Tracy, I can say the prepass neither added nor removed to rendering time, while allowing screen space rendering techniques.

Forward+ rendering Forward+ rendering

Environment-based lighting

Using HDRs for ambient lighting means better integration of assets in the scene, as well as improved reflections. The environment is sent to the shader as a mipmap which gets rendered at different resolutions based on the objects distance and roughness. This, plus the BRDF LUT lead to convincing reflections and shading at minimal cost.

Environment lighting Environment lighting

Shadow map

Shadow map techniques are something I really want to improve on in the future. In a world of Ray Tracing and Global Illumination, it is still a highly convincing and performant technique which doesn't drain VRam as much. The current iteration simply checks for occlusion with an added noise and radius check to soften shadow edges as convincingly as possible.

Shadow mapping Shadow mapping

Frost

Frost is my reflection program written in Python which parses my code looking for markers. It then generates header files with the necessary Meta information to create intelligent editors in C++.

Frost code reflection

Example of code being turned to editor by Frost

Acknowledgements

Alien creature 3D model courtesy of Santiago Piedrahita Bello.

Next: Surface-Stable Fractal Dithering →