Lighting in Unity is more fully featured than ever. The lighting pipeline includes realtime global illumination, in addition to traditional baked light mapping techniques. These combined with physically-based rendering and the standard shader give more power and versatility to light more complex scenes. Unity uses physically-based rendering, or PBR to create a friendly way of achieving a consistent plausible look for materials under all lighting conditions. In order to do so, Unity models how light actually behaves and follows the laws of physics on how light interacts with materials. These materials are usually created using the standard shader. The standard shader makes physically based rendering easy and accessible to use. One of the most powerful tools in the Unity pipeline is Unity's realtime global illumination, or GI. Using GI, all lights in the scene can effect the object's within range with both direct and indirect illumination. Direct illumination comes from lights shining directly on the objects in the scene. Indirect illumination however is the light reflected, or bounced off of the light surfaces in the scene. This bounced indirect light can illuminate nearby objects mimicking how light behaves in the real world This indirect light is effected by the colour of the surfaces it bounces off of, taking a contribution of that surface's colour with it. Direct and indirect light will blend together to create a much more realistic look. In addition to the default main camera a new scene in Unity comes with a default sky box and a default directional light aligned with that sky box. Each scene also contains default values for ambient light. Ambient light illuminates all surfaces in the scene. Ambient light is controlled by the settings in the lighting panels Environment Lighting tab. Ambient light can be created by either using a sky box, a user generated gradient of 3 colours, or a single colour. All objects added to the scene will receive ambient light unless the ambient intensity value is set to 0 or the ambient light's colour values are set to black. It is rare, if not impossible for any real-world material to have absolutely no reflectivity. By default all objects in the scene will also receive reflection information. Even though the cube, sphere and plane in the scene are unlit and ambient light is none they still receive lighting information in the form of reflections. The default reflection source is the sky box. This can be changed to a custom cube map. To receive no default reflections either set the custom cube map to none, or remove the sky box. It is worth noting that the default sky box is procedurally generated and new procedural sky boxes can be created and saved as assets. When lighting scenes in Unity we can work with realtime lighting, baked lighting, or a mixture of both. Realtime lighting is more easily modified at run time. but it comes at a cost to performance. Baked lighting on the other hand pre-calculates much more detailed lighting information and saves it to a light mapped texture on disc. This light map information is then read from the texture at run time, avoiding the need to do any lighting calculations when the project is running. This saves performance, but at the cost of dynamic changes in the scene. Baked light maps are not updated at run time. Lights can be switched between realtime, baked, and mixed lighting on a per-light basis. Using baked lighting exclusively would be more appropriate for target platforms such as mobile devices with lower performance capabilities. The light mapping system can either work continuously or on demand. When continuous baking is selected lighting changes will be baked in the background while editing. These changes can either be properties adjusted in the inspector, or objects changed in the scene. When continuous baking is not selected changes will only preview on demand. When the Build button in the lighting panel has been selected. In this scene there is a directional light coming in through the skylight in the ceiling. This light contributes to the illumination of the entire scene as the light bounces off of the surfaces it lights directly, on to other nearby surfaces in an indirect manner. This light continues to indirectly illuminate nearby surfaces until the strength of the light fades and it can bounce no more. Decrease the intensity of the light and the illumination of the scene decreases accordingly. Likewise, if the directional light is rotated to directly light a different part of the scene, it will now illuminate the scene in a different way, with both it's direct and indirect lighting. As materials created with a standard shader can mimic a wide variety of physical surfaces and different materials can have different amounts of reflectivity this can effect the scene's lighting. To help balance this the Bounce Intensity can be adjusted on either a per-light basis or globally by adjusting the settings in the lighting panel. Adjustments can be made here to artificially change the potential bounce of light from a lit surface. Adjust the mount of indirect light in the scene, and more. In addition to lights we can use emissive surfaces to contribute to the scene's lighting. This scene is lit with a variety of lights and light types, including emissive surfaces. Emissive surfaces are a light source, but they behave very much like indirect bounced light. The primary emissive surfaces in the scene are in the main corridor junction. But additional panels are located throughout the scene. All of these emissive surfaces use the standard shader's Emission property by adjusting the Emissive scale. The float value next to the Emission property and by adding a touch of colour, the mood of our scene changes. As these lights can participate in realtime light mapping they can be controlled at runtime using code or animation to create complex changes in mood while our projects are running. The final contributing factor in lighting a Unity scene are probes. There are 2 types of probes in Unity. Light probes and reflection probes. Light probes sample the lighting in the scene at different positions in the world. The information in these probes can be used to light dynamic elements in the scene such as characters or other moving objects at a low cost to performance. Reflection probes on the other hand act as a single point of reference to calculate reflections from Surrounding each reflection probes is a cuboid that specifies what should be included in that reflection. These probes sample the elements surrounding them using box projection, and store that information in a cube map. Materials with reflective surfaces that are on objects within the reflection probe's volume can then reference this cube map to create reflective surfaces. By default there is one built-in reflection probe in every scene. This default reflection probe reflects the sky box to create basic reflections. For more detail in the reflections additional reflection probes should be added and positioned appropriately for the reflective objects. It is worth noting that phyically-based rendering works best in linear colour space. Linear colour space will give a more realistic and mathematically correct result. For best results make sure that the colour space is set to linear in the project's Player Settings window. Linear colour space is the default setting. Be aware that not all platforms support linear colour space however, and that gamma is currently the required colour space for most mobile platforms,. When looking at all these aspects to lighting a scene in Unity they can be summed up effectively with the main contributory factors. Ambient light. Reflections. And light sources. Working with materials created with the standard shader being drawn using phyically-based rendering with global illumination to calculate the indirect light and create more complex, more realistic scenes.