(For easier browsing, I bookmarked the images in this article on Ghosty. If you’re a Ghosty member, you can see even more screenshots of Notch’s prototypes here. If you don’t have an account, check it out and consider signing up).
What do you do with your time once you’ve made hundreds of millions of dollars? If you’ve Notch, you experiment with rendering techniques for several years.
Notch has been working on several experimental rendering engines with his trademark brand of procedurally-generated content. He’s posted plenty of screenshots of the prototypes to Twitter, but they’re scattered across hundreds of threads full of thousands of fans’ comments (high noise, low signal lol).
Some of Notch’s prototypes explore interesting aesthetics and rendering techniques. But a recurring theme in the Twitter comments is confusion as to what’s being rendered, and how each rendering engine works.
So I collected a few screenshots for each with explanations of the rendering techniques used.
Summer 2019: ‘billboard splats’
It might not look like it, but the image below is a 2.5D billboard sprite engine:
This entire scene is just a bunch of 2D billboards!
This latest Notch experiment started with the idea of a billboard renderer with a few tweaks:
This thing started when I went back to an old idea of making a billboards based renderer. Initially they’d just have some simple depth info baked in.. but the engine of took on its life. source
The current engine:
- Levels are represented by a signed distance field (SDF) - source
- Levels are rendered with billboards acting like ‘giant splats’
- Billboard sprites are baked into a texture atlas normal map (RG channels) and depth map (B channel) baked into each sprite - source
Revisiting the image from earlier, imagine the ‘level’ is a simple SDF: a union of a sphere and a plane. So the ‘level’ geometry in this scene is really, really simple:
I made the level generator just create a flat plane with some spheres for quick testing. Then it looked kinda neat. - source
The thing that makes the scene look so damn complex is all those facets from all those billboard sprites:
It’s kind of like that old trick where you draw a bunch of overlapping square black-to-white gradients and apply ‘lighten’ blending mode:
But instead of simple square gradients, Notch is drawing these bad boys:
This next image should make the whole works a bit clearer. To illustrate what’s going on with the renderer, Notch swapped out the ‘rock’ billboard texture for a rotated ‘cubic cage’ billboard (on the left):
(You can faintly make out how depth is encoded in the blue channel of the billboard’s texture map – the cube becomes slightly bluer in the distance)
On the right you can see how that single billboard is splatted all over the surface of the SDF that defines the level geometry.
Revisiting that earlier image (again):
It also looks like there’s SSAO applied, which makes the billboard sprites ‘hang together’ better – instead of just looking like a bunch of isolated splats. SSAO works especially well for the crevices and folds created by those craggy intersecting stone billboards.
The last bit that makes the scene look so good is the deferred lighting. When applied to the depth + normal map of each billboard ‘splat’, the effect is quite immersive.
Winter 2018: terrain & trees
Notch started generating more natural terrain and trees in this iteration of the engine:
- signed distance field (SDF) world geometry
Well, the world is made up of 3d cubes about 1/16th of a meter big - source
A video of the world in motion:
Just walking over to that mountain. pic.twitter.com/bILKxZAl1X— notch (@notch) January 12, 2018
Notice the tiny smooth blending artifact where the objects intersect / meet. Notch explained why this occurs:
It’s an artifact of the sampled distance field voxels. I don’t store explicit normals, but compute them from the voxel data. Hard to know the difference between slope and edge by just looking locally. - source
Spring 2018: ‘density fields’, raytracing
Not sure if there’s a word for it, but I call it a “density field”. It’s like distance fields, except it carries information about the average contents of space - source
Fall 2017: before billboards
This is right before Notch started experimenting with a billboard renderer: