Browse Source

Merge pull request #80933 from ChibiDenDen/clear_color_mobile_fix

Fix clear color on mobile renderer
Rémi Verschelde 2 years ago
parent
commit
aa9f3583e8

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

@@ -752,7 +752,8 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
 	bool draw_sky = false;
 	bool draw_sky = false;
 	bool draw_sky_fog_only = false;
 	bool draw_sky_fog_only = false;
 	// We invert luminance_multiplier for sky so that we can combine it with exposure value.
 	// We invert luminance_multiplier for sky so that we can combine it with exposure value.
-	float sky_energy_multiplier = 1.0 / _render_buffers_get_luminance_multiplier();
+	float inverse_luminance_multiplier = 1.0 / _render_buffers_get_luminance_multiplier();
+	float sky_energy_multiplier = inverse_luminance_multiplier;
 
 
 	Color clear_color = p_default_bg_color;
 	Color clear_color = p_default_bg_color;
 	bool keep_color = false;
 	bool keep_color = false;
@@ -899,14 +900,14 @@ void RenderForwardMobile::_render_scene(RenderDataRD *p_render_data, const Color
 			// regular forward for now
 			// regular forward for now
 			Vector<Color> c;
 			Vector<Color> c;
 			{
 			{
-				Color cc = clear_color.srgb_to_linear();
+				Color cc = clear_color.srgb_to_linear() * inverse_luminance_multiplier;
 				if (rb_data.is_valid()) {
 				if (rb_data.is_valid()) {
 					cc.a = 0; // For transparent viewport backgrounds.
 					cc.a = 0; // For transparent viewport backgrounds.
 				}
 				}
 				c.push_back(cc); // Our render buffer.
 				c.push_back(cc); // Our render buffer.
 				if (rb_data.is_valid()) {
 				if (rb_data.is_valid()) {
 					if (p_render_data->render_buffers->get_msaa_3d() != RS::VIEWPORT_MSAA_DISABLED) {
 					if (p_render_data->render_buffers->get_msaa_3d() != RS::VIEWPORT_MSAA_DISABLED) {
-						c.push_back(clear_color.srgb_to_linear()); // Our resolve buffer.
+						c.push_back(clear_color.srgb_to_linear() * inverse_luminance_multiplier); // Our resolve buffer.
 					}
 					}
 					if (using_subpass_post_process) {
 					if (using_subpass_post_process) {
 						c.push_back(Color()); // Our 2D buffer we're copying into.
 						c.push_back(Color()); // Our 2D buffer we're copying into.