Skip to content

Commit

Permalink
Remove linearization of canvas modulate in GLES3 backend
Browse files Browse the repository at this point in the history
The GLES3 renderer is always in sRGB space, even when using an HDR format
  • Loading branch information
clayjohn committed Jul 24, 2024
1 parent 91eb688 commit 7eac9e8
Showing 1 changed file with 4 additions and 9 deletions.
13 changes: 4 additions & 9 deletions drivers/gles3/rasterizer_canvas_gles3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -341,15 +341,10 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
normal_transform.columns[2] = Vector2();
_update_transform_2d_to_mat4(normal_transform, state_buffer.canvas_normal_transform);

bool use_linear_colors = texture_storage->render_target_is_using_hdr(p_to_render_target);
Color modulate = p_modulate;
if (use_linear_colors) {
modulate = p_modulate.srgb_to_linear();
}
state_buffer.canvas_modulate[0] = modulate.r;
state_buffer.canvas_modulate[1] = modulate.g;
state_buffer.canvas_modulate[2] = modulate.b;
state_buffer.canvas_modulate[3] = modulate.a;
state_buffer.canvas_modulate[0] = p_modulate.r;
state_buffer.canvas_modulate[1] = p_modulate.g;
state_buffer.canvas_modulate[2] = p_modulate.b;
state_buffer.canvas_modulate[3] = p_modulate.a;

Size2 render_target_size = texture_storage->render_target_get_size(p_to_render_target);
state_buffer.screen_pixel_size[0] = 1.0 / render_target_size.x;
Expand Down

0 comments on commit 7eac9e8

Please sign in to comment.