# Lights

> Learn all about lights and shadows in Babylon.js

Source: https://doc.babylonjs.com/features/featuresDeepDive/lights

## Lights and Shadows

Lights are, of course, necessary to see meshes and affect their brightness and color. Although lights illuminate meshes, they only produce shadows when shadow generation is enabled for the mesh. The default number of allowed lights is four, but this can be increased.

There are five types of lights that can be used, each with a range of lighting properties.

- The Point Light - think light bulb.
- The Directional Light - think planet lit by a distant sun.
- The Spot Light - think of a focused beam of light.
- The Hemispheric Light - think of the ambient light.
- The Rectangular Area Light - think LED panel.

Color properties for all lights include _emissive_, _diffuse_ and _specular_.

Overlapping lights will interact as you would expect, with the overlap of red, green, and blue producing white light. Every light can be switched on or off, and when it is on, its intensity can be set with a value from 0 to 1.

For shadows a _shadowGenerator_ object is needed. There is also an extension, **shadows only**, that allows shadows on a transparent mesh.

To understand how meshes react to light, you need to know about the normals of a mesh, since they form part of the calculations that determine color and illumination.

## Pages in this section

- [Introduction To Lights](https://doc.babylonjs.com/features/featuresDeepDive/lights/lights_introduction.md): Learn the basics of lights in Babylon.js
- [Shadows](https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows.md): Learn how to leverage shadows in Babylon.js
- [Cascaded Shadow Maps](https://doc.babylonjs.com/features/featuresDeepDive/lights/shadows_csm.md): Learn how to utilize Cascaded Shadow Maps in Babylon.js
- [Volumetric Light Scattering Post Process](https://doc.babylonjs.com/features/featuresDeepDive/lights/volumetricLightScattering.md): Learn how to utilize a Babylon.js post process to simulate light scattering.
- [Global Illumination with Reflective Shadow Maps](https://doc.babylonjs.com/features/featuresDeepDive/lights/rsmgi.md): Learn how to utilize Babylon.js to render scenes with global illumination
- [Mathematics of the depth metric when generating shadow maps and rendering with shadows](https://doc.babylonjs.com/features/featuresDeepDive/lights/mathShadows.md): Some in-depth knowledge on how Babylon.js is computing the depth metric used in shadow map generation and shadows rendering when in normal / reverse depth buffer mode and when using either the -1..1 or 0..1 NDC Z range
- [Clustered Lighting](https://doc.babylonjs.com/features/featuresDeepDive/lights/clusteredLighting.md): Learn about Babylon's clustered lighting implementation
