浏览代码

Property apply shader parameters, even when materials are being reused, fixes #14012

Juan Linietsky 7 年之前
父节点
当前提交
c54927a127
共有 1 个文件被更改,包括 9 次插入6 次删除
  1. 9 6
      drivers/gles3/rasterizer_canvas_gles3.cpp

+ 9 - 6
drivers/gles3/rasterizer_canvas_gles3.cpp

@@ -1086,19 +1086,22 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
 				}
 			}
 
-			if (shader_ptr && shader_ptr != shader_cache) {
+			if (shader_ptr) {
 
 				if (shader_ptr->canvas_item.uses_screen_texture && !state.canvas_texscreen_used) {
 					//copy if not copied before
 					_copy_texscreen(Rect2());
 				}
 
-				if (shader_ptr->canvas_item.uses_time) {
-					VisualServerRaster::redraw_request();
-				}
+				if (shader_ptr != shader_cache) {
 
-				state.canvas_shader.set_custom_shader(shader_ptr->custom_code_id);
-				state.canvas_shader.bind();
+					if (shader_ptr->canvas_item.uses_time) {
+						VisualServerRaster::redraw_request();
+					}
+
+					state.canvas_shader.set_custom_shader(shader_ptr->custom_code_id);
+					state.canvas_shader.bind();
+				}
 
 				if (material_ptr->ubo_id) {
 					glBindBufferBase(GL_UNIFORM_BUFFER, 2, material_ptr->ubo_id);