Meshes

Every 3D surface you've seen on a screen is a mosaic of triangles. A mesh is that mosaic plus the data each corner carries — and the triangle is the atom because three points are the most a surface can promise to keep flat. Smoothness isn't a property; it's a budget.

Core Idea

There are no curved surfaces on a GPU. Every sphere, face, and hillside is a mesh — vertices joined into edges joined into triangular faces — and the sphere above is the proof: hover it and the flashlight shows the mosaic it’s really made of. Slide the subdivision and watch the silhouette, not the surface: the shading is smooth at every level (the normals lie beautifully), but the outline stays polygonal until enough triangles buy it round. Smoothness is a budget, not a property.

Why the Triangle Is the Atom

Three points define exactly one plane — always, with no exceptions. Four points only sometimes do, and the demo below is what happens when they don’t:

Lift the corner: the quad must choose a diagonal to fold along, and the two choices are two genuinely different surfaces — different slopes, different centre, different lighting. A triangle never faces that decision, which is why it is the one primitive rasterization hardware consumes. Everything else is converted first: a quad splits into two triangles, an N-gon into N−2. (Artists still model in quads — edge loops flow predictably — but at export the mesh becomes triangles, and the winding order of each one decides which way it faces: the cross product’s story.)

A Vertex Is a Record, Not a Point

Each vertex carries everything the pipeline will later want per corner:

Attribute What it is Spent by
position where the corner sits (local space) every stage
normal which way the surface faces there lighting
uv its address in texture space texturing

The surface between corners owns nothing — everything mid-triangle is interpolated from these three records. How the records actually live in memory — typed arrays, sharing corners through indices, the upload to the GPU — is the buffers story.

The Budget

Every triangle is transformed and rasterized every frame, so poly count is a permanent negotiation between smoothness and frame rate:

Tier Triangles Typical use
low < 5k mobile, background objects, stylized work
medium 5k–50k hero objects in realtime scenes
high 50k+ film, sculpting sources — not realtime budgets

The craft is spending triangles only where they touch the silhouette — the one place the mosaic can’t be faked — and letting texture maps fake the interior detail (a normal map makes 1,000 triangles light like a million). Distant objects renegotiate the deal entirely via level of detail.

Where Meshes Come From

Procedural primitives (box, sphere, plane) are built by code at runtime; authored models arrive as GLTF/GLB files with their attributes and materials bundled. And underneath many of them sits mathematics one level up: parametric curves extended to surfaces P(u, v) — Bézier patches, NURBS, subdivision surfaces — which are evaluated down to a triangle mesh at some resolution before the GPU ever sees them. The mesh is always the last stop before rendering.

A newer source is generative tools — text or reference images in, a .glb with PBR maps out. The mesh-quality lens above is exactly how to judge the output: a generated model can be faithful to its reference and still fail production, because production-ready means topology that survives deformation, clean UV unwraps, and texture maps that aren’t baked flat — precisely the per-corner records and layout this article is about. That’s why the honest sweet spot for generated assets is background props: things that read from a distance, placed at LOD tiers, wearing their detail as textures rather than vertices. The judgment of which topology will fail is still a human skill; the tools don’t supply it.

Connections

The triangle’s flatness guarantee is what lets rasterization cover it with one cheap test per pixel, and each triangle’s facing comes from the cross product of its edges. The per-corner records feed normals to lighting and uv addresses to texturing; buffers explains how those records are packed and shared in memory. Smooth mathematical surfaces — curves and surfaces — sit upstream, waiting to be tessellated into the mosaic.