diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-22 22:37:12 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-22 22:37:12 +0200 |
commit | d5c1b9f883adbb54900c145eafcaa789d0fd563c (patch) | |
tree | 9a67a96d960dfc27f7170288dcf04a220c9eb513 /servers/rendering/renderer_rd/environment/fog.cpp | |
parent | c3c19094294ca9442472ce5a0aa6befc4e5cbb95 (diff) | |
parent | 57f343ab2126cef8a47467aaf6b66868e74fac02 (diff) | |
download | redot-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.cpp | 20 |
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) { |