Skip to content

Commit 0501018

Browse files
committed
ReflectionProbe add Blend Distance
1 parent eb51030 commit 0501018

18 files changed

+128
-10
lines changed

doc/classes/ReflectionProbe.xml

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
<member name="ambient_mode" type="int" setter="set_ambient_mode" getter="get_ambient_mode" enum="ReflectionProbe.AmbientMode" default="1">
2424
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]).
2525
</member>
26+
<member name="blend_distance" type="float" setter="set_blend_distance" getter="get_blend_distance" default="1.0">
27+
Defines the distance in meters over which a probe blends into the scene.
28+
</member>
2629
<member name="box_projection" type="bool" setter="set_enable_box_projection" getter="is_box_projection_enabled" default="false">
2730
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.
2831
[b]Note:[/b] To better fit rectangle-shaped rooms that are not aligned to the grid, you can rotate the [ReflectionProbe] node.

doc/classes/RenderingServer.xml

+8
Original file line numberDiff line numberDiff line change
@@ -3163,6 +3163,14 @@
31633163
If [code]true[/code], reflections will ignore sky contribution. Equivalent to [member ReflectionProbe.interior].
31643164
</description>
31653165
</method>
3166+
<method name="reflection_probe_set_blend_distance">
3167+
<return type="void" />
3168+
<param index="0" name="probe" type="RID" />
3169+
<param index="1" name="blend_distance" type="float" />
3170+
<description>
3171+
Sets the distance in meters over which a probe blends into the scene.
3172+
</description>
3173+
</method>
31663174
<method name="reflection_probe_set_cull_mask">
31673175
<return type="void" />
31683176
<param index="0" name="probe" type="RID" />

drivers/gles3/rasterizer_scene_gles3.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -3435,6 +3435,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
34353435
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE1_AMBIENT_MODE, int(probe->ambient_mode), shader->version, instance_variant, spec_constants);
34363436
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);
34373437
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);
3438+
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE1_BLEND_DISTANCE, probe->blend_distance, shader->version, instance_variant, spec_constants);
34383439

34393440
glActiveTexture(GL_TEXTURE0 + config->max_texture_image_units - 7);
34403441
glBindTexture(GL_TEXTURE_CUBE_MAP, light_storage->reflection_probe_instance_get_texture(inst->reflection_probe_rid_cache[0]));
@@ -3453,6 +3454,7 @@ void RasterizerSceneGLES3::_render_list_template(RenderListParameters *p_params,
34533454
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE2_AMBIENT_MODE, int(probe->ambient_mode), shader->version, instance_variant, spec_constants);
34543455
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);
34553456
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);
3457+
material_storage->shaders.scene_shader.version_set_uniform(SceneShaderGLES3::REFPROBE2_BLEND_DISTANCE, probe->blend_distance, shader->version, instance_variant, spec_constants);
34563458

34573459
glActiveTexture(GL_TEXTURE0 + config->max_texture_image_units - 8);
34583460
glBindTexture(GL_TEXTURE_CUBE_MAP, light_storage->reflection_probe_instance_get_texture(inst->reflection_probe_rid_cache[1]));

drivers/gles3/shaders/scene.glsl

+18-6
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,7 @@ uniform vec3 refprobe1_box_offset;
875875
uniform highp mat4 refprobe1_local_matrix;
876876
uniform bool refprobe1_exterior;
877877
uniform float refprobe1_intensity;
878+
uniform float refprobe1_blend_distance;
878879
uniform int refprobe1_ambient_mode;
879880
uniform vec4 refprobe1_ambient_color;
880881

@@ -888,6 +889,7 @@ uniform vec3 refprobe2_box_offset;
888889
uniform highp mat4 refprobe2_local_matrix;
889890
uniform bool refprobe2_exterior;
890891
uniform float refprobe2_intensity;
892+
uniform float refprobe2_blend_distance;
891893
uniform int refprobe2_ambient_mode;
892894
uniform vec4 refprobe2_ambient_color;
893895

@@ -1589,7 +1591,7 @@ void reflection_process(samplerCube reflection_map,
15891591
vec3 normal, vec3 vertex,
15901592
mat4 local_matrix,
15911593
bool use_box_project, vec3 box_extents, vec3 box_offset,
1592-
bool exterior, float intensity, int ref_ambient_mode, vec4 ref_ambient_color,
1594+
bool exterior, float intensity, float blend_distance, int ref_ambient_mode, vec4 ref_ambient_color,
15931595
float roughness, vec3 ambient, vec3 skybox,
15941596
inout highp vec4 reflection_accum, inout highp vec4 ambient_accum) {
15951597
vec4 reflection;
@@ -1601,10 +1603,20 @@ void reflection_process(samplerCube reflection_map,
16011603
}
16021604

16031605
vec3 inner_pos = abs(local_pos / box_extents);
1604-
float blend = max(inner_pos.x, max(inner_pos.y, inner_pos.z));
1605-
blend = mix(length(inner_pos), blend, blend);
1606-
blend *= blend;
1606+
vec3 blend_axes = vec3(0.0, 0.0, 0.0);
1607+
float blend = 0.0;
1608+
if (blend_distance != 0) {
1609+
for (int i = 0; i < 3; i++) {
1610+
float axis_blend_distance = min(blend_distance, box_extents[i]);
1611+
blend_axes[i] = (inner_pos[i] * box_extents[i]) - box_extents[i] + axis_blend_distance;
1612+
blend_axes[i] = blend_axes[i] / axis_blend_distance;
1613+
blend_axes[i] = clamp(blend_axes[i], 0.0, 1.0);
1614+
}
1615+
blend = pow((1.0 - blend_axes.x) * (1.0 - blend_axes.y) * (1.0 - blend_axes.z), 2);
1616+
blend = 1 - blend;
1617+
}
16071618
blend = max(0.0, 1.0 - blend);
1619+
blend = clamp(blend, 0.0, 1.0);
16081620

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

19641976
reflection_process(refprobe1_texture, normal, vertex_interp, refprobe1_local_matrix,
19651977
refprobe1_use_box_project, refprobe1_box_extents, refprobe1_box_offset,
1966-
refprobe1_exterior, refprobe1_intensity, refprobe1_ambient_mode, refprobe1_ambient_color,
1978+
refprobe1_exterior, refprobe1_intensity, refprobe1_blend_distance, refprobe1_ambient_mode, refprobe1_ambient_color,
19671979
roughness, ambient_light, specular_light, reflection_accum, ambient_accum);
19681980

19691981
#ifdef SECOND_REFLECTION_PROBE
19701982

19711983
reflection_process(refprobe2_texture, normal, vertex_interp, refprobe2_local_matrix,
19721984
refprobe2_use_box_project, refprobe2_box_extents, refprobe2_box_offset,
1973-
refprobe2_exterior, refprobe2_intensity, refprobe2_ambient_mode, refprobe2_ambient_color,
1985+
refprobe2_exterior, refprobe2_intensity, refprobe2_blend_distance, refprobe2_ambient_mode, refprobe2_ambient_color,
19741986
roughness, ambient_light, specular_light, reflection_accum, ambient_accum);
19751987

19761988
#endif // SECOND_REFLECTION_PROBE

drivers/gles3/storage/light_storage.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,13 @@ void LightStorage::reflection_probe_set_intensity(RID p_probe, float p_intensity
471471
reflection_probe->intensity = p_intensity;
472472
}
473473

474+
void LightStorage::reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) {
475+
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
476+
ERR_FAIL_NULL(reflection_probe);
477+
478+
reflection_probe->blend_distance = p_blend_distance;
479+
}
480+
474481
void LightStorage::reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) {
475482
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
476483
ERR_FAIL_NULL(reflection_probe);

drivers/gles3/storage/light_storage.h

+2
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ struct ReflectionProbe {
118118
RS::ReflectionProbeUpdateMode update_mode = RS::REFLECTION_PROBE_UPDATE_ONCE;
119119
int resolution = 256;
120120
float intensity = 1.0;
121+
float blend_distance = 1.0;
121122
RS::ReflectionProbeAmbientMode ambient_mode = RS::REFLECTION_PROBE_AMBIENT_ENVIRONMENT;
122123
Color ambient_color;
123124
float ambient_color_energy = 1.0;
@@ -642,6 +643,7 @@ class LightStorage : public RendererLightStorage {
642643

643644
virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) override;
644645
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) override;
646+
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) override;
645647
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) override;
646648
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) override;
647649
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) override;

editor/plugins/gizmos/reflection_probe_gizmo_plugin.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,32 @@ void ReflectionProbeGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
165165
aabb.position = -size / 2;
166166
aabb.size = size;
167167

168+
AABB blend_aabb;
169+
for (int i = 0; i < 3; i++) {
170+
blend_aabb.position[i] = aabb.position[i] + probe->get_blend_distance();
171+
blend_aabb.size[i] = aabb.size[i] - probe->get_blend_distance() * 2.0;
172+
if (blend_aabb.size[i] < blend_aabb.position[i]) {
173+
blend_aabb.position[i] = aabb.position[i] + aabb.size[i] / 2.0;
174+
blend_aabb.size[i] = 0.0;
175+
}
176+
}
177+
178+
if (probe->get_blend_distance() != 0.0) {
179+
for (int i = 0; i < 12; i++) {
180+
Vector3 a;
181+
Vector3 b;
182+
blend_aabb.get_edge(i, a, b);
183+
lines.push_back(a);
184+
lines.push_back(b);
185+
}
186+
187+
for (int i = 0; i < 8; i++) {
188+
Vector3 ep = aabb.get_endpoint(i);
189+
internal_lines.push_back(blend_aabb.get_endpoint(i));
190+
internal_lines.push_back(ep);
191+
}
192+
}
193+
168194
Vector<Vector3> handles = helper->box_get_handles(probe->get_size());
169195

170196
if (probe->get_origin_offset() != Vector3(0.0, 0.0, 0.0)) {

scene/3d/reflection_probe.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ float ReflectionProbe::get_intensity() const {
3939
return intensity;
4040
}
4141

42+
void ReflectionProbe::set_blend_distance(float p_blend_distance) {
43+
blend_distance = p_blend_distance;
44+
RS::get_singleton()->reflection_probe_set_blend_distance(probe, p_blend_distance);
45+
update_gizmos();
46+
}
47+
48+
float ReflectionProbe::get_blend_distance() const {
49+
return blend_distance;
50+
}
51+
4252
void ReflectionProbe::set_ambient_mode(AmbientMode p_mode) {
4353
ambient_mode = p_mode;
4454
RS::get_singleton()->reflection_probe_set_ambient_mode(probe, RS::ReflectionProbeAmbientMode(p_mode));
@@ -202,6 +212,9 @@ void ReflectionProbe::_bind_methods() {
202212
ClassDB::bind_method(D_METHOD("set_intensity", "intensity"), &ReflectionProbe::set_intensity);
203213
ClassDB::bind_method(D_METHOD("get_intensity"), &ReflectionProbe::get_intensity);
204214

215+
ClassDB::bind_method(D_METHOD("set_blend_distance", "blend_distance"), &ReflectionProbe::set_blend_distance);
216+
ClassDB::bind_method(D_METHOD("get_blend_distance"), &ReflectionProbe::get_blend_distance);
217+
205218
ClassDB::bind_method(D_METHOD("set_ambient_mode", "ambient"), &ReflectionProbe::set_ambient_mode);
206219
ClassDB::bind_method(D_METHOD("get_ambient_mode"), &ReflectionProbe::get_ambient_mode);
207220

@@ -243,6 +256,7 @@ void ReflectionProbe::_bind_methods() {
243256

244257
ADD_PROPERTY(PropertyInfo(Variant::INT, "update_mode", PROPERTY_HINT_ENUM, "Once (Fast),Always (Slow)"), "set_update_mode", "get_update_mode");
245258
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "intensity", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_intensity", "get_intensity");
259+
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "blend_distance", PROPERTY_HINT_RANGE, "0,8,0.01,or_greater,suffix:m"), "set_blend_distance", "get_blend_distance");
246260
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");
247261
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "size", PROPERTY_HINT_NONE, "suffix:m"), "set_size", "get_size");
248262
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "origin_offset", PROPERTY_HINT_NONE, "suffix:m"), "set_origin_offset", "get_origin_offset");

scene/3d/reflection_probe.h

+4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class ReflectionProbe : public VisualInstance3D {
5151
private:
5252
RID probe;
5353
float intensity = 1.0;
54+
float blend_distance = 1.0;
5455
float max_distance = 0.0;
5556
Vector3 size = Vector3(20, 20, 20);
5657
Vector3 origin_offset = Vector3(0, 0, 0);
@@ -78,6 +79,9 @@ class ReflectionProbe : public VisualInstance3D {
7879
void set_intensity(float p_intensity);
7980
float get_intensity() const;
8081

82+
void set_blend_distance(float p_blend_distance);
83+
float get_blend_distance() const;
84+
8185
void set_ambient_mode(AmbientMode p_mode);
8286
AmbientMode get_ambient_mode() const;
8387

servers/rendering/dummy/storage/light_storage.h

+1
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ class LightStorage : public RendererLightStorage {
124124

125125
virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) override {}
126126
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) override {}
127+
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) override {}
127128
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) override {}
128129
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) override {}
129130
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) override {}

servers/rendering/renderer_rd/shaders/light_data_inc.glsl

+4
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,14 @@ struct ReflectionData {
4141
uint mask;
4242
mediump vec3 ambient; // ambient color
4343
mediump float intensity;
44+
mediump float blend_distance;
4445
bool exterior;
4546
bool box_project;
4647
uint ambient_mode;
4748
float exposure_normalization;
49+
float pad0;
50+
float pad1;
51+
float pad2;
4852
//0-8 is intensity,8-9 is ambient, mode
4953
highp mat4 local_matrix; // up to here for spot and omni, rest is for directional
5054
// notes: for ambientblend, use distance to edge to blend between already existing global environment

servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl

+13-4
Original file line numberDiff line numberDiff line change
@@ -876,11 +876,20 @@ void reflection_process(uint ref_index, vec3 vertex, vec3 ref_vec, vec3 normal,
876876
}
877877

878878
vec3 inner_pos = abs(local_pos / box_extents);
879-
float blend = max(inner_pos.x, max(inner_pos.y, inner_pos.z));
880-
//make blend more rounded
881-
blend = mix(length(inner_pos), blend, blend);
882-
blend *= blend;
879+
vec3 blend_axes = vec3(0.0, 0.0, 0.0);
880+
float blend = 0.0;
881+
if (reflections.data[ref_index].blend_distance != 0) {
882+
for (int i = 0; i < 3; i++) {
883+
float axis_blend_distance = min(reflections.data[ref_index].blend_distance, box_extents[i]);
884+
blend_axes[i] = (inner_pos[i] * box_extents[i]) - box_extents[i] + axis_blend_distance;
885+
blend_axes[i] = blend_axes[i] / axis_blend_distance;
886+
blend_axes[i] = clamp(blend_axes[i], 0.0, 1.0);
887+
}
888+
blend = pow((1.0 - blend_axes.x) * (1.0 - blend_axes.y) * (1.0 - blend_axes.z), 2);
889+
blend = 1 - blend;
890+
}
883891
blend = max(0.0, 1.0 - blend);
892+
blend = clamp(blend, 0.0, 1.0);
884893

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

servers/rendering/renderer_rd/storage_rd/light_storage.cpp

+15
Original file line numberDiff line numberDiff line change
@@ -1066,6 +1066,13 @@ void LightStorage::reflection_probe_set_intensity(RID p_probe, float p_intensity
10661066
reflection_probe->intensity = p_intensity;
10671067
}
10681068

1069+
void LightStorage::reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) {
1070+
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
1071+
ERR_FAIL_NULL(reflection_probe);
1072+
1073+
reflection_probe->blend_distance = p_blend_distance;
1074+
}
1075+
10691076
void LightStorage::reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) {
10701077
ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
10711078
ERR_FAIL_NULL(reflection_probe);
@@ -1266,6 +1273,13 @@ float LightStorage::reflection_probe_get_intensity(RID p_probe) const {
12661273
return reflection_probe->intensity;
12671274
}
12681275

1276+
float LightStorage::reflection_probe_get_blend_distance(RID p_probe) const {
1277+
const ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
1278+
ERR_FAIL_NULL_V(reflection_probe, 0);
1279+
1280+
return reflection_probe->blend_distance;
1281+
}
1282+
12691283
bool LightStorage::reflection_probe_is_interior(RID p_probe) const {
12701284
const ReflectionProbe *reflection_probe = reflection_probe_owner.get_or_null(p_probe);
12711285
ERR_FAIL_NULL_V(reflection_probe, false);
@@ -1755,6 +1769,7 @@ void LightStorage::update_reflection_probe_buffer(RenderDataRD *p_render_data, c
17551769
reflection_ubo.mask = probe->reflection_mask;
17561770

17571771
reflection_ubo.intensity = probe->intensity;
1772+
reflection_ubo.blend_distance = probe->blend_distance;
17581773
reflection_ubo.ambient_mode = probe->ambient_mode;
17591774

17601775
reflection_ubo.exterior = !probe->interior;

servers/rendering/renderer_rd/storage_rd/light_storage.h

+7
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ class LightStorage : public RendererLightStorage {
223223
RS::ReflectionProbeUpdateMode update_mode = RS::REFLECTION_PROBE_UPDATE_ONCE;
224224
int resolution = 256;
225225
float intensity = 1.0;
226+
float blend_distance = 1.0;
226227
RS::ReflectionProbeAmbientMode ambient_mode = RS::REFLECTION_PROBE_AMBIENT_ENVIRONMENT;
227228
Color ambient_color;
228229
float ambient_color_energy = 1.0;
@@ -303,10 +304,14 @@ class LightStorage : public RendererLightStorage {
303304
uint32_t mask;
304305
float ambient[3]; // ambient color,
305306
float intensity;
307+
float blend_distance;
306308
uint32_t exterior;
307309
uint32_t box_project;
308310
uint32_t ambient_mode;
309311
float exposure_normalization;
312+
uint32_t pad0;
313+
uint32_t pad1;
314+
uint32_t pad2;
310315
float local_matrix[16]; // up to here for spot and omni, rest is for directional
311316
};
312317

@@ -829,6 +834,7 @@ class LightStorage : public RendererLightStorage {
829834

830835
virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) override;
831836
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) override;
837+
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) override;
832838
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) override;
833839
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) override;
834840
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) override;
@@ -859,6 +865,7 @@ class LightStorage : public RendererLightStorage {
859865
virtual bool reflection_probe_renders_shadows(RID p_probe) const override;
860866

861867
float reflection_probe_get_intensity(RID p_probe) const;
868+
float reflection_probe_get_blend_distance(RID p_probe) const;
862869
bool reflection_probe_is_interior(RID p_probe) const;
863870
bool reflection_probe_is_box_projection(RID p_probe) const;
864871
RS::ReflectionProbeAmbientMode reflection_probe_get_ambient_mode(RID p_probe) const;

servers/rendering/rendering_server_default.h

+1
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,7 @@ class RenderingServerDefault : public RenderingServer {
460460

461461
FUNC2(reflection_probe_set_update_mode, RID, ReflectionProbeUpdateMode)
462462
FUNC2(reflection_probe_set_intensity, RID, float)
463+
FUNC2(reflection_probe_set_blend_distance, RID, float)
463464
FUNC2(reflection_probe_set_ambient_color, RID, const Color &)
464465
FUNC2(reflection_probe_set_ambient_energy, RID, float)
465466
FUNC2(reflection_probe_set_ambient_mode, RID, ReflectionProbeAmbientMode)

servers/rendering/storage/light_storage.h

+1
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ class RendererLightStorage {
111111
virtual void reflection_probe_set_update_mode(RID p_probe, RS::ReflectionProbeUpdateMode p_mode) = 0;
112112
virtual void reflection_probe_set_resolution(RID p_probe, int p_resolution) = 0;
113113
virtual void reflection_probe_set_intensity(RID p_probe, float p_intensity) = 0;
114+
virtual void reflection_probe_set_blend_distance(RID p_probe, float p_blend_distance) = 0;
114115
virtual void reflection_probe_set_ambient_mode(RID p_probe, RS::ReflectionProbeAmbientMode p_mode) = 0;
115116
virtual void reflection_probe_set_ambient_color(RID p_probe, const Color &p_color) = 0;
116117
virtual void reflection_probe_set_ambient_energy(RID p_probe, float p_energy) = 0;

servers/rendering_server.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -2569,6 +2569,7 @@ void RenderingServer::_bind_methods() {
25692569
ClassDB::bind_method(D_METHOD("reflection_probe_create"), &RenderingServer::reflection_probe_create);
25702570
ClassDB::bind_method(D_METHOD("reflection_probe_set_update_mode", "probe", "mode"), &RenderingServer::reflection_probe_set_update_mode);
25712571
ClassDB::bind_method(D_METHOD("reflection_probe_set_intensity", "probe", "intensity"), &RenderingServer::reflection_probe_set_intensity);
2572+
ClassDB::bind_method(D_METHOD("reflection_probe_set_blend_distance", "probe", "blend_distance"), &RenderingServer::reflection_probe_set_blend_distance);
25722573
ClassDB::bind_method(D_METHOD("reflection_probe_set_ambient_mode", "probe", "mode"), &RenderingServer::reflection_probe_set_ambient_mode);
25732574
ClassDB::bind_method(D_METHOD("reflection_probe_set_ambient_color", "probe", "color"), &RenderingServer::reflection_probe_set_ambient_color);
25742575
ClassDB::bind_method(D_METHOD("reflection_probe_set_ambient_energy", "probe", "energy"), &RenderingServer::reflection_probe_set_ambient_energy);

0 commit comments

Comments
 (0)