Table of Contents

Bent Normal Maps

The Bent Normal maps within Knald are generated from high to low polygonal meshes via The Baker. While they do contain directional data similar to that of normal maps, they are actually more similar to Ambient Occlusion maps as they include a form of occlusion data via the bent normal (i.e. the occlusion value of the mean ray/weighted average that does not intersect with the high poly mesh after hemisphere sampling) which represents the weighted average of all unoccluded directions.

The Bent Normal Group's Settings


Bent Normals Settings












Weighting: A choice between different methods of occluder weighting.

The difference between the three weighting methods for Magnitude within Knald. Cosine (left), Uniform Clamped (middle) & Uniform Unclamped (right).

Flip Green: Here you can change the axis in the dropdown to match the Normal/Derivative maps for your engine or application as required. By default Knald is set to X+Y+Z+, so if you are using a Normal or Derivative map that differs from this configuration, you will need to change this setting. To change this setting check the Flip Green check box to save your choice.

View OS Normal: Enables the viewing of the Object Space Bent Normals map in the Bent Normals tab rather than the Tangent Space Bent Normals map.

Ignore Backface Hits: Checking this option ignores backface ray hits, which is useful in instances where you are using floating geometry on the High Poly mesh.

Rays: This slider is used to determine the number of samples in a discrete evaluation of the integral across the half sphere for diffuse outgoing radiance with a constant radiance field with a minimum of 256 and maximum of 8192 rays being available.

Bias: A bias value based upon mesh density. A value of 10 should be good in most situations.

A normalized Object Space Bent Normals Map set to Cosine with the associated magnitude.

Bent Normal Map Types


Knald can bake both Tangent Space and Object Space Bent Normal map data, and does so simultaneously when baking is initiated. While both maps can be used for real-time rendering, Object Space tends to be the most commonly used during runtime.

Tangent Basis


Knald uses MikkTSpace by Morten S. Mikkelsen, which is available for free, from http://wiki.blender.org/index.php/Dev:Shading/Tangent_Space_Normal_Maps & the xNormal SDK.

It also calculates the bitangent on the fly by default due to the fact that it is more efficient on modern hardware (sending data from vertex to pixel shader is more costly than executing a minor calculation in the pixel shader), which is consistent with Unreal Engine 41) & Blender.