LightShadow - Verge3D User Manual - Soft8Soft
Description: Learn how to use LightShadow in your interactive 3D apps made with Verge3D

# LightShadow

Serves as a base class for the other shadow classes.

## Constructor

### LightShadow(camera : Camera)

camera — the light's view of the world.

Create a new LightShadow. This is not intended to be called directly — it is used as a base class by other light shadows.

## Properties

### # .autoUpdate : Boolean

Enables automatic updates of the light's shadow. Default is `true`. If you do not require dynamic lighting / shadows, you may set this to `false`.

### # .bias : Float

Shadow map bias, how much to add or subtract from the normalized depth when deciding whether a surface is in shadow. The default is `0`. Very tiny adjustments here (in the order of 0.0001) may help reduce artifacts in shadows

### # .camera : Camera

The light's view of the world. This is used to generate a depth map of the scene; objects behind other objects from the light's perspective will be in shadow.

### # .expBias : Float

Exponential bias for ESMShadowMap to reduce light leaking which can happen near an occluder. The default is `1`. Increasing it reduces light leaking but make shadows less soft and make self-shadowing artifacts a bit more noticeable.

### # .isLightShadow : Boolean

Used to check whether this or derived classes are light shadows.

You should not change this, as it used internally for optimization.

### # .map : WebGLRenderTarget

The depth map generated using the internal camera; a location beyond a pixel's depth is in shadow. Computed internally during rendering.

### # .mapPass : WebGLRenderTarget

The distribution map generated using the internal camera; an occlusion is calculated based on the distribution of depths. Computed internally during rendering.

### # .mapSize : Vector2

A Vector2 defining the width and height of the shadow map.

Higher values give better quality shadows at the cost of computation time. Values must be powers of 2, up to the WebGLRenderer.capabilities.maxTextureSize for a given device, although the width and height don't have to be the same (so, for example, `(512, 1024)` is valid). The default is `(512, 512)`.

### # .matrix : Matrix4

Model to shadow camera space, to compute location and depth in shadow map. Stored in a Matrix4. This is computed internally during rendering.

### # .needsUpdate : Boolean

When set to `true`, shadow maps will be updated in the next render call. Default is `false`. If you have set .autoUpdate to `false`, you will need to set this property to `true` and then make a render call to update the light's shadow.

### # .normalBias : Float

Defines how much the position used to query the shadow map is offset along the object normal. The default is `0`. Increasing this value can be used to reduce shadow acne especially in large scenes where light shines onto geometry at a shallow angle. The cost is that shadows may appear distorted.

### # .radius : Float

Setting this to values greater than 1 will blur the edges of the shadow.

High values will cause unwanted banding effects in the shadows — a greater mapSize will allow for a higher value to be used here before these effects become visible.

Note that this has no effect if the WebGLRenderer.shadowMap.type is set to BasicShadowMap or BilinearShadowMap.

### # .slopeScaledBias : Float

An adaptive bias which depends on the polygon's slope relative to the light's camera. Default is `0`.

Used mainly for shadow mapping.

## Methods

### # .clone() → LightShadow

Creates a new LightShadow with the same properties as this one.

### # .copy(source : LightShadow) → this

Copies value of all the properties from the source to this Light.

### # .dispose()

Frees the GPU-related resources allocated by this instance. Call this method whenever this instance is no longer used in your app.

### # .getFrameExtents() → Vector2

Used internally by the renderer to extend the shadow map to contain all viewports

### # .getFrustum() → Frustum

Gets the shadow cameras frustum. Used internally by the renderer to cull objects.

### # .getViewportCount() → Integer

Used internally by the renderer to get the number of viewports that need to be rendered for this shadow.

### # .updateMatrices(light : Light)

light — the light for which the shadow is being rendered.

Update the matrices for the camera and shadow, used internally by the renderer.

## Source

For more info on how to obtain the source code of this module see this page.