December 2025
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.
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)
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.
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.
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.
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++.
Example of code being turned to editor by Frost
Alien creature 3D model courtesy of Santiago Piedrahita Bello.