54 const int n_lut,
const int lutsize)
64 const float f = ft -
t;
65 const int tx =
t & 0xff;
66 const int ty = (
t >> 8) + n_lut * 256;
73 const int2 p1 = (int2)(tx, ty);
74 const int2 p2 = (int2)(0, ty + 1);
84static inline float lookup(read_only image2d_t
lut,
const float x)
86 const int xi =
clamp((
int)(
x * 0x10000ul), 0, 0xffff);
87 const int2
p = (int2)((xi & 0xff), (xi >> 8));
99 const int xi =
clamp((
int)(
x * 0x10000ul), 0, 0xffff);
100 const int2
p = (int2)((xi & 0xff), (xi >> 8));
103 else return a[1] * native_powr(
x*a[0], a[2]);
110 read_only image2d_t
lut)
113 const float G =
lerp_lookup_unbounded(rgb_in.y,
lut, profile_info->unbounded_coeffs_in[1], 1, profile_info->lutsize);
115 const float a = rgb_in.w;
116 return (float4)(
R, G,
B, a);
121 read_only image2d_t
lut)
124 const float G =
lerp_lookup_unbounded(rgb_in.y,
lut, profile_info->unbounded_coeffs_out[1], 4, profile_info->lutsize);
126 const float a = rgb_in.w;
127 return (float4)(
R, G,
B, a);
132 constant
const float *
const matrix, read_only image2d_t
lut)
136 if(profile_info->nonlinearlut)
151 constant
const float *
const matrix, read_only image2d_t
lut)
154 if(profile_info->nonlinearlut)
168 const float4 coeffs = { 0.2225045f, 0.7168786f, 0.0606169f, 0.0f };
169 return dot(
rgb, coeffs);
static const dt_aligned_pixel_simd_t const dt_adaptation_t const float p
Definition chromatic_adaptation.h:309
static float4 apply_trc_in(const float4 rgb_in, constant const dt_colorspaces_iccprofile_info_cl_t *const profile_info, read_only image2d_t lut)
Definition color_conversion.h:108
static float4 rgb_matrix_to_xyz(const float4 rgb, constant const dt_colorspaces_iccprofile_info_cl_t *const profile_info, constant const float *const matrix, read_only image2d_t lut)
Definition color_conversion.h:149
static float lookup(read_only image2d_t lut, const float x)
Definition color_conversion.h:84
struct dt_colorspaces_iccprofile_info_cl_t dt_colorspaces_iccprofile_info_cl_t
static float lookup_unbounded(read_only image2d_t lut, const float x, constant const float *const a)
Definition color_conversion.h:91
static float dt_camera_rgb_luminance(const float4 rgb)
Definition color_conversion.h:166
static float get_rgb_matrix_luminance(const float4 rgb, constant const dt_colorspaces_iccprofile_info_cl_t *const profile_info, constant const float *const matrix, read_only image2d_t lut)
Definition color_conversion.h:130
dt_iop_colorspace_type_t
Definition color_conversion.h:30
@ IOP_CS_RAW
Definition color_conversion.h:32
@ IOP_CS_LCH
Definition color_conversion.h:35
@ IOP_CS_JZCZHZ
Definition color_conversion.h:37
@ IOP_CS_RGB
Definition color_conversion.h:34
@ IOP_CS_HSL
Definition color_conversion.h:36
@ IOP_CS_LAB
Definition color_conversion.h:33
@ IOP_CS_NONE
Definition color_conversion.h:31
static float lerp_lookup_unbounded(const float x, read_only image2d_t lut, constant const float *const unbounded_coeffs, const int n_lut, const int lutsize)
Definition color_conversion.h:52
static float4 apply_trc_out(const float4 rgb_in, constant const dt_colorspaces_iccprofile_info_cl_t *const profile_info, read_only image2d_t lut)
Definition color_conversion.h:119
float float2[2]
Definition colormapping.c:86
static float4 matrix_product(const float4 xyz, constant const float *const matrix)
Definition colorspace.h:43
#define B(y, x)
Definition colorspaces.c:187
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:344
const dt_aligned_pixel_t f
Definition colorspaces_inline_conversions.h:102
const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:42
const dt_colormatrix_t matrix
Definition colorspaces_inline_conversions.h:40
constant sampler_t sampleri
Definition data/kernels/common.h:25
constant sampler_t samplerf
Definition data/kernels/common.h:27
static const float x
Definition iop_profile.h:235
const float l2
Definition iop_profile.h:228
const float *const lut
Definition iop_profile.h:240
const float const int lutsize
Definition iop_profile.h:222
const int t
Definition iop_profile.h:225
static dt_aligned_pixel_t float *const const float unbounded_coeffs[3][3]
Definition iop_profile.h:252
const float l1
Definition iop_profile.h:227
float *const restrict luminance
Definition luminance_mask.h:77
static float clamp(float f, float m, float M)
Definition noiseprofile.c:161
Shared drawlayer runtime helpers used across module/runtime files.
Definition color_conversion.h:42
int lutsize
Definition color_conversion.h:45
float grey
Definition color_conversion.h:49
int nonlinearlut
Definition color_conversion.h:48
float unbounded_coeffs_out[3][3]
Definition color_conversion.h:47
float matrix_out[9]
Definition color_conversion.h:44
float unbounded_coeffs_in[3][3]
Definition color_conversion.h:46
float matrix_in[9]
Definition color_conversion.h:43