53 constant
const float *
const unbounded_coeffs,
54 const int n_lut,
const int lutsize)
58 if(unbounded_coeffs[0] >= 0.0f)
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);
79 else return unbounded_coeffs[1] * native_powr(
x*unbounded_coeffs[0], unbounded_coeffs[2]);
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)
134 float luminance = 0.f;
136 if(profile_info->nonlinearlut)
141 luminance =
matrix[3] * linear_rgb.x +
matrix[4] * linear_rgb.y +
matrix[5] * linear_rgb.z;
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 };
static const dt_aligned_pixel_simd_t const dt_adaptation_t const float p
Definition chromatic_adaptation.h:315
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
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
const dt_aligned_pixel_t f
Definition colorspaces_inline_conversions.h:256
const float a
Definition colorspaces_inline_conversions.h:1292
static const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:184
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:530
static const dt_colormatrix_t matrix
Definition colorspaces_inline_conversions.h:182
constant sampler_t sampleri
Definition data/kernels/common.h:25
constant sampler_t samplerf
Definition data/kernels/common.h:27
static double dot(int g[], double x, double y, double z)
Definition grain.c:179
static const float x
Definition iop_profile.h:239
const float l2
Definition iop_profile.h:230
static const float *const lut
Definition iop_profile.h:246
const int t
Definition iop_profile.h:227
const float l1
Definition iop_profile.h:229
static const float const int lutsize
Definition iop_profile.h:224
static float clamp(float f, float m, float M)
Definition noiseprofile.c:162
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