Properly reset canvas state after drawing, fixes #18860
This commit is contained in:
parent
afe4f2080a
commit
455f297671
|
@ -1221,8 +1221,6 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||
|
||||
bool rebind_shader = true;
|
||||
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_DISTANCE_FIELD, false);
|
||||
|
||||
glBindBuffer(GL_UNIFORM_BUFFER, state.canvas_item_ubo);
|
||||
glBufferData(GL_UNIFORM_BUFFER, sizeof(CanvasItemUBO), &state.canvas_item_ubo_data, GL_DYNAMIC_DRAW);
|
||||
glBindBuffer(GL_UNIFORM_BUFFER, 0);
|
||||
|
@ -1340,7 +1338,7 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||
last_blend_mode = last_blend_mode != RasterizerStorageGLES3::Shader::CanvasItem::BLEND_MODE_DISABLED ? last_blend_mode : -1;
|
||||
}
|
||||
|
||||
if (shader_ptr != shader_cache) {
|
||||
if (shader_ptr != shader_cache || rebind_shader) {
|
||||
|
||||
if (shader_ptr->canvas_item.uses_time) {
|
||||
VisualServerRaster::redraw_request();
|
||||
|
@ -1657,6 +1655,14 @@ void RasterizerCanvasGLES3::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||
if (current_clip) {
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
}
|
||||
//disable states that may have been used
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_DISTANCE_FIELD, false);
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_SKELETON, false);
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_INSTANCE_CUSTOM, false);
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_PARTICLES, false);
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_INSTANCING, false);
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_LIGHTING, false);
|
||||
state.canvas_shader.set_conditional(CanvasShaderGLES3::USE_SHADOWS, false);
|
||||
}
|
||||
|
||||
void RasterizerCanvasGLES3::canvas_debug_viewport_shadows(Light *p_lights_with_shadow) {
|
||||
|
|
|
@ -165,7 +165,7 @@ void EditorFolding::load_scene_folding(Node *p_scene, const String &p_path) {
|
|||
}
|
||||
|
||||
bool EditorFolding::has_folding_data(const String &p_path) {
|
||||
String path = EditorSettings::get_singleton()->get_project_settings_dir();
|
||||
|
||||
String file = p_path.get_file() + "-folding-" + p_path.md5_text() + ".cfg";
|
||||
file = EditorSettings::get_singleton()->get_project_settings_dir().plus_file(file);
|
||||
return FileAccess::exists(file);
|
||||
|
|
Loading…
Reference in New Issue