forked from bartvdbraak/blender
Fix T44627, black spots with lock alpha in projection paint:
Painting would revert alpha even on unpainted pixels, where values would contain garbage.
This commit is contained in:
parent
e39ec27bba
commit
e6a7fdd309
@ -4837,18 +4837,18 @@ static void *do_projectpaint_thread(void *ph_v)
|
||||
else do_projectpaint_draw(ps, projPixel, texrgb, mask, ps->dither, projPixel->x_px, projPixel->y_px);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lock_alpha) {
|
||||
if (is_floatbuf) {
|
||||
/* slightly more involved case since floats are in premultiplied space we need
|
||||
* to make sure alpha is consistent, see T44627 */
|
||||
float rgb_straight[4];
|
||||
premul_to_straight_v4_v4(rgb_straight, projPixel->pixel.f_pt);
|
||||
rgb_straight[3] = projPixel->origColor.f_pt[3];
|
||||
straight_to_premul_v4_v4(projPixel->pixel.f_pt, rgb_straight);
|
||||
if (lock_alpha) {
|
||||
if (is_floatbuf) {
|
||||
/* slightly more involved case since floats are in premultiplied space we need
|
||||
* to make sure alpha is consistent, see T44627 */
|
||||
float rgb_straight[4];
|
||||
premul_to_straight_v4_v4(rgb_straight, projPixel->pixel.f_pt);
|
||||
rgb_straight[3] = projPixel->origColor.f_pt[3];
|
||||
straight_to_premul_v4_v4(projPixel->pixel.f_pt, rgb_straight);
|
||||
}
|
||||
else projPixel->pixel.ch_pt[3] = projPixel->origColor.ch_pt[3];
|
||||
}
|
||||
else projPixel->pixel.ch_pt[3] = projPixel->origColor.ch_pt[3];
|
||||
}
|
||||
|
||||
/* done painting */
|
||||
|
Loading…
Reference in New Issue
Block a user