Doom-Style Engine Progress Update: Renderer Rewritten in OpenGL
When I began working on my Doom-style engine, Portals, I intentionally started with a software renderer. The goal was to keep it old-school and fully under my control.
As development continued and I introduced more advanced features such as slopes, room over room support, and a particle system, the renderer became increasingly complex. Rendering artifacts appeared in edge cases and performance degraded significantly, especially when the camera moved close to particle effects.
I initially tried to fix the issues within the software renderer. I spent time optimizing and correcting edge cases, but the complexity kept increasing and some problems proved difficult to resolve cleanly.
Today I made the decision to rewrite the renderer in OpenGL 3.3.
I'm not a graphics programmer and maintaining a feature-rich software rasterizer while continuing engine development was no longer the most effective use of my time.
The rewrite took the entire day.
The result: significantly improved and stable performance, resolved graphical issues, and a noticeably smaller and cleaner codebase.
I also removed SDL_image 3.0 from the project. With native PNG loading and saving now part of SDL 3.0, the extra dependency is no longer required.
Even the screen-melting effect survived the transition to OpenGL.
Visually, the engine remains nearly identical. If you compare the screenshots below, the difference is minimal.
(Left: Software Renderer / Right: OpenGL Renderer)