Forging redplanet (Day 1): A Gentle Start

The other night, prompted by my partner’s recommendation, we watched Julie & Julia, dir. Nora Ephron. I thoroughly enjoyed the film - although I was expecting as much considering the narrative revolved around food! I particularly found joy in Meryl Streep’s exaggerated depiction of American chef Julia Child (if you haven’t already seen a clip of her on the internet, enjoy). The biopic is loosely based on an undertaking of the writer Julie Powell. Her mission was to combine the two passions of her life: writing and cooking. She set out to cook all 524 recipes from Julia Child’s book Mastering the Art of French Cooking, in a mere 365 days, churning out daily blog posts to document her progress. What becomes clear, however, is that her mission simply acted as a vehicle for her to “self-therapize” through blogging, the cooking itself serving as a prompt/conversation starter for the day’s blog post.

I have come away from this film re-invigorated and inspired to continue a personal project that had gone stale for the past couple of months. In addition to chipping away on said project, I had already been considering documenting my thought process via this blog. So the motivations are clear, and I need say no more. With the green flag waving, fingers screeching across the keyboard, we crawl into day 1 of many!

The Project

Let’s start slow. What is this project I have been working on? One Christmas a few years back I received a physical copy of what is often referred to as the “rendering bible”, Physically Based Rendering. From that day on, I made it a personal goal to completely consume all the delicious nuggets of knowledge from the book and write one of the best open source production renderers in the computer graphics industry. Ambitious! I know. Yet anyway, here we are. The title of the very first working prototype is designated as redplanet. I long for the day when I can announce its release.

A couple of years later and the project had spun itself into a much larger web than I had initially anticipated. With my interests darting here and there, I eventually convinced myself it is an absolute necessity to build a foundation library with basic data structures, allocators, fixed-size linear algebra types, a bare-bones immediate-mode GUI framework, and a concurrent in-memory data model. Before I knew it, I was writing the beginnings of a modular game engine, and it is this spin-off in particular, that I have made the most progress on.

The library is called Forge. It currently possesses at most 20% of the features I mentioned. Here is the immediate-mode GUI in action.

So there we have it. The short term plan is to fix a few existing bugs with the GUI framework, implement text rendering, and demo some fancier widgets. Only then will I be able to re-focus my efforts onto redplanet, hopefully utilizing relevant parts of Forge as I go.

I don’t plan on working on Forge or redplanet every single day. This is meant to take years after all. A few days a week seems like a respectable and reasonable goal, and on the days I make progress, you can expect a blog post to go with it. Today we make a gentle start, this blog post is my first step across the starting line.