So long, Cube

It’s time to look into getting different geometry into our scene. In the Vulkan version of StaticRectangle, I was using OBJ files for meshes and a 3rd party library called tinyobjloader to load them. This was fine for that application because the size of the files wasn’t much of a concern. I mean it’s always a concern, but it wasn’t as much of a concern in the early stages. It’s something that can be optimised later.1 ...

October 23, 2025 · 14 min

A Conscious Decoupling

At the end of my last blog post StaticRectangle was rendering ‘the illustrious spinning cube’. We had a bunch new components, like the camera controller, input / resource manager as well as a top level Application that took ownership of some processes away from the Renderer. The next thing to tackle was splitting up the Renderer further, it was still doing more than just rendering. In fact it was the render function of the renderer that was animating the cube! certainly overstepping its responsibilities as a renderer. ...

October 20, 2025 · 8 min

The Illustrious Spinning Cube

By the end of my last post, I had a very boring hot-pink “StaticRectangle”. I gave my wife a demo who was as enthused about a hot-pink rectangle as you can imagine. I showed her all the code it took to produce that rectangle. Her honest response was “why?” I explained how it took lot of leg work to do the things you can’t see. Of course she understood that, but it is remarkable how much work can go into something so unassuming. ...

October 15, 2025 · 4 min

StaticRectangle Lives

I spent some time messing around with WebGL trying to render some better looking 3d mazes, which I have no doubt you can do. There are plenty of examples of WebGL being used to make some captivating 3d content and that challenge is enticing. However, it wasn’t long until I came across WebGPU, the Next Generation™ of 3d rendering technology for the web. Digging in a bit, it felt very familiar. The API is very ‘Vuklanesque’, inspired by it, as well as other modern graphics APIs (Metal, Direct3D 12 etc.). ...

October 8, 2025 · 5 min

It had to be done

Not a faithful recreation. I believe the Microsoft one was following the left-hand rule solver (and right when you flipped upside down), which means the mazes must have been ‘simply connected’ or ‘perfect mazes’. There isn’t the topsy-turvy geodesic shape, psychedelic fractals, OpenGL logos, Smiley Face end-point or… rat either. This one is using the Recursive Backtracker to create passages and then Dijkstra’s to find the longest connected path through the maze, and then it follows that. ...

September 29, 2025 · 1 min

Mazes now in 3D!

Probably a surprise to no one, but while going through the maze generation exercise I thought it would be nice to display a maze in 3d. There is (though I haven’t gotten to it yet) an entire section of the Mazes for Programmers book dedicated to generating mazes that wrap around 3d shapes, like mazes on cubes, spheres, even a möbius strip! Displaying a maze in 3d isn’t in the scope of the book, but it’s not hard to take the concepts and translate them to 3d. ...

September 25, 2025 · 2 min

It’s been a while…

Apparently my last devblog entry was just over 3 years ago today, and… well, a lot has happened in that time. Professionally, I moved from supporting and writing tools for animators in Maya, of which I had years of experience, to supporting and writing tools for FX artists in Houdini, of which I had precisely zip. Today, 3 years later, I can say with confidence that I have only just started to scratch the surface. ...

September 15, 2025 · 3 min

Logging and Events (and refactoring Input)

took a break from the renderer as the next step involves getting render passes setup so I can render shadows and do fun stuff like post processing etc. This poses two problems for me.. Once I get started, I won’t have a lot to show for a while because I’m sure it’ll involve a lot of refactoring work I actually have no real clue what I’m doing, or what order makes the most sense to do things in Thankfully on the latter point, I found a YouTube channel called “The Cherno” which has an incredible amount of content, one of his series is an educational series about building a Game Engine from scratch which is very pertinent to my interests, his Hazel engine is definitely a much more ambitious and fully featured engine than I was ever planning, but it’s been very helpful to see how a professional approaches engine development. ...

September 13, 2022 · 3 min

Yo dawg, I heard you liked refactoring…

You know that thing you do when you’re learning something new, so you make every mistake under the sun and / or massively over complicate / engineer things? Yeah, I did that. As I mentioned in my last post, I did get textures working – but there was a large caveat. I only had a single shared descriptor set, which meant all meshes shared the same textures. So I did a bit of refactoring ...

August 30, 2022 · 3 min

We've got textures, everybody!

Now we’re all caught up, I reached a bit of a milestone yesterday. I managed to get textures loading and I’m fairly happy with the solution for now. This one is a milestone for me because I really wasn’t sure how to organise my resources, so the “final” design was a bit of trial and a lot of error. Right now, if you request to load the same texture twice, it’ll oblige no questions asked, but the design allows for future optimisations in this area. ...

August 22, 2022 · 2 min