Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
chromatic_adaptation.h File Reference
+ Include dependency graph for chromatic_adaptation.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Typedefs

typedef enum dt_adaptation_t dt_adaptation_t
 

Enumerations

enum  dt_adaptation_t {
  DT_ADAPTATION_LINEAR_BRADFORD = 0 ,
  DT_ADAPTATION_CAT16 = 1 ,
  DT_ADAPTATION_FULL_BRADFORD = 2 ,
  DT_ADAPTATION_XYZ = 3 ,
  DT_ADAPTATION_RGB = 4 ,
  DT_ADAPTATION_LAST
}
 

Functions

static __attribute__ ((always_inline)) dt_aligned_pixel_simd_t convert_XYZ_to_bradford_LMS(const dt_aligned_pixel_simd_t XYZ)
 
static void XYZ_D50_to_D65 (const dt_aligned_pixel_t XYZ_in, dt_aligned_pixel_t XYZ_out)
 
static void XYZ_D65_to_D50 (const dt_aligned_pixel_t XYZ_in, dt_aligned_pixel_t XYZ_out)
 
return vector dt_simd_set1 (valid ?(scaling+NORM_MIN) :NORM_MIN)
 
 switch (adaptation)
 
static void convert_D50_to_LMS (const dt_adaptation_t adaptation, dt_aligned_pixel_t D50)
 

Variables

const dt_colormatrix_t XYZ_to_Bradford_LMS
 
const dt_colormatrix_t Bradford_LMS_to_XYZ
 
static const dt_colormatrix_t XYZ_to_Bradford_LMS_transposed
 
static const dt_colormatrix_t Bradford_LMS_to_XYZ_transposed
 
const dt_colormatrix_t XYZ_to_CAT16_LMS
 
const dt_colormatrix_t CAT16_LMS_to_XYZ
 
static const dt_colormatrix_t XYZ_to_CAT16_LMS_transposed
 
static const dt_colormatrix_t CAT16_LMS_to_XYZ_transposed
 
static const dt_adaptation_t kind
 
const dt_colormatrix_t XYZ_D50_to_D65_Bradford
 
const dt_colormatrix_t XYZ_D65_to_D50_CAT16
 
const dt_colormatrix_t XYZ_D65_to_D50_Bradford
 
static const dt_colormatrix_t XYZ_D50_to_D65_CAT16_transposed
 
static const dt_colormatrix_t XYZ_D65_to_D50_CAT16_transposed
 
static const float scaling
 
static const dt_aligned_pixel_simd_t illuminant
 
static const dt_aligned_pixel_simd_t const dt_adaptation_t adaptation
 
static const dt_aligned_pixel_simd_t const dt_adaptation_t const float p
 

Typedef Documentation

◆ dt_adaptation_t

Enumeration Type Documentation

◆ dt_adaptation_t

Enumerator
DT_ADAPTATION_LINEAR_BRADFORD 
DT_ADAPTATION_CAT16 
DT_ADAPTATION_FULL_BRADFORD 
DT_ADAPTATION_XYZ 
DT_ADAPTATION_RGB 
DT_ADAPTATION_LAST 

Function Documentation

◆ __attribute__()

static __attribute__ ( (always_inline)  ) const
inlinestatic

◆ convert_D50_to_LMS()

static void convert_D50_to_LMS ( const dt_adaptation_t  adaptation,
dt_aligned_pixel_t  D50 
)
inlinestatic

◆ dt_simd_set1()

◆ switch()

◆ XYZ_D50_to_D65()

static void XYZ_D50_to_D65 ( const dt_aligned_pixel_t  XYZ_in,
dt_aligned_pixel_t  XYZ_out 
)
inlinestatic

◆ XYZ_D65_to_D50()

static void XYZ_D65_to_D50 ( const dt_aligned_pixel_t  XYZ_in,
dt_aligned_pixel_t  XYZ_out 
)
inlinestatic

Variable Documentation

◆ adaptation

const dt_aligned_pixel_simd_t const dt_adaptation_t adaptation

◆ Bradford_LMS_to_XYZ

const dt_colormatrix_t Bradford_LMS_to_XYZ
Initial value:
= { { 0.9870f, -0.1471f, 0.1600f, 0.f },
{ 0.4323f, 0.5184f, 0.0493f, 0.f },
{ -0.0085f, 0.0400f, 0.9685f, 0.f } }

Referenced by convert_bradford_LMS_to_XYZ().

◆ Bradford_LMS_to_XYZ_transposed

const dt_colormatrix_t Bradford_LMS_to_XYZ_transposed
static
Initial value:
= { { 0.9870f, 0.4323f, -0.0085f, 0.f },
{ -0.1471f, 0.5184f, 0.0400f, 0.f },
{ 0.1600f, 0.0493f, 0.9685f, 0.f } }

◆ CAT16_LMS_to_XYZ

const dt_colormatrix_t CAT16_LMS_to_XYZ
Initial value:
= { { 1.862068f, -1.011255f, 0.149187f, 0.f },
{ 0.38752f , 0.621447f, -0.008974f, 0.f },
{ -0.015841f, -0.034123f, 1.049964f, 0.f } }

Referenced by convert_CAT16_LMS_to_XYZ().

◆ CAT16_LMS_to_XYZ_transposed

const dt_colormatrix_t CAT16_LMS_to_XYZ_transposed
static
Initial value:
= { { 1.862068f, 0.38752f , -0.015841f, 0.f },
{ -1.011255f, 0.621447f, -0.034123f, 0.f },
{ 0.149187f, -0.008974f, 1.049964f, 0.f } }

◆ illuminant

◆ kind

◆ p

const dt_aligned_pixel_simd_t const dt_adaptation_t const float p
Initial value:
{
const float Y = in[1]

Referenced by __attribute__(), _add_node_from_picker(), _area_button_press_callback(), _area_button_press_callback(), _area_button_press_callback(), _area_draw_callback(), _area_draw_callback(), _area_draw_callback(), _area_key_press_callback(), _area_motion_notify_callback(), _area_motion_notify_callback(), _area_motion_notify_callback(), _area_scroll_callback(), _area_scrolled_callback(), _area_scrolled_callback(), _aspect_ratio_get(), _auto_levels(), _auto_set_exposure(), _auto_set_illuminant(), _blend_add(), _blend_divide(), _blend_divide_inverse(), _blend_multiply(), _blend_RGB_B(), _blend_RGB_G(), _blend_RGB_R(), _blend_subtract(), _blend_subtract_inverse(), _bottom_area_draw_callback(), _brush_cyclic_cursor(), _channel_tabs_switch_callback(), _circle_get_mask(), _colorchecker_rebuild_patch_list(), _colorchecker_update_sliders(), _colorin_format_cst(), _colorout_format_cst(), _commit_box(), _completion_find_prefix(), _compute_correction(), _control_import_job_cleanup(), _convert_GUI_colors(), _decode_text_filter(), _develop_ui_pipe_finished_callback(), _develop_ui_pipe_finished_callback(), _develop_ui_pipe_finished_callback(), _display_next_image(), _distort_paths(), _do_get_structure_lines(), _do_get_structure_quad(), _draw_background(), _draw_color_picker(), _draw_paths(), _draw_retrieve_lines_from_params(), _draw_save_lines_to_params(), _ellipse_point_close_to_path(), _encode_text_filter(), _enter_edit_mode(), _enter_edit_mode(), _event_aspect_presets_changed(), _event_commit_clicked(), _event_fit_both_button_clicked(), _event_fit_h_button_clicked(), _event_fit_v_button_clicked(), _event_key_swap(), _event_process_after_preview_callback(), _event_structure_auto_clicked(), _exposure_set_black(), _exposure_set_white(), _flip_h(), _flip_v(), _float_to_fract(), _float_to_fract(), _free_undo_data(), _get_profile(), _get_profiles(), _hit_paths(), _hm_node_has_predecessor(), _hm_topo_resolve_incompatible_constraints(), _interpolator_callback(), _iop_clipping_set_max_clip(), _iop_validate_params(), _iop_zonesystem_calculate_zonemap(), _is_identity(), _is_point_in_polygon(), _lib_collect_update_params(), _lib_history_change_text(), _lrop(), _move_point_internal(), _move_point_internal(), _move_point_internal(), _move_point_internal(), _panel_get_size_cb(), _panel_hide_cb(), _panel_show_cb(), _panel_visible_cb(), _params_to_gui(), _pathlist_import_cleanup(), _piwigo_album_changed(), _piwigo_api_create_new_album(), _piwigo_api_upload_photo(), _piwigo_refresh_albums(), _polygon_events_mouse_moved(), _print_job_cleanup(), _ratio_get_aspect(), _refine_with_detail_mask(), _reset_nodes(), _reset_parameters(), _resolve_input_profile(), _resynch_params(), _rgbcurve_show_hide_controls(), _rgblevels_show_hide_controls(), _sample_tablet_state_from_devices(), _scrolled(), _select_normalization_profile(), _set_input_profile_metadata(), _set_max_clip(), _set_printer(), _show_location(), _show_location(), _size_recent_tags_list(), _temp_array_from_params(), _temp_params_from_array(), _update_display_profile(), _update_RGB_colors(), _update_RGB_slider_stop(), _variable_get_value(), _view_map_add_pin(), _view_map_add_track(), _view_map_button_press_callback(), _view_map_changed_callback_delayed(), _view_map_drag_motion_callback(), _view_map_draw_single_image(), _view_map_get_imgs_at_pos(), _view_map_motion_notify_callback(), _view_map_scroll_event(), acquire_source_button_pressed(), acquire_target_button_pressed(), add_preset(), adjust_aabb(), adjust_aabb(), adjust_aabb(), alignment_callback(), ambient_light(), apply_auto_black(), apply_auto_black(), apply_auto_black(), apply_auto_black(), apply_auto_Dmax(), apply_auto_Dmin(), apply_auto_dynamic_range(), apply_auto_exposure(), apply_auto_grey(), apply_auto_grey(), apply_auto_grey(), apply_auto_offset(), apply_auto_WB_high(), apply_auto_WB_low(), apply_auto_white_point_source(), apply_auto_white_point_source(), apply_autocolor(), apply_autogrey(), apply_autoluma(), apply_autotune(), apply_autotune(), apply_autotune(), apply_gain_auto(), apply_gain_neutralize(), apply_gamma_auto(), apply_gamma_neutralize(), apply_homography(), apply_homography_scaling(), apply_lift_auto(), apply_lift_neutralize(), area_button_press(), area_button_press(), area_button_release(), area_draw(), area_leave_notify(), area_motion_notify(), area_motion_notify(), aspect_changed(), aspect_presets_changed(), auto_adjust_contrast_boost(), auto_adjust_exposure_boost(), auto_detect_WB(), autoscale_pressed(), backtransform_v2(), backtransform_Y0U0V0(), balance_callback(), black_point_source_callback(), black_point_target_callback(), blue_callback(), bpp(), bradford_adapt_D50(), build_gui_kernel(), build_pixel_kernel(), button_clicked(), button_pressed(), button_released(), calculate_clut(), camera_menu_select(), camera_set(), center_callback(), check_extension(), checker_button_press(), checker_draw(), checker_motion_notify(), cluster_preview_draw(), color_picker_apply(), colorpick_color_set(), colorpick_color_set(), colorpicker_callback(), commit_box(), commit_channels_gains(), commit_params(), commit_params(), commit_params(), commit_params(), commit_profile_callback(), compress_shadows_highlight_preset_set_exposure_params(), compute_curve_lut(), connect_button_press_release(), contrast_callback(), cropmode_callback(), declare_cat_on_pipe(), denoiseprofile_button_press(), denoiseprofile_draw(), denoiseprofile_motion_notify(), denoiseprofile_tab_switch(), dilate_shadows_highlight_preset_set_exposure_params(), distort_paths_raw_to_piece(), Dmin_picker_callback(), Dmin_picker_update(), do_crop(), do_fit(), do_rotate(), draw_box(), draw_f_boxes(), dt_bauhaus_combobox_from_params(), dt_bauhaus_slider_from_params(), dt_bauhaus_toggle_from_params(), dt_colorspaces_cleanup(), dt_colorspaces_cleanup_profile(), dt_colorspaces_get_output_profile(), dt_colorspaces_get_profile_name(), dt_colorspaces_get_work_profile(), dt_conf_init(), dt_control_datetime_job_cleanup(), dt_control_export_cleanup(), dt_control_gpx_apply_job_cleanup(), dt_control_image_enumerator_cleanup(), dt_develop_blendif_rgb_jzczhz_blend(), dt_dwt_first_scale_visible(), dt_dwt_free(), dt_dwt_init(), dt_film_import1_cleanup(), dt_get_paper(), dt_gpx_get_trkpts(), dt_gtkentry_build_completion_tooltip_text(), dt_image_import_job_cleanup(), dt_iop_basecurve_button_press(), dt_iop_basecurve_draw(), dt_iop_basecurve_motion_notify(), dt_iop_basecurve_sanity_check(), dt_iop_clip_and_zoom_demosaic_half_size_f(), dt_iop_clip_and_zoom_demosaic_passthrough_monochrome_f(), dt_iop_clip_and_zoom_mosaic_half_size_f(), dt_iop_colorcorrection_button_press(), dt_iop_colorcorrection_draw(), dt_iop_colorcorrection_key_press(), dt_iop_colorcorrection_motion_notify(), dt_iop_colorcorrection_scrolled(), dt_iop_colorzones_get_params(), dt_iop_default_init(), dt_iop_denoiseprofile_get_params(), dt_iop_filmic_rgb_compute_spline(), dt_iop_levels_area_draw(), dt_iop_levels_autoadjust_callback(), dt_iop_levels_motion_notify(), dt_iop_levels_scroll(), dt_iop_lowlight_get_params(), dt_iop_monochrome_button_press(), dt_iop_monochrome_draw(), dt_iop_monochrome_motion_notify(), dt_iop_monochrome_scrolled(), dt_iop_rawdenoise_get_params(), dt_iop_tonecurve_button_press(), dt_iop_tonecurve_draw(), dt_iop_tonecurve_draw(), dt_iop_tonecurve_draw(), dt_iop_tonecurve_draw(), dt_iop_tonecurve_draw(), dt_iop_tonecurve_key_press(), dt_iop_tonecurve_motion_notify(), dt_iop_tonecurve_sanity_check(), dt_iop_zonesystem_bar_button_press(), dt_iop_zonesystem_bar_draw(), dt_iop_zonesystem_bar_motion_notify(), dt_iop_zonesystem_bar_scrolled(), dt_iop_zonesystem_preview_draw(), dt_map_location_convert_polygons(), dt_map_location_get_polygons(), dt_points_cleanup(), dt_points_get_for(), dt_points_init(), dt_ui_panel_ancestor(), dt_ui_panel_get_size(), dt_ui_panel_show(), dt_ui_panel_visible(), dt_util_str_occurence(), dt_util_str_replace(), dt_vector_sin(), dt_version_major_minor(), dtgtk_cairo_paint_masks_drawn_and_parametric(), dtgtk_cairo_paint_masks_parametric(), dwt_decompose(), dwt_decompose_layer(), dwt_get_image_layer(), dwt_get_max_scale(), dwt_wavelet_decompose(), extra_callback(), extract_color_checker(), filepath_callback(), filmic_gui_sync_toe_shoulder(), filmic_v3_compute_geometry(), filmic_v3_compute_nodes_from_legacy(), filmic_v3_direct_to_legacy(), filmic_v3_legacy_to_direct(), finalize_store(), find_hovered(), flatten_nodes(), fontsel_callback(), frame_colorpick_color_set(), free_params(), gauss_make_triangular(), gauss_solve(), gauss_solve_triangular(), get_autoscale(), get_channels_factors(), get_channels_gains(), get_corner(), get_corner(), get_corner(), get_lang(), get_params(), get_params(), get_params(), global_progress_end(), global_saturation_callback(), green_callback(), grey_point_source_callback(), grey_point_target_callback(), gui_changed(), gui_focus(), gui_init(), gui_init(), gui_post_expose(), gui_reset(), gui_reset(), gui_update(), gui_update(), gui_update(), gui_update(), gui_update_from_coeffs(), has_defaults(), HSV_2_RGB(), hvflip_callback(), icuCaseFunc16(), icuCollationColl(), icuCollationDel(), icuLoadCollation(), icuRegexpDelete(), icuRegexpFunc(), illum_xy_callback(), illuminant_color_draw(), ilogit(), init_presets(), interpolate_paths(), interpolator_callback(), interpolator_callback(), interpolator_callback(), key_swap_callback(), keystone_type_changed(), keystone_type_populate(), latitude_stops_callback(), legacy_params(), lens_comboentry_aperture_update(), lens_comboentry_distance_update(), lens_comboentry_focal_update(), lens_menu_select(), lens_set(), levels(), LineSegmentDetection(), ll_angle(), logit(), lookup(), lookup_unbounded(), loop_switch(), lowlight_button_press(), lowlight_draw(), lowlight_motion_notify(), map_point_to_view(), mix_callback(), mode_callback(), modflags_changed(), modify_roi_in(), modify_roi_in(), modify_roi_out(), mouse_moved(), mouse_moved(), mul2temp(), mul2xyz(), mul_mat_vec_2(), nfa(), nlmeans_backtransform(), nlmeans_denoise(), nlmeans_precondition(), nmsfit(), node_alloc(), node_delete(), node_gc(), node_get(), node_insert_before(), node_next(), node_prev(), on_match_func(), on_match_select(), array_deleter< T >::operator()(), output_callback(), output_power_callback(), paper_exists(), path_delete(), path_length(), picker_scale(), populate_masks_context_menu(), position_h_changed(), position_v_changed(), precondition_v2(), precondition_Y0U0V0(), preserve_color_callback(), preset_tune_callback(), process(), process(), process(), process(), process_clusters(), process_internal(), process_nlmeans_cpu(), process_variance(), process_wavelets(), profile_callback(), profile_changed(), quickperm(), radius_callback(), rawdenoise_button_press(), rawdenoise_draw(), rawdenoise_motion_notify(), read_pfm(), read_ppm16(), read_ppm8(), red_callback(), reduce_region_radius(), refine(), refresh_watermarks(), region2rect(), reload_defaults(), reset_mix(), rt_add_shape(), rt_allow_create_form(), rt_colorpick_color_set_callback(), rt_compute_roi_in(), rt_copypaste_scale_callback(), rt_curr_scale_update(), rt_develop_ui_pipe_finished_callback(), rt_display_selected_fill_color(), rt_display_wavelet_scale_callback(), rt_extend_roi_in_for_clone(), rt_extend_roi_in_from_source_clones(), rt_get_index_from_formid(), rt_get_selected_shape_index(), rt_gslider_changed(), rt_menu_select_algorithm_callback(), rt_merge_from_scale_update(), rt_num_scales_update(), rt_paste_forms_from_scale(), rt_process_forms(), rt_resynch_params(), rt_scale_has_shapes(), rt_select_algorithm_callback(), rt_shape_selection_changed(), rt_show_forms_for_current_scale(), rt_show_hide_controls(), rt_update_wd_bar_labels(), rt_wdbar_draw(), rt_wdbar_motion_notify(), rt_wdbar_scrolled(), sanitize_latitude(), saturation_callback(), scrolled(), scrolled(), security_threshold_callback(), set_new_params_interactive(), set_params(), set_RGB_sliders(), show_guiding_controls(), sinf_fast(), slope_callback(), smooth_paths_linsys(), smoothing_callback(), sqlite3IcuInit(), store(), switch(), target_a_callback(), target_b_callback(), target_C_callback(), target_geometry_changed(), target_L_callback(), temp_tint_callback(), test_filmic_desaturate_v1(), test_get_pixel_norm(), test_linear_saturation(), test_log_tonemapping_v2(), test_pixel_rgb_norm_power(), testimg_gen_all_grey(), testimg_gen_grey_max_dr(), testimg_gen_grey_max_dr_neg(), testimg_gen_grey_space(), testimg_gen_grey_with_rgb_clipping(), testimg_gen_rgb_space(), testimg_gen_single_color_space(), testimg_gen_three_color_space(), testimg_print_by_pixel(), testimg_print_chan(), testimg_to_exp(), testimg_to_log(), text_callback(), tiling_callback(), toe_shoulder_callback(), toggle_stock_controls(), topological_sort(), transform(), unselect_all(), update_approx_cct(), update_curve_lut(), update_exposure_sliders(), update_illuminants(), update_xy_color(), watermark_callback(), WB_coeffs_to_illuminant_xy(), Wb_high_norm_callback(), WB_high_picker_callback(), WB_high_picker_update(), Wb_low_norm_callback(), WB_low_picker_callback(), WB_low_picker_update(), white_point_source_callback(), white_point_target_callback(), workicc_changed(), write_image(), and xFree().

◆ scaling

static const float scaling
Initial value:
{
const int valid = (scaling > NORM_MIN) && !isnan(scaling)
static const float scaling
Definition chromatic_adaptation.h:299
#define NORM_MIN
Definition math.h:35

Referenced by _change_scaling(), compute_lut_correction(), downscale_vector(), expose(), fast_eigf_surface_blur(), fast_surface_blur(), gui_post_expose(), and upscale_vector().

◆ XYZ_D50_to_D65_Bradford

const dt_colormatrix_t XYZ_D50_to_D65_Bradford
Initial value:
= { { 0.95547342f, -0.02309845f, 0.06325924f, 0.f },
{ -0.02836971f, 1.00999540f, 0.02104144f, 0.f },
{ 0.01231401f, -0.02050765f, 1.33036593f, 0.f } }

◆ XYZ_D50_to_D65_CAT16_transposed

const dt_colormatrix_t XYZ_D50_to_D65_CAT16_transposed
static
Initial value:
= { { 9.89466254e-01f, -5.40518733e-03f, -4.03920992e-04f, 0.f },
{ -4.00304626e-02f, 1.00666069e+00f, 1.50768030e-02f, 0.f },
{ 4.40530317e-02f, -1.75551955e-03f, 1.30210211e+00f, 0.f } }

Referenced by XYZ_D50_to_D65().

◆ XYZ_D65_to_D50_Bradford

const dt_colormatrix_t XYZ_D65_to_D50_Bradford
Initial value:
= { { 1.04792979f, 0.02294687f, -0.05019227f, 0.f },
{ 0.02962781f, 0.99043443f, -0.0170738f, 0.f },
{ -0.00924304f, 0.01505519f, 0.75187428f, 0.f } }

◆ XYZ_D65_to_D50_CAT16

const dt_colormatrix_t XYZ_D65_to_D50_CAT16
Initial value:
= { { 1.01085433e+00f, 4.07086103e-02f, -3.41445825e-02f, 0.f },
{ 5.42814201e-03f, 9.93581926e-01f, 1.15592039e-03f, 0.f },
{ 2.50722468e-04f, -1.14918759e-02f, 7.67964947e-01f, 0.f } }

Referenced by filmic_v4_prepare_matrices(), and process().

◆ XYZ_D65_to_D50_CAT16_transposed

const dt_colormatrix_t XYZ_D65_to_D50_CAT16_transposed
static
Initial value:
= { { 1.01085433e+00f, 5.42814201e-03f, 2.50722468e-04f, 0.f },
{ 4.07086103e-02f, 9.93581926e-01f, -1.14918759e-02f, 0.f },
{ -3.41445825e-02f, 1.15592039e-03f, 7.67964947e-01f, 0.f } }

Referenced by XYZ_D65_to_D50().

◆ XYZ_to_Bradford_LMS

const dt_colormatrix_t XYZ_to_Bradford_LMS
Initial value:
= { { 0.8951f, 0.2664f, -0.1614f, 0.f },
{ -0.7502f, 1.7135f, 0.0367f, 0.f },
{ 0.0389f, -0.0685f, 1.0296f, 0.f } }

Referenced by convert_XYZ_to_bradford_LMS().

◆ XYZ_to_Bradford_LMS_transposed

const dt_colormatrix_t XYZ_to_Bradford_LMS_transposed
static
Initial value:
= { { 0.8951f, -0.7502f, 0.0389f, 0.f },
{ 0.2664f, 1.7135f, -0.0685f, 0.f },
{ -0.1614f, 0.0367f, 1.0296f, 0.f } }

Referenced by __attribute__().

◆ XYZ_to_CAT16_LMS

const dt_colormatrix_t XYZ_to_CAT16_LMS
Initial value:
= { { 0.401288f, 0.650173f, -0.051461f, 0.f },
{ -0.250268f, 1.204414f, 0.045854f, 0.f },
{ -0.002079f, 0.048952f, 0.953127f, 0.f } }

Referenced by convert_XYZ_to_CAT16_LMS().

◆ XYZ_to_CAT16_LMS_transposed

const dt_colormatrix_t XYZ_to_CAT16_LMS_transposed
static
Initial value:
= { { 0.401288f, -0.250268f, -0.002079f, 0.f },
{ 0.650173f, 1.204414f, 0.048952f, 0.f },
{ -0.051461f, 0.045854f, 0.953127f, 0.f } }