Browse Source

Fix errors on quitting from an empty project

Yuri Roubinsky 3 years ago
parent
commit
26a26d6657

+ 0 - 2
scene/resources/sky_material.cpp

@@ -292,7 +292,6 @@ ProceduralSkyMaterial::ProceduralSkyMaterial() {
 }
 }
 
 
 ProceduralSkyMaterial::~ProceduralSkyMaterial() {
 ProceduralSkyMaterial::~ProceduralSkyMaterial() {
-	RS::get_singleton()->material_set_shader(_get_material(), RID());
 }
 }
 
 
 /////////////////////////////////////////
 /////////////////////////////////////////
@@ -368,7 +367,6 @@ PanoramaSkyMaterial::PanoramaSkyMaterial() {
 }
 }
 
 
 PanoramaSkyMaterial::~PanoramaSkyMaterial() {
 PanoramaSkyMaterial::~PanoramaSkyMaterial() {
-	RS::get_singleton()->material_set_shader(_get_material(), RID());
 }
 }
 
 
 //////////////////////////////////
 //////////////////////////////////

+ 5 - 0
servers/rendering/renderer_rd/renderer_scene_render_rd.cpp

@@ -1781,6 +1781,11 @@ void RendererSceneRenderRD::_free_render_buffer_data(RenderBuffers *rb) {
 		rb->ambient_buffer = RID();
 		rb->ambient_buffer = RID();
 		rb->reflection_buffer = RID();
 		rb->reflection_buffer = RID();
 	}
 	}
+
+	if (rb->gi.voxel_gi_buffer.is_valid()) {
+		RD::get_singleton()->free(rb->gi.voxel_gi_buffer);
+		rb->gi.voxel_gi_buffer = RID();
+	}
 }
 }
 
 
 void RendererSceneRenderRD::_process_sss(RID p_render_buffers, const CameraMatrix &p_camera) {
 void RendererSceneRenderRD::_process_sss(RID p_render_buffers, const CameraMatrix &p_camera) {

+ 1 - 0
servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp

@@ -576,6 +576,7 @@ void RendererSceneSkyRD::Sky::free(RendererStorageRD *p_storage) {
 
 
 	if (material.is_valid()) {
 	if (material.is_valid()) {
 		p_storage->free(material);
 		p_storage->free(material);
+		material = RID();
 	}
 	}
 }
 }