Blender V4.5
IMB_colormanagement.hh File Reference

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::ocio

Macros

#define BCM_CONFIG_FILE   "config.ocio"

Typedefs

using ColorSpace = blender::ocio::ColorSpace

Functions

Generic Functions
void IMB_colormanagement_check_file_config (Main *bmain)
void IMB_colormanagement_validate_settings (const ColorManagedDisplaySettings *display_settings, ColorManagedViewSettings *view_settings)
const char * IMB_colormanagement_role_colorspace_name_get (int role)
const char * IMB_colormanagement_srgb_colorspace_name_get ()
void IMB_colormanagement_check_is_data (ImBuf *ibuf, const char *name)
void IMB_colormanagegent_copy_settings (ImBuf *ibuf_src, ImBuf *ibuf_dst)
void IMB_colormanagement_assign_float_colorspace (ImBuf *ibuf, const char *name)
void IMB_colormanagement_assign_byte_colorspace (ImBuf *ibuf, const char *name)
const char * IMB_colormanagement_get_float_colorspace (ImBuf *ibuf)
const char * IMB_colormanagement_get_rect_colorspace (ImBuf *ibuf)
const char * IMB_colormanagement_space_from_filepath_rules (const char *filepath)
const ColorSpaceIMB_colormanagement_space_get_named (const char *name)
bool IMB_colormanagement_space_is_data (const ColorSpace *colorspace)
bool IMB_colormanagement_space_is_scene_linear (const ColorSpace *colorspace)
bool IMB_colormanagement_space_is_srgb (const ColorSpace *colorspace)
bool IMB_colormanagement_space_name_is_data (const char *name)
bool IMB_colormanagement_space_name_is_scene_linear (const char *name)
bool IMB_colormanagement_space_name_is_srgb (const char *name)
BLI_INLINE void IMB_colormanagement_get_luminance_coefficients (float r_rgb[3])
BLI_INLINE float IMB_colormanagement_get_luminance (const float rgb[3])
BLI_INLINE unsigned char IMB_colormanagement_get_luminance_byte (const unsigned char rgb[3])
BLI_INLINE void IMB_colormanagement_xyz_to_scene_linear (float scene_linear[3], const float xyz[3])
BLI_INLINE void IMB_colormanagement_scene_linear_to_xyz (float xyz[3], const float scene_linear[3])
BLI_INLINE void IMB_colormanagement_rec709_to_scene_linear (float scene_linear[3], const float rec709[3])
BLI_INLINE void IMB_colormanagement_scene_linear_to_rec709 (float rec709[3], const float scene_linear[3])
BLI_INLINE void IMB_colormanagement_aces_to_scene_linear (float scene_linear[3], const float aces[3])
BLI_INLINE void IMB_colormanagement_scene_linear_to_aces (float aces[3], const float scene_linear[3])
blender::float3x3 IMB_colormanagement_get_xyz_to_scene_linear ()
blender::float3x3 IMB_colormanagement_get_scene_linear_to_xyz ()
void IMB_colormanagement_get_whitepoint (const float temperature, const float tint, float whitepoint[3])
bool IMB_colormanagement_set_whitepoint (const float whitepoint[3], float &temperature, float &tint)
Color Space Transformation Functions
void IMB_colormanagement_transform_float (float *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace, bool predivide)
void IMB_colormanagement_transform_byte (unsigned char *buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_transform_byte_to_float (float *float_buffer, unsigned char *byte_buffer, int width, int height, int channels, const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_transform_v4 (float pixel[4], const char *from_colorspace, const char *to_colorspace)
void IMB_colormanagement_colorspace_to_scene_linear_v3 (float pixel[3], const ColorSpace *colorspace)
void IMB_colormanagement_colorspace_to_scene_linear_v4 (float pixel[4], bool predivide, const ColorSpace *colorspace)
void IMB_colormanagement_scene_linear_to_colorspace_v3 (float pixel[3], const ColorSpace *colorspace)
void IMB_colormanagement_colorspace_to_scene_linear (float *buffer, int width, int height, int channels, const ColorSpace *colorspace, bool predivide)
void IMB_colormanagement_scene_linear_to_colorspace (float *buffer, int width, int height, int channels, const ColorSpace *colorspace)
void IMB_colormanagement_imbuf_to_byte_texture (unsigned char *out_buffer, int offset_x, int offset_y, int width, int height, const ImBuf *ibuf, bool store_premultiplied)
void IMB_colormanagement_imbuf_to_float_texture (float *out_buffer, int offset_x, int offset_y, int width, int height, const ImBuf *ibuf, bool store_premultiplied)
void IMB_colormanagement_scene_linear_to_color_picking_v3 (float color_picking[3], const float scene_linear[3])
void IMB_colormanagement_color_picking_to_scene_linear_v3 (float scene_linear[3], const float color_picking[3])
BLI_INLINE void IMB_colormanagement_scene_linear_to_srgb_v3 (float srgb[3], const float scene_linear[3])
BLI_INLINE void IMB_colormanagement_srgb_to_scene_linear_v3 (float scene_linear[3], const float srgb[3])
void IMB_colormanagement_scene_linear_to_display_v3 (float pixel[3], const ColorManagedDisplay *display)
void IMB_colormanagement_display_to_scene_linear_v3 (float pixel[3], const ColorManagedDisplay *display)
void IMB_colormanagement_pixel_to_display_space_v4 (float result[4], const float pixel[4], const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
void IMB_colormanagement_pixel_to_display_space_v3 (float result[3], const float pixel[3], const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
void IMB_colormanagement_imbuf_make_display_space (ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
ImBufIMB_colormanagement_imbuf_for_write (ImBuf *ibuf, bool save_as_render, bool allocate_result, const ImageFormatData *image_format)
Public Display Buffers Interfaces
void IMB_colormanagement_display_settings_from_ctx (const bContext *C, ColorManagedViewSettings **r_view_settings, ColorManagedDisplaySettings **r_display_settings)
unsigned char * IMB_display_buffer_acquire (ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, void **cache_handle)
unsigned char * IMB_display_buffer_acquire_ctx (const bContext *C, ImBuf *ibuf, void **cache_handle)
void IMB_display_buffer_transform_apply (unsigned char *display_buffer, float *linear_buffer, int width, int height, int channels, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, bool predivide)
void IMB_display_buffer_transform_apply_float (float *float_display_buffer, float *linear_buffer, int width, int height, int channels, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, bool predivide)
void IMB_display_buffer_release (void *cache_handle)
Display Functions
int IMB_colormanagement_display_get_named_index (const char *name)
const char * IMB_colormanagement_display_get_indexed_name (int index)
const char * IMB_colormanagement_display_get_default_name ()
const ColorManagedDisplayIMB_colormanagement_display_get_named (const char *name)
const char * IMB_colormanagement_display_get_none_name ()
const char * IMB_colormanagement_display_get_default_view_transform_name (const ColorManagedDisplay *display)
View Functions
int IMB_colormanagement_view_get_id_by_name (const char *name)
const char * IMB_colormanagement_view_get_name_by_id (int index)
Look Functions
int IMB_colormanagement_look_get_named_index (const char *name)
const char * IMB_colormanagement_look_get_indexed_name (int index)
const char * IMB_colormanagement_look_get_default_name ()
const char * IMB_colormanagement_look_validate_for_view (const char *view_name, const char *look_name)
Color Space Functions
int IMB_colormanagement_colorspace_get_named_index (const char *name)
const char * IMB_colormanagement_colorspace_get_indexed_name (int index)
const char * IMB_colormanagement_colorspace_get_name (const ColorSpace *colorspace)
const char * IMB_colormanagement_view_get_default_name (const char *display_name)
const char * IMB_colormanagement_view_get_raw_or_default_name (const char *display_name)
void IMB_colormanagement_colorspace_from_ibuf_ftype (ColorManagedColorspaceSettings *colorspace_settings, ImBuf *ibuf)
RNA Helper Functions
void IMB_colormanagement_display_items_add (EnumPropertyItem **items, int *totitem)
void IMB_colormanagement_view_items_add (EnumPropertyItem **items, int *totitem, const char *display_name)
void IMB_colormanagement_look_items_add (EnumPropertyItem **items, int *totitem, const char *view_name)
void IMB_colormanagement_colorspace_items_add (EnumPropertyItem **items, int *totitem)
Tile-based Buffer Management
void IMB_partial_display_buffer_update (ImBuf *ibuf, const float *linear_buffer, const unsigned char *byte_buffer, int stride, int offset_x, int offset_y, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, int xmin, int ymin, int xmax, int ymax)
void IMB_partial_display_buffer_update_threaded (ImBuf *ibuf, const float *linear_buffer, const unsigned char *byte_buffer, int stride, int offset_x, int offset_y, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, int xmin, int ymin, int xmax, int ymax)
void IMB_partial_display_buffer_update_delayed (ImBuf *ibuf, int xmin, int ymin, int xmax, int ymax)
Pixel Processor Functions
ColormanageProcessorIMB_colormanagement_display_processor_new (const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
ColormanageProcessorIMB_colormanagement_colorspace_processor_new (const char *from_colorspace, const char *to_colorspace)
bool IMB_colormanagement_processor_is_noop (ColormanageProcessor *cm_processor)
void IMB_colormanagement_processor_apply_v4 (ColormanageProcessor *cm_processor, float pixel[4])
void IMB_colormanagement_processor_apply_v4_predivide (ColormanageProcessor *cm_processor, float pixel[4])
void IMB_colormanagement_processor_apply_v3 (ColormanageProcessor *cm_processor, float pixel[3])
void IMB_colormanagement_processor_apply_pixel (ColormanageProcessor *cm_processor, float *pixel, int channels)
void IMB_colormanagement_processor_apply (ColormanageProcessor *cm_processor, float *buffer, int width, int height, int channels, bool predivide)
void IMB_colormanagement_processor_apply_byte (ColormanageProcessor *cm_processor, unsigned char *buffer, int width, int height, int channels)
void IMB_colormanagement_processor_free (ColormanageProcessor *cm_processor)
OpenGL Drawing Routines Using GLSL for Color Space Transform
bool IMB_colormanagement_setup_glsl_draw (const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, float dither, bool predivide)
bool IMB_colormanagement_setup_glsl_draw_from_space (const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, const ColorSpace *from_colorspace, float dither, bool predivide, bool do_overlay_merge)
bool IMB_colormanagement_setup_glsl_draw_ctx (const bContext *C, float dither, bool predivide)
bool IMB_colormanagement_setup_glsl_draw_from_space_ctx (const bContext *C, const ColorSpace *from_colorspace, float dither, bool predivide)
bool IMB_colormanagement_setup_glsl_draw_to_scene_linear (const char *from_colorspace_name, bool predivide)
void IMB_colormanagement_finish_glsl_draw ()
Rendering Tables
void IMB_colormanagement_blackbody_temperature_to_rgb (float r_dest[4], float value)
void IMB_colormanagement_blackbody_temperature_to_rgb_table (float *r_table, int width, float min, float max)
void IMB_colormanagement_wavelength_to_rgb (float r_dest[4], float value)
void IMB_colormanagement_wavelength_to_rgb_table (float *r_table, int width)

View Transform

enum  {
  COLOR_ROLE_SCENE_LINEAR = 0 , COLOR_ROLE_COLOR_PICKING , COLOR_ROLE_TEXTURE_PAINTING , COLOR_ROLE_DEFAULT_SEQUENCER ,
  COLOR_ROLE_DEFAULT_BYTE , COLOR_ROLE_DEFAULT_FLOAT , COLOR_ROLE_ACES_INTERCHANGE , COLOR_ROLE_DATA
}
void IMB_colormanagement_init_default_view_settings (ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)

Macro Definition Documentation

◆ BCM_CONFIG_FILE

#define BCM_CONFIG_FILE   "config.ocio"

Definition at line 15 of file IMB_colormanagement.hh.

Referenced by colormanagement_init().

Typedef Documentation

◆ ColorSpace

Definition at line 31 of file IMB_colormanagement.hh.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
COLOR_ROLE_SCENE_LINEAR 
COLOR_ROLE_COLOR_PICKING 
COLOR_ROLE_TEXTURE_PAINTING 
COLOR_ROLE_DEFAULT_SEQUENCER 
COLOR_ROLE_DEFAULT_BYTE 
COLOR_ROLE_DEFAULT_FLOAT 
COLOR_ROLE_ACES_INTERCHANGE 
COLOR_ROLE_DATA 

Definition at line 523 of file IMB_colormanagement.hh.

Function Documentation

◆ IMB_colormanagegent_copy_settings()

◆ IMB_colormanagement_aces_to_scene_linear()

BLI_INLINE void IMB_colormanagement_aces_to_scene_linear ( float scene_linear[3],
const float aces[3] )

Definition at line 70 of file colormanagement_inline.h.

References imbuf_aces_to_scene_linear, and mul_v3_m3v3().

Referenced by Color_from_aces_to_scene_linear().

◆ IMB_colormanagement_assign_byte_colorspace()

◆ IMB_colormanagement_assign_float_colorspace()

◆ IMB_colormanagement_blackbody_temperature_to_rgb()

◆ IMB_colormanagement_blackbody_temperature_to_rgb_table()

void IMB_colormanagement_blackbody_temperature_to_rgb_table ( float * r_table,
int width,
float min,
float max )

◆ IMB_colormanagement_check_file_config()

◆ IMB_colormanagement_check_is_data()

void IMB_colormanagement_check_is_data ( ImBuf * ibuf,
const char * name )

◆ IMB_colormanagement_color_picking_to_scene_linear_v3()

void IMB_colormanagement_color_picking_to_scene_linear_v3 ( float scene_linear[3],
const float color_picking[3] )

◆ IMB_colormanagement_colorspace_from_ibuf_ftype()

◆ IMB_colormanagement_colorspace_get_indexed_name()

const char * IMB_colormanagement_colorspace_get_indexed_name ( int index)

◆ IMB_colormanagement_colorspace_get_name()

const char * IMB_colormanagement_colorspace_get_name ( const ColorSpace * colorspace)

◆ IMB_colormanagement_colorspace_get_named_index()

int IMB_colormanagement_colorspace_get_named_index ( const char * name)

◆ IMB_colormanagement_colorspace_items_add()

◆ IMB_colormanagement_colorspace_processor_new()

◆ IMB_colormanagement_colorspace_to_scene_linear()

void IMB_colormanagement_colorspace_to_scene_linear ( float * buffer,
int width,
int height,
int channels,
const ColorSpace * colorspace,
bool predivide )

Converts a (width)x(height) block of float pixels from given color space to scene linear space. This is much higher performance than converting pixels one by one.

Definition at line 1960 of file colormanagement.cc.

References blender::ocio::CPUProcessor::apply(), blender::ocio::CPUProcessor::apply_predivide(), blender::ocio::BIT_DEPTH_F32, blender::ocio::ColorSpace::get_to_scene_linear_cpu_processor(), and printf.

Referenced by IMB_float_from_byte_ex(), blender::seq::pixels_to_scene_linear_byte(), and blender::seq::pixels_to_scene_linear_float().

◆ IMB_colormanagement_colorspace_to_scene_linear_v3()

void IMB_colormanagement_colorspace_to_scene_linear_v3 ( float pixel[3],
const ColorSpace * colorspace )

◆ IMB_colormanagement_colorspace_to_scene_linear_v4()

◆ IMB_colormanagement_display_get_default_name()

const char * IMB_colormanagement_display_get_default_name ( )

◆ IMB_colormanagement_display_get_default_view_transform_name()

const char * IMB_colormanagement_display_get_default_view_transform_name ( const ColorManagedDisplay * display)

◆ IMB_colormanagement_display_get_indexed_name()

const char * IMB_colormanagement_display_get_indexed_name ( int index)

◆ IMB_colormanagement_display_get_named()

◆ IMB_colormanagement_display_get_named_index()

int IMB_colormanagement_display_get_named_index ( const char * name)

Definition at line 2642 of file colormanagement.cc.

References g_config, and blender::ocio::Display::index.

Referenced by colormanage_display_settings_to_cache().

◆ IMB_colormanagement_display_get_none_name()

const char * IMB_colormanagement_display_get_none_name ( )

◆ IMB_colormanagement_display_items_add()

◆ IMB_colormanagement_display_processor_new()

◆ IMB_colormanagement_display_settings_from_ctx()

◆ IMB_colormanagement_display_to_scene_linear_v3()

void IMB_colormanagement_display_to_scene_linear_v3 ( float pixel[3],
const ColorManagedDisplay * display )

◆ IMB_colormanagement_finish_glsl_draw()

void IMB_colormanagement_finish_glsl_draw ( )

Finish GLSL-based display space conversion.

Definition at line 3644 of file colormanagement.cc.

References g_config, and global_gpu_state.

Referenced by draw_display_buffer(), ED_draw_imbuf_clipping(), gpu_viewport_draw_colormanaged(), and blender::ed::vse::preview_draw_texture_to_linear().

◆ IMB_colormanagement_get_float_colorspace()

◆ IMB_colormanagement_get_luminance()

BLI_INLINE float IMB_colormanagement_get_luminance ( const float rgb[3])

Convert a float RGB triplet to the correct luminance weighted average.

Gray-scale, 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

Definition at line 22 of file colormanagement_inline.h.

References dot_v3v3(), and imbuf_luma_coefficients.

Referenced by BKE_histogram_update_sample_line(), blender::bke::color_to_bool(), blender::bke::color_to_float(), blender::bke::color_to_int(), do_projectpaint_soften(), do_projectpaint_soften_f(), blender::color::get_luminance(), blender::nodes::node_fn_compare_cc::get_multi_function(), image_exr_from_rgb_to_bw(), IMB_color_to_bw(), paint_2d_lift_soften(), RE_texture_evaluate(), rgbtobw_valuefn(), scopes_update_cb(), blender::seq::tonemap_calc_chunk_luminance(), blender::seq::tonemap_rd_photoreceptor(), and ui_draw_but_CURVE().

◆ IMB_colormanagement_get_luminance_byte()

BLI_INLINE unsigned char IMB_colormanagement_get_luminance_byte ( const unsigned char rgb[3])

◆ IMB_colormanagement_get_luminance_coefficients()

BLI_INLINE void IMB_colormanagement_get_luminance_coefficients ( float r_rgb[3])

Definition at line 17 of file colormanagement_inline.h.

References copy_v3_v3(), and imbuf_luma_coefficients.

Referenced by blender::nodes::node_composite_tonemap_cc::ToneMapOperation::compute_average_log_luminance(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::compute_average_luminance(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::compute_log_maximum_luminance(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::compute_log_minimum_luminance(), blender::nodes::node_composite_levels_cc::LevelsOperation::compute_sum(), blender::nodes::node_composite_levels_cc::LevelsOperation::compute_sum_squared_difference(), blender::compositor::ConversionOperation::execute(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::execute_photoreceptor_cpu(), blender::nodes::node_composite_tonemap_cc::ToneMapOperation::execute_photoreceptor_gpu(), blender::nodes::node_composite_levels_cc::LevelsOperation::execute_single_value(), blender::compositor::get_luminance_coefficients(), blender::nodes::node_shader_rgb_to_bw_cc::gpu_shader_rgbtobw(), blender::imbuf::imb_oiio_write(), blender::ed::vse::make_waveform_view_from_ibuf(), blender::nodes::node_composite_colorcorrection_cc::node_build_multi_function(), blender::nodes::node_composite_luma_matte_cc::node_build_multi_function(), blender::nodes::node_composite_rgb_to_bw_cc::node_build_multi_function(), blender::nodes::node_composite_colorcorrection_cc::node_gpu_material(), blender::nodes::node_composite_luma_matte_cc::node_gpu_material(), and blender::nodes::node_composite_rgb_to_bw_cc::node_gpu_material().

◆ IMB_colormanagement_get_rect_colorspace()

◆ IMB_colormanagement_get_scene_linear_to_xyz()

◆ IMB_colormanagement_get_whitepoint()

void IMB_colormanagement_get_whitepoint ( const float temperature,
const float tint,
float whitepoint[3] )

Functions for converting between color temperature/tint and RGB white points.

Definition at line 1240 of file colormanagement.cc.

References IMB_colormanagement_xyz_to_scene_linear(), and blender::math::whitepoint_from_temp_tint().

◆ IMB_colormanagement_get_xyz_to_scene_linear()

◆ IMB_colormanagement_imbuf_for_write()

ImBuf * IMB_colormanagement_imbuf_for_write ( ImBuf * ibuf,
bool save_as_render,
bool allocate_result,
const ImageFormatData * image_format )

Prepare image buffer to be saved on disk, applying color management if needed color management would be applied if image is saving as render result and if file format is not expecting float buffer to be in linear space (currently JPEG2000 and TIFF are such formats – they're storing image as float but file itself stores applied color space).

Both byte and float buffers would contain applied color space, and result's float_colorspace would be set to display color space. This should be checked in image format write callback and if float_colorspace is not NULL, no color space transformation should be applied on this buffer.

Definition at line 2305 of file colormanagement.cc.

References BKE_image_format_is_byte(), BKE_imtype_requires_linear_float(), ImBuf::byte_buffer, blender::StringRefNull::c_str(), ImBuf::channels, colormanage_colorspace_get_named(), colormanagement_imbuf_make_display_space(), ImBufByteBuffer::colorspace, ImBufFloatBuffer::colorspace, ImBufByteBuffer::data, ImBufFloatBuffer::data, ImageFormatData::display_settings, ImBuf::float_buffer, get_display_colorspace(), global_role_default_byte, global_role_scene_linear, IB_DISPLAY_BUFFER_INVALID, IB_RECT_INVALID, IMB_alpha_under_color_byte(), IMB_alpha_under_color_float(), IMB_byte_from_float(), IMB_colormanagement_transform_byte(), IMB_colormanagement_transform_float(), IMB_float_from_byte(), IMB_free_byte_pixels(), imbuf_ensure_editable(), ImageFormatData::imtype, ImageFormatData::linear_colorspace_settings, blender::ocio::ColorSpace::name(), ColorManagedColorspaceSettings::name, ImageFormatData::planes, R_IMF_PLANES_RGBA, STREQ, ImBuf::userflags, ImageFormatData::view_settings, ImBuf::x, and ImBuf::y.

Referenced by BKE_image_render_write(), image_clipboard_copy_exec(), image_save_single(), and RE_WriteRenderViewsMovie().

◆ IMB_colormanagement_imbuf_make_display_space()

void IMB_colormanagement_imbuf_make_display_space ( ImBuf * ibuf,
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings )

◆ IMB_colormanagement_imbuf_to_byte_texture()

void IMB_colormanagement_imbuf_to_byte_texture ( unsigned char * out_buffer,
int offset_x,
int offset_y,
int width,
int height,
const ImBuf * ibuf,
bool store_premultiplied )

◆ IMB_colormanagement_imbuf_to_float_texture()

◆ IMB_colormanagement_init_default_view_settings()

◆ IMB_colormanagement_look_get_default_name()

const char * IMB_colormanagement_look_get_default_name ( )

◆ IMB_colormanagement_look_get_indexed_name()

const char * IMB_colormanagement_look_get_indexed_name ( int index)

◆ IMB_colormanagement_look_get_named_index()

int IMB_colormanagement_look_get_named_index ( const char * name)

Definition at line 2820 of file colormanagement.cc.

References g_config, and blender::ocio::Look::index.

Referenced by colormanage_view_settings_to_cache().

◆ IMB_colormanagement_look_items_add()

◆ IMB_colormanagement_look_validate_for_view()

const char * IMB_colormanagement_look_validate_for_view ( const char * view_name,
const char * look_name )

◆ IMB_colormanagement_pixel_to_display_space_v3()

void IMB_colormanagement_pixel_to_display_space_v3 ( float result[3],
const float pixel[3],
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings )

◆ IMB_colormanagement_pixel_to_display_space_v4()

void IMB_colormanagement_pixel_to_display_space_v4 ( float result[4],
const float pixel[4],
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings )

◆ IMB_colormanagement_processor_apply()

◆ IMB_colormanagement_processor_apply_byte()

void IMB_colormanagement_processor_apply_byte ( ColormanageProcessor * cm_processor,
unsigned char * buffer,
int width,
int height,
int channels )

◆ IMB_colormanagement_processor_apply_pixel()

◆ IMB_colormanagement_processor_apply_v3()

◆ IMB_colormanagement_processor_apply_v4()

◆ IMB_colormanagement_processor_apply_v4_predivide()

void IMB_colormanagement_processor_apply_v4_predivide ( ColormanageProcessor * cm_processor,
float pixel[4] )

◆ IMB_colormanagement_processor_free()

◆ IMB_colormanagement_processor_is_noop()

bool IMB_colormanagement_processor_is_noop ( ColormanageProcessor * cm_processor)

◆ IMB_colormanagement_rec709_to_scene_linear()

BLI_INLINE void IMB_colormanagement_rec709_to_scene_linear ( float scene_linear[3],
const float rec709[3] )

◆ IMB_colormanagement_role_colorspace_name_get()

const char * IMB_colormanagement_role_colorspace_name_get ( int role)

Definition at line 1056 of file colormanagement.cc.

References BLI_assert, COLOR_ROLE_ACES_INTERCHANGE, COLOR_ROLE_COLOR_PICKING, COLOR_ROLE_DATA, COLOR_ROLE_DEFAULT_BYTE, COLOR_ROLE_DEFAULT_FLOAT, COLOR_ROLE_DEFAULT_SEQUENCER, COLOR_ROLE_SCENE_LINEAR, COLOR_ROLE_TEXTURE_PAINTING, G, global_role_aces_interchange, global_role_color_picking, global_role_data, global_role_default_byte, global_role_default_float, global_role_default_sequencer, global_role_scene_linear, global_role_texture_painting, and printf.

Referenced by add_ibuf_for_tile(), blender::io::fbx::add_image_texture(), assign_render_pass_ibuf_colorspace(), BKE_image_add_generated(), BKE_image_format_color_management_copy_from_scene(), BKE_image_format_init_for_write(), BKE_image_format_update_color_space_for_type(), BKE_image_save_options_init(), colormanage_colorspace_get_roled(), blender::ed::vse::get_texture_colorspace_name(), image_colorspace_from_imbuf(), image_exr_from_scene_linear_to_output(), image_node_colorspace(), IMB_byte_from_float(), IMB_colormanagement_colorspace_from_ibuf_ftype(), IMB_colormanagement_get_float_colorspace(), IMB_colormanagement_get_rect_colorspace(), imb_exr_set_known_colorspace(), imb_handle_colorspace_and_alpha(), blender::ed::sculpt_paint::paint::image::PaintingKernel< ImageBuffer >::init_brush_color(), blender::io::usd::USDMaterialReader::load_tex_image(), MOV_open_file(), blender::nodes::node_composite_convert_color_space_cc::node_composit_init_convert_colorspace(), openexr_header_metadata(), RE_render_result_rect_to_ibuf(), blender::seq::render_imbuf_from_sequencer_space(), blender::seq::render_pixel_from_sequencer_space_v4(), render_result_exr_file_cache_read(), render_result_new_from_exr(), scene_init_data(), seq_process_render_image(), blender::seq::strip_add_set_view_transform(), wm_main_playanim_intern(), blender::ed::object::write_external_bake_pixels(), and blender::ed::object::write_internal_bake_pixels().

◆ IMB_colormanagement_scene_linear_to_aces()

BLI_INLINE void IMB_colormanagement_scene_linear_to_aces ( float aces[3],
const float scene_linear[3] )

Definition at line 75 of file colormanagement_inline.h.

References imbuf_scene_linear_to_aces, and mul_v3_m3v3().

Referenced by Color_from_scene_linear_to_aces().

◆ IMB_colormanagement_scene_linear_to_color_picking_v3()

void IMB_colormanagement_scene_linear_to_color_picking_v3 ( float color_picking[3],
const float scene_linear[3] )

Conversion between color picking role. Typically we would expect such a requirements:

  • It is approximately perceptually linear, so that the HSV numbers and the HSV cube/circle have an intuitive distribution.
  • It has the same gamut as the scene linear color space.
  • Color picking values 0..1 map to scene linear values in the 0..1 range, so that picked albedo values are energy conserving.

Definition at line 2154 of file colormanagement.cc.

References BLI_mutex_lock(), BLI_mutex_unlock(), copy_v3_v3(), g_config, global_color_picking_state, global_role_color_picking, global_role_scene_linear, and processor_lock.

Referenced by ui_scene_linear_to_perceptual_space().

◆ IMB_colormanagement_scene_linear_to_colorspace()

void IMB_colormanagement_scene_linear_to_colorspace ( float * buffer,
int width,
int height,
int channels,
const ColorSpace * colorspace )

Converts a (width)x(height) block of float pixels from scene linear space to given color space. This is much higher performance than converting pixels one by one.

Definition at line 1992 of file colormanagement.cc.

References blender::ocio::CPUProcessor::apply(), blender::ocio::BIT_DEPTH_F32, blender::ocio::ColorSpace::get_from_scene_linear_cpu_processor(), and printf.

Referenced by blender::seq::scene_linear_to_image_chunk_byte(), and blender::seq::scene_linear_to_image_chunk_float().

◆ IMB_colormanagement_scene_linear_to_colorspace_v3()

void IMB_colormanagement_scene_linear_to_colorspace_v3 ( float pixel[3],
const ColorSpace * colorspace )

Convert pixel from scene linear space to specified color space. For performance, use IMB_colormanagement_scene_linear_to_colorspace when converting an array of pixels.

Definition at line 1926 of file colormanagement.cc.

References blender::ocio::CPUProcessor::apply_rgb(), blender::ocio::ColorSpace::get_from_scene_linear_cpu_processor(), and printf.

◆ IMB_colormanagement_scene_linear_to_display_v3()

void IMB_colormanagement_scene_linear_to_display_v3 ( float pixel[3],
const ColorManagedDisplay * display )

Convert pixel from scene linear to display space using default view used by performance-critical areas such as color-related widgets where we want to reduce amount of per-widget allocations.

Definition at line 2212 of file colormanagement.cc.

References blender::ocio::CPUProcessor::apply_rgb(), and blender::ocio::Display::get_from_scene_linear_cpu_processor().

Referenced by brush_painter_imbuf_new(), brush_painter_imbuf_update(), eyedropper_color_set(), blender::ui::greasepencil::eyedropper_grease_pencil_color_set(), ui_block_cm_to_display_space_v3(), ui_draw_but_COLORBAND(), and ui_draw_colorband_handle().

◆ IMB_colormanagement_scene_linear_to_rec709()

BLI_INLINE void IMB_colormanagement_scene_linear_to_rec709 ( float rec709[3],
const float scene_linear[3] )

◆ IMB_colormanagement_scene_linear_to_srgb_v3()

BLI_INLINE void IMB_colormanagement_scene_linear_to_srgb_v3 ( float srgb[3],
const float scene_linear[3] )

Conversion between sRGB, for rare cases like hex color or copy/pasting between UI theme and scene linear colors.

Definition at line 58 of file colormanagement_inline.h.

References imbuf_scene_linear_to_rec709, linearrgb_to_srgb_v3_v3(), and mul_v3_m3v3().

Referenced by Color_from_scene_linear_to_srgb(), drop_color_invoke(), paint_brush_color_get(), blender::ed::sculpt_paint::sample_color_invoke(), ui_block_colorpicker(), ui_do_but_COLOR(), and ui_update_color_picker_buts_rgba().

◆ IMB_colormanagement_scene_linear_to_xyz()

BLI_INLINE void IMB_colormanagement_scene_linear_to_xyz ( float xyz[3],
const float scene_linear[3] )

◆ IMB_colormanagement_set_whitepoint()

bool IMB_colormanagement_set_whitepoint ( const float whitepoint[3],
float & temperature,
float & tint )

◆ IMB_colormanagement_setup_glsl_draw()

bool IMB_colormanagement_setup_glsl_draw ( const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings,
float dither,
bool predivide )

Configures GLSL shader for conversion from scene linear to display space.

Definition at line 3608 of file colormanagement.cc.

References IMB_colormanagement_setup_glsl_draw_from_space().

Referenced by ED_draw_imbuf_clipping(), and ocio_transform_ibuf().

◆ IMB_colormanagement_setup_glsl_draw_ctx()

bool IMB_colormanagement_setup_glsl_draw_ctx ( const bContext * C,
float dither,
bool predivide )

Same as setup_glsl_draw, but color management settings are guessing from a given context.

Definition at line 3631 of file colormanagement.cc.

References C, and IMB_colormanagement_setup_glsl_draw_from_space_ctx().

◆ IMB_colormanagement_setup_glsl_draw_from_space()

bool IMB_colormanagement_setup_glsl_draw_from_space ( const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings,
const ColorSpace * from_colorspace,
float dither,
bool predivide,
bool do_overlay_merge )
Note
Same as IMB_colormanagement_setup_glsl_draw, but display space conversion happens from a specified space.

Configures GLSL shader for conversion from specified to display color space

Will create appropriate OCIO processor and setup GLSL shader, so further 2D texture usage will use this conversion.

When there's no need to apply transform on 2D textures, use IMB_colormanagement_finish_glsl_draw().

This is low-level function, use ED_draw_imbuf_ctx if you only need to display given image buffer

Definition at line 3551 of file colormanagement.cc.

References blender::StringRefNull::c_str(), colormanage_use_look(), COLORMANAGE_VIEW_USE_HDR, COLORMANAGE_VIEW_USE_WHITE_BALANCE, blender::ocio::GPUDisplayParameters::curve_mapping, blender::ocio::GPUDisplayParameters::display, ColorManagedDisplaySettings::display_device, blender::ocio::GPUDisplayParameters::dither, blender::ocio::GPUDisplayParameters::do_overlay_merge, blender::ocio::GPUDisplayParameters::exponent, ColorManagedViewSettings::exposure, ColorManagedViewSettings::flag, blender::ocio::GPUDisplayParameters::from_colorspace, g_config, ColorManagedViewSettings::gamma, global_gpu_state, global_role_scene_linear, GPU_hdr_support(), IMB_colormanagement_init_default_view_settings(), blender::ocio::GPUDisplayParameters::look, ColorManagedViewSettings::look, max_ff(), blender::ocio::ColorSpace::name(), powf, blender::ocio::GPUDisplayParameters::scale, blender::ocio::GPUDisplayParameters::temperature, ColorManagedViewSettings::temperature, blender::ocio::GPUDisplayParameters::tint, ColorManagedViewSettings::tint, update_glsl_curve_mapping(), blender::ocio::GPUDisplayParameters::use_hdr, blender::ocio::GPUDisplayParameters::use_predivide, blender::ocio::GPUDisplayParameters::use_white_balance, blender::ocio::GPUDisplayParameters::view, and ColorManagedViewSettings::view_transform.

Referenced by ED_draw_imbuf_clipping(), gpu_viewport_draw_colormanaged(), IMB_colormanagement_setup_glsl_draw(), IMB_colormanagement_setup_glsl_draw_from_space_ctx(), and ocio_transform_ibuf().

◆ IMB_colormanagement_setup_glsl_draw_from_space_ctx()

bool IMB_colormanagement_setup_glsl_draw_from_space_ctx ( const bContext * C,
const ColorSpace * from_colorspace,
float dither,
bool predivide )

Same as setup_glsl_draw_from_space, but color management settings are guessing from a given context.

Definition at line 3617 of file colormanagement.cc.

References C, IMB_colormanagement_display_settings_from_ctx(), and IMB_colormanagement_setup_glsl_draw_from_space().

Referenced by IMB_colormanagement_setup_glsl_draw_ctx().

◆ IMB_colormanagement_setup_glsl_draw_to_scene_linear()

bool IMB_colormanagement_setup_glsl_draw_to_scene_linear ( const char * from_colorspace_name,
bool predivide )

Configures GPU shader for conversion from the given space to scene linear. Drawing happens in the same immediate mode as when GPU_SHADER_3D_IMAGE_COLOR shader is used.

Returns true if the GPU shader was successfully bound.

Definition at line 3636 of file colormanagement.cc.

References g_config, and global_gpu_state.

Referenced by blender::ed::vse::preview_draw_texture_to_linear().

◆ IMB_colormanagement_space_from_filepath_rules()

const char * IMB_colormanagement_space_from_filepath_rules ( const char * filepath)

Definition at line 1161 of file colormanagement.cc.

References g_config.

Referenced by imb_handle_colorspace_and_alpha().

◆ IMB_colormanagement_space_get_named()

const ColorSpace * IMB_colormanagement_space_get_named ( const char * name)

Definition at line 1166 of file colormanagement.cc.

References g_config.

◆ IMB_colormanagement_space_is_data()

◆ IMB_colormanagement_space_is_scene_linear()

◆ IMB_colormanagement_space_is_srgb()

◆ IMB_colormanagement_space_name_is_data()

◆ IMB_colormanagement_space_name_is_scene_linear()

bool IMB_colormanagement_space_name_is_scene_linear ( const char * name)

◆ IMB_colormanagement_space_name_is_srgb()

bool IMB_colormanagement_space_name_is_srgb ( const char * name)

◆ IMB_colormanagement_srgb_colorspace_name_get()

const char * IMB_colormanagement_srgb_colorspace_name_get ( )

◆ IMB_colormanagement_srgb_to_scene_linear_v3()

◆ IMB_colormanagement_transform_byte()

void IMB_colormanagement_transform_byte ( unsigned char * buffer,
int width,
int height,
int channels,
const char * from_colorspace,
const char * to_colorspace )

Convert a byte image buffer from one color space to another.

Definition at line 1836 of file colormanagement.cc.

References colormanagement_transform_ex().

Referenced by IMB_colormanagement_imbuf_for_write().

◆ IMB_colormanagement_transform_byte_to_float()

void IMB_colormanagement_transform_byte_to_float ( float * float_buffer,
unsigned char * byte_buffer,
int width,
int height,
int channels,
const char * from_colorspace,
const char * to_colorspace )

◆ IMB_colormanagement_transform_float()

void IMB_colormanagement_transform_float ( float * buffer,
int width,
int height,
int channels,
const char * from_colorspace,
const char * to_colorspace,
bool predivide )

◆ IMB_colormanagement_transform_v4()

void IMB_colormanagement_transform_v4 ( float pixel[4],
const char * from_colorspace,
const char * to_colorspace )

◆ IMB_colormanagement_validate_settings()

◆ IMB_colormanagement_view_get_default_name()

const char * IMB_colormanagement_view_get_default_name ( const char * display_name)

Definition at line 2713 of file colormanagement.cc.

References g_config, blender::ocio::Display::get_default_view(), and view.

◆ IMB_colormanagement_view_get_id_by_name()

int IMB_colormanagement_view_get_id_by_name ( const char * name)

◆ IMB_colormanagement_view_get_name_by_id()

const char * IMB_colormanagement_view_get_name_by_id ( int index)

Definition at line 2700 of file colormanagement.cc.

References BLI_assert, and g_all_view_names.

◆ IMB_colormanagement_view_get_raw_or_default_name()

const char * IMB_colormanagement_view_get_raw_or_default_name ( const char * display_name)

◆ IMB_colormanagement_view_items_add()

◆ IMB_colormanagement_wavelength_to_rgb()

void IMB_colormanagement_wavelength_to_rgb ( float r_dest[4],
float value )

◆ IMB_colormanagement_wavelength_to_rgb_table()

void IMB_colormanagement_wavelength_to_rgb_table ( float * r_table,
int width )

◆ IMB_colormanagement_xyz_to_scene_linear()

BLI_INLINE void IMB_colormanagement_xyz_to_scene_linear ( float scene_linear[3],
const float xyz[3] )

Conversion between scene linear and other color spaces.

Definition at line 38 of file colormanagement_inline.h.

References imbuf_xyz_to_scene_linear, and mul_v3_m3v3().

Referenced by Color_from_xyz_d65_to_scene_linear(), IMB_colormanagement_get_whitepoint(), and IMB_colormanagement_wavelength_to_rgb().

◆ IMB_display_buffer_acquire()

◆ IMB_display_buffer_acquire_ctx()

unsigned char * IMB_display_buffer_acquire_ctx ( const bContext * C,
ImBuf * ibuf,
void ** cache_handle )

Same as IMB_display_buffer_acquire but gets view and display settings from context.

Definition at line 2554 of file colormanagement.cc.

References C, IMB_colormanagement_display_settings_from_ctx(), and IMB_display_buffer_acquire().

◆ IMB_display_buffer_release()

◆ IMB_display_buffer_transform_apply()

void IMB_display_buffer_transform_apply ( unsigned char * display_buffer,
float * linear_buffer,
int width,
int height,
int channels,
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings,
bool predivide )

◆ IMB_display_buffer_transform_apply_float()

void IMB_display_buffer_transform_apply_float ( float * float_display_buffer,
float * linear_buffer,
int width,
int height,
int channels,
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings,
bool predivide )

◆ IMB_partial_display_buffer_update()

void IMB_partial_display_buffer_update ( ImBuf * ibuf,
const float * linear_buffer,
const unsigned char * byte_buffer,
int stride,
int offset_x,
int offset_y,
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings,
int xmin,
int ymin,
int xmax,
int ymax )

Definition at line 3232 of file colormanagement.cc.

References imb_partial_display_buffer_update_ex().

Referenced by image_buffer_rect_update().

◆ IMB_partial_display_buffer_update_delayed()

void IMB_partial_display_buffer_update_delayed ( ImBuf * ibuf,
int xmin,
int ymin,
int xmax,
int ymax )

◆ IMB_partial_display_buffer_update_threaded()

void IMB_partial_display_buffer_update_threaded ( ImBuf * ibuf,
const float * linear_buffer,
const unsigned char * byte_buffer,
int stride,
int offset_x,
int offset_y,
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings,
int xmin,
int ymin,
int xmax,
int ymax )

Definition at line 3260 of file colormanagement.cc.

References imb_partial_display_buffer_update_ex().

Referenced by IMB_display_buffer_acquire().