|
@@ -1426,7 +1426,8 @@ void RasterizerStorageGLES2::_update_shader(Shader *p_shader) const {
|
|
|
p_shader->canvas_item.uses_time = false;
|
|
|
p_shader->canvas_item.uses_modulate = false;
|
|
|
p_shader->canvas_item.reads_color = false;
|
|
|
- p_shader->canvas_item.prevent_color_baking = false;
|
|
|
+ p_shader->canvas_item.reads_vertex = false;
|
|
|
+ p_shader->canvas_item.batch_flags = 0;
|
|
|
|
|
|
shaders.actions_canvas.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_ADD);
|
|
|
shaders.actions_canvas.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MIX);
|
|
@@ -1444,6 +1445,7 @@ void RasterizerStorageGLES2::_update_shader(Shader *p_shader) const {
|
|
|
shaders.actions_canvas.usage_flag_pointers["MODULATE"] = &p_shader->canvas_item.uses_modulate;
|
|
|
|
|
|
shaders.actions_canvas.read_flag_pointers["COLOR"] = &p_shader->canvas_item.reads_color;
|
|
|
+ shaders.actions_canvas.read_flag_pointers["VERTEX"] = &p_shader->canvas_item.reads_vertex;
|
|
|
|
|
|
actions = &shaders.actions_canvas;
|
|
|
actions->uniforms = &p_shader->uniforms;
|
|
@@ -1533,7 +1535,12 @@ void RasterizerStorageGLES2::_update_shader(Shader *p_shader) const {
|
|
|
|
|
|
// some logic for batching
|
|
|
if (p_shader->mode == VS::SHADER_CANVAS_ITEM) {
|
|
|
- p_shader->canvas_item.prevent_color_baking = p_shader->canvas_item.uses_modulate | p_shader->canvas_item.reads_color;
|
|
|
+ if (p_shader->canvas_item.uses_modulate | p_shader->canvas_item.reads_color) {
|
|
|
+ p_shader->canvas_item.batch_flags |= Shader::CanvasItem::PREVENT_COLOR_BAKING;
|
|
|
+ }
|
|
|
+ if (p_shader->canvas_item.reads_vertex) {
|
|
|
+ p_shader->canvas_item.batch_flags |= Shader::CanvasItem::PREVENT_VERTEX_BAKING;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
p_shader->shader->set_custom_shader(p_shader->custom_code_id);
|