Home / Features
Ten pages, one per subsystem, written against the source rather than against an ambition. Each one ends with a list of what is missing, because you should be able to decide against this engine using its own documentation.
The short version: a forward renderer with a fixed pass schedule, four hand-written graphics backends, dynamic global illumination, a physical sky, and one placement contract shared by 2D and 3D. No frame graph, no scene format, no editor. If that sounds like a small engine, it is — deliberately.
How a picture gets made, in the order it happens.
Six named passes and two compute phases, written down once in one file. The per-pass state contract, and what a fixed schedule costs you.
One shading model, metallic-roughness, straight out of glTF. Five texture slots, per-control overrides, and how exposure is handled.
Eight lights, three cascades plus a punctual slot, and the two mechanisms that stop cascade shadows crawling as the sun moves.
DDGI probes tracing an SDF built from proxy volumes, updated a fraction per frame. Plus half-resolution horizon-based occlusion.
A physical atmosphere with transmittance and multiple-scattering LUTs, real sun and moon angular sizes, clouds, and a day-night cycle that drives the light.
Ten compute effects on one abstract class, the anti-aliasing options told honestly, and how to add an effect of your own.
What you put in front of the camera, and how you interact with it.
glTF 2.0 as the only format. Skinning, morph targets, per-instance clips, and why animated bounds are inflated by half.
Sprites, shapes and MSDF text as controls in the same tree as 3D. Streaming text, and one layout for every screen.
Triangle-accurate hits down to a single instance, four highlight styles, and the property board that comes with them.
Six targets, four graphics APIs, four hand-written shader sets. Everything platform-specific behind one static service object — including the parts that are null.
Not part of the renderer, but part of the engine: ONNX and GGML inference in-process, with the version and CUDA problems solved once.
Audited against the source. The absent rows are here for the same reason as the shipped ones — you should be able to decide against the engine from its own documentation.
| Capability | Status | Where it lives / note |
|---|---|---|
| Fixed pass schedule with two compute phases | Shipped | Rendering/RenderPass.cs |
| Metallic-roughness PBR from glTF | Shipped | Models/GltfAsset.cs |
| Cascaded shadow maps, 3 + 1 punctual | Shipped | Rendering/CascadedShadow.cs |
| DDGI dynamic global illumination | Shipped | Rendering/Effects/Ddgi.cs |
| Ambient occlusion, GTAO-lite | Shipped | Rendering/Effects/Gtao.cs — half resolution, not reference GTAO |
| TAA with variance clipping | Shipped | Rendering/Effects/Taa.cs |
| Bloom and HDR tonemap | Shipped | Rendering/Effects/Bloom.cs |
| Sky atmosphere, day/night cycle, clouds | Shipped | Rendering/Effects/SkyAtmosphere.cs |
| glTF skinning, morph targets, animation clips | Shipped | Models/GLTFAnimationPlayer.cs |
| GPU instancing with per-instance animation | Shipped | Controls/InstancedModel.cs |
| MSDF text on all backends | Shipped | Controls/Texts.cs |
| Per-instance picking, four highlight styles | Shipped | Panels/ObjectPicker.cs |
| CPU frustum and light-space shadow culling | Shipped | Rendering/Frustum.cs |
| Device services on six platforms | Partial | coverage differs per service and platform |
| WebGPU backend | Partial | behind the desktop backends in feature parity |
| Property editing in the reference app | Partial | fixed fields, no general property grid |
| Animation blending and state machines | Absent | one clip at a time, switched as a cut |
| Scene serialization, save and load | Absent | no scene format yet — scenes are C# code |
| Texture compression | Absent | planned, Track A |
| Indirect draw and GPU-driven culling | Absent | planned, Track A |
| Occlusion culling | Absent | planned, Track A |
| Level of detail | Absent | no automatic LOD or mesh simplification |
| Visual editor | Absent | out of scope by design, not a gap |
| Physics | Absent | collision helpers only, in the sample app |
Planned work is tracked on the roadmap, which is the same document the engine is developed against rather than a marketing version of it.