Graphics Journey Update #1
Date: 10/09/2022
Experimenting with a new form of update blog. We will see if these stick.
Currently listening to: John Scofield
Writing
Lately Iāve felt that writing has helped me stick to a routine and serves as a nice reinforcement tool when learning new things. This is part of a new approach Iām taking to my studies and general personal organization. Over the last few years Iāve started taking a ton of notes and trying to build a personal database of information. While my process is still a work in progress Iām confident that itās helped me in numerous ways.
Iāve decided to start publishing a portion of the journals/updates/notes that Iām writing in order to potentially help others and attract similar folks that might be interested in working together or motivating each other. In particular these will likely be written from a similar perspective to what youāre reading now. Just my unabridged thoughts about a recent period of work/study/effort/realizations. I find that this type of approach makes writing feel more natural and less like a chore to me. For instance I donāt feel compelled to obsess over things like small grammatical errors like Iām writing a research paper. Whenever I sit down to write a āblogā or āarticleā I feel this urge to read and re-read before posting, but right now I just want to write.
Colleagues
In my previous post I talked about history and some of the things that went on at the University of Utah in the late 80s. Now more than ever I feel that being around similar and motivated people is extremely important to success for most of us. This is part of the reason Iāve pushed my career so hard in recent years to try and work with the best engineers I can. Iāve been hoping that it would help me get close with people and have deep conversations about engineering and our approaches to things.
My connections have honestly just felt so surface level over the last few years. I honestly think the remote model is starting to wear on me. We have a tendency to withdraw somewhat in the remote model. I think it takes significant 1:1 time with someone to actually get comfortable being yourself. It feels really difficult to hit that limit in a reasonable time period remotely. Itās definitely achievable, and Iāve become close with colleagues after working remotely with them for extended periods of time, but IMO that usually takes about a full year of working pretty closely with someone.
Recent Stuff
Anyways, what I have been working on recently? Well, Iāve gone full-tilt into the world of graphics. Iāve been attacking things both artistically and scientifically. Between 3d modeling and environment art in Blender and Unreal Engine 5 Iāve unlocked a new hobby. Whatās better is that my wife is actually a really talented environment designer so we have a new way to connect and have begun the initial stages of a new project together.

Iāve also been studying rendering and the graphics pipeline more generally. I found a great resource to introduce myself to rendering in Peter Shirleyās Ray Tracing Series. I worked through the first book and Iāve been working on digesting it fully while adding new features to the ray tracer. In particular Iāve added support for ray-plane intersection and ray-triangle intersection using some associated literature. I also added some simple python scripts to generate multiple images with the ray tracer and then automatically compile them into an animation. The script itself still needs a bunch of work. Iād like to add some nice tweening functions for the camera movement. Iād also like to set up a simple little render farm on digital ocean or AWS.

Iām still working to understand the rendering equation fully. The past like 9 months on this graphics journey Iāve had to re-learn much of the math I havenāt really used since college. Trig, linear algebra, a bit of calculus. Iām still not where I need to be, and will likely have to devote more time to that soon, but Iām doing well enough to keep up with the rendering material Iām consuming.
Iāve also been working through an excellent Vulkan Course by Ben Cook on Udemy. Itās a great introduction to the Vulkan API and a ton of relevant GPU concepts. I will say, Vulkan is a bit much. I think Iām actually going to take a detour through his OpenGL course before I complete the rest of the Vulkan one. Mostly because itās rather short in comparison and gets you drawing something much faster. Vulkan has turned out to be just as verbose and tedious as everyone warned me it would be.
My goal is really to get to point where I can fully utilize my graphics cardās Ray Tracing hardware, so in the end I really do need Vulkanās capabilities. I might also start looking into some of the Ray Tracing capabilities inside of UE5. Eventually Iād like to make some pretty unique games fully rendered using real time ray tracing. I just find ray tracing to be so simple and beautiful, and when Iām working on something in Blender all I really care about is that final ray traced image.
On top of all this Iāve been getting reacquainted with C++ which I havenāt really used in many years. Iāve got a couple callouses but whatās worse is that I know Iām only like 1% of my way down that C++ journey. Thereās a whole history of C++ features to really understand, new paradigms and language features to learn since I last used the language, etc. The most important yet to come is multithreading. I havenāt used a language that didnāt make concurrency relatively straightforward in a long time. Javascript, clojure, golang, rust, etc. They all have their own warts, of course. I can definitely say that I didnāt find any of those languages as challenging to get into. Currently I find it a bit exhausting to think about how far I have left to go here, but Iām just taking it day by day.
Eventual Project and Inspiration
Right now Iām really just binge learning, a mode Iāve been in for some time now. Eventually I have to decide on a focal point to really bring things together and actually utilize all the things Iāve learned for some end goal. The obvious thing is to make a game, and Iāve got an idea Iāve been toying with for years.
I really love biomes in games. Terraria and Minecraft really brought the idea of biomes into the mainstream, at least from my perspective. MMOs like world of warcraft have always had big open areas that connect to one another, but they are more specific and somehow donāt have the same charm. I find biomes simple and exciting as a player, but Iād like to take them a step further. In particular Iād like to experiment with biome blending and interpolation. Taking two biomes that are adjacent to one another, and slowly blending between them where they meet. The is opposed to the typical method in procedurally generated games of just having a cutoff from one area to the next where they very obviously diverge.
I want to take this as far as it can go. You have things like vegetation and wildlife that can blend at the border of two biomes. Maybe pink trees fade to white, or the small trees become larger. I think it would also be neat to experiment with cultural interpolation between societies. Letās say you have an area with pirates that borders an area with robots, it would be exciting to watch the system have emergent behavior where at the border you get futuristic pirates with laser cannons. Thatās to say nothing of the procedurally generated regions where you get 5 biomes that blend and you get undead robot pirate birds that can breath underwater. Of course this sounds like a lot of complexity, but Iām still excited about the idea to this day, which letās me know its a keeper.
So thatās where I think Iām headed with this. Some sort of open world RPG-ish game with procedural generation, lots of different biomes and cultural areas, and all sorts of different emergent blending happening between them. Not to mention all rendered via some crazy real time ray tracing stuff. What form the gameplay will take, I have no idea. But thatās a problem for another time.
Before I go Iāll leave a couple links to some John Linās work on path tracing in a voxel renderer. This stuff really inspired me to get started on my graphics journey when I saw it a year or so ago. Great stuff. Check out the rest of the videos on his channel.
Originally published on my mentorship blog on October 9, 2022.