This past week in game development, we dove into shaders — not just what they do, but how they actually work. We spent time inside Unity’s Shader Graph experimenting with sine functions for movement. Our weekly assignment was to download Journey and identify one fragment shader and one vertex shader used in the game. We were supposed to write a short analysis, but I had to cut myself off at a page so I didn’t overwhelm the poor grader. So, naturally, I’m here to rant about it.
For those of you who don't know, vertex shaders tell the game where stuff goes, and fragment shaders decide what it looks like. The vertex shader messes with geometry — it moves, bends, and stretches vertices around to make things like cloth waving or terrain wobbling. The fragment shader, on the other hand, is the artist of the duo — it paints each pixel with color, texture, lighting, and all that shiny detail that makes things pretty. One handles the motion, the other handles the magic.
The first 15 minutes I spent in this game were basically just me running around in circles, stopping, turning, and trying to reverse-engineer how the cloak’s vertex shader worked. Eventually, I gave up. There’s just too much going on — noise functions, vertex distortion, maybe even physics-driven motion. The cloak doesn’t just move randomly; it subtly aligns with a set wind direction, and even when you stand still, it still reacts to that wind. When you move suddenly, the cloak responds again — a clear sign of multiple, layered vertex manipulations working together.
For the fragment shader, I focused on the steel or stone posts in the environment. The snow buildup is denser near the base and fades gradually toward the top — as if the snow simply doesn’t reach that high. What’s fascinating is that even though the posts vary in height, the snow seems to fade out at roughly the same world-space height. That’s a neat detail, and it suggests a fragment shader that considers world position data for the fade effect, not just the object’s local coordinates.
I’ve only been playing Journey for half an hour, and I already feel bad for the developers. Making even the simplest shaders feels like a nightmare at times — so to craft something this polished, dynamic, and consistent across multiple objects feels like straight-up black magic.
In the end, this little exercise made me appreciate how much subtle artistry and math go into making a game world feel alive. It’s one thing to understand shaders in theory — it’s another to see them dancing across sand dunes in a world like this.