Skip to content

Shadow

In the 3D world, light and shadow have always been extremely important components that enrich the entire environment. High quality shadows can make the game world look more realistic.

Cocos Creator 3.0 currently supports both Planar and ShadowMap shadow types.

shadow

Enable Shadow Effect

To enable the shadow effect for an object, proceed as follows:

  1. Check Scene in the Hierarchy panel, and then check the Enabled property in the Shadows component of the Inspector panel.

    enable-shadow

  2. Check light in the Hierarchy panel, and then check the Shadow Enabled property in the Dynamic Shadow Settings component of the Inspector panel.

    enable-shadow

  3. Select the 3D node that needs to display shadows in the Hierarchy panel, and then set the ShadowCastingMode property to ON in the MeshRenderer component of the Inspector panel.

    set-meshRenderer

    If the shadow type is ShadowMap, set the ReceiveShadow property on the MeshRenderer component to ON.

Note: if the shadows are not displayed properly, adjust the direction of the directional light.

Shadow Type

The shadow type can be set in the Type property of the Shadows component.

Planar Shadow

The Planar shadow type is generally used for simpler scenes.

planar-properties

PropertyDescription
EnabledWhether to enable shadow effect
TypeShadow type
SaturationSet the shadow saturation, it is recommended to set it as 1. If it is necessary to reduce the saturation of the directional light shadows, it is recommended to do it by increasing the ambient light instead of adjusting this value
ShadowColorShadow color
NormalThe normal line perpendicular to the shadow, used to adjust the slope of the shadow
DistanceThe distance of the shadow in the direction of the normal to the origin of the coordinate

Adjust the direction of the directional light to adjust the position of the shadow.

Note: planar shadows are only cast on planar surfaces, not on objects, which means that the ReceiveShadow property in the MeshRenderer component is invalid.

ShadowMap

ShadowMap renders the scene with the lights as the viewpoint. From the position of the lights, the places in the scene that are not visible are where the shadows are created.

shadow map panel details

PropertyExplanation
EnabledWhether to enable the shadow effect.
TypeChoose the shadow type.
MaxReceivedThe maximum number of lights supported for shadow generation, default is 4, can be adjusted as needed.
ShadowMapSizeSet the texture size of the shadow, Currently supports Low_256x256, Medium_512x512, High_1024x1024, Ultra_2048x2048 four kinds of precision textures.

Note: starting with v3.3, the Linear and Packing options for Shadows in the Inspector panel have been removed, and Creator will automatically determine the hardware capabilities and choose the best way to render the shadows.

ShadowMap receives and displays shadow effects generated by other objects when ReceiveShadow on the object MeshRenderer component is enabled.

ShadowMap is generally used for scenes that require more realistic and complex light and shadow effects. The downside is that if the lights is not moved, then the previously generated Shadow Map can be reused, while once the lights is moved, then a new ShadowMap needs to be recalculated.

Support dynamic batching to improve performance

For models with instancing enabled in the material, the planar shadow will automatically draw with instancing as well, see the Dynamic Batching documentation for details.