Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

ReflectionProbe

Inherits: VisualInstance3D < Node3D < Node < Object

Captures its surroundings to create fast, accurate reflections from a given point.

Description

Captures its surroundings as a cubemap, and stores versions of it with increasing levels of blur to simulate different material roughnesses.

The ReflectionProbe is used to create high-quality reflections at a low performance cost (when update_mode is UPDATE_ONCE). ReflectionProbes can be blended together and with the rest of the scene smoothly. ReflectionProbes can also be combined with VoxelGI, SDFGI (Environment.sdfgi_enabled) and screen-space reflections (Environment.ssr_enabled) to get more accurate reflections in specific areas. ReflectionProbes render all objects within their cull_mask, so updating them can be quite expensive. It is best to update them once with the important static objects and then leave them as-is.

Note: Unlike VoxelGI and SDFGI, ReflectionProbes only source their environment from a WorldEnvironment node. If you specify an Environment resource within a Camera3D node, it will be ignored by the ReflectionProbe. This can lead to incorrect lighting within the ReflectionProbe.

Note: Reflection probes are only supported in the Forward+ and Mobile rendering methods, not Compatibility. When using the Mobile rendering method, only 8 reflection probes can be displayed on each mesh resource. Attempting to display more than 8 reflection probes on a single mesh resource will result in reflection probes flickering in and out as the camera moves.

Note: When using the Mobile rendering method, reflection probes will only correctly affect meshes whose visibility AABB intersects with the reflection probe's AABB. If using a shader to deform the mesh in a way that makes it go outside its AABB, GeometryInstance3D.extra_cull_margin must be increased on the mesh. Otherwise, the reflection probe may not be visible on the mesh.

Tutorials

Properties

Color

ambient_color

Color(0, 0, 0, 1)

float

ambient_color_energy

1.0

AmbientMode

ambient_mode

1

bool

box_projection

false

int

cull_mask

1048575

bool

enable_shadows

false

float

intensity

1.0

bool

interior

false

float

max_distance

0.0

float

mesh_lod_threshold

1.0

Vector3

origin_offset

Vector3(0, 0, 0)

Vector3

size

Vector3(20, 20, 20)

UpdateMode

update_mode

0


Enumerations

enum UpdateMode:

UpdateMode UPDATE_ONCE = 0

Update the probe once on the next frame (recommended for most objects). The corresponding radiance map will be generated over the following six frames. This takes more time to update than UPDATE_ALWAYS, but it has a lower performance cost and can result in higher-quality reflections. The ReflectionProbe is updated when its transform changes, but not when nearby geometry changes. You can force a ReflectionProbe update by moving the ReflectionProbe slightly in any direction.

UpdateMode UPDATE_ALWAYS = 1

Update the probe every frame. This provides better results for fast-moving dynamic objects (such as cars). However, it has a significant performance cost. Due to the cost, it's recommended to only use one ReflectionProbe with UPDATE_ALWAYS at most per scene. For all other use cases, use UPDATE_ONCE.


enum AmbientMode:

AmbientMode AMBIENT_DISABLED = 0

Do not apply any ambient lighting inside the ReflectionProbe's box defined by its size.

AmbientMode AMBIENT_ENVIRONMENT = 1

Apply automatically-sourced environment lighting inside the ReflectionProbe's box defined by its size.

AmbientMode AMBIENT_COLOR = 2

Apply custom ambient lighting inside the ReflectionProbe's box defined by its size. See ambient_color and ambient_color_energy.