One UI Path to Rule Them All: SDL + wgpu Everywhere
· 3 min read
· DeanoC
One UI Path to Rule Them All: SDL + wgpu Everywhere (and goodbye ImGui)
Over the last cycle we finished a pretty major internal shift: the main branch now runs a single custom renderer + UI stack across all supported platforms.
That means:
What changed (high level)
Historically we had multiple UI/rendering paths depending on platform and build target, plus legacy ImGui glue that inevitably drifted over time. With this merge, the project now has one primary pipeline:
There are still platform-specific details (there always are), but they now live around the edges instead of fracturing the core.
Why we did it
This wasn’t refactoring for its own sake. The goal was to make the project faster to evolve and easier to reason about:
What this unlocks next
Now that the architecture is unified, we can focus on the work that’s worth doing:
Current status: performance tuning is the next big push
We’re seeing some performance issues, and our current suspicion is that some work that should be off the main thread isn’t (or we’re blocking in places we shouldn’t be). The good news: we already have ztracy integrated, so we can start turning “it feels slow” into “this is the exact stall and why.”
In the coming work, expect a lot of:
What we’d love feedback on
If you’re using main, the most useful reports right now are:
TL;DR
Main now runs a single SDL + wgpu + custom UI path across platforms, with legacy ImGui removed. This is a big simplification that should pay off in stability and feature velocity. Next up: profiling and performance work with ztracy.