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). ReflectionProbe
s can be blended together and with the rest of the scene smoothly. ReflectionProbe
s can also be combined with VoxelGI, SDFGI (Environment.sdfgi_enabled) and screen-space reflections (Environment.ss_reflections_enabled) to get more accurate reflections in specific areas. ReflectionProbe
s 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, ReflectionProbe
s 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
.
Tutorials¶
Properties¶
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
Enumerations¶
enum 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 theReflectionProbe
slightly in any direction.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:
AMBIENT_DISABLED = 0 --- Do not apply any ambient lighting inside the
ReflectionProbe
's extents.AMBIENT_ENVIRONMENT = 1 --- Apply automatically-sourced environment lighting inside the
ReflectionProbe
's extents.AMBIENT_COLOR = 2 --- Apply custom ambient lighting inside the
ReflectionProbe
's extents. See ambient_color and ambient_color_energy.
Property Descriptions¶
Color ambient_color
Default |
|
Setter |
set_ambient_color(value) |
Getter |
get_ambient_color() |
The custom ambient color to use within the ReflectionProbe
's extents. Only effective if ambient_mode is AMBIENT_COLOR.
float ambient_color_energy
Default |
|
Setter |
set_ambient_color_energy(value) |
Getter |
get_ambient_color_energy() |
The custom ambient color energy to use within the ReflectionProbe
's extents. Only effective if ambient_mode is AMBIENT_COLOR.
AmbientMode ambient_mode
Default |
|
Setter |
set_ambient_mode(value) |
Getter |
get_ambient_mode() |
The ambient color to use within the ReflectionProbe
's extents. The ambient color will smoothly blend with other ReflectionProbe
s and the rest of the scene (outside the ReflectionProbe
's extents).
bool box_projection
Default |
|
Setter |
set_enable_box_projection(value) |
Getter |
is_box_projection_enabled() |
If true
, enables box projection. This makes reflections look more correct in rectangle-shaped rooms by offsetting the reflection center depending on the camera's location.
Note: To better fit rectangle-shaped rooms that are not aligned to the grid, you can rotate the ReflectionProbe
node.
int cull_mask
Default |
|
Setter |
set_cull_mask(value) |
Getter |
get_cull_mask() |
Sets the cull mask which determines what objects are drawn by this probe. Every VisualInstance3D with a layer included in this cull mask will be rendered by the probe. To improve performance, it is best to only include large objects which are likely to take up a lot of space in the reflection.
bool enable_shadows
Default |
|
Setter |
set_enable_shadows(value) |
Getter |
are_shadows_enabled() |
If true
, computes shadows in the reflection probe. This makes the reflection probe slower to render; you may want to disable this if using the UPDATE_ALWAYS update_mode.
Vector3 extents
Default |
|
Setter |
set_extents(value) |
Getter |
get_extents() |
The size of the reflection probe. The larger the extents, the more space covered by the probe, which will lower the perceived resolution. It is best to keep the extents only as large as you need them.
Note: To better fit areas that are not aligned to the grid, you can rotate the ReflectionProbe
node.
float intensity
Default |
|
Setter |
set_intensity(value) |
Getter |
get_intensity() |
Defines the reflection intensity. Intensity modulates the strength of the reflection.
bool interior
Default |
|
Setter |
set_as_interior(value) |
Getter |
is_set_as_interior() |
If true
, reflections will ignore sky contribution.
float max_distance
Default |
|
Setter |
set_max_distance(value) |
Getter |
get_max_distance() |
The maximum distance away from the ReflectionProbe
an object can be before it is culled. Decrease this to improve performance, especially when using the UPDATE_ALWAYS update_mode.
Note: The maximum reflection distance is always at least equal to the extents. This means that decreasing max_distance will not always cull objects from reflections, especially if the reflection probe's extents are already large.
float mesh_lod_threshold
Default |
|
Setter |
set_mesh_lod_threshold(value) |
Getter |
get_mesh_lod_threshold() |
The automatic LOD bias to use for meshes rendered within the ReflectionProbe
(this is analog to Viewport.mesh_lod_threshold). Higher values will use less detailed versions of meshes that have LOD variations generated. If set to 0.0
, automatic LOD is disabled. Increase mesh_lod_threshold to improve performance at the cost of geometry detail, especially when using the UPDATE_ALWAYS update_mode.
Note: mesh_lod_threshold does not affect GeometryInstance3D visibility ranges (also known as "manual" LOD or hierarchical LOD).
Vector3 origin_offset
Default |
|
Setter |
set_origin_offset(value) |
Getter |
get_origin_offset() |
Sets the origin offset to be used when this ReflectionProbe
is in box_projection mode. This can be set to a non-zero value to ensure a reflection fits a rectangle-shaped room, while reducing the amount of objects that "get in the way" of the reflection.
UpdateMode update_mode
Default |
|
Setter |
set_update_mode(value) |
Getter |
get_update_mode() |
Sets how frequently the ReflectionProbe
is updated. Can be UPDATE_ONCE or UPDATE_ALWAYS.