[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51998] trunk/blender/source/blender/ editors/sculpt_paint/paint_image.c: code cleanup: avoid doing multiplications within macro FTOCHAR() per pixel when applying brush color.
Campbell Barton
ideasman42 at gmail.com
Thu Nov 8 07:44:23 CET 2012
Revision: 51998
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51998
Author: campbellbarton
Date: 2012-11-08 06:44:14 +0000 (Thu, 08 Nov 2012)
Log Message:
-----------
code cleanup: avoid doing multiplications within macro FTOCHAR() per pixel when applying brush color.
Modified Paths:
--------------
trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2012-11-08 05:50:02 UTC (rev 51997)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_image.c 2012-11-08 06:44:14 UTC (rev 51998)
@@ -109,19 +109,25 @@
#include "paint_intern.h"
/* Defines and Structs */
+/* FTOCHAR as inline function */
+BLI_INLINE unsigned char f_to_char(const float val)
+{
+ return FTOCHAR(val);
+}
+
#define IMAPAINT_CHAR_TO_FLOAT(c) ((c) / 255.0f)
#define IMAPAINT_FLOAT_RGB_TO_CHAR(c, f) { \
- (c)[0] = FTOCHAR((f)[0]); \
- (c)[1] = FTOCHAR((f)[1]); \
- (c)[2] = FTOCHAR((f)[2]); \
+ (c)[0] = f_to_char((f)[0]); \
+ (c)[1] = f_to_char((f)[1]); \
+ (c)[2] = f_to_char((f)[2]); \
} (void)0
#define IMAPAINT_FLOAT_RGBA_TO_CHAR(c, f) { \
- (c)[0] = FTOCHAR((f)[0]); \
- (c)[1] = FTOCHAR((f)[1]); \
- (c)[2] = FTOCHAR((f)[2]); \
- (c)[3] = FTOCHAR((f)[3]); \
+ (c)[0] = f_to_char((f)[0]); \
+ (c)[1] = f_to_char((f)[1]); \
+ (c)[2] = f_to_char((f)[2]); \
+ (c)[3] = f_to_char((f)[3]); \
} (void)0
#define IMAPAINT_CHAR_RGB_TO_FLOAT(f, c) { \
(f)[0] = IMAPAINT_CHAR_TO_FLOAT((c)[0]); \
@@ -3905,16 +3911,20 @@
}
}
+BLI_INLINE void rgba_float_to_uchar__mul_v3(unsigned char rgba_ub[4], const float rgba[4], const float rgb[3])
+{
+ rgba_ub[0] = f_to_char(rgba[0] * rgb[0]);
+ rgba_ub[1] = f_to_char(rgba[1] * rgb[1]);
+ rgba_ub[2] = f_to_char(rgba[2] * rgb[3]);
+ rgba_ub[3] = f_to_char(rgba[3]);
+}
static void do_projectpaint_draw(ProjPaintState *ps, ProjPixel *projPixel, const float rgba[4], float alpha, float mask)
{
unsigned char rgba_ub[4];
if (ps->is_texbrush) {
- rgba_ub[0] = FTOCHAR(rgba[0] * ps->brush->rgb[0]);
- rgba_ub[1] = FTOCHAR(rgba[1] * ps->brush->rgb[1]);
- rgba_ub[2] = FTOCHAR(rgba[2] * ps->brush->rgb[2]);
- rgba_ub[3] = FTOCHAR(rgba[3]);
+ rgba_float_to_uchar__mul_v3(rgba_ub, rgba, ps->brush->rgb);
}
else {
IMAPAINT_FLOAT_RGB_TO_CHAR(rgba_ub, ps->brush->rgb);
More information about the Bf-blender-cvs
mailing list