Skip to content

Commit

Permalink
Merge pull request godotengine#39200 from azagaya/fix-blend-2
Browse files Browse the repository at this point in the history
Fixing wrong blending rect methods
  • Loading branch information
akien-mga authored Jun 7, 2020
2 parents 46d8d60 + b211a86 commit ec1bf96
Showing 1 changed file with 10 additions and 12 deletions.
22 changes: 10 additions & 12 deletions core/image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2539,12 +2539,11 @@ void Image::blend_rect(const Ref<Image> &p_src, const Rect2 &p_src_rect, const P
int dst_y = dest_rect.position.y + i;

Color sc = img->get_pixel(src_x, src_y);
Color dc = get_pixel(dst_x, dst_y);
dc.r = (double)(sc.a * sc.r + dc.a * (1.0 - sc.a) * dc.r);
dc.g = (double)(sc.a * sc.g + dc.a * (1.0 - sc.a) * dc.g);
dc.b = (double)(sc.a * sc.b + dc.a * (1.0 - sc.a) * dc.b);
dc.a = (double)(sc.a + dc.a * (1.0 - sc.a));
set_pixel(dst_x, dst_y, dc);
if (sc.a != 0) {
Color dc = get_pixel(dst_x, dst_y);
dc = dc.blend(sc);
set_pixel(dst_x, dst_y, dc);
}
}
}
}
Expand Down Expand Up @@ -2594,12 +2593,11 @@ void Image::blend_rect_mask(const Ref<Image> &p_src, const Ref<Image> &p_mask, c
int dst_y = dest_rect.position.y + i;

Color sc = img->get_pixel(src_x, src_y);
Color dc = get_pixel(dst_x, dst_y);
dc.r = (double)(sc.a * sc.r + dc.a * (1.0 - sc.a) * dc.r);
dc.g = (double)(sc.a * sc.g + dc.a * (1.0 - sc.a) * dc.g);
dc.b = (double)(sc.a * sc.b + dc.a * (1.0 - sc.a) * dc.b);
dc.a = (double)(sc.a + dc.a * (1.0 - sc.a));
set_pixel(dst_x, dst_y, dc);
if (sc.a != 0) {
Color dc = get_pixel(dst_x, dst_y);
dc = dc.blend(sc);
set_pixel(dst_x, dst_y, dc);
}
}
}
}
Expand Down

0 comments on commit ec1bf96

Please sign in to comment.