Course 2 · Game Asset · Advanced

Baking high-poly detail onto the low-poly

Baking is where the agent confidently produces a normal map full of skirts, waves, and black gaps — because it set a cage and ray distance it cannot see the consequences of, and a render thumbnail will not reveal the artifacts until they ship.

Read this module through your lens

Designers: the bake is how the expensive detail survives the budget cut. Learn to read the map for tears.

What baking actually does

You cut the model to a triangle budget, which threw away real geometric detail — bolts, seams, fabric weave. Baking is how that detail comes back without the polygons: you keep a high-poly version and “bake” its surface detail into texture maps (a normal map for the fine bumps, an ambient-occlusion map for contact shadows) that wrap onto the cheap low-poly mesh. At a glance the low-poly looks almost as detailed as the high.

The catch is that a bake is a ray-cast transfer between two meshes, governed by parameters the agent sets without being able to see the result: which mesh is the source and which the target, a “cage” that bounds the rays, and a ray distance. Get those wrong and the rays miss, cross, or overshoot — producing skirts, waves, and black gaps in the map.

And crucially, the shaded model can look fine while the map is a mess. The advanced skill is to stop trusting the render and read the map.

The case study: a bolted panel

prompt 1

”Bake a normal map for this panel.”

failure

The agent baked the low-poly onto itself — there was no high-poly in the pairing — so the normal map is flat blue and carries no bolt detail at all. On a second attempt with the high-poly included, it set a huge ray distance; now the bolts have skirts and the recessed areas show black gaps where rays shot past the surface. The shaded preview looked “mostly okay,” which is why it nearly shipped.

fix · prompt 2

”Bake from HIGH panel_high to LOW panel_low using a cage. Set ray distance to ~3 mm, just past the deepest recess. Output a tangent-space normal and an AO map at 2K. Show me the raw maps and flag any skirts or black gaps.”

output

The normal map now shows crisp bolt heads, no skirts; AO has clean contact shadows. One recess still gaps — a 1 mm distance bump and re-bake closes it.

Read the map, not the render

The single habit that separates a usable bake from a shipped artifact: open the baked texture as an image and zoom in, instead of judging the shaded model.

A correct tangent-space normal map is a calm field of blue-purple with crisp detail where the high-poly had it. Skirts appear as bright halos bleeding off the edges of features — the signature of too-large a ray distance or a missing cage. Black gaps are where rays found nothing to hit, often from too-small a distance or a high-poly that does not fully envelop the low. The AO map should be clean soft shadows in crevices, with no banding or leaks across UV islands.

Why does the shaded render lie? Because lighting, base colour, and roughness mask map errors at a glance — the eye forgives a lot when there is a nice highlight. The map texture has nowhere to hide. Inspect it directly, every time.

Hands-on exercise

Take a model where you have both a detailed and a budget version (or add surface detail to a high-poly copy). Prompt a bake without specifying the pairing or distance, and inspect the raw normal map — note whether it is flat or full of skirts. Then prompt with explicit high/low pairing, a cage, and a ray distance tuned to the deepest recess. Screenshot the raw normal and AO maps, zoom in, and mark any remaining artifact and the distance change that fixes it.

The same lesson, a different object

prompt 1

Bake a normal map for this carved sign.

failure

First bake captured nothing — it baked the low-poly onto itself, so the map is flat blue with no letters. Second try used a huge ray distance, giving the carved letters bright skirts and black gaps in the grooves.

fix · prompt 2

Bake from HIGH sign_high to LOW sign_low using a cage, ray distance about 2 mm past the deepest groove. Output a tangent-space normal and an AO map at 2K. Show the raw maps and flag skirts or gaps.

output

The letters now read crisply in the normal map, no skirts. One groove still gaps — a 1 mm distance bump closes it. Judged on the map, never the shaded render.

The failure gallery

Each of these is caught by a quality gate — keep the cheatsheet open while you work.

See the journey

🖼 A zoomed crop of the raw normal map showing the carved letters — flat/skirted vs clean after the distance fix. screenshot slot · supplementary to the written core
A bake is a transfer between two meshes governed by parameters the agent sets blind — cage, ray distance, high/low pairing. Specify the pairing and the distances, then inspect the baked map itself, not the shaded result, for skirts and gaps.

Cheatsheet

Prompt skeleton
Bake from HIGH [name] to LOW [name]. Maps: normal (tangent), ambient occlusion. Use a cage; set ray distance just past the largest surface gap (~[N] mm). Match the low-poly UVs; output [resolution]. Show the baked normal + AO maps (not the shaded model) and flag any skirts/black gaps.
Failure modes
  • Baked from low onto itself (no high detail captured)
  • Wrong cage/ray distance -> skirts, waves, intersecting-geometry artifacts
  • Black gaps where rays missed the high-poly
  • Normal map in wrong space (object vs tangent)
  • Agent shows the shaded render, hiding map artifacts
Key operations
  • Pair high and low explicitly (selected-to-active)
  • Set a cage; tune ray distance to surface gap
  • Bake normal (tangent) + AO at target resolution
  • Inspect the raw map textures for artifacts
  • Re-bake problem areas with adjusted distance
Quality gates
  • Does the normal map carry the high-poly detail (not flat)?
  • No skirts, waves, or black gaps in the map?
  • Tangent-space normal (mostly blue/purple field)?
  • AO clean, no leaking/banding?
  • Did you inspect the MAP, not just the shaded model?
Workflow steps
  • Confirm high and low share UV-compatible layout
  • Prompt the bake with explicit cage + ray distance
  • Open the baked maps as images, zoom in
  • Find skirts/gaps; adjust distance or cage; re-bake
  • Log the map crops, before/after
Next module
  • game_validation_and_export — passing the asset cleanly into an engine.

Reflection card

Active retrieval — answer from memory before re-reading. Saved to this browser.

  • A bake with high and low explicitly paired and a stated ray distance.
  • The raw baked normal + AO maps screenshotted (not the shaded model).
  • One artifact (skirt, gap, or wrong space) identified and re-baked.

Next: game_validation_and_export — passing the asset cleanly into an engine.

Finish — back to Game Asset →