File: CSM.md | Updated: 11/15/2025
An implementation of Cascade Shadow Maps (CSM).
This module can only be used with WebGLRenderer. When using WebGPURenderer, use CSMShadowNode instead.
CSM is an addon, and must be imported explicitly, see Installation#Addons.
import { CSM } from 'three/addons/csm/CSM.js';
Constructs a new CSM instance.
data | The CSM data.
---|---
An array of numbers in the range [0,1] the defines how the mainCSM frustum should be split up.
The scene's camera.
The number of cascades.
Default is 3.
Custom split callback when using mode='custom'.
Whether to fade between cascades or not.
Default is false.
An array of frustums representing the cascades.
The light direction.
The light far value.
Default is 2000.
The light intensity.
Default is 3.
The light margin.
Default is 200.
The light near value.
Default is 1.
An array of directional lights which cast the shadows for the different cascades. There is one directional light for each cascade.
The main frustum.
The maximum far value.
Default is 100000.
The frustum split mode.
Default is 'practical'.
The parent object, usually the scene.
A Map holding enhanced material shaders.
The shadow bias.
Default is 0.000001.
The shadow map size.
Default is 2048.
Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.
Applications must call this method when they remove the CSM usage from their scene.
Applications must call this method for all materials that should be affected by CSM.
material | The material to setup for CSM support.
---|---
Updates the CSM. This method must be called in your animation loop before calling renderer.render().
Applications must call this method every time they change camera or CSM settings.
Constructor data of CSM.
camera
Camera | The scene's camera.
---|---
parent
Object3D | The parent object, usually the scene.
cascades
number | The number of cascades. Default is 3.
maxFar
number | The maximum far value. Default is 100000.
mode
'practical' | 'uniform' | 'logarithmic' | 'custom' | The frustum split mode. Default is 'practical'.
customSplitsCallback
function | Custom split callback when using mode='custom'.
shadowMapSize
number | The shadow map size. Default is 2048.
shadowBias
number | The shadow bias. Default is 0.000001.
lightDirection
Vector3 | The light direction.
lightIntensity
number | The light intensity. Default is 3.
lightNear
number | The light near value. Default is 1.
lightNear
number | The light far value. Default is 2000.
lightMargin
number | The light margin. Default is 200.