Software rendering - no GPU, no packages
A real-time 3D engine that draws every pixel on the CPU.
FableEngine rasterizes a live game loop from scratch: a per-frame sun shadow map, a geometrically exact planar mirror, impulse rigid-body physics, and a Verlet rope - four cameras of one simulation, rendered at once. Every clip below is a screen capture of the running loop, with the measured frame rate burned into the HUD.
Pure C# on the .NET base library only. Target was 20 fps; it holds ~6.5x that on a 32-core desktop.
Live captures
Five systems, one loop
The doctrine
Everything here is simulated, not faked
01A real game loop
A Stopwatch drives wall-clock dt into a fixed 120 Hz physics accumulator; rendering is decoupled and the frame rate is measured live. The sim advances on elapsed time, not a frame index - it is not a movie.
02Rasterized, not traced
A perspective-correct edge-function rasterizer with near-plane clipping, backface culling, and a 1/z depth buffer. Primary visibility is rasterized so the playable path stays fast; ray-style work is reserved for what needs it.
03Parallel across viewports
One rasterizer and framebuffer per viewport; the four views and each mirror pre-pass render concurrently with no locks and no shared mutable pixels. The shadow map builds once per frame and is read-only during the fan-out.
04Nothing but the base library
No GPU API, no game engine, no packages - vector math, the PNG and GIF encoders, and the terminal presenter come from a pure-C# standard library; the rasterizer, shadow map, mirror, and physics are written from scratch.
Measured this run
steady 130 fps · per-second range 65 to 166 fps · 2,806 physics steps in 24.0 s (120.0 Hz lockstep) · 1,238 triangles · up to 5 render passes per frame · 512-square shadow map · captured from the live loop, delays are the real wall-clock gaps.