1 Overview
Baking normal maps inside a real-time engine has become a common habit, and it is usually the wrong one. The engine is built to render finished assets quickly, not to compare a dense sculpt against a light game mesh across millions of surface samples. When artists bake there, they inherit the engine's own limitations: its renderer, its memory budget, its handling of cage offsets, and its tendency to fight you when a bake needs to be re-run at a different resolution.
This article is a field report on moving that work out of the engine and into a dedicated baking tool. The subject is a single game asset: a low-poly mesh that needs a tangent-space normal map carrying the surface detail authored on a high-poly sculpt. The pipeline is conventional, high-poly to low-poly to unwrap to bake to import, but the decision about where the bake happens changes the quality of the result and the sanity of the artist.
The advice here is deliberately tool-agnostic. It applies whether you use a standalone baker, a modeling package's bake module, or a texture authoring suite. What matters is that the bake runs in a context designed for baking, with explicit control over cages, ray distances, and output formats, rather than as a side effect of an engine import.
2 What this asset does in the game
A normal map's job is to lie convincingly about geometry. The game mesh stays light so it can be drawn many times per frame, while the normal map perturbs the surface normals at render time so lighting reads as though the mesh carried far more detail than it does. Panel lines, bolts, cloth folds, scratches, and beveled edges all live in the texture rather than in triangles.
That makes the normal map one of the most load-bearing textures on the asset. If it is wrong, every light in the scene exposes the error. A seam that does not match produces a visible crease under a moving light. A bake that captured the wrong tangent basis produces shading that looks inverted or plasticky. A map baked at the wrong resolution loses the fine detail that justified the high-poly sculpt in the first place.
Because the normal map is sampled by the material and combined with the base color, roughness, and ambient occlusion maps, it also has to agree with them. Its UV layout is shared with the rest of the texture set, so any change to the unwrap invalidates the bake. Treating the normal map as a first-class asset, produced deliberately and verified before import, is what keeps the rest of the texture set coherent.
3 Style and art direction
The art direction for this asset is stylized-realistic: forms are simplified and readable, but surface detail is grounded in plausible materials. That combination puts specific demands on the normal map. Stylized shapes often have broad, clean planes, and broad clean planes are exactly where a bad bake shows up, because there is nowhere for the error to hide. A subtle gradient across a flat panel is more noticeable than the same error on a noisy surface.
The high-poly sculpt should therefore carry detail that supports the style rather than fighting it. Hard-surface bevels should be crisp and consistent in width. Organic forms should have folds and wrinkles that follow the underlying anatomy or construction. Detail that is too fine will vanish at the resolution the game can afford; detail that is too soft will read as mush once it is compressed into a tangent-space map.
Art direction also decides what belongs in the normal map versus what belongs in the mesh. Silhouette-changing forms must stay in geometry. Everything else, including small chamfers, inset panels, stitching, and surface wear, is a candidate for the bake. Making that split explicit before unwrapping saves a rebuild later, because moving a form from texture to geometry after the UVs are laid out means redoing the bake and often the unwrap.
4 The production pipeline
The pipeline begins with a high-poly sculpt or a dense subdivision model that contains all the surface detail. From there, a low-poly game mesh is built to match the silhouette and the major forms. The low-poly mesh is then unwrapped with attention to seam placement, texel density, and UV island padding, because the bake will inherit every decision made here.
With both meshes ready, the bake is set up in a dedicated baking tool. The high-poly mesh is loaded as the source, the low-poly mesh as the target, and a cage or ray distance is configured so that rays cast from the low-poly surface reach the high-poly surface without hitting neighboring geometry. This is the step that engines handle poorly, because their importers rarely expose the cage controls a difficult bake needs.
The bake is then run and inspected. Common outputs include the tangent-space normal map, an ambient occlusion map, a curvature map, and a position map, all of which can feed later texture authoring. Once the maps are verified, they are exported in a format the engine accepts and imported as texture assets. The low-poly mesh is imported separately, and the normal map is assigned to the material's normal input, with the correct texture compression and sRGB setting applied.
5 Technical constraints to respect
The normal map must be tangent-space, and it must use the same tangent basis the engine will use at render time. Mismatched tangents are the single most common cause of shading that looks subtly wrong after import. If the engine computes averaged tangents from the UV layout, the bake should be configured to match; if explicit tangents are exported with the mesh, the bake should use those. Guessing here produces errors that are hard to diagnose later.
Bit depth and resolution matter. Sixteen-bit output preserves smooth gradients and reduces banding on broad surfaces, while eight-bit is smaller but can show steps on gentle curvature. Resolution should be chosen from texel density, not habit: a map that is too small loses the detail the sculpt carried, and one that is too large wastes memory and import time. Padding between UV islands must be sufficient that mipmapping does not bleed neighboring detail into seams.
The mesh itself imposes constraints. Hard edges, split normals, and overlapping UVs all affect the bake. Overlapping islands will receive conflicting detail, and split normals can create visible seams if the cage does not account for them. The material also constrains the result: the normal map is combined with other maps, so its strength and its coordinate space must match what the shader expects, and any flipping of the green channel must be resolved before the asset ships.
6 Polishing for the engine
Once the bake is complete, the work shifts to integration. The normal map is imported with the correct compression settings and color space, because a normal map treated as color data will be decoded incorrectly and will light the surface wrongly. The material is then set up so the normal map feeds the normal input, with its strength tuned to the art direction rather than left at a default.
Verification happens under motion. Static screenshots hide tangent errors, but a rotating light or a moving camera exposes them immediately. The asset should be checked from several angles, at several distances, and under different lighting conditions, including harsh directional light that reveals every seam and every inverted normal. Comparing the in-engine result against the bake preview in the dedicated tool is the fastest way to isolate whether a problem came from the bake or from the import.
Finally, the asset is documented. The bake settings, cage offsets, resolution, and any channel conventions are recorded so the map can be regenerated if the sculpt or the unwrap changes. Baking outside the engine is not just a quality decision; it is a reproducibility decision. When the settings live with the asset rather than inside an engine import dialog, the next artist can rebuild the map and get the same result.
7 Frequently asked questions
Why not just bake in the engine if it is convenient? Convenience is real, but the engine's baker is usually a simplified path with limited control over cages, ray distances, and output formats. For simple assets it may be adequate. For anything with tight geometry, thin features, or hard edges, the lack of control shows up as artifacts that are difficult to fix without moving the bake elsewhere.
Does baking outside the engine change the final look? It should not, if the tangent basis and channel conventions match. The goal is a map that the engine renders exactly as the dedicated baker previewed it. When the look does change, the cause is almost always a mismatch in tangents, bit depth, compression, or color space rather than the location of the bake.
How do I know the bake is good enough to ship? Inspect it in the baking tool first, then in the engine under moving light. Look for seams along UV borders, inverted shading on flat panels, and lost detail on curved forms. If the map survives a rotating light and a close camera, it is ready. If not, adjust the cage, the ray distance, or the unwrap and bake again before touching the material.