Fix #34233: bad alpha blending for 3D texture painting. Same changes as the
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Sun, 28 Apr 2013 11:55:41 +0000 (11:55 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Sun, 28 Apr 2013 11:55:41 +0000 (11:55 +0000)
commitfe6c45e36e4fae22bbddbf3e51c7d1fca03c3c1a
tree31233740f13c5d32fc9791234197a03bd60ad510
parent753fe9f0b970c83d253a79f4b12a13d3cc5f5fad
Fix #34233: bad alpha blending for 3D texture painting. Same changes as the
previous fix for 2D image painting were done, and also:

* For brushes that do masking (keeping the max contribution to a pixel limited),
  the alpha from textures is now part of the mask. In many cases the logic
  worked out the same and where it didn't it used to cause artifacts.

* Color interpolation for smear and soften tools now happens in premultipied
  space, to avoid bleeding of RGB colors from zero alpha areas.

* Fix a few cases where byte <=> float conversion was not doing the proper
  straight <=> premul conversion.

* Replace some float division by constants with multiplications, is faster.

Note: float texture painting seems to have some issues updating the OpenGL
texture, but issue was already there before this commit.
source/blender/blenlib/intern/math_color.c
source/blender/blenlib/intern/math_color_inline.c
source/blender/editors/sculpt_paint/paint_image_proj.c
source/blender/imbuf/IMB_imbuf.h
source/blender/imbuf/intern/rectop.c