summaryrefslogtreecommitdiffstats
path: root/drivers/gles3/storage/utilities.cpp
diff options
context:
space:
mode:
authorBastiaan Olij <mux213@gmail.com>2024-02-03 00:20:31 +1100
committerBastiaan Olij <mux213@gmail.com>2024-04-09 16:53:28 +1000
commit509d8dba2aa9612b9062e978ad03c638ff1ee620 (patch)
tree3f795eac02379e509d571541aaf0b6d871e8fbe5 /drivers/gles3/storage/utilities.cpp
parent9d6bdbc56e0ac99a6cc3aaed1c114a6528cb87fc (diff)
downloadredot-engine-509d8dba2aa9612b9062e978ad03c638ff1ee620.tar.gz
Add reflection probe support to compatibility renderer using 2 probe approach.
Diffstat (limited to 'drivers/gles3/storage/utilities.cpp')
-rw-r--r--drivers/gles3/storage/utilities.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gles3/storage/utilities.cpp b/drivers/gles3/storage/utilities.cpp
index c4fbe098cd..7e2e3dfa2b 100644
--- a/drivers/gles3/storage/utilities.cpp
+++ b/drivers/gles3/storage/utilities.cpp
@@ -158,6 +158,8 @@ RS::InstanceType Utilities::get_base_type(RID p_rid) const {
return RS::INSTANCE_LIGHTMAP;
} else if (GLES3::ParticlesStorage::get_singleton()->owns_particles(p_rid)) {
return RS::INSTANCE_PARTICLES;
+ } else if (GLES3::LightStorage::get_singleton()->owns_reflection_probe(p_rid)) {
+ return RS::INSTANCE_REFLECTION_PROBE;
} else if (GLES3::ParticlesStorage::get_singleton()->owns_particles_collision(p_rid)) {
return RS::INSTANCE_PARTICLES_COLLISION;
} else if (owns_visibility_notifier(p_rid)) {
@@ -197,6 +199,15 @@ bool Utilities::free(RID p_rid) {
} else if (GLES3::LightStorage::get_singleton()->owns_lightmap(p_rid)) {
GLES3::LightStorage::get_singleton()->lightmap_free(p_rid);
return true;
+ } else if (GLES3::LightStorage::get_singleton()->owns_reflection_probe(p_rid)) {
+ GLES3::LightStorage::get_singleton()->reflection_probe_free(p_rid);
+ return true;
+ } else if (GLES3::LightStorage::get_singleton()->owns_reflection_atlas(p_rid)) {
+ GLES3::LightStorage::get_singleton()->reflection_atlas_free(p_rid);
+ return true;
+ } else if (GLES3::LightStorage::get_singleton()->owns_reflection_probe_instance(p_rid)) {
+ GLES3::LightStorage::get_singleton()->reflection_probe_instance_free(p_rid);
+ return true;
} else if (GLES3::ParticlesStorage::get_singleton()->owns_particles(p_rid)) {
GLES3::ParticlesStorage::get_singleton()->particles_free(p_rid);
return true;
@@ -229,6 +240,9 @@ void Utilities::base_update_dependency(RID p_base, DependencyTracker *p_instance
if (multimesh->mesh.is_valid()) {
base_update_dependency(multimesh->mesh, p_instance);
}
+ } else if (LightStorage::get_singleton()->owns_reflection_probe(p_base)) {
+ Dependency *dependency = LightStorage::get_singleton()->reflection_probe_get_dependency(p_base);
+ p_instance->update_dependency(dependency);
} else if (LightStorage::get_singleton()->owns_light(p_base)) {
Light *l = LightStorage::get_singleton()->get_light(p_base);
p_instance->update_dependency(&l->dependency);