[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51992] trunk/blender/source/blender/ blenlib/intern/math_color_inline.c: code cleanup:

Campbell Barton ideasman42 at gmail.com
Thu Nov 8 00:55:52 CET 2012


Revision: 51992
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51992
Author:   campbellbarton
Date:     2012-11-07 23:55:52 +0000 (Wed, 07 Nov 2012)
Log Message:
-----------
code cleanup:
linearrgb_to_srgb_ushort4_predivide() was calling `linearrgb_to_srgb(t) * alpha` twice in the FTOUSHORT macro, which gcc didn't optimize out.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/math_color_inline.c

Modified: trunk/blender/source/blender/blenlib/intern/math_color_inline.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_color_inline.c	2012-11-07 23:52:33 UTC (rev 51991)
+++ trunk/blender/source/blender/blenlib/intern/math_color_inline.c	2012-11-07 23:55:52 UTC (rev 51992)
@@ -164,7 +164,11 @@
 
 	for (i = 0; i < 3; ++i) {
 		t = linear[i] * inv_alpha;
-		srgb[i] = (t < 1.0f) ? (unsigned short) (to_srgb_table_lookup(t) * alpha) : FTOUSHORT(linearrgb_to_srgb(t) * alpha);
+		srgb[i] = (t <= 1.0f) ?
+		          /* warning - converts: float -> short -> float -> short */
+		          (unsigned short) (to_srgb_table_lookup(t) * alpha) :
+		          /* if FTOUSHORT was an inline function this could be done less confusingly */
+		          ((t = linearrgb_to_srgb(t) * alpha), FTOUSHORT(t));
 	}
 
 	srgb[3] = FTOUSHORT(linear[3]);




More information about the Bf-blender-cvs mailing list