summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/environment/fog.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-05-22 22:37:12 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-05-22 22:37:12 +0200
commitd5c1b9f883adbb54900c145eafcaa789d0fd563c (patch)
tree9a67a96d960dfc27f7170288dcf04a220c9eb513 /servers/rendering/renderer_rd/environment/fog.cpp
parentc3c19094294ca9442472ce5a0aa6befc4e5cbb95 (diff)
parent57f343ab2126cef8a47467aaf6b66868e74fac02 (diff)
downloadredot-engine-d5c1b9f883adbb54900c145eafcaa789d0fd563c.tar.gz
Merge pull request #77327 from BastiaanOlij/fix_gi_and_fog_free
Conditionally free GI and FOG resources, they may not have been created
Diffstat (limited to 'servers/rendering/renderer_rd/environment/fog.cpp')
-rw-r--r--servers/rendering/renderer_rd/environment/fog.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/servers/rendering/renderer_rd/environment/fog.cpp b/servers/rendering/renderer_rd/environment/fog.cpp
index 78b785153f..e6c827ce20 100644
--- a/servers/rendering/renderer_rd/environment/fog.cpp
+++ b/servers/rendering/renderer_rd/environment/fog.cpp
@@ -312,11 +312,21 @@ ALBEDO = vec3(1.0);
void Fog::free_fog_shader() {
MaterialStorage *material_storage = MaterialStorage::get_singleton();
- volumetric_fog.process_shader.version_free(volumetric_fog.process_shader_version);
- RD::get_singleton()->free(volumetric_fog.volume_ubo);
- RD::get_singleton()->free(volumetric_fog.params_ubo);
- material_storage->shader_free(volumetric_fog.default_shader);
- material_storage->material_free(volumetric_fog.default_material);
+ if (volumetric_fog.process_shader_version.is_valid()) {
+ volumetric_fog.process_shader.version_free(volumetric_fog.process_shader_version);
+ }
+ if (volumetric_fog.volume_ubo.is_valid()) {
+ RD::get_singleton()->free(volumetric_fog.volume_ubo);
+ }
+ if (volumetric_fog.params_ubo.is_valid()) {
+ RD::get_singleton()->free(volumetric_fog.params_ubo);
+ }
+ if (volumetric_fog.default_shader.is_valid()) {
+ material_storage->shader_free(volumetric_fog.default_shader);
+ }
+ if (volumetric_fog.default_material.is_valid()) {
+ material_storage->material_free(volumetric_fog.default_material);
+ }
}
void Fog::FogShaderData::set_code(const String &p_code) {