mirror of
https://github.com/godotengine/godot.git
synced 2025-03-26 00:16:37 +08:00
Merge pull request #99958 from lander-vr/reflection-probe-blend-property
Add Blend Distance property to ReflectionProbe
This commit is contained in:
commit
7c015a768f
@ -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.
|
||||
|
@ -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" />
|
||||
|
@ -3477,6 +3477,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 - 8);
|
||||
glBindTexture(GL_TEXTURE_CUBE_MAP, light_storage->reflection_probe_instance_get_texture(inst->reflection_probe_rid_cache[0]));
|
||||
@ -3495,6 +3496,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 - 9);
|
||||
glBindTexture(GL_TEXTURE_CUBE_MAP, light_storage->reflection_probe_instance_get_texture(inst->reflection_probe_rid_cache[1]));
|
||||
|
@ -885,6 +885,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;
|
||||
|
||||
@ -898,6 +899,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;
|
||||
|
||||
@ -1606,7 +1608,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;
|
||||
@ -1618,10 +1620,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));
|
||||
@ -1980,14 +1992,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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
@ -642,6 +643,7 @@ public:
|
||||
|
||||
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;
|
||||
|
@ -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)) {
|
||||
|
@ -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));
|
||||
@ -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);
|
||||
|
||||
@ -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");
|
||||
|
@ -51,6 +51,7 @@ public:
|
||||
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);
|
||||
@ -78,6 +79,9 @@ public:
|
||||
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;
|
||||
|
||||
|
@ -124,6 +124,7 @@ public:
|
||||
|
||||
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 {}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -1073,6 +1073,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);
|
||||
@ -1273,6 +1280,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);
|
||||
@ -1762,6 +1776,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;
|
||||
|
@ -223,6 +223,7 @@ private:
|
||||
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;
|
||||
@ -303,10 +304,14 @@ private:
|
||||
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
|
||||
};
|
||||
|
||||
@ -833,6 +838,7 @@ public:
|
||||
|
||||
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;
|
||||
@ -863,6 +869,7 @@ public:
|
||||
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;
|
||||
|
@ -460,6 +460,7 @@ public:
|
||||
|
||||
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)
|
||||
|
@ -111,6 +111,7 @@ public:
|
||||
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;
|
||||
|
@ -2571,6 +2571,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);
|
||||
|
@ -622,6 +622,7 @@ public:
|
||||
|
||||
virtual void reflection_probe_set_update_mode(RID p_probe, ReflectionProbeUpdateMode p_mode) = 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;
|
||||
|
||||
enum ReflectionProbeAmbientMode {
|
||||
REFLECTION_PROBE_AMBIENT_DISABLED,
|
||||
|
Loading…
x
Reference in New Issue
Block a user