diff options
author | Brecht Van Lommel <brecht@blender.org> | 2022-05-20 18:54:43 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-05-23 16:34:50 +0300 |
commit | eb5e7d0a31eed698909c23ab0ca89c8fd4929365 (patch) | |
tree | 6332d3f66107492795254d4fbc0f8f3beccfb156 /source/blender/imbuf/intern/colormanagement_inline.c | |
parent | 469ee7ff1529a1b28ce0b300835ebc42d5c5362f (diff) |
Cleanup: clarify what is scene linear color space in conversion conversion
* Rename ambiguous rgb to scene_linear in some places
* Precompute matrices to directly go to scene instead of through XYZ
* Make function signatures more consistent
Diffstat (limited to 'source/blender/imbuf/intern/colormanagement_inline.c')
-rw-r--r-- | source/blender/imbuf/intern/colormanagement_inline.c | 40 |
1 files changed, 24 insertions, 16 deletions
diff --git a/source/blender/imbuf/intern/colormanagement_inline.c b/source/blender/imbuf/intern/colormanagement_inline.c index 4c632da1520..668307ec802 100644 --- a/source/blender/imbuf/intern/colormanagement_inline.c +++ b/source/blender/imbuf/intern/colormanagement_inline.c @@ -27,38 +27,46 @@ unsigned char IMB_colormanagement_get_luminance_byte(const unsigned char rgb[3]) return unit_float_to_uchar_clamp(val); } -void IMB_colormanagement_xyz_to_rgb(float rgb[3], const float xyz[3]) +void IMB_colormanagement_xyz_to_scene_linear(float scene_linear[3], const float xyz[3]) { - mul_v3_m3v3(rgb, imbuf_xyz_to_rgb, xyz); + mul_v3_m3v3(scene_linear, imbuf_xyz_to_scene_linear, xyz); } -void IMB_colormanagement_rgb_to_xyz(float xyz[3], const float rgb[3]) +void IMB_colormanagement_scene_linear_to_xyz(float xyz[3], const float scene_linear[3]) { - mul_v3_m3v3(xyz, imbuf_rgb_to_xyz, rgb); + mul_v3_m3v3(xyz, imbuf_scene_linear_to_xyz, scene_linear); } -void IMB_colormanagement_rec709_to_rgb(float rgb[3], const float rec709[3]) +void IMB_colormanagement_rec709_to_scene_linear(float scene_linear[3], const float rec709[3]) { - mul_v3_m3v3(rgb, imbuf_rec709_to_xyz, rec709); - mul_v3_m3v3(rgb, imbuf_xyz_to_rgb, rgb); + mul_v3_m3v3(scene_linear, imbuf_rec709_to_scene_linear, rec709); } -void IMB_colormanagement_rgb_to_rec709(float rec709[3], const float rgb[3]) +void IMB_colormanagement_scene_linear_to_rec709(float rec709[3], const float scene_linear[3]) { - mul_v3_m3v3(rec709, imbuf_rgb_to_xyz, rgb); - mul_v3_m3v3(rec709, imbuf_xyz_to_rec709, rec709); + mul_v3_m3v3(rec709, imbuf_scene_linear_to_rec709, scene_linear); } -void IMB_colormanagement_aces_to_rgb(float rgb[3], const float aces[3]) +void IMB_colormanagement_scene_linear_to_srgb_v3(float srgb[3], const float scene_linear[3]) { - mul_v3_m3v3(rgb, imbuf_aces_to_xyz, aces); - mul_v3_m3v3(rgb, imbuf_xyz_to_rgb, rgb); + mul_v3_m3v3(srgb, imbuf_scene_linear_to_rec709, scene_linear); + linearrgb_to_srgb_v3_v3(srgb, srgb); } -void IMB_colormanagement_rgb_to_aces(float aces[3], const float rgb[3]) +void IMB_colormanagement_srgb_to_scene_linear_v3(float scene_linear[3], const float srgb[3]) { - mul_v3_m3v3(aces, imbuf_rgb_to_xyz, rgb); - mul_v3_m3v3(aces, imbuf_xyz_to_aces, aces); + srgb_to_linearrgb_v3_v3(scene_linear, srgb); + mul_m3_v3(imbuf_rec709_to_scene_linear, scene_linear); +} + +void IMB_colormanagement_aces_to_scene_linear(float scene_linear[3], const float aces[3]) +{ + mul_v3_m3v3(scene_linear, imbuf_aces_to_scene_linear, aces); +} + +void IMB_colormanagement_scene_linear_to_aces(float aces[3], const float scene_linear[3]) +{ + mul_v3_m3v3(aces, imbuf_scene_linear_to_aces, scene_linear); } #endif /* __IMB_COLORMANAGEMENT_INLINE_H__ */ |