Class: CSMRenderer
Constructors
constructor
• new CSMRenderer(config?): CSMRenderer
Parameters
| Name | Type |
|---|---|
config | Partial<CSMConfig> |
Returns
Accessors
numCascades
• get numCascades(): number
Returns
number
shadowBias
• get shadowBias(): number
Returns
number
skipShadowObjects
• get skipShadowObjects(): readonly Object3D<Object3DEventMap>[]
The skipShadow-flagged objects every depth consumer must hide. The
local shadow atlas hides the same list, so casters can never disagree
between the sun's maps and a torch's.
Returns
readonly Object3D<Object3DEventMap>[]
Methods
addSkipShadowObject
▸ addSkipShadowObject(object): void
Parameters
| Name | Type |
|---|---|
object | Object3D<Object3DEventMap> |
Returns
void
attachShadowLedger
▸ attachShadowLedger(ledger, nearUnits?, farUnits?): void
Share the per-frame shadow budget with the local light atlas. The near cascade is priority 1 and only records its spend; far cascades ask for a grant where the hard-coded one-far-per-frame rule used to be the only throttle. With no ledger attached (or no local lights active — the ledger grants unconditionally then), behavior is exactly today's.
Parameters
| Name | Type | Default value |
|---|---|---|
ledger | CSMShadowLedger | undefined |
nearUnits | number | 4 |
farUnits | number | 6 |
Returns
void
dispose
▸ dispose(): void
Returns
void
getCascadeMatrix
▸ getCascadeMatrix(index): Matrix4
Parameters
| Name | Type |
|---|---|
index | number |
Returns
Matrix4
getCascadeSplit
▸ getCascadeSplit(index): number
Parameters
| Name | Type |
|---|---|
index | number |
Returns
number
getDebugState
▸ getDebugState(): Object
Returns
Object
| Name | Type |
|---|---|
cascadeDirty | boolean[] |
cascadeNeedsRender | boolean[] |
currentShadowStrength | number |
isCameraStill | boolean |
lastFrameLightSwing | number |
getShadowMap
▸ getShadowMap(index): Texture<unknown>
Parameters
| Name | Type |
|---|---|
index | number |
Returns
Texture<unknown>
getUniforms
▸ getUniforms(): Object
Returns
Object
| Name | Type |
|---|---|
uCascadeSplits | number[] |
uNumCascades | number |
uShadowBias | number |
uShadowMaps | Texture<unknown>[] |
uShadowMatrices | Matrix4[] |
uShadowNormalBias | number |
uShadowSideFaceBiasScale | number |
uShadowSlopeBiasMin | number |
uShadowSlopeBiasScale | number |
uShadowTopFaceBiasScale | number |
markAllCascadesForRender
▸ markAllCascadesForRender(): void
Returns
void
markCascadesForEntityRender
▸ markCascadesForEntityRender(): void
Returns
void
rebuildSkipShadowCache
▸ rebuildSkipShadowCache(scene): void
Parameters
| Name | Type |
|---|---|
scene | Scene<Object3DEventMap> |
Returns
void
removeSkipShadowObject
▸ removeSkipShadowObject(object): void
Parameters
| Name | Type |
|---|---|
object | Object3D<Object3DEventMap> |
Returns
void
render
▸ render(renderer, scene, entities?, maxEntityShadowDistance?, instancePools?, poolBounds?): void
Parameters
| Name | Type | Default value |
|---|---|---|
renderer | WebGLRenderer | undefined |
scene | Scene<Object3DEventMap> | undefined |
entities? | Object3D<Object3DEventMap>[] | undefined |
maxEntityShadowDistance | number | ENTITY_SHADOW_DISTANCE |
instancePools? | Group<Object3DEventMap>[] | undefined |
poolBounds? | readonly Box3[] | undefined |
Returns
void
setLightDirection
▸ setLightDirection(direction): void
Parameters
| Name | Type |
|---|---|
direction | Vector3 |
Returns
void
update
▸ update(mainCamera, sunDirection, playerPosition?, shadowStrength?): void
Parameters
| Name | Type | Default value |
|---|---|---|
mainCamera | Camera | undefined |
sunDirection | Vector3 | undefined |
playerPosition? | Vector3 | undefined |
shadowStrength | number | 1 |
Returns
void