Browse Source

Ensure texture hints are obeyed, fixes #24875

Juan Linietsky 6 years ago
parent
commit
ffcb5cd18c

+ 8 - 0
drivers/gles2/rasterizer_canvas_gles2.cpp

@@ -1303,6 +1303,14 @@ void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, cons
 
 					t = t->get_ptr();
 
+#ifdef TOOLS_ENABLED
+					if (t->detect_normal && texture_hints[i] == ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL) {
+						t->detect_normal(t->detect_normal_ud);
+					}
+#endif
+					if (t->render_target)
+						t->render_target->used_in_frame = true;
+
 					if (t->redraw_if_visible) {
 						VisualServerRaster::redraw_request();
 					}

+ 18 - 0
drivers/gles2/rasterizer_scene_gles2.cpp

@@ -1245,6 +1245,24 @@ bool RasterizerSceneGLES2::_setup_material(RasterizerStorageGLES2::Material *p_m
 
 		t = t->get_ptr();
 
+		if (t->redraw_if_visible) { //must check before proxy because this is often used with proxies
+			VisualServerRaster::redraw_request();
+		}
+
+#ifdef TOOLS_ENABLED
+		if (t->detect_3d) {
+			t->detect_3d(t->detect_3d_ud);
+		}
+#endif
+
+#ifdef TOOLS_ENABLED
+		if (t->detect_normal && texture_hints[i] == ShaderLanguage::ShaderNode::Uniform::HINT_NORMAL) {
+			t->detect_normal(t->detect_normal_ud);
+		}
+#endif
+		if (t->render_target)
+			t->render_target->used_in_frame = true;
+
 		glBindTexture(t->target, t->tex_id);
 		if (i == 0) {
 			state.current_main_tex = t->tex_id;