Sky Lights

Skylight_Header.png

The Sky Light captures the distant parts of your level (everything further than SkyDistanceThreshold) and applies that to the scene as a light. That means the sky's appearance and its lighting / reflections will match, even if your sky is coming from atmosphere, or layered clouds on top of a skybox, or distant mountains. You can also manually specify a cubemap to use.

The Sky Light will only recapture the scene when you rebuild lighting or manually tell it to using Build -> Update Reflection Captures or the Recapture Scene button on the Sky Light Actor. If you change the texture that the skybox is using, it will not automatically know to update.

A Sky Light should be used instead of the Ambient Cubemap to represent the sky's light, because Sky Lights support local shadowing, which prevents indoor areas from getting lit by the sky.

The Sky Light can be set to either Static or Stationary for its Mobility:

skylight_icon.png

Static - (pictured left) which means that the light cannot be changed in game. This is the fastest method for rendering and allows for baked lighting.

Stationary - (also pictured left) which means the light will only have its shadowing and bounced lighting from static geometry baked by Lightmass, all other lighting will be dynamic. This setting also allows for the light to change color and intensity in game, but, it does not move and allows partial baked lighting.

spacer.png

Pictured below are example images from a scene which utilizes a Sky Light.

Sky Light

No Sky Light

Static Sky Light

A Sky Light with Static Mobility will be baked completely into the lightmap for static objects and therefore costs nothing. This is the only kind of sky light that is supported on mobile. Edits to the light's properties will not be visible until lighting is built again.

Note: Only components and lights with Static or Stationary Mobility will be captured and used for lighting with a Static Sky Light. Furthermore, only the emissive contribution of materials can be captured with a Static Sky Light, in order to avoid a feedback loop. Make sure your skybox has an unlit material.

Stationary Skylight

A Sky Light with Stationary Mobility gets baked shadowing from Lightmass. Once you place a Stationary Sky Light in your level, you have to rebuild lighting once to get the baked shadowing. You can then change the sky light as much as you want without rebuilding.

The Sky Light shadowing that Lightmass bakes stores directional occlusion information in what is called a Bent Normal. This is the direction from the texel to the most un-occluded direction. Areas that are mostly occluded use this direction for sky lighting instead of the surface normal, which improves quality quite a bit in cracks.

Sky Light with AO only

Sky Light with bent normal occlusion

The first image shows Sky Light with AO only. The second image shows Sky Light with bent normal occlusion. Notice how surfaces in cracks 'agree' on where the lighting is coming from.

Note: Only components and lights with Static or Stationary Mobility will be captured and used for lighting with a Stationary Sky Light.

Like all types of Stationary Lights, the color of the direct lighting can be changed at runtime through Blueprint or Matinee. However the indirect lighting is baked into the lightmap and cannot be modified at runtime. The amount of indirect lighting can be controlled by IndirectLightingIntensity.

Direct Lighting Only

Direct Lighting and Diffuse GI computed for a Stationary Sky Light

Movable Skylight

The Movable Sky Light does not use any form of precomputation. It captures components and lights of any mobility when setup to capture the scene as the sky lighting source.

Distance Field Ambient Occlusion

Shadowing for Movable Sky Lights is provided by a new feature called Distance Field Ambient Occlusion which generates Ambient Occlusion from Signed Distance Field Volumes precomputed around each rigid object. It supports dynamic scene changes - the rigid meshes can be moved or hidden and it will affect the occlusion. This feature is not on by default and there are a few setup steps.

Limitations

These features would be useful with SkyLights but are not yet implemented:

  • Soft shadowing from movable objects (characters) onto the environment.

  • Dynamic recapturing of the scene for Stationary and Movable versions. There is a blueprint function on the SkyLightComponent called RecaptureSky() which can be used, however that will cause a hitch.

Sky Light Properties

The properties of a Sky Light are broken up into 2 categories: Light and Sky Light.

Light

Property Description
Intensity Total energy that the light emits.
Light Color Specify the color the light emits.
Affects World Whether the light can affect the world, or whether it is disabled.
Casts Shadows Whether the light should cast any shadows.

Sky Light

Property Description
Source Type Whether to capture the distant scene and use it as the light source, or to use the specified cubemap. When capturing the scene, anything further than SkyDistanceThreshold from the Sky Light position will be included.
Cubemap Specify the Cubemap to use for sky lighting if Source Type is set to SLS_SpecifiedCubemap.
Sky Distance Threshold Distance from the Sky Light at which any geometry should be treated as part of the sky (also used by Reflection Captures).
Lower Hemisphere is Black Whether all lighting from the lower hemisphere should be set to zero. This is useful to prevent leaking from the lower hemisphere.
Recapture Scene When the Sky Light Actor is set to SLS_CapturedScene, this will recapture the image the Sky Light is using to light the scene.