A reliable workflow
What a neutral texel actually means
A neutral tangent-space texel encodes approximately RGB 128, 128, 255: no sideways deviation and a vector facing out of the surface. A normal map generator can encode only the surface evidence available in its input.
How slope becomes an RGB vector
Sobel and Scharr read neighboring height values; strength changes the X/Y vector contribution while level keeps a forward-facing Z component. This normal map generator exposes both choices instead of hiding them behind an automatic preset.
Why color evidence has a ceiling
Color-image depth is an interpretation. Painted color and directional light can create gradients that do not belong to the surface shape.
What this method can and cannot measure
Evidence boundaries
| Input or check | Useful for | Does not guarantee |
|---|---|---|
| Measured height | Derive local surface direction | Physical scale without a reference |
| Color image | Estimate form from luminance | Physically recover depth |
| Browser 3D preview | Diagnose axes and seams | Guarantee the target renderer |
Field reference
A deeper working reference
Page focus: A neutral tangent-space texel encodes approximately RGB 128, 128, 255: no sideways deviation and a vector facing out of the surface. A normal map generator can encode only the surface evidence available in its input.
Establish a reference before tuning
Keep one recognizable bevel, groove, or raised mark as a directional reference. Write down which side should brighten when the light moves from left to right and from top to bottom. This small reference prevents a plausible-looking preview from hiding an inverted channel, reversed height interpretation, or unrelated source shadow. Compare every major setting against the same feature instead of judging a changing texture globally.
Match filtering to the source scale
Filter radius and normal strength should be judged at the texel density used by the asset. Fine sensor noise may look like useful relief at 100% zoom but shimmer after mipmapping. Conversely, a broad blur can erase mortar edges or stamped forms that should remain. Test a low-resolution interaction preview, then inspect the full-resolution result and at least one smaller mip-equivalent view before choosing a final preset.
Separate texture faults from mesh faults
A 2D channel inspector can prove that vectors are finite, normalized, and continuous across image borders. It cannot prove that a mesh has the expected UV orientation, tangent basis, mirrored-island handling, or vertex splits. When the browser preview looks correct but the destination does not, compare import color space, channel convention, UV set, tangent generation, compression, and material strength in that order.
Test repetition and distance
Materials are rarely viewed at only one scale. Inspect a single tile closely, a 3×3 repeat for boundary continuity, and a larger repeated field for obvious motifs. Then reduce the preview until fine detail approaches a pixel. This reveals seams, periodic bands, and high-frequency sparkle that a close static view misses. A technically seamless edge can still produce a distracting repeated arrangement in the middle of the tile.
Record decisions with the asset
A useful handoff says whether the file is tangent space, whether green represents Y+ or Y−, which UV set it expects, what strength was used, and whether height, AO, roughness, or specular values are estimates. Preserve the original source and an uncompressed export. Clear names and a small settings record are more reliable than asking another artist to infer convention from a purple thumbnail.
Know when to change methods
Stop deriving relief from a color image when lighting, paint, transparency, or reflectance dominates its brightness. Build a dedicated height map, capture controlled directional photographs, bake from geometry, or use measured material data instead. The browser workflow remains useful for iteration, conversion, combination, and diagnosis, but the evidence available in the source defines the ceiling of the result.
Validate vectors rather than thumbnail color
A purple thumbnail is only a convenient overview. Inspect the encoded red, green, and blue components, confirm that flat regions stay near the neutral direction, and move a known light across the 3D preview. A valid normal map should preserve unit-length directions after conversion or combination. Channel clipping, gamma correction, and lossy blocks can all change lighting even when the small preview still looks familiar.
Carry color-space intent into import
Export is not the end of the workflow. Mark the file as non-color vector data in the destination and confirm that automatic texture classification has not enabled an inappropriate color transform. Review compression, mip generation, tangent basis, and the material normal input on a representative mesh. The same normal map can shade differently when any of those downstream assumptions changes.
Budget resolution and browser memory
Pixel dimensions affect both surface detail and working memory. Decoding, height preparation, gradients, output buffers, previews, and ZIP assembly can require several copies of an image at once. Process large assets in deliberate groups, close unused tabs, and keep the source available if the browser cancels a task. A larger export is only a resize unless the source contains additional spatial evidence.
Approve the asset under final conditions
Use the intended UV set, material scale, camera distance, lighting range, renderer, and platform quality settings for the last review. Rotate the light across both axes, inspect grazing angles, and compare close and distant views. Record any corrective green-channel flip beside the asset. This final check turns a plausible browser result into a documented normal-map decision without claiming physical accuracy.