Watch four billion years of humanity in a pixel shader
Me, in 2000: ah, so shaders can make textures in Quake 3 look glowy or wibbly. Me, in 2016: oh, okay, so shaders can also be used to create shoals of fish in Abzu. Me, right now: wait, so shaders can also be used to tell the story of a planet over four and a half billions years, from a lump of molten rock to the formation of mountains, rivers, and human cities.
Humanity, an in-browser shader created by David A. Roberts, is worth the four minutes it takes to watch.
If you’d rather, instead of clicking the link above, you can watch the animation with some music on Vimeo:
The animation runs through six main stages in its development of a planet: protoplanet, in which the surface is red hot; the shifting of tectonic plates to establish moutains and oceans; hydraulic erosion, which marks the terrain with rivers; global climate, which depicts the changing of seasons; the distribution of life, including plants, herbivores and predators; and finally humanity, as we construct cities.
Its creator, David A. Roberts, has written a lengthy explanation of how each of these stages are constructed, including the scientific models on which its based and examples of the code used to recreate it within a shader. It’s particularly impressive how the different simulations interact: climate follows from the distribution of oceans, and life, including plant growth, responds to climate.
The simulation ends by depicting humanity burning through all available fossil fuels, “resulting in the disappearance of humanity from a signiﬁcant portion of the planet.” Oof.
I’m coming to all of this late. Roberts created the shader back in 2018 and it gained attention online when he wrote the breakdown of how it works last year. He’s since written another post breaking down the experience of going “viral”.
A shader is just a program designed to run on a GPU and they’re typically used to give instructions for how pixels should be drawn on screen. I know that GPUs are powerful enough to do all sorts of things, but still I am knocked down every time a shader is used for something other than making a skeleton glow.