|
Blender V4.3
|
#include "BLI_array.hh"#include "BLI_math_color.h"#include "BLI_math_color.hh"#include "BLI_math_matrix.hh"#include "BLI_math_vector.hh"#include "BLI_simd.hh"#include "BLI_utildefines.h"#include <string.h>#include "BLI_strict_flags.h"Go to the source code of this file.
Classes | |
| struct | blender::math::locus_entry_t |
Namespaces | |
| namespace | blender |
| namespace | blender::math |
Variables | |
| float | BLI_color_from_srgb_table [256] |
| ushort | BLI_color_to_srgb_table [0x10000] |
| static const std::array< locus_entry_t, 31 > | blender::math::planck_locus |
| MALWAYS_INLINE float _bli_math_fastpow | ( | const int | exp, |
| const int | e2coeff, | ||
| const float | arg ) |
Definition at line 604 of file math_color.cc.
References exp(), float, float_as_int(), int_as_float(), and ret.
Referenced by _bli_math_fastpow24(), and _bli_math_fastpow512().
| MALWAYS_INLINE float _bli_math_fastpow24 | ( | const float | arg | ) |
Definition at line 622 of file math_color.cc.
References _bli_math_fastpow(), _bli_math_improve_5throot_solution(), and x.
Referenced by srgb_to_linearrgb_approx().
| MALWAYS_INLINE float _bli_math_fastpow512 | ( | const float | arg | ) |
Definition at line 638 of file math_color.cc.
References _bli_math_fastpow(), and _bli_math_rsqrt().
Referenced by linearrgb_to_srgb_approx().
| MALWAYS_INLINE float _bli_math_improve_5throot_solution | ( | const float | old_result, |
| const float | x ) |
Definition at line 613 of file math_color.cc.
Referenced by _bli_math_fastpow24().
| MALWAYS_INLINE float _bli_math_rsqrt | ( | float | in | ) |
Definition at line 633 of file math_color.cc.
References sqrtf.
Referenced by _bli_math_fastpow512().
| void BLI_init_srgb_conversion | ( | void | ) |
Definition at line 831 of file math_color.cc.
References b, BLI_color_from_srgb_table, BLI_color_to_srgb_table, hipart(), index_to_float(), initialized, linearrgb_to_srgb(), and srgb_to_linearrgb().
Referenced by colormanagement_init(), blender::gpu::GPUTest::SetUp(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), and blender::tests::TEST().
If the requested RGB shade contains a negative weight for one of the primaries, it lies outside the color gamut accessible from the given triple of primaries. Desaturate it by adding white, equal quantities of R, G, and B, enough to make RGB all positive. The function returns 1 if the components were modified, zero otherwise.
Definition at line 709 of file math_color.cc.
References b, min_ffff(), and w().
Definition at line 395 of file math_color.cc.
Referenced by BKE_palette_from_hash().
| MALWAYS_INLINE int32_t float_as_int | ( | float | v | ) |
Definition at line 597 of file math_color.cc.
References v.
Referenced by _bli_math_fastpow(), and isect_ray_tri_watertight_v3().
Definition at line 185 of file math_color.cc.
References hex_to_rgba().
Referenced by BKE_gpencil_palette_ensure().
Definition at line 190 of file math_color.cc.
Referenced by hex_to_rgb(), and ui_colorpicker_hex_rna_cb().
Definition at line 784 of file math_color.cc.
Referenced by BLI_init_srgb_conversion().
Definition at line 38 of file math_color.cc.
References CLAMP, fabsf, and l.
Referenced by BKE_icon_geom_invert_lightness(), blender::nodes::node_fn_combine_color_cc::get_multi_function(), hsl_to_rgb_v(), osl_prepend_color_from(), osl_transformc(), and svm_combine_color().
Definition at line 62 of file math_color.cc.
References hsl_to_rgb().
Referenced by BKE_colorband_evaluate(), color_mul_hsl_v3(), colorfn(), TEST(), ui_color_picker_hsv_to_rgb(), ui_color_picker_to_rgb_HSVCUBE_v(), and blender::compositor::ConvertHSLToRGBOperation::update_memory_buffer_partial().
Clamp hsv to usable values.
Definition at line 349 of file math_color.cc.
We define a 'cpack' here as a (3 byte color code) number that can be expressed like 0xFFAA66 or so. For that reason it is sensitive for endianness... with this function it works correctly.
Definition at line 358 of file math_color.cc.
References b, col, hsv_to_rgb(), and v.
Definition at line 21 of file math_color.cc.
References CLAMP, fabsf, and v.
Referenced by BKE_paint_face_set_overlay_color_get(), blend_color_color_byte(), blend_color_color_float(), blend_color_hue_byte(), blend_color_hue_float(), blend_color_luminosity_byte(), blend_color_luminosity_float(), blend_color_saturation_byte(), blend_color_saturation_float(), CombineHSVNode::constant_fold(), do_hue_sat_fac(), blender::nodes::node_fn_combine_color_cc::get_multi_function(), hsv_to_cpack(), hsv_to_rgb_v(), hue_correct_apply_threaded(), IMB_saturation(), blender::color::mix_color(), blender::color::mix_hue(), blender::color::mix_luminosity(), blender::color::mix_saturation(), node_mix_color(), node_mix_hue(), node_mix_sat(), node_mix_val(), osl_prepend_color_from(), osl_transformc(), ramp_blend(), rgb_float_set_hue_float_offset(), svm_combine_color(), svm_mix_color(), svm_mix_hue(), svm_mix_sat(), svm_mix_val(), svm_node_combine_hsv(), svm_node_hsv(), ui_draw_gradient(), blender::compositor::MixColorOperation::update_memory_buffer_row(), blender::compositor::MixHueOperation::update_memory_buffer_row(), blender::compositor::MixSaturationOperation::update_memory_buffer_row(), and blender::compositor::MixValueOperation::update_memory_buffer_row().
Definition at line 57 of file math_color.cc.
References hsv_to_rgb().
Referenced by blender::apply_color_factor(), BKE_colorband_evaluate(), checker_board_color_fill(), Color_channel_hsv_set(), blender::ed::sculpt_paint::color::color_filter_task(), Color_hsv_set(), colorfn(), DRW_evaluate_weight_to_color(), getcolor_fcurve_rainbow(), gpencil_layer_random_color_get(), graph_refresh_fcurve_colors(), grease_pencil_layer_random_color_get(), blender::ed::greasepencil::grease_pencil_vertex_paint_hsv_exec(), image_buf_fill_checker_slice(), blender::workbench::Material::Material(), blender::ed::sculpt_paint::greasepencil::PaintOperationExecutor::randomize_color(), rgb_tint(), TEST(), ui_color_picker_hsv_to_rgb(), ui_color_picker_to_rgb_HSVCUBE_v(), ui_do_but_COLOR(), ui_do_but_HSVCIRCLE(), blender::compositor::ConvertHSVToRGBOperation::update_memory_buffer_partial(), blender::compositor::GlareThresholdOperation::update_memory_buffer_partial(), and vertex_color_hsv_exec().
Definition at line 800 of file math_color.cc.
References FLT_MAX.
Referenced by BLI_init_srgb_conversion().
| MALWAYS_INLINE float int_as_float | ( | int32_t | v | ) |
| void lift_gamma_gain_to_asc_cdl | ( | const float * | lift, |
| const float * | gamma, | ||
| const float * | gain, | ||
| float * | offset, | ||
| float * | slope, | ||
| float * | power ) |
Definition at line 728 of file math_color.cc.
Definition at line 438 of file math_color.cc.
References powf.
Referenced by BLI_init_srgb_conversion(), blender::compositor::colorbalance_lgg(), ibuftoimage(), studiolight_irradiance_preview(), studiolight_matcap_preview(), studiolight_radiance_preview(), TEST(), TEST(), and TEST().
| MALWAYS_INLINE float linearrgb_to_srgb_approx | ( | float | c | ) |
Definition at line 660 of file math_color.cc.
References _bli_math_fastpow512().
Referenced by linearrgb_to_srgb_v3_v3().
Definition at line 676 of file math_color.cc.
References linearrgb_to_srgb_approx().
Referenced by FallbackTransform::applyRGB(), BKE_palette_from_hash(), do_projectpaint_draw(), do_projectpaint_thread(), blender::ed::sculpt_paint::color::from_float(), IMB_buffer_byte_from_float(), IMB_buffer_float_from_float(), IMB_colormanagement_scene_linear_to_srgb_v3(), linearrgb_to_srgb_predivide_v4(), linearrgb_to_srgb_uchar3(), linearrgb_to_srgb_v4(), blender::ed::sculpt_paint::load_tex_task_cb_ex(), paint_2d_gradient_fill(), paint_sample_color(), TEST(), ui_but_paste_color(), ui_draw_but_CURVE(), blender::io::grease_pencil::write_fill_color_attribute(), blender::io::grease_pencil::write_stroke_color_attribute(), blender::io::grease_pencil::PDFExporter::write_stroke_to_polyline(), and blender::io::obj::OBJWriter::write_vertex_coords().
| void minmax_rgb | ( | short | c[3] | ) |
Definition at line 685 of file math_color.cc.
| void rgb_byte_set_hue_float_offset | ( | unsigned char | rgb[3], |
| float | hue_offset ) |
Applies an HUE offset to a byte RGB color.
Definition at line 767 of file math_color.cc.
References rgb_float_set_hue_float_offset(), rgb_float_to_uchar(), and rgb_uchar_to_float().
Referenced by color3ubv_from_seq().
Applies an HUE offset to a float RGB color.
Definition at line 750 of file math_color.cc.
References hsv_to_rgb(), and rgb_to_hsv().
Referenced by rgb_byte_set_hue_float_offset().
Definition at line 417 of file math_color.cc.
References unit_float_to_uchar_clamp_v3.
Referenced by acf_gpl_channel_color(), apply_tangmat_callback(), BKE_icon_geom_invert_lightness(), brush_painter_imbuf_new(), color_mul_hsl_v3(), do_projectpaint_thread(), draw_strips_background(), draw_vectorscope_graticule(), drawmeta_contents(), hue_correct_apply_threaded(), IMB_buffer_byte_from_float(), IMB_buffer_byte_from_float_mask(), IMB_saturation(), partial_buffer_update_rect(), rgb_byte_set_hue_float_offset(), and ui_tooltip_region_draw_cb().
Definition at line 374 of file math_color.cc.
References b, floorf, and max_ff().
Referenced by palette_extract_img_exec(), studiolight_irradiance_preview(), studiolight_matcap_preview(), and studiolight_radiance_preview().
Definition at line 263 of file math_color.cc.
References b, l, max_fff(), min_ff(), and min_fff().
Referenced by blender::nodes::node_fn_separate_color_cc::SeparateHSLAFunction::call(), osl_transformc(), rgb_to_hsl_compat(), rgb_to_hsl_v(), and svm_separate_color().
Definition at line 292 of file math_color.cc.
References b, and rgb_to_hsl().
Referenced by rgb_to_hsl_compat_v().
Definition at line 313 of file math_color.cc.
References rgb_to_hsl_compat().
Referenced by ui_color_picker_rgb_to_hsv_compat(), and ui_rgb_to_color_picker_HSVCUBE_compat_v().
Definition at line 318 of file math_color.cc.
References rgb_to_hsl().
Referenced by apply_color_space(), BKE_colorband_evaluate(), BKE_icon_geom_invert_lightness(), color_mul_hsl_v3(), TEST(), ui_color_picker_rgb_to_hsv(), ui_draw_but_HSV_v(), ui_rgb_to_color_picker_HSVCUBE_v(), and blender::compositor::ConvertRGBToHSLOperation::update_memory_buffer_partial().
Definition at line 234 of file math_color.cc.
References b, fabsf, min_ff(), and SWAP.
Referenced by BKE_palette_from_hash(), blend_color_color_byte(), blend_color_color_float(), blend_color_hue_byte(), blend_color_hue_float(), blend_color_luminosity_byte(), blend_color_luminosity_float(), blend_color_saturation_byte(), blend_color_saturation_float(), blender::nodes::node_fn_separate_color_cc::SeparateHSVAFunction::call(), Color_channel_hsv_get(), Color_hsv_get(), SeparateHSVNode::constant_fold(), do_hue_sat_fac(), ED_image_draw_info(), hue_correct_apply_threaded(), blender::color::mix_color(), blender::color::mix_hue(), blender::color::mix_luminosity(), blender::color::mix_saturation(), node_mix_color(), node_mix_hue(), node_mix_sat(), node_mix_val(), osl_transformc(), palette_sort_exec(), ramp_blend(), rgb_float_set_hue_float_offset(), rgb_to_hsv_compat(), rgb_to_hsv_v(), svm_mix_color(), svm_mix_hue(), svm_mix_sat(), svm_mix_val(), svm_node_hsv(), svm_node_separate_hsv(), svm_separate_color(), blender::compositor::MixColorOperation::update_memory_buffer_row(), blender::compositor::MixHueOperation::update_memory_buffer_row(), blender::compositor::MixSaturationOperation::update_memory_buffer_row(), and blender::compositor::MixValueOperation::update_memory_buffer_row().
Definition at line 323 of file math_color.cc.
References b, e, and rgb_to_hsv().
Referenced by rgb_to_hsv_compat_v().
Definition at line 344 of file math_color.cc.
References rgb_to_hsv_compat().
Referenced by ui_color_picker_rgb_to_hsv_compat(), ui_do_but_COLOR(), ui_draw_but_HSVCUBE(), and ui_rgb_to_color_picker_HSVCUBE_compat_v().
Definition at line 258 of file math_color.cc.
References rgb_to_hsv().
Referenced by blender::apply_color_factor(), apply_color_space(), BKE_colorband_evaluate(), Color_channel_hsv_set(), blender::ed::sculpt_paint::color::color_filter_task(), graph_refresh_fcurve_colors(), blender::ed::greasepencil::grease_pencil_vertex_paint_hsv_exec(), IMB_saturation(), blender::ed::sculpt_paint::greasepencil::PaintOperationExecutor::randomize_color(), rgb_tint(), TEST(), ui_color_picker_rgb_to_hsv(), ui_draw_but_CURVE(), ui_draw_but_HSV_v(), ui_rgb_to_color_picker_HSVCUBE_v(), ui_tooltip_data_from_button_or_extra_icon(), blender::compositor::ConvertRGBToHSVOperation::update_memory_buffer_partial(), blender::compositor::GlareThresholdOperation::update_memory_buffer_partial(), vertex_color_hsv_exec(), and weightvg_do_mask().
| void rgb_to_ycc | ( | float | r, |
| float | g, | ||
| float | b, | ||
| float * | r_y, | ||
| float * | r_cb, | ||
| float * | r_cr, | ||
| int | colorspace ) |
The RGB inputs are supposed gamma corrected and in the range 0 - 1.0f
Output YCC have a range of 16-235 and 16-240 except with JFIF_0_255 where the range is 0-255.
Definition at line 115 of file math_color.cc.
References b, BLI_assert_msg, BLI_YCC_ITU_BT601, BLI_YCC_ITU_BT709, BLI_YCC_JFIF_0_255, and y.
Referenced by scopes_update_cb(), TEST(), and blender::compositor::ConvertRGBToYCCOperation::update_memory_buffer_partial().
| void rgb_to_yuv | ( | float | r, |
| float | g, | ||
| float | b, | ||
| float * | r_y, | ||
| float * | r_u, | ||
| float * | r_v, | ||
| int | colorspace ) |
Definition at line 67 of file math_color.cc.
References b, BLI_assert, BLI_YUV_ITU_BT601, BLI_YUV_ITU_BT709, v, and y.
Referenced by ED_image_draw_info(), rgb_to_uv(), save_sample_line(), blender::compositor::CalculateMeanOperation::set_setting(), TEST(), blender::compositor::ConvertRGBToYUVOperation::update_memory_buffer_partial(), and vectorscope_draw_target().
Definition at line 402 of file math_color.cc.
References float.
Referenced by BKE_icon_geom_invert_lightness(), color_mul_hsl_v3(), curves_apply_threaded(), display_buffer_apply_get_linear_buffer(), ED_space_clip_color_sample(), ED_space_image_color_sample(), ED_space_node_color_sample(), gl_shaded_color_get_fl(), hue_correct_apply_threaded(), IMB_colormanagement_get_luminance_byte(), IMB_saturation(), paint_sample_color(), pointdensity_cache_vertex_color(), rgb_byte_set_hue_float_offset(), tonemap_rd_photoreceptor(), tonemap_simple(), ui_draw_but_CURVE(), ui_draw_but_CURVEPROFILE(), ui_tooltip_region_draw_cb(), and whiteBalance_apply_threaded().
Definition at line 422 of file math_color.cc.
References unit_float_to_uchar_clamp_v4.
Referenced by BKE_paint_face_set_overlay_color_get(), BLF_color4fv(), blf_draw_buffer__start(), blf_draw_svg_icon(), BLF_shadow(), blender::BLI_color_convert_to_theme4b(), brush_painter_imbuf_update(), dynamic_paint_apply_surface_vpaint_cb(), file_draw_preview(), blender::ed::sculpt_paint::color::from_float(), image_buf_fill_color_slice(), IMB_buffer_byte_from_byte(), IMB_buffer_byte_from_float(), IMB_buffer_byte_from_float_mask(), IMB_colormanagement_processor_apply_byte(), mloopcol_from_float(), paint_2d_gradient_fill(), partial_buffer_update_rect(), ui_block_colorpicker(), UI_but_node_link_set(), ui_draw_widget_back_color(), ui_tooltip_data_from_button_or_extra_icon(), ui_update_color_picker_buts_rgba(), uiTemplateNodeSocket(), blender::compositor::PreviewOperation::update_memory_buffer_partial(), widget_swatch(), blender::bke::image::ImageBufferAccessor< T, Channels >::write_pixel(), and blender::ed::sculpt_paint::paint::image::ImageBufferByte4::write_pixel().
Definition at line 409 of file math_color.cc.
References float.
Referenced by accessor_get_ibuf(), blender::BLI_color_convert_to_theme4f(), display_buffer_apply_get_linear_buffer(), draw_columnheader_columns(), dynamic_paint_set_init_color_vcol_to_imseq_cb(), dynamicPaint_setInitialColor(), eyedropper_draw_cursor_text_ex(), icon_draw_size(), image_sample_apply(), image_sample_pixel_color_ubyte(), IMB_buffer_byte_from_byte(), IMB_buffer_float_from_byte(), IMB_colormanagement_processor_apply_byte(), IMB_sampleImageAtLocation(), imbuf_byte_to_float_cb(), knifetool_draw(), mask_draw_curve_type(), mloopcol_to_float(), paint_2d_bucket_fill(), paint_2d_fill_add_pixel_byte(), partial_buffer_update_rect(), blender::bke::image::ImageBufferAccessor< T, Channels >::read_pixel(), blender::ed::sculpt_paint::paint::image::ImageBufferByte4::read_pixel(), screen_draw_area_drag_tip(), textview_draw_string(), blender::ed::sculpt_paint::color::to_float(), ui_draw_but_IMAGE(), ui_tooltip_from_vfont(), use_bone_color(), widget_draw_node_link_socket(), widget_draw_submenu_tria(), wm_drop_operator_draw(), and wm_drop_redalert_draw().
Definition at line 429 of file math_color.cc.
References powf.
Referenced by BLI_init_srgb_conversion(), blender::compositor::colorbalance_lgg(), blender::compositor::KeyingScreenOperation::compute_marker_points(), image_buf_fill_checker_slice(), imb_save_openexr_half(), and TEST().
| MALWAYS_INLINE float srgb_to_linearrgb_approx | ( | float | c | ) |
Definition at line 651 of file math_color.cc.
References _bli_math_fastpow24().
Referenced by srgb_to_linearrgb_v3_v3().
Definition at line 669 of file math_color.cc.
References srgb_to_linearrgb_approx().
Referenced by FallbackTransform::applyRGB(), blo_do_versions_250(), blo_do_versions_280(), blender::ed::greasepencil::boundary_to_curves(), camera_view3d_reconstruction(), drop_color_invoke(), blender::io::obj::geom_add_vertex(), blender::ed::greasepencil::grease_pencil_primitive_invoke(), blender::ed::greasepencil::grease_pencil_vertex_paint_set_exec(), image_buf_fill_checker_slice(), IMB_buffer_byte_from_float(), IMB_buffer_float_from_float(), IMB_colormanagement_srgb_to_scene_linear_v3(), imbuf_byte_to_float_cb(), blender::ed::sculpt_paint::paint::image::PaintingKernel< ImageBuffer >::init_brush_color(), blender::ed::sculpt_paint::greasepencil::TintOperation::on_stroke_begin(), blender::ed::sculpt_paint::greasepencil::VertexPaintOperation::on_stroke_extended(), blender::ed::sculpt_paint::greasepencil::VertexReplaceOperation::on_stroke_extended(), blender::ed::sculpt_paint::image::ops::paint::ImagePaintMode::paint_bucket_fill(), paint_proj_stroke_ps(), blender::ed::sculpt_paint::greasepencil::PaintOperationExecutor::PaintOperationExecutor(), srgb_to_linearrgb_predivide_v4(), srgb_to_linearrgb_v4(), TEST(), blender::ed::sculpt_paint::color::to_float(), and ui_but_copy_color().
| void ycc_to_rgb | ( | float | y, |
| float | cb, | ||
| float | cr, | ||
| float * | r_r, | ||
| float * | r_g, | ||
| float * | r_b, | ||
| int | colorspace ) |
Definition at line 150 of file math_color.cc.
References b, BLI_assert_unreachable, BLI_YCC_ITU_BT601, BLI_YCC_ITU_BT709, and BLI_YCC_JFIF_0_255.
Referenced by imb_load_openexr(), TEST(), and blender::compositor::ConvertYCCToRGBOperation::update_memory_buffer_partial().
| void yuv_to_rgb | ( | float | y, |
| float | u, | ||
| float | v, | ||
| float * | r_r, | ||
| float * | r_g, | ||
| float * | r_b, | ||
| int | colorspace ) |
Definition at line 91 of file math_color.cc.
References b, BLI_assert, BLI_YUV_ITU_BT601, BLI_YUV_ITU_BT709, and v.
Referenced by draw_vectorscope_graticule(), TEST(), ui_draw_but_VECTORSCOPE(), and blender::compositor::ConvertYUVToRGBOperation::update_memory_buffer_partial().
| float BLI_color_from_srgb_table[256] |
Definition at line 781 of file math_color.cc.
Referenced by BLI_init_srgb_conversion(), blender::draw::AttributeConverter< ColorGeometry4b >::convert(), blender::draw::particle_pack_mcol(), and srgb_to_linearrgb_uchar4().
| ushort BLI_color_to_srgb_table[0x10000] |
Definition at line 782 of file math_color.cc.
Referenced by BLI_init_srgb_conversion(), and to_srgb_table_lookup().