Enter .
In the world of real-time rendering, a lie well told is better than a clumsy truth. And no lie is more elegant, or more misunderstood, than the weighted normal.
That’s where normals come in. A normal is simply an arrow pointing perpendicular to a surface. In a shader, that arrow tells the light, “I face this direction.” On a flat polygon, every pixel shares the same normal. The result? Flat shading. Harsh. weighted normals
To fake smoothness, we use vertex normals —averaging the normals of all the polygons that meet at a single corner. This is the classic "smooth shade" button. It works wonderfully for a sphere. But for a cylinder? You get a strange, pinched artifact at the top and bottom. For a game character’s hard-edged armor? The edges look like melted plastic.
Why? Because the standard average treats every polygon equally. A tiny sliver of a triangle has the same voting power as a large, sweeping quad. It’s democratic, but it’s wrong. That’s where normals come in
So the next time you see a low-poly rock that catches the light just right—with no faceted harshness, but also no melted edges—thank the weighted normal. It is the silent mathematician, the invisible sculptor, making your sharp, economical world feel soft and real.
Imagine you’re tasked with lighting a low-polygon game asset—say, a crate, a boulder, or a character’s shoulder. The geometry is faceted, sharp, and efficient. But when a light hits it, the truth of those flat triangles screams back at you. You see every edge. The object looks like a cut gemstone, not a smooth, organic form. The problem isn't the geometry. The problem is how you’re pretending the surface curves. The result
In the end, weighted normals teach us a profound lesson about computer graphics: And a well-weighted lie is indistinguishable from the truth.