Lightmap baking

Lightmap baking

Indigo 4.4.10 introduced a lightmap baking feature.

Lightmap baking is the rendering of a lightmap. A lightmap is an image map that represents the light (or in particular, the irradiance) at points on the surface of an object. Lightmaps are usually used for realtime 3d rendering, for example in computer games or VR experiences.

Lightmap baking in Indigo allows a lightmap to be computed with full unbiased physically-based spectral rendering with global illumination.


A lightmap baked in Indigo


The lightmap used in a realtime OpenGL 3d engine.

UV unwrapping

Lightmaps require a special UV mapping, generally in which each piece of geometry appears just one in the UV map, and there are no overlaps. The process of generating such a UV map is called UV unwrapping.

Indigo can optionally perform this UV unwrapping process, or it can use an existing UV mapping present in the mesh data.

How to use lightmap baking in Indigo

To perform lightmap baking with Indigo, you will need to either enable lightmap baking in the render settings user interface, or alternatively edit your scene file.

To enable in the user interface, select an object in the 'Object to bake' box:

You should check 'Generate lightmap UVs' unless you know your object mesh already has a suitable UV map.

You can alternatively edit your scene file (.igs file, which is just XML), and set the following render settings in your <renderer_settings> element: (see https://www.indigorenderer.com/indigo-technical-reference/indigo-scene-f...)

light_map_baking_ob_uid
If set to a valid UID (>= 0), Indigo will compute a lightmap for the object with the given UID.
type: int
default value: -1

generate_lightmap_uvs
If set to true, Indigo will generate a UV mapping for the mesh that it is computing lightmaps for, if any (see light_map_baking_ob_uid). The new UV mapping will be added to the mesh after the existing UV mappings.
For example, if the mesh has a single UV mapping with index 0, then a new UV mapping will be created with index 1.
The modified mesh with the additional UV mapping will be saved to disk at 'mesh_with_lightmap_uvs.igmesh' in the Indigo Renderer application data dir. (e.g. C:\Users\xx\AppData\Roaming\Indigo Renderer)

If generate_lightmap_uvs is false, then the UV mapping with the highest index in the mesh will be used as the lightmap UV mapping.
type: boolean
default value: false

capture_direct_sun_illum
This option only has an effect when computing a lightmap.
If set to false, direct illumination from the sun will not be captured in the light map. This is useful in the case that direct sun illumination will be rendered using some other technique at runtime, for example shadow mapping.
type: boolean
default value: true


A lightmap with capture_direct_sun_illum set to false; compare with the lightmap above.

Saving your lightmap

Indigo renders lightmaps much like usual renders with a simulated camera. As such you can save the lightmap in the standard ways, including with the Save Image toolbar button, which saves tonemapped, LDR image. You can also save out a HDR un-tonemapped EXR, with the Render > Save un-tonemapped image command.

Denoising

Indigo's integrated denoiser also works very effectively with lightmaps. You can enable denoising by checking the 'Denoise' button in the Image Settings controls in the Render Settings area.


Lightmap without denoising


Lightmap with denoising (same render time)