Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Blend Distance property to ReflectionProbe #99958

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions doc/classes/ReflectionProbe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
<member name="ambient_mode" type="int" setter="set_ambient_mode" getter="get_ambient_mode" enum="ReflectionProbe.AmbientMode" default="1">
The ambient color to use within the [ReflectionProbe]'s box defined by its [member size]. The ambient color will smoothly blend with other [ReflectionProbe]s and the rest of the scene (outside the [ReflectionProbe]'s box defined by its [member size]).
</member>
<member name="blend_distance" type="float" setter="set_blend_distance" getter="get_blend_distance" default="1.0">
Defines the distance in meters over which a probe blends into the scene.
</member>
<member name="box_projection" type="bool" setter="set_enable_box_projection" getter="is_box_projection_enabled" default="false">
If [code]true[/code], enables box projection. This makes reflections look more correct in rectangle-shaped rooms by offsetting the reflection center depending on the camera's location.
[b]Note:[/b] To better fit rectangle-shaped rooms that are not aligned to the grid, you can rotate the [ReflectionProbe] node.
Expand Down
8 changes: 8 additions & 0 deletions doc/classes/RenderingServer.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3163,6 +3163,14 @@
If [code]true[/code], reflections will ignore sky contribution. Equivalent to [member ReflectionProbe.interior].
</description>
</method>
<method name="reflection_probe_set_blend_distance">
<return type="void" />
<param index="0" name="probe" type="RID" />
<param index="1" name="blend_distance" type="float" />
<description>
Sets the distance in meters over which a probe blends into the scene.
</description>
</method>
<method name="reflection_probe_set_cull_mask">
<return type="void" />
<param index="0" name="probe" type="RID" />
Expand Down
2 changes: 2 additions & 0 deletions drivers/gles3/rasterizer_scene_gles3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3435,6 +3435,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE1_AMBIENT_MODE, int(probe->ambient_mode), shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE1_AMBIENT_COLOR, probe->ambient_color * probe->ambient_color_energy, shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE1_LOCAL_MATRIX, inst->reflection_probes_local_transform_cache[0], shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE1_BLEND_DISTANCE, probe->blend_distance, shader->version, instance_variant, spec_constants);

glActiveTexture(GL_TEXTURE0 + config->max_texture_image_units - 7);
glBindTexture(GL_TEXTURE_CUBE_MAP, light_storage->reflection_probe_instance_get_texture(inst->reflection_probe_rid_cache[0]));
Expand All @@ -3453,6 +3454,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE2_AMBIENT_MODE, int(probe->ambient_mode), shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE2_AMBIENT_COLOR, probe->ambient_color * probe->ambient_color_energy, shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE2_LOCAL_MATRIX, inst->reflection_probes_local_transform_cache[1], shader->version, instance_variant, spec_constants);
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE2_BLEND_DISTANCE, probe->blend_distance, shader->version, instance_variant, spec_constants);

glActiveTexture(GL_TEXTURE0 + config->max_texture_image_units - 8);
glBindTexture(GL_TEXTURE_CUBE_MAP, light_storage->reflection_probe_instance_get_texture(inst->reflection_probe_rid_cache[1]));
Expand Down
24 changes: 18 additions & 6 deletions drivers/gles3/shaders/scene.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -875,6 +875,7 @@ uniform vec3 refprobe1_box_offset;
uniform highp mat4 refprobe1_local_matrix;
uniform bool refprobe1_exterior;
uniform float refprobe1_intensity;
uniform float refprobe1_blend_distance;
uniform int refprobe1_ambient_mode;
uniform vec4 refprobe1_ambient_color;

Expand All @@ -888,6 +889,7 @@ uniform vec3 refprobe2_box_offset;
uniform highp mat4 refprobe2_local_matrix;
uniform bool refprobe2_exterior;
uniform float refprobe2_intensity;
uniform float refprobe2_blend_distance;
uniform int refprobe2_ambient_mode;
uniform vec4 refprobe2_ambient_color;

Expand Down Expand Up @@ -1589,7 +1591,7 @@ void reflection_process(samplerCube reflection_map,
vec3 normal, vec3 vertex,
mat4 local_matrix,
bool use_box_project, vec3 box_extents, vec3 box_offset,
bool exterior, float intensity, int ref_ambient_mode, vec4 ref_ambient_color,
bool exterior, float intensity, float blend_distance, int ref_ambient_mode, vec4 ref_ambient_color,
float roughness, vec3 ambient, vec3 skybox,
inout highp vec4 reflection_accum, inout highp vec4 ambient_accum) {
vec4 reflection;
Expand All @@ -1601,10 +1603,20 @@ void reflection_process(samplerCube reflection_map,
}

vec3 inner_pos = abs(local_pos / box_extents);
float blend = max(inner_pos.x, max(inner_pos.y, inner_pos.z));
blend = mix(length(inner_pos), blend, blend);
blend *= blend;
vec3 blend_axes = vec3(0.0, 0.0, 0.0);
float blend = 0.0;
if (blend_distance != 0) {
for (int i = 0; i < 3; i++) {
float axis_blend_distance = min(blend_distance, box_extents[i]);
blend_axes[i] = (inner_pos[i] * box_extents[i]) - box_extents[i] + axis_blend_distance;
blend_axes[i] = blend_axes[i] / axis_blend_distance;
blend_axes[i] = clamp(blend_axes[i], 0.0, 1.0);
}
blend = pow((1.0 - blend_axes.x) * (1.0 - blend_axes.y) * (1.0 - blend_axes.z), 2);
blend = 1 - blend;
}
blend = max(0.0, 1.0 - blend);
blend = clamp(blend, 0.0, 1.0);

//reflect and make local
vec3 ref_normal = normalize(reflect(vertex, normal));
Expand Down Expand Up @@ -1963,14 +1975,14 @@ void main() {

reflection_process(refprobe1_texture, normal, vertex_interp, refprobe1_local_matrix,
refprobe1_use_box_project, refprobe1_box_extents, refprobe1_box_offset,
refprobe1_exterior, refprobe1_intensity, refprobe1_ambient_mode, refprobe1_ambient_color,
refprobe1_exterior, refprobe1_intensity, refprobe1_blend_distance, refprobe1_ambient_mode, refprobe1_ambient_color,
roughness, ambient_light, specular_light, reflection_accum, ambient_accum);

#ifdef SECOND_REFLECTION_PROBE

reflection_process(refprobe2_texture, normal, vertex_interp, refprobe2_local_matrix,
refprobe2_use_box_project, refprobe2_box_extents, refprobe2_box_offset,
refprobe2_exterior, refprobe2_intensity, refprobe2_ambient_mode, refprobe2_ambient_color,
refprobe2_exterior, refprobe2_intensity, refprobe2_blend_distance, refprobe2_ambient_mode, refprobe2_ambient_color,
roughness, ambient_light, specular_light, reflection_accum, ambient_accum);

#endif // SECOND_REFLECTION_PROBE
Expand Down
7 changes: 7 additions & 0 deletions drivers/gles3/storage/light_storage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -471,6 +471,13 @@ void LightStorage::reflection_probe_set_intensity(RID p_probe, float p_intensity
reflection_probe->intensity = p_intensity;
}

void LightStorage::reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) {
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
ERR_FAIL_NULL(reflection_probe);

reflection_probe->blend_distance = p_blend_distance;
}

void LightStorage::reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) {
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
ERR_FAIL_NULL(reflection_probe);
Expand Down
2 changes: 2 additions & 0 deletions drivers/gles3/storage/light_storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ struct ReflectionProbe {
RS::ReflectionProbeUpdateMode update_mode = RS::REFLECTION_PROBE_UPDATE_ONCE;
int resolution = 256;
float intensity = 1.0;
float blend_distance = 1.0;
RS::ReflectionProbeAmbientMode ambient_mode = RS::REFLECTION_PROBE_AMBIENT_ENVIRONMENT;
Color ambient_color;
float ambient_color_energy = 1.0;
Expand Down Expand Up @@ -642,6 +643,7 @@ class LightStorage : public RendererLightStorage {

virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) override;
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) override;
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) override;
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) override;
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) override;
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) override;
Expand Down
26 changes: 26 additions & 0 deletions editor/plugins/gizmos/reflection_probe_gizmo_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,32 @@ void ReflectionProbeGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
aabb.position = -size / 2;
aabb.size = size;

AABB blend_aabb;
for (int i = 0; i < 3; i++) {
blend_aabb.position[i] = aabb.position[i] + probe->get_blend_distance();
blend_aabb.size[i] = aabb.size[i] - probe->get_blend_distance() * 2.0;
if (blend_aabb.size[i] < blend_aabb.position[i]) {
blend_aabb.position[i] = aabb.position[i] + aabb.size[i] / 2.0;
blend_aabb.size[i] = 0.0;
}
}

if (probe->get_blend_distance() != 0.0) {
for (int i = 0; i < 12; i++) {
Vector3 a;
Vector3 b;
blend_aabb.get_edge(i, a, b);
lines.push_back(a);
lines.push_back(b);
}

for (int i = 0; i < 8; i++) {
Vector3 ep = aabb.get_endpoint(i);
internal_lines.push_back(blend_aabb.get_endpoint(i));
internal_lines.push_back(ep);
}
}

Vector<Vector3> handles = helper->box_get_handles(probe->get_size());

if (probe->get_origin_offset() != Vector3(0.0, 0.0, 0.0)) {
Expand Down
14 changes: 14 additions & 0 deletions scene/3d/reflection_probe.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,16 @@ float ReflectionProbe::get_intensity() const {
return intensity;
}

void ReflectionProbe::set_blend_distance(float p_blend_distance) {
blend_distance = p_blend_distance;
RS::get_singleton()->reflection_probe_set_blend_distance(probe, p_blend_distance);
update_gizmos();
}

float ReflectionProbe::get_blend_distance() const {
return blend_distance;
}

void ReflectionProbe::set_ambient_mode(AmbientMode p_mode) {
ambient_mode = p_mode;
RS::get_singleton()->reflection_probe_set_ambient_mode(probe, RS::ReflectionProbeAmbientMode(p_mode));
Expand Down Expand Up @@ -202,6 +212,9 @@ void ReflectionProbe::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_intensity", "intensity"), &ReflectionProbe::set_intensity);
ClassDB::bind_method(D_METHOD("get_intensity"), &ReflectionProbe::get_intensity);

ClassDB::bind_method(D_METHOD("set_blend_distance", "blend_distance"), &ReflectionProbe::set_blend_distance);
ClassDB::bind_method(D_METHOD("get_blend_distance"), &ReflectionProbe::get_blend_distance);

ClassDB::bind_method(D_METHOD("set_ambient_mode", "ambient"), &ReflectionProbe::set_ambient_mode);
ClassDB::bind_method(D_METHOD("get_ambient_mode"), &ReflectionProbe::get_ambient_mode);

Expand Down Expand Up @@ -243,6 +256,7 @@ void ReflectionProbe::_bind_methods() {

ADD_PROPERTY(PropertyInfo(Variant::INT, "update_mode", PROPERTY_HINT_ENUM, "Once (Fast),Always (Slow)"), "set_update_mode", "get_update_mode");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "intensity", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_intensity", "get_intensity");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "blend_distance", PROPERTY_HINT_RANGE, "0,8,0.01,or_greater,suffix:m"), "set_blend_distance", "get_blend_distance");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "max_distance", PROPERTY_HINT_RANGE, "0,16384,0.1,or_greater,exp,suffix:m"), "set_max_distance", "get_max_distance");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "size", PROPERTY_HINT_NONE, "suffix:m"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "origin_offset", PROPERTY_HINT_NONE, "suffix:m"), "set_origin_offset", "get_origin_offset");
Expand Down
4 changes: 4 additions & 0 deletions scene/3d/reflection_probe.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ class ReflectionProbe : public VisualInstance3D {
private:
RID probe;
float intensity = 1.0;
float blend_distance = 1.0;
float max_distance = 0.0;
Vector3 size = Vector3(20, 20, 20);
Vector3 origin_offset = Vector3(0, 0, 0);
Expand Down Expand Up @@ -78,6 +79,9 @@ class ReflectionProbe : public VisualInstance3D {
void set_intensity(float p_intensity);
float get_intensity() const;

void set_blend_distance(float p_blend_distance);
float get_blend_distance() const;

void set_ambient_mode(AmbientMode p_mode);
AmbientMode get_ambient_mode() const;

Expand Down
1 change: 1 addition & 0 deletions servers/rendering/dummy/storage/light_storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ class LightStorage : public RendererLightStorage {

virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) override {}
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) override {}
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) override {}
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) override {}
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) override {}
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) override {}
Expand Down
4 changes: 4 additions & 0 deletions servers/rendering/renderer_rd/shaders/light_data_inc.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,14 @@ struct ReflectionData {
uint mask;
mediump vec3 ambient; // ambient color
mediump float intensity;
mediump float blend_distance;
bool exterior;
bool box_project;
uint ambient_mode;
float exposure_normalization;
float pad0;
float pad1;
float pad2;
//0-8 is intensity,8-9 is ambient, mode
highp mat4 local_matrix; // up to here for spot and omni, rest is for directional
// notes: for ambientblend, use distance to edge to blend between already existing global environment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -876,11 +876,20 @@ void reflection_process(uint ref_index, vec3 vertex, vec3 ref_vec, vec3 normal,
}

vec3 inner_pos = abs(local_pos / box_extents);
float blend = max(inner_pos.x, max(inner_pos.y, inner_pos.z));
//make blend more rounded
blend = mix(length(inner_pos), blend, blend);
blend *= blend;
vec3 blend_axes = vec3(0.0, 0.0, 0.0);
float blend = 0.0;
if (reflections.data[ref_index].blend_distance != 0) {
for (int i = 0; i < 3; i++) {
float axis_blend_distance = min(reflections.data[ref_index].blend_distance, box_extents[i]);
blend_axes[i] = (inner_pos[i] * box_extents[i]) - box_extents[i] + axis_blend_distance;
blend_axes[i] = blend_axes[i] / axis_blend_distance;
blend_axes[i] = clamp(blend_axes[i], 0.0, 1.0);
}
blend = pow((1.0 - blend_axes.x) * (1.0 - blend_axes.y) * (1.0 - blend_axes.z), 2);
blend = 1 - blend;
}
blend = max(0.0, 1.0 - blend);
blend = clamp(blend, 0.0, 1.0);

if (reflections.data[ref_index].intensity > 0.0) { // compute reflection

Expand Down
15 changes: 15 additions & 0 deletions servers/rendering/renderer_rd/storage_rd/light_storage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1066,6 +1066,13 @@ void LightStorage::reflection_probe_set_intensity(RID p_probe, float p_intensity
reflection_probe->intensity = p_intensity;
}

void LightStorage::reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) {
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
ERR_FAIL_NULL(reflection_probe);

reflection_probe->blend_distance = p_blend_distance;
}

void LightStorage::reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) {
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
ERR_FAIL_NULL(reflection_probe);
Expand Down Expand Up @@ -1266,6 +1273,13 @@ float LightStorage::reflection_probe_get_intensity(RID p_probe) const {
return reflection_probe->intensity;
}

float LightStorage::reflection_probe_get_blend_distance(RID p_probe) const {
const ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
ERR_FAIL_NULL_V(reflection_probe, 0);

return reflection_probe->blend_distance;
}

bool LightStorage::reflection_probe_is_interior(RID p_probe) const {
const ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
ERR_FAIL_NULL_V(reflection_probe, false);
Expand Down Expand Up @@ -1755,6 +1769,7 @@ void LightStorage::update_reflection_probe_buffer(RenderDataRD *p_render_data, c
reflection_ubo.mask = probe->reflection_mask;

reflection_ubo.intensity = probe->intensity;
reflection_ubo.blend_distance = probe->blend_distance;
reflection_ubo.ambient_mode = probe->ambient_mode;

reflection_ubo.exterior = !probe->interior;
Expand Down
7 changes: 7 additions & 0 deletions servers/rendering/renderer_rd/storage_rd/light_storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,7 @@ class LightStorage : public RendererLightStorage {
RS::ReflectionProbeUpdateMode update_mode = RS::REFLECTION_PROBE_UPDATE_ONCE;
int resolution = 256;
float intensity = 1.0;
float blend_distance = 1.0;
RS::ReflectionProbeAmbientMode ambient_mode = RS::REFLECTION_PROBE_AMBIENT_ENVIRONMENT;
Color ambient_color;
float ambient_color_energy = 1.0;
Expand Down Expand Up @@ -303,10 +304,14 @@ class LightStorage : public RendererLightStorage {
uint32_t mask;
float ambient[3]; // ambient color,
float intensity;
float blend_distance;
uint32_t exterior;
uint32_t box_project;
uint32_t ambient_mode;
float exposure_normalization;
uint32_t pad0;
uint32_t pad1;
uint32_t pad2;
float local_matrix[16]; // up to here for spot and omni, rest is for directional
};

Expand Down Expand Up @@ -829,6 +834,7 @@ class LightStorage : public RendererLightStorage {

virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) override;
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) override;
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) override;
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) override;
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) override;
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) override;
Expand Down Expand Up @@ -859,6 +865,7 @@ class LightStorage : public RendererLightStorage {
virtual bool reflection_probe_renders_shadows(RID p_probe) const override;

float reflection_probe_get_intensity(RID p_probe) const;
float reflection_probe_get_blend_distance(RID p_probe) const;
bool reflection_probe_is_interior(RID p_probe) const;
bool reflection_probe_is_box_projection(RID p_probe) const;
RS::ReflectionProbeAmbientMode reflection_probe_get_ambient_mode(RID p_probe) const;
Expand Down
1 change: 1 addition & 0 deletions servers/rendering/rendering_server_default.h
Original file line number Diff line number Diff line change
Expand Up @@ -460,6 +460,7 @@ class RenderingServerDefault : public RenderingServer {

FUNC2(reflection_probe_set_update_mode, RID, ReflectionProbeUpdateMode)
FUNC2(reflection_probe_set_intensity, RID, float)
FUNC2(reflection_probe_set_blend_distance, RID, float)
FUNC2(reflection_probe_set_ambient_color, RID, const Color &)
FUNC2(reflection_probe_set_ambient_energy, RID, float)
FUNC2(reflection_probe_set_ambient_mode, RID, ReflectionProbeAmbientMode)
Expand Down
1 change: 1 addition & 0 deletions servers/rendering/storage/light_storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ class RendererLightStorage {
virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) = 0;
virtual void reflection_probe_set_resolution(RID p_probe, int p_resolution) = 0;
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) = 0;
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) = 0;
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) = 0;
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) = 0;
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) = 0;
Expand Down
1 change: 1 addition & 0 deletions servers/rendering_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2569,6 +2569,7 @@ void RenderingServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("reflection_probe_create"), &RenderingServer::reflection_probe_create);
ClassDB::bind_method(D_METHOD("reflection_probe_set_update_mode", "probe", "mode"), &RenderingServer::reflection_probe_set_update_mode);
ClassDB::bind_method(D_METHOD("reflection_probe_set_intensity", "probe", "intensity"), &RenderingServer::reflection_probe_set_intensity);
ClassDB::bind_method(D_METHOD("reflection_probe_set_blend_distance", "probe", "blend_distance"), &RenderingServer::reflection_probe_set_blend_distance);
ClassDB::bind_method(D_METHOD("reflection_probe_set_ambient_mode", "probe", "mode"), &RenderingServer::reflection_probe_set_ambient_mode);
ClassDB::bind_method(D_METHOD("reflection_probe_set_ambient_color", "probe", "color"), &RenderingServer::reflection_probe_set_ambient_color);
ClassDB::bind_method(D_METHOD("reflection_probe_set_ambient_energy", "probe", "energy"), &RenderingServer::reflection_probe_set_ambient_energy);
Expand Down
Loading