Преглед изворни кода

Assign VIEWPORT_SIZE after validating screen_size to avoid crash when using ReflectionProbe

clayjohn пре 3 година
родитељ
комит
a0338553b5

+ 3 - 3
servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.cpp

@@ -1288,9 +1288,6 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
 	RENDER_TIMESTAMP("Setup 3D Scene");
 
 	//scene_state.ubo.subsurface_scatter_width = subsurface_scatter_size;
-
-	scene_state.ubo.viewport_size[0] = render_buffer->width;
-	scene_state.ubo.viewport_size[1] = render_buffer->height;
 	scene_state.ubo.directional_light_count = 0;
 	scene_state.ubo.opaque_prepass_threshold = 0.99f;
 
@@ -1386,6 +1383,9 @@ void RenderForwardClustered::_render_scene(RenderDataRD *p_render_data, const Co
 		ERR_FAIL(); //bug?
 	}
 
+	scene_state.ubo.viewport_size[0] = screen_size.x;
+	scene_state.ubo.viewport_size[1] = screen_size.y;
+
 	RD::get_singleton()->draw_command_begin_label("Render Setup");
 
 	_setup_lightmaps(*p_render_data->lightmaps, p_render_data->cam_transform);

+ 3 - 2
servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp

@@ -485,8 +485,6 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
 
 	RENDER_TIMESTAMP("Setup 3D Scene");
 
-	scene_state.ubo.viewport_size[0] = render_buffer->width;
-	scene_state.ubo.viewport_size[1] = render_buffer->height;
 	scene_state.ubo.directional_light_count = 0;
 	scene_state.ubo.opaque_prepass_threshold = 0.0;
 
@@ -566,6 +564,9 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
 		ERR_FAIL(); //bug?
 	}
 
+	scene_state.ubo.viewport_size[0] = screen_size.x;
+	scene_state.ubo.viewport_size[1] = screen_size.y;
+
 	RD::get_singleton()->draw_command_begin_label("Render Setup");
 
 	_setup_lightmaps(*p_render_data->lightmaps, p_render_data->cam_transform);