In the end, weighted normals teach us a profound lesson about computer graphics: And a well-weighted lie is indistinguishable from the truth.
Weighted normals are the cheat code for the "low-poly aesthetic." Artists have long manually adjusted vertex normals using tools like Maya's polyNormalPerVertex or Blender's Custom Normal Editor. Now, engines like Unreal and Unity support importing custom normals directly from FBX, and modern workflows (like using the WeightedNormal modifier in 3ds Max or MikkTSpace) automate the magic. weighted normals
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. In the end, weighted normals teach us a
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. That’s where normals come in
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.
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.
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.