![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "bauhaus/bauhaus.h"
#include "common/colorspaces_inline_conversions.h"
#include "common/chromatic_adaptation.h"
#include "common/darktable.h"
#include "common/bspline.h"
#include "common/dwt.h"
#include "common/image.h"
#include "common/iop_profile.h"
#include "common/opencl.h"
#include "control/control.h"
#include "develop/develop.h"
#include "develop/imageop_gui.h"
#include "develop/imageop_math.h"
#include "develop/noise_generator.h"
#include "develop/openmp_maths.h"
#include "develop/tiling.h"
#include "dtgtk/button.h"
#include "dtgtk/drawingarea.h"
#include "dtgtk/expander.h"
#include "dtgtk/paint.h"
#include "gui/color_picker_proxy.h"
#include "gui/gtk.h"
#include "gui/presets.h"
#include "iop/gaussian_elimination.h"
#include "iop/iop_api.h"
#include "develop/imageop.h"
#include "gui/draw.h"
#include <assert.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
Go to the source code of this file.
Data Structures | |
struct | dt_iop_filmic_rgb_spline_t |
struct | dt_iop_filmicrgb_params_t |
struct | dt_iop_filmicrgb_gui_button_data_t |
struct | dt_iop_filmicrgb_gui_data_t |
struct | dt_iop_filmicrgb_data_t |
struct | dt_iop_filmicrgb_global_data_t |
Macros | |
#define | INVERSE_SQRT_3 0.5773502691896258f |
#define | SAFETY_MARGIN 0.01f |
#define | DT_GUI_CURVE_EDITOR_INSET DT_PIXEL_APPLY_DPI(1) |
#define | MAX_NUM_SCALES 10 |
#define | CIE_Y_1931_to_CIE_Y_2006(x) (1.05785528f * (x)) |
#define | ORDER_4 5 |
#define | ORDER_3 4 |
#define | LOGBASE 20.f |
Functions | |
const char * | name () |
const char * | aliases () |
const char ** | description (struct dt_iop_module_t *self) |
int | default_group () |
int | flags () |
int | default_colorspace (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece) |
static gboolean | dt_iop_filmic_rgb_compute_spline (const dt_iop_filmicrgb_params_t *const p, struct dt_iop_filmic_rgb_spline_t *const spline) |
static void | convert_to_spline_v3 (dt_iop_filmicrgb_params_t *n) |
int | legacy_params (dt_iop_module_t *self, const void *const old_params, const int old_version, void *new_params, const int new_version) |
static float | pixel_rgb_norm_power (const dt_aligned_pixel_t pixel) |
static float | get_pixel_norm (const dt_aligned_pixel_t pixel, const dt_iop_filmicrgb_methods_type_t variant, const dt_iop_order_iccprofile_info_t *const work_profile) |
static float | log_tonemapping (const float x, const float grey, const float black, const float dynamic_range) |
static float | exp_tonemapping_v2 (const float x, const float grey, const float black, const float dynamic_range) |
static float | filmic_spline (const float x, const dt_aligned_pixel_t M1, const dt_aligned_pixel_t M2, const dt_aligned_pixel_t M3, const dt_aligned_pixel_t M4, const dt_aligned_pixel_t M5, const float latitude_min, const float latitude_max, const dt_iop_filmicrgb_curve_type_t type[2]) |
static float | filmic_desaturate_v1 (const float x, const float sigma_toe, const float sigma_shoulder, const float saturation) |
static float | filmic_desaturate_v2 (const float x, const float sigma_toe, const float sigma_shoulder, const float saturation) |
static float | linear_saturation (const float x, const float luminance, const float saturation) |
static gint | mask_clipped_pixels (const float *const restrict in, float *const restrict mask, const float normalize, const float feathering, const size_t width, const size_t height, const size_t ch) |
static void | inpaint_noise (const float *const in, const float *const mask, float *const inpainted, const float noise_level, const float threshold, const dt_noise_distribution_t noise_distribution, const size_t width, const size_t height) |
static void | wavelets_reconstruct_RGB (const float *const restrict HF, const float *const restrict LF, const float *const restrict texture, const float *const restrict mask, float *const restrict reconstructed, const size_t width, const size_t height, const size_t ch, const float gamma, const float gamma_comp, const float beta, const float beta_comp, const float delta, const size_t s, const size_t scales) |
static void | wavelets_reconstruct_ratios (const float *const restrict HF, const float *const restrict LF, const float *const restrict texture, const float *const restrict mask, float *const restrict reconstructed, const size_t width, const size_t height, const size_t ch, const float gamma, const float gamma_comp, const float beta, const float beta_comp, const float delta, const size_t s, const size_t scales) |
static void | init_reconstruct (const float *const restrict in, const float *const restrict mask, float *const restrict reconstructed, const size_t width, const size_t height) |
static void | wavelets_detail_level (const float *const restrict detail, const float *const restrict LF, float *const restrict HF, float *const restrict texture, const size_t width, const size_t height, const size_t ch) |
static int | get_scales (const dt_iop_roi_t *roi_in, const dt_dev_pixelpipe_iop_t *const piece) |
static gint | reconstruct_highlights (const float *const restrict in, const float *const restrict mask, float *const restrict reconstructed, const dt_iop_filmicrgb_reconstruction_type_t variant, const size_t ch, const dt_iop_filmicrgb_data_t *const data, dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out) |
static void | filmic_split_v1 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const size_t width, const size_t height) |
static void | filmic_split_v2_v3 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const size_t width, const size_t height) |
static void | filmic_chroma_v1 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const int variant, const size_t width, const size_t height) |
static void | filmic_chroma_v2_v3 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const int variant, const size_t width, const size_t height, const size_t ch, const dt_iop_filmicrgb_colorscience_type_t colorscience_version) |
static void | pipe_RGB_to_Ych (const dt_aligned_pixel_t in, const dt_colormatrix_t matrix, dt_aligned_pixel_t out) |
static void | Ych_to_pipe_RGB (const dt_aligned_pixel_t in, const dt_colormatrix_t matrix, dt_aligned_pixel_t out) |
static void | filmic_desaturate_v4 (const dt_aligned_pixel_t Ych_original, dt_aligned_pixel_t Ych_final, const float saturation) |
static float | clip_chroma_white_raw (const float coeffs[3], const float target_white, const float Y, const float cos_h, const float sin_h) |
static float | clip_chroma_white (const float coeffs[3], const float target_white, const float Y, const float cos_h, const float sin_h) |
static float | clip_chroma_black (const float coeffs[3], const float cos_h, const float sin_h) |
static float | clip_chroma (const dt_colormatrix_t matrix_out, const float target_white, const float Y, const float cos_h, const float sin_h, const float chroma) |
static void | gamut_check_RGB (const dt_colormatrix_t matrix_in, const dt_colormatrix_t matrix_out, const float display_black, const float display_white, const dt_aligned_pixel_t Ych_in, dt_aligned_pixel_t RGB_out) |
static void | gamut_mapping (dt_aligned_pixel_t Ych_final, dt_aligned_pixel_t Ych_original, dt_aligned_pixel_t pix_out, const dt_colormatrix_t input_matrix, const dt_colormatrix_t output_matrix, const dt_colormatrix_t export_input_matrix, const dt_colormatrix_t export_output_matrix, const float display_black, const float display_white, const float saturation, const int use_output_profile) |
static int | filmic_v4_prepare_matrices (dt_colormatrix_t input_matrix, dt_colormatrix_t output_matrix, dt_colormatrix_t export_input_matrix, dt_colormatrix_t export_output_matrix, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_order_iccprofile_info_t *const export_profile) |
static void | norm_tone_mapping_v4 (const dt_aligned_pixel_t pix_in, dt_aligned_pixel_t pix_out, const dt_iop_filmicrgb_methods_type_t type, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const float norm_min, const float norm_max, const float display_black, const float display_white) |
static void | RGB_tone_mapping_v4 (const dt_aligned_pixel_t pix_in, dt_aligned_pixel_t pix_out, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const float display_black, const float display_white) |
static void | filmic_chroma_v4 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_order_iccprofile_info_t *const export_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const int variant, const size_t width, const size_t height, const size_t ch, const dt_iop_filmicrgb_colorscience_type_t colorscience_version, const float display_black, const float display_white) |
static void | filmic_split_v4 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_order_iccprofile_info_t *const export_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const int variant, const size_t width, const size_t height, const size_t ch, const dt_iop_filmicrgb_colorscience_type_t colorscience_version, const float display_black, const float display_white) |
static void | filmic_v5 (const float *const restrict in, float *const restrict out, const dt_iop_order_iccprofile_info_t *const work_profile, const dt_iop_order_iccprofile_info_t *const export_profile, const dt_iop_filmicrgb_data_t *const data, const dt_iop_filmic_rgb_spline_t spline, const size_t width, const size_t height, const size_t ch, const float display_black, const float display_white) |
static void | display_mask (const float *const restrict mask, float *const restrict out, const size_t width, const size_t height) |
static void | compute_ratios (const float *const restrict in, float *const restrict norms, float *const restrict ratios, const dt_iop_order_iccprofile_info_t *const work_profile, const int variant, const size_t width, const size_t height) |
static void | restore_ratios (float *const restrict ratios, const float *const restrict norms, const size_t width, const size_t height) |
void | tiling_callback (struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *roi_in, const dt_iop_roi_t *roi_out, struct dt_develop_tiling_t *tiling) |
void | process (dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const restrict ivoid, void *const restrict ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out) |
static void | apply_auto_grey (dt_iop_module_t *self) |
static void | apply_auto_black (dt_iop_module_t *self) |
static void | apply_auto_white_point_source (dt_iop_module_t *self) |
static void | apply_autotune (dt_iop_module_t *self) |
void | color_picker_apply (dt_iop_module_t *self, GtkWidget *picker, dt_dev_pixelpipe_iop_t *piece) |
static void | show_mask_callback (GtkToggleButton *button, GdkEventButton *event, gpointer user_data) |
void | commit_params (dt_iop_module_t *self, dt_iop_params_t *p1, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece) |
void | gui_focus (struct dt_iop_module_t *self, gboolean in) |
void | init_pipe (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece) |
void | cleanup_pipe (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece) |
void | gui_update (dt_iop_module_t *self) |
void | reload_defaults (dt_iop_module_t *module) |
void | init_global (dt_iop_module_so_t *module) |
void | cleanup_global (dt_iop_module_so_t *module) |
void | gui_reset (dt_iop_module_t *self) |
static void | dt_cairo_draw_arrow (cairo_t *cr, double origin_x, double origin_y, double destination_x, double destination_y, gboolean show_head) |
void | filmic_gui_draw_icon (cairo_t *cr, struct dt_iop_filmicrgb_gui_button_data_t *button, struct dt_iop_filmicrgb_gui_data_t *g) |
static gboolean | dt_iop_tonecurve_draw (GtkWidget *widget, cairo_t *crf, gpointer user_data) |
static gboolean | area_button_press (GtkWidget *widget, GdkEventButton *event, gpointer user_data) |
static gboolean | area_enter_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data) |
static gboolean | area_leave_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data) |
static gboolean | area_motion_notify (GtkWidget *widget, GdkEventMotion *event, gpointer user_data) |
static gboolean | area_scroll_callback (GtkWidget *widget, GdkEventScroll *event, gpointer user_data) |
void | gui_init (dt_iop_module_t *self) |
void | gui_changed (dt_iop_module_t *self, GtkWidget *w, void *previous) |
#define CIE_Y_1931_to_CIE_Y_2006 | ( | x | ) | (1.05785528f * (x)) |
#define DT_GUI_CURVE_EDITOR_INSET DT_PIXEL_APPLY_DPI(1) |
#define INVERSE_SQRT_3 0.5773502691896258f |
#define LOGBASE 20.f |
#define MAX_NUM_SCALES 10 |
#define ORDER_3 4 |
#define ORDER_4 5 |
#define SAFETY_MARGIN 0.01f |
typedef enum dt_iop_filmic_rgb_gui_mode_t dt_iop_filmic_rgb_gui_mode_t |
typedef struct dt_iop_filmic_rgb_spline_t dt_iop_filmic_rgb_spline_t |
typedef struct dt_iop_filmicrgb_data_t dt_iop_filmicrgb_data_t |
typedef struct dt_iop_filmicrgb_global_data_t dt_iop_filmicrgb_global_data_t |
typedef struct dt_iop_filmicrgb_gui_data_t dt_iop_filmicrgb_gui_data_t |
DOCUMENTATION
This code ports :
The ACES log implementation is taken from the profile_gamma.c IOP where it works in camera RGB space. Here, it works on an arbitrary RGB space. ProPhotoRGB has been chosen for its wide gamut coverage and for conveniency because it's already in darktable's libs. Any other RGB working space could work. This chouice could (should) also be exposed to the user.
The filmic curves are tonecurves intended to simulate the luminance transfer function of film with "S" curves. These could be reproduced in the tonecurve.c IOP, however what we offer here is a parametric interface useful to remap accurately and promptly the middle grey to any arbitrary value chosen accordingly to the destination space.
The combined use of both define a modern way to deal with large dynamic range photographs by remapping the values with a comprehensive interface avoiding many of the back and forth adjustments darktable is prone to enforce. Note : we use finite-math-only and fast-math because divisions by zero are manually avoided in the code fp-contract=fast enables hardware-accelerated Fused Multiply-Add the rest is loop reorganization and vectorization optimization
typedef struct dt_iop_filmicrgb_params_t dt_iop_filmicrgb_params_t |
DOCUMENTATION
This code ports :
The ACES log implementation is taken from the profile_gamma.c IOP where it works in camera RGB space. Here, it works on an arbitrary RGB space. ProPhotoRGB has been chosen for its wide gamut coverage and for conveniency because it's already in darktable's libs. Any other RGB working space could work. This chouice could (should) also be exposed to the user.
The filmic curves are tonecurves intended to simulate the luminance transfer function of film with "S" curves. These could be reproduced in the tonecurve.c IOP, however what we offer here is a parametric interface useful to remap accurately and promptly the middle grey to any arbitrary value chosen accordingly to the destination space.
The combined use of both define a modern way to deal with large dynamic range photographs by remapping the values with a comprehensive interface avoiding many of the back and forth adjustments darktable is prone to enforce. Note : we use finite-math-only and fast-math because divisions by zero are manually avoided in the code fp-contract=fast enables hardware-accelerated Fused Multiply-Add the rest is loop reorganization and vectorization optimization
Enumerator | |
---|---|
DT_FILMIC_METHOD_NONE | |
DT_FILMIC_METHOD_MAX_RGB | |
DT_FILMIC_METHOD_LUMINANCE | |
DT_FILMIC_METHOD_POWER_NORM | |
DT_FILMIC_METHOD_EUCLIDEAN_NORM_V2 | |
DT_FILMIC_METHOD_EUCLIDEAN_NORM_V1 |
const char * aliases | ( | ) |
|
static |
References darktable, dt_iop_module_t::dev, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, DT_FILMIC_METHOD_MAX_RGB, dt_ioppr_get_iop_work_profile_info(), get_pixel_norm(), darktable_t::gui, dt_iop_module_t::gui_data, dt_develop_t::iop, dt_iop_module_t::params, dt_iop_module_t::picked_color_min, dt_gui_gtk_t::reset, TRUE, and dt_iop_module_t::widget.
Referenced by color_picker_apply().
|
static |
References darktable, dt_iop_module_t::dev, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, dt_ioppr_get_iop_work_profile_info(), get_pixel_norm(), darktable_t::gui, dt_iop_module_t::gui_data, dt_develop_t::iop, dt_iop_module_t::params, dt_iop_module_t::picked_color, dt_gui_gtk_t::reset, TRUE, and dt_iop_module_t::widget.
Referenced by color_picker_apply().
|
static |
References darktable, dt_iop_module_t::dev, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, DT_FILMIC_METHOD_MAX_RGB, dt_ioppr_get_iop_work_profile_info(), get_pixel_norm(), darktable_t::gui, dt_iop_module_t::gui_data, dt_develop_t::iop, dt_iop_module_t::params, dt_iop_module_t::picked_color_max, dt_gui_gtk_t::reset, TRUE, and dt_iop_module_t::widget.
Referenced by color_picker_apply().
|
static |
References darktable, dt_iop_module_t::dev, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, DT_FILMIC_METHOD_MAX_RGB, dt_ioppr_get_iop_work_profile_info(), get_pixel_norm(), darktable_t::gui, dt_iop_module_t::gui_data, dt_develop_t::iop, dt_iop_module_t::params, dt_iop_module_t::picked_color, dt_iop_module_t::picked_color_max, dt_iop_module_t::picked_color_min, dt_gui_gtk_t::reset, TRUE, and dt_iop_module_t::widget.
Referenced by color_picker_apply().
|
static |
|
static |
References darktable, dt_iop_module_t::enabled, darktable_t::gui, dt_iop_module_t::gui_data, dt_gui_gtk_t::reset, and TRUE.
Referenced by gui_init().
|
static |
References darktable, dt_iop_module_t::enabled, FALSE, darktable_t::gui, dt_iop_module_t::gui_data, dt_gui_gtk_t::reset, and TRUE.
Referenced by gui_init().
|
static |
References darktable, DT_FILMIC_GUI_BUTTON_LABELS, DT_FILMIC_GUI_BUTTON_LAST, DT_FILMIC_GUI_BUTTON_TYPE, FALSE, darktable_t::gui, dt_iop_module_t::gui_data, dt_gui_gtk_t::reset, and TRUE.
Referenced by gui_init().
|
static |
References dt_conf_get_int(), dt_conf_set_int(), dt_gui_get_scroll_unit_deltas(), dt_modifier_is(), dtgtk_drawing_area_set_aspect_ratio(), FALSE, and TRUE.
Referenced by gui_init().
void cleanup_global | ( | dt_iop_module_so_t * | module | ) |
References dt_iop_module_so_t::data, dt_opencl_free_kernel(), dt_iop_filmicrgb_global_data_t::kernel_filmic_bspline_horizontal, dt_iop_filmicrgb_global_data_t::kernel_filmic_bspline_vertical, dt_iop_filmicrgb_global_data_t::kernel_filmic_compute_ratios, dt_iop_filmicrgb_global_data_t::kernel_filmic_init_reconstruct, dt_iop_filmicrgb_global_data_t::kernel_filmic_inpaint_noise, dt_iop_filmicrgb_global_data_t::kernel_filmic_mask, dt_iop_filmicrgb_global_data_t::kernel_filmic_restore_ratios, dt_iop_filmicrgb_global_data_t::kernel_filmic_rgb_chroma, dt_iop_filmicrgb_global_data_t::kernel_filmic_rgb_split, dt_iop_filmicrgb_global_data_t::kernel_filmic_show_mask, dt_iop_filmicrgb_global_data_t::kernel_filmic_wavelets_detail, and dt_iop_filmicrgb_global_data_t::kernel_filmic_wavelets_reconstruct.
void cleanup_pipe | ( | dt_iop_module_t * | self, |
dt_dev_pixelpipe_t * | pipe, | ||
dt_dev_pixelpipe_iop_t * | piece | ||
) |
References dt_dev_pixelpipe_iop_t::data, and dt_free_align.
|
inlinestatic |
References clip_chroma_black(), clip_chroma_white(), and MIN.
Referenced by gamut_check_RGB().
|
inlinestatic |
Referenced by clip_chroma().
|
inlinestatic |
References CIE_Y_1931_to_CIE_Y_2006, clip_chroma_white_raw(), eps, and MAX.
Referenced by clip_chroma().
|
inlinestatic |
Referenced by clip_chroma_white().
void color_picker_apply | ( | dt_iop_module_t * | self, |
GtkWidget * | picker, | ||
dt_dev_pixelpipe_iop_t * | piece | ||
) |
void commit_params | ( | dt_iop_module_t * | self, |
dt_iop_params_t * | p1, | ||
dt_dev_pixelpipe_t * | pipe, | ||
dt_dev_pixelpipe_iop_t * | piece | ||
) |
References dt_iop_filmicrgb_data_t::black_source, dt_iop_filmicrgb_data_t::contrast, dt_dev_pixelpipe_iop_t::data, DT_FILMIC_COLORSCIENCE_V4, DT_FILMIC_SPLINE_VERSION_V3, dt_iop_filmic_rgb_compute_spline(), dt_iop_filmicrgb_data_t::dynamic_range, dt_iop_filmicrgb_data_t::grey_source, dt_iop_filmicrgb_data_t::high_quality_reconstruction, dt_iop_filmicrgb_data_t::noise_distribution, dt_iop_filmicrgb_data_t::noise_level, dt_iop_filmicrgb_data_t::normalize, dt_iop_filmicrgb_data_t::output_power, dt_iop_filmicrgb_data_t::preserve_color, dt_iop_filmicrgb_data_t::reconstruct_bloom_vs_details, dt_iop_filmicrgb_data_t::reconstruct_feather, dt_iop_filmicrgb_data_t::reconstruct_grey_vs_color, dt_iop_filmicrgb_data_t::reconstruct_structure_vs_texture, dt_iop_filmicrgb_data_t::reconstruct_threshold, dt_iop_filmicrgb_data_t::saturation, dt_iop_filmicrgb_data_t::sigma_shoulder, dt_iop_filmicrgb_data_t::sigma_toe, dt_iop_filmicrgb_data_t::spline_version, and dt_iop_filmicrgb_data_t::version.
|
inlinestatic |
References for_each_channel, get_pixel_norm(), height, NORM_MIN, and width.
Referenced by process().
|
inlinestatic |
References dt_iop_filmicrgb_params_t::balance, dt_iop_filmicrgb_params_t::black_point_source, dt_iop_filmicrgb_params_t::black_point_target, dt_iop_filmicrgb_params_t::contrast, DT_FILMIC_SPLINE_VERSION_V1, DT_FILMIC_SPLINE_VERSION_V3, dt_iop_filmic_rgb_compute_spline(), dt_iop_filmicrgb_params_t::latitude, dt_iop_filmicrgb_params_t::output_power, SAFETY_MARGIN, dt_iop_filmicrgb_params_t::spline_version, dt_iop_filmicrgb_params_t::white_point_source, dt_iop_filmicrgb_params_t::white_point_target, dt_iop_filmic_rgb_spline_t::x, and dt_iop_filmic_rgb_spline_t::y.
Referenced by legacy_params().
int default_colorspace | ( | dt_iop_module_t * | self, |
dt_dev_pixelpipe_t * | pipe, | ||
dt_dev_pixelpipe_iop_t * | piece | ||
) |
References IOP_CS_RGB.
int default_group | ( | ) |
References IOP_GROUP_TONES.
const char ** description | ( | struct dt_iop_module_t * | self | ) |
References dt_iop_set_description().
|
inlinestatic |
References for_each_channel, height, and width.
Referenced by process().
|
inlinestatic |
References DT_PIXEL_APPLY_DPI, and M_PI.
Referenced by dt_iop_tonecurve_draw().
|
inlinestatic |
Now we have 3 segments :
BUT : in case some nodes overlap, we need to remove them to avoid degenerating of the curve
For background and details, see : https://eng.aurelienpierre.com/2018/11/30/filmic-darktable-and-the-quest-of-the-hdr-tone-mapping/#filmic_s_curve
References DT_FILMIC_CURVE_POLY_3, DT_FILMIC_CURVE_POLY_4, DT_FILMIC_SPLINE_VERSION_V1, DT_FILMIC_SPLINE_VERSION_V3, FALSE, gauss_solve(), dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, ORDER_3, ORDER_4, SAFETY_MARGIN, sqf(), dt_iop_filmic_rgb_spline_t::type, dt_iop_filmic_rgb_spline_t::x, and dt_iop_filmic_rgb_spline_t::y.
Referenced by commit_params(), convert_to_spline_v3(), and dt_iop_tonecurve_draw().
|
static |
References darktable_t::bauhaus, clamp_simd(), darktable, dt_gui_gtk_t::dpi, dt_cairo_draw_arrow(), dt_cairo_image_surface_create(), dt_draw_grid(), dt_draw_loglog_grid(), DT_FILMIC_COLORSCIENCE_V1, DT_FILMIC_COLORSCIENCE_V2, DT_FILMIC_COLORSCIENCE_V3, DT_FILMIC_GUI_BASECURVE, DT_FILMIC_GUI_BASECURVE_LOG, DT_FILMIC_GUI_BUTTON_LAST, DT_FILMIC_GUI_LOOK, DT_FILMIC_GUI_RANGES, dt_iop_filmic_rgb_compute_spline(), dt_log_scale_axis(), DT_PIXEL_APPLY_DPI, dtgtk_cairo_paint_refresh(), dtgtk_cairo_paint_text_label(), E, exp_tonemapping_v2(), FALSE, filmic_desaturate_v1(), filmic_desaturate_v2(), filmic_gui_draw_icon(), filmic_spline(), dt_bauhaus_t::graph_bg, dt_bauhaus_t::graph_border, dt_bauhaus_t::graph_fg, darktable_t::gui, dt_iop_module_t::gui_data, INNER_PADDING, log_tonemapping(), LOGBASE, M_PI, NORM_MIN, dt_bauhaus_t::pango_font_desc, dt_iop_module_t::params, dt_bauhaus_t::quad_width, SAFETY_MARGIN, set_color(), and TRUE.
Referenced by gui_init().
|
inlinestatic |
Referenced by dt_iop_tonecurve_draw(), filmic_chroma_v4(), and filmic_v5().
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, CLAMPF, dt_camera_rgb_luminance(), dt_ioppr_get_rgb_matrix_luminance(), dt_iop_filmicrgb_data_t::dynamic_range, filmic_desaturate_v1(), filmic_spline(), for_each_channel, get_pixel_norm(), dt_iop_filmicrgb_data_t::grey_source, height, dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, linear_saturation(), log_tonemapping(), dt_iop_order_iccprofile_info_t::lut_in, dt_iop_order_iccprofile_info_t::lutsize, dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, dt_iop_order_iccprofile_info_t::matrix_in, dt_iop_order_iccprofile_info_t::nonlinearlut, NORM_MIN, dt_iop_filmicrgb_data_t::output_power, dt_iop_filmicrgb_data_t::saturation, dt_iop_filmicrgb_data_t::sigma_shoulder, dt_iop_filmicrgb_data_t::sigma_toe, dt_iop_filmic_rgb_spline_t::type, width, and dt_iop_filmic_rgb_spline_t::y.
Referenced by process().
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, CLAMPF, DT_FILMIC_COLORSCIENCE_V3, dt_iop_filmicrgb_data_t::dynamic_range, filmic_desaturate_v2(), filmic_spline(), for_each_channel, get_pixel_norm(), dt_iop_filmicrgb_data_t::grey_source, height, dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, log_tonemapping(), dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, NORM_MIN, dt_iop_filmicrgb_data_t::output_power, dt_iop_filmicrgb_data_t::saturation, dt_iop_filmicrgb_data_t::sigma_shoulder, dt_iop_filmicrgb_data_t::sigma_toe, dt_iop_filmic_rgb_spline_t::type, width, and dt_iop_filmic_rgb_spline_t::y.
Referenced by process().
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, dt_iop_filmicrgb_data_t::dynamic_range, exp_tonemapping_v2(), filmic_v4_prepare_matrices(), gamut_mapping(), dt_iop_filmicrgb_data_t::grey_source, height, norm_tone_mapping_v4(), pipe_RGB_to_Ych(), dt_iop_filmicrgb_data_t::saturation, and width.
Referenced by process().
|
inlinestatic |
References clamp_simd().
Referenced by dt_iop_tonecurve_draw(), filmic_chroma_v1(), filmic_split_v1(), and test_filmic_desaturate_v1().
|
inlinestatic |
Referenced by dt_iop_tonecurve_draw(), filmic_chroma_v2_v3(), and filmic_split_v2_v3().
|
inlinestatic |
Referenced by gamut_mapping().
void filmic_gui_draw_icon | ( | cairo_t * | cr, |
struct dt_iop_filmicrgb_gui_button_data_t * | button, | ||
struct dt_iop_filmicrgb_gui_data_t * | g | ||
) |
References darktable_t::bauhaus, darktable, DT_PIXEL_APPLY_DPI, dt_bauhaus_t::graph_fg, dt_iop_filmicrgb_gui_button_data_t::h, dt_iop_filmicrgb_gui_button_data_t::icon, dt_iop_filmicrgb_gui_button_data_t::left, dt_iop_filmicrgb_gui_button_data_t::mouse_hover, dt_iop_filmicrgb_gui_button_data_t::top, and dt_iop_filmicrgb_gui_button_data_t::w.
Referenced by dt_iop_tonecurve_draw().
|
inlinestatic |
References DT_FILMIC_CURVE_POLY_3, DT_FILMIC_CURVE_POLY_4, and type.
Referenced by dt_iop_tonecurve_draw(), filmic_chroma_v1(), filmic_chroma_v2_v3(), filmic_split_v1(), filmic_split_v2_v3(), norm_tone_mapping_v4(), and RGB_tone_mapping_v4().
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, CLAMPF, dt_camera_rgb_luminance(), dt_ioppr_get_rgb_matrix_luminance(), dt_iop_filmicrgb_data_t::dynamic_range, filmic_desaturate_v1(), filmic_spline(), dt_iop_filmicrgb_data_t::grey_source, height, dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, linear_saturation(), log_tonemapping(), dt_iop_order_iccprofile_info_t::lut_in, dt_iop_order_iccprofile_info_t::lutsize, dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, dt_iop_order_iccprofile_info_t::matrix_in, dt_iop_order_iccprofile_info_t::nonlinearlut, NORM_MIN, dt_iop_filmicrgb_data_t::output_power, dt_iop_filmicrgb_data_t::saturation, dt_iop_filmicrgb_data_t::sigma_shoulder, dt_iop_filmicrgb_data_t::sigma_toe, dt_iop_filmic_rgb_spline_t::type, width, and dt_iop_filmic_rgb_spline_t::y.
Referenced by process().
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, CLAMPF, dt_camera_rgb_luminance(), dt_ioppr_get_rgb_matrix_luminance(), dt_iop_filmicrgb_data_t::dynamic_range, filmic_desaturate_v2(), filmic_spline(), dt_iop_filmicrgb_data_t::grey_source, height, dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, linear_saturation(), log_tonemapping(), dt_iop_order_iccprofile_info_t::lut_in, dt_iop_order_iccprofile_info_t::lutsize, dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, dt_iop_order_iccprofile_info_t::matrix_in, dt_iop_order_iccprofile_info_t::nonlinearlut, NORM_MIN, dt_iop_filmicrgb_data_t::output_power, dt_iop_filmicrgb_data_t::saturation, dt_iop_filmicrgb_data_t::sigma_shoulder, dt_iop_filmicrgb_data_t::sigma_toe, dt_iop_filmic_rgb_spline_t::type, width, and dt_iop_filmic_rgb_spline_t::y.
Referenced by process().
|
inlinestatic |
References filmic_v4_prepare_matrices(), gamut_mapping(), height, pipe_RGB_to_Ych(), RGB_tone_mapping_v4(), dt_iop_filmicrgb_data_t::saturation, and width.
Referenced by process().
|
static |
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, DT_FILMIC_METHOD_MAX_RGB, dt_iop_filmicrgb_data_t::dynamic_range, exp_tonemapping_v2(), filmic_v4_prepare_matrices(), for_each_channel, gamut_mapping(), dt_iop_filmicrgb_data_t::grey_source, height, norm_tone_mapping_v4(), pipe_RGB_to_Ych(), RGB_tone_mapping_v4(), dt_iop_filmicrgb_data_t::saturation, and width.
Referenced by process().
int flags | ( | ) |
References IOP_FLAGS_ALLOW_TILING, IOP_FLAGS_INCLUDE_IN_STYLES, and IOP_FLAGS_SUPPORTS_BLENDING.
|
inlinestatic |
References CIE_Y_1931_to_CIE_Y_2006, clip_chroma(), for_each_channel, MAX, MIN, pipe_RGB_to_Ych(), and Ych_to_pipe_RGB().
Referenced by gamut_mapping().
|
inlinestatic |
References CIE_Y_1931_to_CIE_Y_2006, dot_product(), filmic_desaturate_v4(), gamut_check_RGB(), and gamut_check_Yrg().
Referenced by filmic_chroma_v4(), filmic_split_v4(), and filmic_v5().
|
inlinestatic |
References dt_camera_rgb_luminance(), DT_FILMIC_METHOD_EUCLIDEAN_NORM_V1, DT_FILMIC_METHOD_EUCLIDEAN_NORM_V2, DT_FILMIC_METHOD_LUMINANCE, DT_FILMIC_METHOD_MAX_RGB, DT_FILMIC_METHOD_POWER_NORM, dt_ioppr_get_rgb_matrix_luminance(), INVERSE_SQRT_3, dt_iop_order_iccprofile_info_t::lut_in, dt_iop_order_iccprofile_info_t::lutsize, dt_iop_order_iccprofile_info_t::matrix_in, dt_iop_order_iccprofile_info_t::nonlinearlut, pixel_rgb_norm_power(), and sqf().
Referenced by apply_auto_black(), apply_auto_grey(), apply_auto_white_point_source(), apply_autotune(), compute_ratios(), filmic_chroma_v1(), filmic_chroma_v2_v3(), norm_tone_mapping_v4(), and test_get_pixel_norm().
|
static |
References BSPLINE_FSIZE, dt_dev_pixelpipe_iop_t::buf_in, dt_iop_roi_t::height, MAX, MAX_NUM_SCALES, dt_iop_roi_t::scale, size, and dt_iop_roi_t::width.
Referenced by reconstruct_highlights(), and tiling_callback().
void gui_changed | ( | dt_iop_module_t * | self, |
GtkWidget * | w, | ||
void * | previous | ||
) |
References darktable, dt_bauhaus_slider_set(), dt_bauhaus_widget_set_label(), DT_FILMIC_COLORSCIENCE_V1, DT_FILMIC_COLORSCIENCE_V2, DT_FILMIC_COLORSCIENCE_V3, DT_FILMIC_COLORSCIENCE_V4, DT_FILMIC_COLORSCIENCE_V5, FALSE, darktable_t::gui, dt_iop_module_t::gui_data, dt_iop_module_t::params, dt_gui_gtk_t::reset, and TRUE.
Referenced by gui_update().
void gui_focus | ( | struct dt_iop_module_t * | self, |
gboolean | in | ||
) |
References dt_iop_module_t::dev, dt_dev_invalidate, dt_dev_refresh_ui_images, FALSE, and dt_iop_module_t::gui_data.
void gui_init | ( | dt_iop_module_t * | self | ) |
References area_button_press(), area_enter_notify(), area_leave_notify(), area_motion_notify(), area_scroll_callback(), darktable, dt_bauhaus_combobox_from_params(), dt_bauhaus_slider_from_params(), dt_bauhaus_slider_set_digits(), dt_bauhaus_slider_set_format(), dt_bauhaus_slider_set_soft_max(), dt_bauhaus_slider_set_soft_range(), DT_BAUHAUS_SPACE, dt_bauhaus_toggle_from_params(), DT_COLOR_PICKER_AREA, dt_color_picker_new(), dt_conf_get_int(), DT_FILMIC_GUI_LOOK, dt_gui_add_class(), dt_iop_togglebutton_new(), dt_iop_tonecurve_draw(), dt_ui_label_new(), dt_ui_notebook_new(), dt_ui_notebook_page(), dt_ui_section_label_new(), dtgtk_cairo_paint_showmask(), dtgtk_drawing_area_new_with_aspect_ratio(), DTGTK_TOGGLEBUTTON, dtgtk_togglebutton_set_paint(), FALSE, darktable_t::gui, IOP_GUI_ALLOC, dt_gui_gtk_t::scroll_mask, show_mask_callback(), TRUE, and dt_iop_module_t::widget.
void gui_reset | ( | dt_iop_module_t * | self | ) |
References dt_iop_color_picker_reset(), and TRUE.
void gui_update | ( | dt_iop_module_t * | self | ) |
void init_global | ( | dt_iop_module_so_t * | module | ) |
References dt_opencl_create_kernel(), dt_iop_filmicrgb_global_data_t::kernel_filmic_bspline_horizontal, dt_iop_filmicrgb_global_data_t::kernel_filmic_bspline_vertical, dt_iop_filmicrgb_global_data_t::kernel_filmic_compute_ratios, dt_iop_filmicrgb_global_data_t::kernel_filmic_init_reconstruct, dt_iop_filmicrgb_global_data_t::kernel_filmic_inpaint_noise, dt_iop_filmicrgb_global_data_t::kernel_filmic_mask, dt_iop_filmicrgb_global_data_t::kernel_filmic_restore_ratios, dt_iop_filmicrgb_global_data_t::kernel_filmic_rgb_chroma, dt_iop_filmicrgb_global_data_t::kernel_filmic_rgb_split, dt_iop_filmicrgb_global_data_t::kernel_filmic_show_mask, dt_iop_filmicrgb_global_data_t::kernel_filmic_wavelets_detail, and dt_iop_filmicrgb_global_data_t::kernel_filmic_wavelets_reconstruct.
void init_pipe | ( | dt_iop_module_t * | self, |
dt_dev_pixelpipe_t * | pipe, | ||
dt_dev_pixelpipe_iop_t * | piece | ||
) |
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::data_size, and dt_calloc_align().
|
inlinestatic |
References for_each_channel, height, and width.
Referenced by reconstruct_highlights().
|
inlinestatic |
References DT_ALIGNED_ARRAY, dt_noise_generator_simd(), FALSE, flip(), for_each_channel, height, splitmix32(), TRUE, weight(), width, and xoshiro128plus().
Referenced by process().
int legacy_params | ( | dt_iop_module_t * | self, |
const void *const | old_params, | ||
const int | old_version, | ||
void * | new_params, | ||
const int | new_version | ||
) |
References dt_iop_filmicrgb_params_t::auto_hardness, dt_iop_filmicrgb_params_t::balance, dt_iop_filmicrgb_params_t::black_point_source, dt_iop_filmicrgb_params_t::black_point_target, dt_iop_filmicrgb_params_t::compensate_icc_black, dt_iop_filmicrgb_params_t::contrast, convert_to_spline_v3(), dt_iop_filmicrgb_params_t::custom_grey, dt_iop_module_t::default_params, DT_FILMIC_COLORSCIENCE_V1, DT_FILMIC_CURVE_POLY_3, DT_FILMIC_CURVE_POLY_4, DT_FILMIC_SPLINE_VERSION_V1, DT_FILMIC_SPLINE_VERSION_V2, DT_FILMIC_SPLINE_VERSION_V3, FALSE, dt_iop_filmicrgb_params_t::grey_point_source, dt_iop_filmicrgb_params_t::grey_point_target, dt_iop_filmicrgb_params_t::high_quality_reconstruction, dt_iop_filmicrgb_params_t::highlights, dt_iop_filmicrgb_params_t::latitude, dt_iop_filmicrgb_params_t::noise_distribution, dt_iop_filmicrgb_params_t::noise_level, dt_iop_filmicrgb_params_t::output_power, dt_iop_filmicrgb_params_t::preserve_color, dt_iop_filmicrgb_params_t::reconstruct_bloom_vs_details, dt_iop_filmicrgb_params_t::reconstruct_feather, dt_iop_filmicrgb_params_t::reconstruct_grey_vs_color, dt_iop_filmicrgb_params_t::reconstruct_structure_vs_texture, dt_iop_filmicrgb_params_t::reconstruct_threshold, dt_iop_filmicrgb_params_t::saturation, dt_iop_filmicrgb_params_t::security_factor, dt_iop_filmicrgb_params_t::shadows, dt_iop_filmicrgb_params_t::spline_version, TRUE, dt_iop_filmicrgb_params_t::version, dt_iop_filmicrgb_params_t::white_point_source, and dt_iop_filmicrgb_params_t::white_point_target.
|
inlinestatic |
Referenced by filmic_chroma_v1(), filmic_split_v1(), filmic_split_v2_v3(), and test_linear_saturation().
|
inlinestatic |
References clamp_simd().
Referenced by dt_iop_tonecurve_draw(), filmic_chroma_v1(), filmic_chroma_v2_v3(), filmic_split_v1(), filmic_split_v2_v3(), norm_tone_mapping_v4(), and RGB_tone_mapping_v4().
|
inlinestatic |
References clamp_simd(), height, normalize(), sqf(), weight(), and width.
Referenced by process().
const char * name | ( | ) |
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, CLAMPF, dt_iop_filmicrgb_data_t::dynamic_range, filmic_spline(), for_each_channel, get_pixel_norm(), dt_iop_filmicrgb_data_t::grey_source, dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, log_tonemapping(), dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, dt_iop_filmicrgb_data_t::output_power, type, dt_iop_filmic_rgb_spline_t::type, and dt_iop_filmic_rgb_spline_t::y.
Referenced by filmic_chroma_v4(), and filmic_v5().
|
inlinestatic |
References dot_product(), LMS_to_Yrg(), and Yrg_to_Ych().
Referenced by filmic_chroma_v4(), filmic_split_v4(), filmic_v5(), and gamut_check_RGB().
|
inlinestatic |
Referenced by get_pixel_norm().
void process | ( | dt_iop_module_t * | self, |
dt_dev_pixelpipe_iop_t * | piece, | ||
const void *const restrict | ivoid, | ||
void *const restrict | ovoid, | ||
const dt_iop_roi_t *const | roi_in, | ||
const dt_iop_roi_t *const | roi_out | ||
) |
The log2(x) -> -INF when x -> 0 thus very low values (noise) will get even lower, resulting in noise negative amplification, which leads to pepper noise in shadows. To avoid that, we need to clip values that are noise for sure. Using 16 bits RAW data, the black value (known by rawspeed for every manufacturer) could be used as a threshold. However, at this point of the pixelpipe, the RAW levels have already been corrected and everything can happen with black levels in the exposure module. So we define the threshold as the first non-null 16 bit integer
References dt_dev_pixelpipe_iop_t::colors, compute_ratios(), dt_dev_pixelpipe_iop_t::data, dt_iop_module_t::dev, display_mask(), dt_alloc_align_float(), dt_alloc_sse_ps(), dt_control_log(), DT_DEV_PIXELPIPE_DISPLAY_MASK, DT_DEV_PIXELPIPE_FULL, DT_FILMIC_COLORSCIENCE_V1, DT_FILMIC_COLORSCIENCE_V2, DT_FILMIC_COLORSCIENCE_V3, DT_FILMIC_COLORSCIENCE_V4, DT_FILMIC_COLORSCIENCE_V5, DT_FILMIC_METHOD_EUCLIDEAN_NORM_V1, DT_FILMIC_METHOD_NONE, DT_FILMIC_RECONSTRUCT_RATIOS, DT_FILMIC_RECONSTRUCT_RGB, dt_free_align, dt_iop_alpha_copy(), dt_ioppr_get_pipe_output_profile_info(), dt_ioppr_get_pipe_work_profile_info(), filmic_chroma_v1(), filmic_chroma_v2_v3(), filmic_chroma_v4(), filmic_split_v1(), filmic_split_v2_v3(), filmic_split_v4(), filmic_v5(), dt_develop_t::gui_attached, dt_iop_module_t::gui_data, dt_iop_roi_t::height, dt_iop_filmicrgb_data_t::high_quality_reconstruction, inpaint_noise(), mask_clipped_pixels(), dt_iop_filmicrgb_data_t::noise_distribution, dt_iop_filmicrgb_data_t::noise_level, dt_iop_filmicrgb_data_t::normalize, dt_iop_filmicrgb_data_t::output_power, dt_dev_pixelpipe_iop_t::pipe, dt_iop_filmicrgb_data_t::preserve_color, dt_iop_filmicrgb_data_t::reconstruct_feather, reconstruct_highlights(), dt_iop_filmicrgb_data_t::reconstruct_threshold, restore_ratios(), dt_iop_roi_t::scale, TRUE, dt_iop_filmicrgb_data_t::version, and dt_iop_roi_t::width.
|
inlinestatic |
References blur_2D_Bspline(), darktable, dt_alloc_sse_ps(), dt_control_log(), DT_FILMIC_RECONSTRUCT_RATIOS, DT_FILMIC_RECONSTRUCT_RGB, dt_free_align, error(), FALSE, get_scales(), dt_iop_roi_t::height, init_reconstruct(), darktable_t::num_openmp_threads, dt_iop_filmicrgb_data_t::reconstruct_bloom_vs_details, dt_iop_filmicrgb_data_t::reconstruct_grey_vs_color, dt_iop_filmicrgb_data_t::reconstruct_structure_vs_texture, TRUE, wavelets_detail_level(), wavelets_reconstruct_ratios(), wavelets_reconstruct_RGB(), and dt_iop_roi_t::width.
Referenced by process().
void reload_defaults | ( | dt_iop_module_t * | module | ) |
References dt_iop_filmicrgb_params_t::black_point_source, dt_iop_module_t::dev, dt_image_get_exposure_bias(), dt_image_is_raw(), dt_iop_filmicrgb_params_t::grey_point_target, dt_develop_t::image_storage, dt_iop_filmicrgb_params_t::output_power, and dt_iop_filmicrgb_params_t::white_point_source.
|
inlinestatic |
References clamp_simd(), for_each_channel, height, and width.
Referenced by process().
|
inlinestatic |
References dt_iop_filmicrgb_data_t::black_source, dt_iop_filmicrgb_data_t::dynamic_range, filmic_spline(), for_each_channel, dt_iop_filmicrgb_data_t::grey_source, dt_iop_filmic_rgb_spline_t::latitude_max, dt_iop_filmic_rgb_spline_t::latitude_min, log_tonemapping(), dt_iop_filmic_rgb_spline_t::M1, dt_iop_filmic_rgb_spline_t::M2, dt_iop_filmic_rgb_spline_t::M3, dt_iop_filmic_rgb_spline_t::M4, dt_iop_filmic_rgb_spline_t::M5, dt_iop_filmicrgb_data_t::output_power, dt_iop_filmic_rgb_spline_t::type, and dt_iop_filmic_rgb_spline_t::y.
Referenced by filmic_split_v4(), and filmic_v5().
|
static |
References darktable, dt_iop_module_t::dev, dt_dev_invalidate, DT_DEV_PIXELPIPE_DISPLAY_NONE, DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU, dt_dev_refresh_ui_images, dt_iop_set_cache_bypass(), darktable_t::gui, dt_iop_module_t::gui_data, dt_iop_module_t::off, dt_iop_module_t::request_mask_display, dt_gui_gtk_t::reset, and TRUE.
Referenced by gui_init().
void tiling_callback | ( | struct dt_iop_module_t * | self, |
struct dt_dev_pixelpipe_iop_t * | piece, | ||
const dt_iop_roi_t * | roi_in, | ||
const dt_iop_roi_t * | roi_out, | ||
struct dt_develop_tiling_t * | tiling | ||
) |
References get_scales().
|
inlinestatic |
Referenced by reconstruct_highlights().
|
inlinestatic |
References fmaxabsf(), height, and width.
Referenced by reconstruct_highlights().
|
inlinestatic |
References fmaxabsf(), height, and width.
Referenced by reconstruct_highlights().
|
inlinestatic |
References dot_product(), Ych_to_Yrg(), and Yrg_to_LMS().
Referenced by gamut_check_RGB().