Lightmapping: Getting started

This page provides an introduction to lightmapping in Unity. Lightmapping is the process of pre-calculating the brightness of surfaces in a Scene, and storing the result in a chart or “light map” for later use.

Unity uses a system called the Progressive Lightmapper, which bakes lightmaps for your Scene based on how your Scene is set up within Unity, taking into account Meshes, Materials, Textures, and Lights. Lightmapping is an integral part of the rendering engine; when your lightmaps are created, GameObjects automatically use them.

For information about specific lightmapping-related settings, see documentation on Global Illumination.

Preparing the Scene and baking the lightmaps

Select Window > Lighting > Settings from the Unity Editor menu to open the Lighting window. Make sure any Mesh you want to apply a light map to has proper UVs for lightmapping. The easiest way to do this is to open the Mesh import settings and enable the Generate Lightmap UVs setting.

Next, to control the resolution of the lightmaps, go to the Lightmapping Settings section and adjust the Lightmap Resolution value.

Note: To have a better understanding of how you spend your lightmap texels, look at the small Shaded debug scene visualization mode within the Scene View, switch to Baked Lightmap__ and tick the Show Resolution checkbox.

In the Mesh Renderer and Terrain components of your GameObjects, enable the Lightmap Static property. This tells Unity that those GameObjects don’t move or change, so Unity can add them to a lightmap. In the Mesh Renderer component, you can also use the Scale In Lightmap parameter to adjust the resolution of your lightmap’s static Mesh or Terrain.

At the bottom of the Scene tab on the Lighting window, click Generate Lighting (or ensure that Auto Generate is ticked).

A progress bar appears in Unity Editor’s status bar, in the bottom-right corner.

When baking is complete, you can see all the baked lightmaps in the Global Maps and Object Maps tabs of the Lighting window.

When lightmapping is complete, Unity’s Scene and Game views update automatically.

To see the UV chart of the Mesh, click on a GameObject that has Lightmap Static enabled, then navigate to the Inspector window and select the Object Maps tab. Here, you can switch between different light map visualization modes. When you manually generate lighting, Unity adds Lighting Data Assets, baked lightmaps and Reflection Probes to the Assets folder.

Tweaking bake settings

The final look of your Scene depends on your lighting set-up and bake settings. Let’s take a look at an example of some basic settings that can improve lighting quality.

Sample count
Progressive Lightmapper generates color values resulting from a single ray in order to remove noise. These color values are called samples. There are two settings that control the number of samples the Progressive Lightmapper uses for direct and indirect lighting calculations: Direct Samples and Indirect Samples. To find these, open the Lighting window (Window > Lighting > Settings), and go to Lightmapping Settings > Lightmapper.

Higher sample values reduce noise and can improve the quality of the lightmaps, but they also increase the bake time. The images below shows how a higher number of samples increases the quality of lightmaps without using filtering, and produces results that are less noisy.

A Scene using 10 samplesA Scene using 100 samplesA Scene using 1000 samples

Environment Lighting

In addition to all Light sources, Environment Lighting can also contribute to Global Illumination. You can assign a custom Skybox Material instead of default Procedural Skybox and adjust intensity. The following image shows how lighting can change in the Scene with and without Environment Lighting, and provide softer results. The settings for light sources are the same in both Scenes. Unity provides several custom HDRI assets in the Asset Store.

Filtering

Filtering allows you to blur noisy results. The Progressive Lightmapper offers two different types of filtering: Gaussian and A-Trous. When you enable Advanced settings, you can apply these filters for Direct, Indirect and Ambient Occlusion separately. For more information, see documentation on Progressive Lightmapper.