Browse Source

Merge pull request #47994 from lawnjelly/ewok_cope_broken_shader

Batching - Don't join items with invalid shaders
Rémi Verschelde 4 years ago
parent
commit
41a3b98f2b

+ 6 - 0
drivers/gles2/rasterizer_canvas_gles2.cpp

@@ -1356,6 +1356,12 @@ bool RasterizerCanvasGLES2::try_join_item(Item *p_ci, RenderItemState &r_ris, bo
 		if (material_ptr) {
 			shader_ptr = material_ptr->shader;
 
+			// special case, if the user has made an error in the shader code
+			if (shader_ptr && !shader_ptr->valid) {
+				join = false;
+				r_batch_break = true;
+			}
+
 			if (shader_ptr && shader_ptr->mode != VS::SHADER_CANVAS_ITEM) {
 				shader_ptr = NULL; // not a canvas item shader, don't use.
 			}

+ 6 - 0
drivers/gles3/rasterizer_canvas_gles3.cpp

@@ -1754,6 +1754,12 @@ bool RasterizerCanvasGLES3::try_join_item(Item *p_ci, RenderItemState &r_ris, bo
 		if (material_ptr) {
 			shader_ptr = material_ptr->shader;
 
+			// special case, if the user has made an error in the shader code
+			if (shader_ptr && !shader_ptr->valid) {
+				join = false;
+				r_batch_break = true;
+			}
+
 			if (shader_ptr && shader_ptr->mode != VS::SHADER_CANVAS_ITEM) {
 				shader_ptr = NULL; // not a canvas item shader, don't use.
 			}