Another day another renderer
6 October 2026
I somehow can’t escape building 3D renderers. While I haven’t gone particularly deep in rendering techniques, I’ve implemented the basics quite a few times, and have decided it is time to build yet another renderer.
A renderer never exists on its own. It has to serve a specific purpose, so as not to fall prey to an ever growing scope. This time, I’m creating a 3D artpiece that showcases my dream city: A densely populated, walkable car-free city with lush greenery and bustling streetlife.
Whether it will become a game, the backdrop for a short film, or just another abandoned codebase waiting to be devoured by a corporation as training data, is yet to be seen.
Here’s my target image, created in Blender:

Here’s how far I’ve gotten now, using Metal and Objective-C++:

I’ve implemented blinn-phong shading and cascaded shadow mapping using a deferred rendering pipeline. Somewhere along the way I accidentally learned linear algebra properly for the first time, enabling deriving a perspective projection matrix and other matrix multiplication logic myself, without having to rely on GLM or other libraries for reference. Also, homogeneous coordinates are really cool.