diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-05-19 19:03:24 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-01-25 16:13:52 +0300 |
commit | e3e23f774697782424647d8a12792dbc768501ad (patch) | |
tree | 5c37c3e91aa2536edb2eb3a54a7ad051fbfb33fb /source/blender/imbuf/intern/colormanagement.c | |
parent | 83c9109926677b6b6a75ccb36ae0017733e8c8a2 (diff) |
ImBuf: Make luminance calculation inlined
Title actually tells it all, it is rather simple function which totally makes
sense to be inlined.
This gives up to 5% of speedup when updating scopes for a large image.
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D1310
Diffstat (limited to 'source/blender/imbuf/intern/colormanagement.c')
-rw-r--r-- | source/blender/imbuf/intern/colormanagement.c | 32 |
1 files changed, 2 insertions, 30 deletions
diff --git a/source/blender/imbuf/intern/colormanagement.c b/source/blender/imbuf/intern/colormanagement.c index 5a3d9b4c653..e4e93d3c4da 100644 --- a/source/blender/imbuf/intern/colormanagement.c +++ b/source/blender/imbuf/intern/colormanagement.c @@ -93,7 +93,7 @@ static int global_tot_looks = 0; /* Set to ITU-BT.709 / sRGB primaries weight. Brute force stupid, but only * option with no colormanagement in place. */ -static float luma_coefficients[3] = { 0.2126f, 0.7152f, 0.0722f }; +float imbuf_luma_coefficients[3] = { 0.2126f, 0.7152f, 0.0722f }; /* lock used by pre-cached processors getters, so processor wouldn't * be created several times @@ -552,7 +552,7 @@ static void colormanage_load_config(OCIO_ConstConfigRcPtr *config) } /* Load luminance coefficients. */ - OCIO_configGetDefaultLumaCoefs(config, luma_coefficients); + OCIO_configGetDefaultLumaCoefs(config, imbuf_luma_coefficients); } static void colormanage_free_config(void) @@ -1230,34 +1230,6 @@ const char *IMB_colormanagement_get_rect_colorspace(ImBuf *ibuf) return ibuf->rect_colorspace->name; } -/* Convert a float RGB triplet to the correct luminance weighted average. - * - * Grayscale, or Luma is a distillation of RGB data values down to a weighted average - * based on the luminance positions of the red, green, and blue primaries. - * Given that the internal reference space may be arbitrarily set, any - * effort to glean the luminance coefficients must be aware of the reference - * space primaries. - * - * See http://wiki.blender.org/index.php/User:Nazg-gul/ColorManagement#Luminance - */ - -float IMB_colormanagement_get_luminance(const float rgb[3]) -{ - return dot_v3v3(luma_coefficients, rgb); -} - -/* Byte equivalent of IMB_colormanagement_get_luminance(). */ -unsigned char IMB_colormanagement_get_luminance_byte(const unsigned char rgb[3]) -{ - float rgbf[3]; - float val; - - rgb_uchar_to_float(rgbf, rgb); - val = dot_v3v3(luma_coefficients, rgbf); - - return FTOCHAR(val); -} - /*********************** Threaded display buffer transform routines *************************/ typedef struct DisplayBufferThread { |