Explorar el Código

changed viewport clearing to use the alpha value of the clear color, and made the transparent bg option of viewport force a clear color of 0,0,0,0

romulox_x hace 10 años
padre
commit
2ac767b1f5

+ 1 - 1
drivers/gles2/rasterizer_gles2.cpp

@@ -4280,7 +4280,7 @@ void RasterizerGLES2::clear_viewport(const Color& p_color) {
 	}
 	}
 
 
 	glEnable(GL_SCISSOR_TEST);
 	glEnable(GL_SCISSOR_TEST);
-	glClearColor(p_color.r,p_color.g,p_color.b,1.0);
+	glClearColor(p_color.r,p_color.g,p_color.b,p_color.a);
 	glClear(GL_COLOR_BUFFER_BIT); //should not clear if anything else cleared..
 	glClear(GL_COLOR_BUFFER_BIT); //should not clear if anything else cleared..
 	glDisable(GL_SCISSOR_TEST);
 	glDisable(GL_SCISSOR_TEST);
 };
 };

+ 6 - 1
servers/visual/visual_server_raster.cpp

@@ -6641,7 +6641,12 @@ void VisualServerRaster::_draw_viewport(Viewport *p_viewport,int p_ofs_x, int p_
 
 
 		//clear the viewport black because of no camera? i seriously should..
 		//clear the viewport black because of no camera? i seriously should..
 		if (p_viewport->render_target_clear_on_new_frame || p_viewport->render_target_clear) {
 		if (p_viewport->render_target_clear_on_new_frame || p_viewport->render_target_clear) {
-			rasterizer->clear_viewport(clear_color);
+			if (p_viewport->transparent_bg) {
+				rasterizer->clear_viewport(Color(0,0,0,0));
+			}
+			else {
+				rasterizer->clear_viewport(clear_color);
+			}
 			p_viewport->render_target_clear=false;
 			p_viewport->render_target_clear=false;
 		}
 		}
 	}
 	}