~rycwo/rycwo.dev

c9c6563d4cfcbaf6f67a18abd1f39a50a9eebe7e — Ryan Chan 4 years ago 983df19
Add "Forging redplanet (Day 1): A Gentle Start" post
1 files changed, 74 insertions(+), 0 deletions(-)

A _posts/2020-09-01-forging-redplanet-day-001.md
A _posts/2020-09-01-forging-redplanet-day-001.md => _posts/2020-09-01-forging-redplanet-day-001.md +74 -0
@@ 0,0 1,74 @@
---
published: true
layout: post
title: "Forging redplanet (Day 1): A Gentle Start"
date: "2020-09-01"
tags:
    - "redplanet"
    - "forge"
    - "tau"
category: "devlog"
---
The other night, prompted by my partner's recommendation, we watched
[_Julie & Julia_][julie-and-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](https://www.youtube.com/watch?v=M9AITdJBTnQ)). 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.

<!-- Excerpt -->

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_][pbrt]. 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**][redplanet-commit]. 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 itself is called [**Forge**][forge]. It currently possesses at most
20% of the features I mentioned. Here is the immediate-mode GUI in action.

<video src="http://files.rycwo.xyz/boran_db82840.mp4" muted controls></video>

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.

[forge]: https://git.sr.ht/~rycwo/forge
[julie-and-julia]: https://en.wikipedia.org/wiki/Julie_%26_Julia
[pbrt]: https://www.pbrt.org
[redplanet-commit]: https://git.sr.ht/~rycwo/redplanet/commit/70a9356f67b4e3bf248c9f2bad15cfd500d209b2