Skip to content

01 ‐ Normal Smithing Options

Crescent Edge edited this page Jun 22, 2026 · 1 revision

Normal Smithing Options

This page documents each configurable option in the Normal Smithing application.

Each setting directly influences how the baking process computes and outputs bent normal and occlusion maps, ultimately affecting the quality, accuracy, and visual style of your final textures.


Input Files

Load Model

Opens a file dialog to select a 3D model (.fbx). The selected model is loaded using the Assimp library with post-processing steps including triangulation, UV generation, and tangent space calculation.

Important Note:
When creating your FBX file from Blender, you must make sure that Tangent Space is not ticked under Geometry in the right-hand side bar of the export.

Mesh Selection

Displays a dropdown list of all meshes available in the loaded model. The user selects the mesh that will be used for map baking. The baking process will only consider the chosen mesh, the other meshes will have no influence in the occlusion baking process.

Load Alpha Texture

Opens a file dialog to select an alpha texture image (e.g., PNG, JPG, BMP). The alpha texture, if provided, is used during occlusion testing to simulate transparency.

The alpha channel influences which areas are considered occluded. Transparent or semi-transparent areas may be treated differently, affecting the occlusion map’s final appearance.

Important Note: When preparing your alpha texture for occlusion testing, ensure that it is formatted correctly. The application supports two approaches:

  • RGBA Format: The texture should include an explicit alpha channel where transparency is determined by the alpha values.
  • RGB Format (using Greyscale): If the texture lacks a dedicated alpha channel, use a greyscale image where the luminance (from Black to White) represents transparency—darker areas will be treated as more transparent, while lighter areas will be considered opaque. This distinction is crucial because the alpha texture is sampled during the baking process to determine occlusion. An improperly formatted texture may lead to inaccurate occlusion results. The application uses different methods to read the pixel data depending on the file type (for example, PNG images retain their original format using a WPF decoder), so ensuring your texture meets one of these standards will help avoid unexpected behavior during the bake.

Output Settings

Texture Width / Texture Height

Text boxes where you define the resolution of the output textures.

Higher resolutions yield more detailed maps but require more processing time. The chosen dimensions directly affect the map’s quality and file size.

UV Padding (px)

Specifies the number of extra pixels to extend UV islands during the baking process. Increasing this value helps prevent edge artifacts and texture bleeding by providing a buffer around the UV islands. Adjust this setting if you notice seams or artifacts when maps are applied to your model.

Important Note:
The UV padding is applied at the supersampled resolution before the image is downscaled to the final output size. For example, if you set the output resolution to 1024×1024 with a 4× supersample factor, the baking process works at 4096×4096. If you specify a UV padding of 2 pixels, 2 pixels will be added around each UV island in the 4096×4096 image. When the image is later downscaled back to 1024×1024, the padding effect is proportionally maintained, ensuring that edge artifacts are minimized in the final texture.

Supersample Factor

This will scale the chosen resolution by the specified factor during the baking process and downsample back to the chosen output resolution on completion.

Higher supersample factors will yield more detailed and less noisy maps but require more processing time.


UV Mapping Options

Bent Normal/Occlusion Map UV

Selects the UV channel from the model that will be used for baking the bent normal and occlusion maps.

The output maps are correctly aligned to the model’s UV layout, ensuring that the details and lighting information match the intended texture coordinates.

Alpha Map UV

Selects the UV channel used for sampling the alpha texture.

The alpha texture is mapped correctly over the model, so the transparency data used in occlusion testing corresponds accurately to the model’s surface.


Map Generation Options

Generate Bent Normal Map

  • When ticked:
    The baking process creates a bent normal map based on the UV selected for "Bent Normal/Occlusion Map" in the UV Mapping Options.

Generate Occlusion Map

  • When ticked:
    The baking process creates an occlusion map based on the UV selected for "Bent Normal/Occlusion Map" in the UV Mapping Options.

Both Maps

  • When both are ticked:
    The baking process casts rays once to generate both maps simultaneously, saving computation time.

Sampling Options

Use Tangent Space

  • On:
    Transforms computed bent normals from world space into the surface’s local tangent space.
    • Uses the surface's tangent, bitangent, and normal vectors.
    • Results in more accurate lighting and texture mapping.
  • Off:
    Leaves computed bent normals in world space, bypassing the transformation.
    • Simpler processing but may lead to less precise alignment with textures and shading.

Use Cosine Distribution

  • On:
    Generates sample directions using a cosine-weighted distribution.
    • Biases rays toward the surface normal.
    • Simulates realistic light falloff and enhances efficiency for diffuse surfaces.
  • Off:
    Generates sample directions uniformly over the hemisphere.
    • Distributes rays evenly without bias.
    • May be less natural for diffuse shading.

Process Back-Facing Triangles

  • On:
    Inlcudes Back-Facing triangles (ones with flipped normals) in the baking process.
  • Off:
    Excluse Back-Facing triangles (ones with flipped normals) in the baking process.
    • If using blender you can tell if you have back-facing triangles by enabling the Face Orientation in the Show Overlays button usually at the top right of the viewport window.

Lerp Occlusion From Threshold

  • On:
    Rescales the occlusion map from 0-1 to Occlusion Threshold-1.
    • Lightens darker areas without fully removing the variation.
  • Off:
    Clamps any occlusion values below the threshold directly to that minimum value.
    • Results in dark areas being brightened to a fixed predefined level.


Swizzle Options

Invert X, Invert Y, Invert Z

These checkboxes allow you to flip the corresponding channels of the output maps.

Adjusts the orientation of the normals. This is useful for matching the output with different rendering engines or specific artistic requirements.


Baking Options

Ray Sample Count

Sets the number of rays cast per pixel during the baking process.

Higher counts improve the quality of the maps by providing more sampling data but increase processing time.

Max Ray Distance

Specifies the maximum distance that rays are cast for intersection testing.

Limits how far the baking process looks for occluders, affecting the extent of occlusion and bent normal calculations.

Occlusion Threshold

Determines the minimum occlusion value applied during clamping or interpolation.

Influences the brightness and detail of the occlusion map; adjusting this can balance shadow intensity.

Ray Origin Bias

A small offset added to the starting point of each ray to prevent self-intersections.

Minimises artefacts and erroneous intersections, ensuring cleaner map outputs.

Important Note:
If you leave the ray origin bias at or below zero, the application will automatically calculate a recommended value based on the scene’s scale (for example, 0.1% of the model's bounding box diagonal). This dynamic computation ensures a good balance between accuracy and artifact prevention, but users should be aware that manually tweaking this value may be necessary if your model has an unusual scale.

AA Sub-samples

Sets the number of sub–samples per pixel used for anti–aliasing in the baking process. Higher values yield smoother edges and a cleaner final image but may increase processing time. Choose a value that best balances quality and performance for your scene.

Important Note:
The anti–aliasing (AA) sub-sample setting determines how many sub-samples per pixel are taken during the baking process. Like UV padding, these sub-samples are computed at the supersampled resolution. So, if you increase the number of AA sub-samples, you are effectively improving edge smoothing and overall quality at the high-resolution stage, with the final result being a composite of these multiple samples once downscaled to the user-specified output size.


Additional Options

Check for Update

  • Queries the Github latest release and checked the release version against the current installed app version.
  • If there is a newer version available, you will asked if you want to update to the latest version.
  • Included in Normal Smithing is a seperate updater executable, which will download the latest release to the Temp folder, and overwrite the Normal Smithing files with the newer version.
  • The newer version will then be launched after the update has completed.

Check for Updates on Start

  • Automatically check for new releases on the Github page when the app launches.
  • You are then asked if you want to update as above.

Fast Preview Mode (50ms)

When enabled, the preview image updates every 50ms instead of 500ms.

Provides quicker visual feedback during baking, though it may slightly impact performance on lower-end systems.

Dark Mode Toggle & Set Highlight Colour

  • Dark Mode Toggle:
    Switches the application’s UI between light and dark themes.

    Adjusts the visual appearance for better usability in different lighting conditions.

  • Set Highlight Colour:
    Opens a colour picker to set the accent colour used for buttons and headers.

    Customises the UI appearance to suit user preferences or branding requirements.

Documentation

  • README
    Opens the link to the Github README page.
  • Wiki
    Opens the link to the Github Wiki page.

Credits

  • Open a credits window with acknowledgements.