34 const float4 vector_copy = { vector.x, vector.y, vector.z, 0.f };
48 const float a = xyz.w;
49 return (float4)(
R, G,
B,
a);
54 const float4 vv = (float4)(xyz.x, xyz.y, xyz.z, 0.0f);
70 return (float4)(
out.x,
out.y,
out.z, xyz.w);
79 const float L =
Lab.x;
82 return (float4)(
L,
C,
H,
Lab.w);
88 const float L =
LCH.x;
92 return (float4)(
L,
a,
b,
LCH.w);
98 const float4 epsilon = 216.0f / 24389.0f;
99 const float4 kappa = 24389.0f / 27.0f;
100 return (
x > epsilon) ? native_powr(
x, (float4)(1.0f/3.0f)) : (kappa *
x + (float4)16.0f) / ((float4)116.0f);
107 const float4
d50 = (float4)(0.9642f, 1.0f, 0.8249f, 1.0f);
109 lab.x = 116.0f * xyz.y - 16.0f;
110 lab.y = 500.0f * (xyz.x - xyz.y);
111 lab.z = 200.0f * (xyz.y - xyz.z);
119 const float4 epsilon = 0.206896551f;
120 const float4 kappa = 24389.0f / 27.0f;
121 return (
x > epsilon) ?
x*
x*
x : ((float4)116.0f *
x - (float4)16.0f)/kappa;
127 const float4
d50 = (float4)(0.9642f, 1.0f, 0.8249f, 0.0f);
129 f.y = (
Lab.x + 16.0f)/116.0f;
130 f.x =
Lab.y/500.0f +
f.y;
131 f.z =
f.y -
Lab.z/200.0f;
137 const float rgb_to_xyz[3][3] = {
138 {0.7976749f, 0.1351917f, 0.0313534f},
139 {0.2880402f, 0.7118741f, 0.0000857f},
140 {0.0000000f, 0.0000000f, 0.8252100f},
142 float4
XYZ = (float4)(0.0f, 0.0f, 0.0f, 0.0f);
143 XYZ.x += rgb_to_xyz[0][0] *
rgb.x;
144 XYZ.x += rgb_to_xyz[0][1] *
rgb.y;
145 XYZ.x += rgb_to_xyz[0][2] *
rgb.z;
146 XYZ.y += rgb_to_xyz[1][0] *
rgb.x;
147 XYZ.y += rgb_to_xyz[1][1] *
rgb.y;
148 XYZ.y += rgb_to_xyz[1][2] *
rgb.z;
149 XYZ.z += rgb_to_xyz[2][0] *
rgb.x;
150 XYZ.z += rgb_to_xyz[2][1] *
rgb.y;
151 XYZ.z += rgb_to_xyz[2][2] *
rgb.z;
157 const float xyz_to_rgb[3][3] = {
158 { 1.3459433f, -0.2556075f, -0.0511118f},
159 {-0.5445989f, 1.5081673f, 0.0205351f},
160 { 0.0000000f, 0.0000000f, 1.2118128f},
162 float4
rgb = (float4)(0.0f, 0.0f, 0.0f, 0.0f);
163 rgb.x += xyz_to_rgb[0][0] *
XYZ.x;
164 rgb.x += xyz_to_rgb[0][1] *
XYZ.y;
165 rgb.x += xyz_to_rgb[0][2] *
XYZ.z;
166 rgb.y += xyz_to_rgb[1][0] *
XYZ.x;
167 rgb.y += xyz_to_rgb[1][1] *
XYZ.y;
168 rgb.y += xyz_to_rgb[1][2] *
XYZ.z;
169 rgb.z += xyz_to_rgb[2][0] *
XYZ.x;
170 rgb.z += xyz_to_rgb[2][1] *
XYZ.y;
171 rgb.z += xyz_to_rgb[2][2] *
XYZ.z;
192 const float R =
RGB.x;
193 const float G =
RGB.y;
194 const float B =
RGB.z;
196 const float var_Min = fmin(
R, fmin(G,
B));
197 const float var_Max = fmax(
R, fmax(G,
B));
198 const float del_Max = var_Max - var_Min;
200 L = (var_Max + var_Min) / 2.0f;
209 if (
L < 0.5f)
S = del_Max / (var_Max + var_Min);
210 else S = del_Max / (2.0f - var_Max - var_Min);
212 const float del_R = (((var_Max -
R) / 6.0f) + (del_Max / 2.0f)) / del_Max;
213 const float del_G = (((var_Max - G) / 6.0f) + (del_Max / 2.0f)) / del_Max;
214 const float del_B = (((var_Max -
B) / 6.0f) + (del_Max / 2.0f)) / del_Max;
216 if (
R == var_Max)
H = del_B - del_G;
217 else if (G == var_Max)
H = (1.0f / 3.0f) + del_R - del_B;
218 else if (
B == var_Max)
H = (2.0f / 3.0f) + del_G - del_R;
220 if (
H < 0.0f)
H += 1.0f;
221 if (
H > 1.0f)
H -= 1.0f;
224 return (float4)(
H,
S,
L,
RGB.w);
229static inline float Hue_2_RGB(
float v1,
float v2,
float vH)
231 if (vH < 0.0f) vH += 1.0f;
232 if (vH > 1.0f) vH -= 1.0f;
233 if ((6.0f * vH) < 1.0f)
return (v1 + (v2 - v1) * 6.0f * vH);
234 if ((2.0f * vH) < 1.0f)
return (v2);
235 if ((3.0f * vH) < 2.0f)
return (v1 + (v2 - v1) * ((2.0f / 3.0f) - vH) * 6.0f);
245 const float H =
HSL.x;
246 const float S =
HSL.y;
247 const float L =
HSL.z;
257 if (
L < 0.5f) var_2 =
L * (1.0f +
S);
258 else var_2 = (
L +
S) - (
S *
L);
260 var_1 = 2.0f *
L - var_2;
268 return (float4)(
R, G,
B,
HSL.w);
275 const float minv = fmin(
RGB.x, fmin(
RGB.y,
RGB.z));
276 const float maxv = fmax(
RGB.x, fmax(
RGB.y,
RGB.z));
277 const float delta = maxv - minv;
282 if(fabs(maxv) > 1e-6f && fabs(
delta) > 1e-6f)
295 else if (
RGB.y == maxv)
312 if (fabs(
HSV.y) < 1e-6f)
319 const int i = floor(6.0f*
HSV.x);
320 const float v =
HSV.z;
321 const float w =
HSV.w;
322 const float p =
v * (1.0f -
HSV.y);
323 const float q =
v * (1.0f -
HSV.y * (6.0f*
HSV.x -
i));
324 const float t =
v * (1.0f -
HSV.y * (1.0f - (6.0f*
HSV.x -
i)));
329 RGB = (float4)(
v,
t,
p, w);
332 RGB = (float4)(q,
v,
p, w);
335 RGB = (float4)(
p,
v,
t, w);
338 RGB = (float4)(
p, q,
v, w);
341 RGB = (float4)(
t,
p,
v, w);
345 RGB = (float4)(
v,
p, q, w);
357 sRGB.x = 3.1338561f *
XYZ.x - 1.6168667f *
XYZ.y - 0.4906146f *
XYZ.z;
358 sRGB.y = -0.9787684f *
XYZ.x + 1.9161415f *
XYZ.y + 0.0334540f *
XYZ.z;
359 sRGB.z = 0.0719453f *
XYZ.x - 0.2289914f *
XYZ.y + 1.4052427f *
XYZ.z;
371 XYZ.x = 0.4360747f *
sRGB.x + 0.3850649f *
sRGB.y + 0.1430804f *
sRGB.z;
372 XYZ.y = 0.2225045f *
sRGB.x + 0.7168786f *
sRGB.y + 0.0606169f *
sRGB.z;
373 XYZ.z = 0.0139322f *
sRGB.x + 0.0971045f *
sRGB.y + 0.7141733f *
sRGB.z;
382 const float4
M[3] = { { 0.41478972f, 0.579999f, 0.0146480f, 0.0f },
383 { -0.2015100f, 1.120649f, 0.0531008f, 0.0f },
384 { -0.0166008f, 0.264800f, 0.6684799f, 0.0f } };
386 const float4
A[3] = { { 0.5f, 0.5f, 0.0f, 0.0f },
387 { 3.524000f, -4.066708f, 0.542708f, 0.0f },
388 { 0.199076f, 1.096799f, -1.295875f, 0.0f } };
397 temp2.x =
dot(
M[0], temp1);
398 temp2.y =
dot(
M[1], temp1);
399 temp2.z =
dot(
M[2], temp1);
402 temp2 = native_powr(fmax(temp2 / 10000.f, 0.0f), 0.159301758f);
403 temp2 = native_powr((0.8359375f + 18.8515625f * temp2) / (1.0f + 18.6875f * temp2), 134.034375f);
405 temp1.x =
dot(
A[0], temp2);
406 temp1.y =
dot(
A[1], temp2);
407 temp1.z =
dot(
A[2], temp2);
409 temp1.x = fmax(0.44f * temp1.x / (1.0f - 0.56f * temp1.x) - 1.6295499532821566e-11f, 0.f);
416 const float b = 1.15f;
417 const float g = 0.66f;
418 const float c1 = 0.8359375f;
419 const float c2 = 18.8515625f;
420 const float c3 = 18.6875f;
421 const float n_inv = 1.0f / 0.159301758f;
422 const float p_inv = 1.0f / 134.034375f;
423 const float d = -0.56f;
424 const float d0 = 1.6295499532821566e-11f;
425 const float4
MI[3] = { { 1.9242264357876067f, -1.0047923125953657f, 0.0376514040306180f, 0.0f },
426 { 0.3503167620949991f, 0.7264811939316552f, -0.0653844229480850f, 0.0f },
427 { -0.0909828109828475f, -0.3127282905230739f, 1.5227665613052603f, 0.0f } };
428 const float4
AI[3] = { { 1.0f, 0.1386050432715393f, 0.0580473161561189f, 0.0f },
429 { 1.0f, -0.1386050432715393f, -0.0580473161561189f, 0.0f },
430 { 1.0f, -0.0960192420263190f, -0.8118918960560390f, 0.0f } };
483 = { { 0.257085f, 0.859943f, -0.031061f, 0.f },
484 { -0.394427f, 1.175800f, 0.106423f, 0.f },
485 { 0.064856f, -0.076250f, 0.559067f, 0.f } };
494 = { { 1.80794659f, -1.29971660f, 0.34785879f, 0.f },
495 { 0.61783960f, 0.39595453f, -0.04104687f, 0.f },
496 { -0.12546960f, 0.20478038f, 1.74274183f, 0.f } };
512 = { { 0.95f, 0.38f, 0.00f, 0.f },
513 { 0.05f, 0.62f, 0.03f, 0.f },
514 { 0.00f, 0.00f, 0.97f, 0.f } };
522 = { { 1.0877193f, -0.66666667f, 0.02061856f, 0.f },
523 { -0.0877193f, 1.66666667f, -0.05154639f, 0.f },
524 { 0.f, 0.f, 1.03092784f, 0.f } };
537 const float Y = 0.68990272f *
LMS.x + 0.34832189f *
LMS.y;
541 const float4
lms = (
a == 0.f) ? 0.f :
LMS /
a;
552 const float Y =
Yrg.x;
555 const float r =
Yrg.y;
556 const float g =
Yrg.z;
557 const float b = 1.f -
r -
g;
558 const float4
rgb = {
r,
g,
b, 0.f };
564 const float denom = (0.68990272f *
lms.x + 0.34832189f *
lms.y);
576 const float Y =
Yrg.x;
581 const float r =
Yrg.y - 0.21902143f;
582 const float g =
Yrg.z - 0.54371398f;
583 const float c = hypot(
g,
r);
584 const float h = atan2(
g,
r);
585 return (float4)(Y,
c,
h,
Yrg.w);
591 const float Y =
Ych.x;
592 const float c =
Ych.y;
593 const float h =
Ych.z;
594 const float r =
c * native_cos(
h) + 0.21902143f;
595 const float g =
c * native_sin(
h) + 0.54371398f;
596 return (float4)(Y,
r,
g,
Ych.w);
608 const float denominator = -2.f *
xyY.x + 12.f *
xyY.y + 3.f;
610 uvY.x = 4.f *
xyY.x / denominator;
611 uvY.y = 9.f *
xyY.y / denominator;
626 const float denominator = 6.0f *
uvY.x - 16.f *
uvY.y + 12.0f;
628 xyY.x = 9.f *
uvY.x / denominator;
629 xyY.y = 4.f *
uvY.y / denominator;
661 { -0.7502f, 1.7135f, 0.0367f, 0.f },
662 { 0.0389f, -0.0685f, 1.0296f, 0.f } };
671 { 0.4323f, 0.5184f, 0.0493f, 0.f },
672 { -0.0085f, 0.0400f, 0.9685f, 0.f } };
680 const float4
XYZ_to_CAT16_LMS[3] = { { 0.401288f, 0.650173f, -0.051461f, 0.f },
681 { -0.250268f, 1.204414f, 0.045854f, 0.f },
682 { -0.002079f, 0.048952f, 0.953127f, 0.f } };
690 const float4
CAT16_LMS_to_XYZ[3] = { { 1.862068f, -1.011255f, 0.149187f, 0.f },
691 { 0.38752f , 0.621447f, -0.008974f, 0.f },
692 { -0.015841f, -0.034123f, 1.049964f, 0.f } };
698 const float4 origin_illuminant,
699 const float p,
const int full)
707 const float4 D50 = { 0.996078f, 1.020646f, 0.818155f, 0.f };
711 float4 temp = *lms_in / origin_illuminant;
714 temp.z = (temp.z > 0.f) ? native_powr(temp.z,
p) : temp.z;
716 *lms_in = D50 * temp;
719 *lms_in *= D50 / origin_illuminant;
723 const float4 origin_illuminant,
724 const float D,
const int full)
731 const float4 D50 = { 0.994535f, 1.000997f, 0.833036f, 0.f };
733 if(full) *lms_in *= D50 / origin_illuminant;
734 else *lms_in *= (D * D50 / origin_illuminant + 1.f - D);
738 const float4 origin_illuminant)
744 const float4 D50 = { 0.9642119944211994f, 1.0f, 0.8251882845188288f, 0.f };
745 *lms_in *= D50 / origin_illuminant;
755 const float D65_r = 0.21902143f;
756 const float D65_g = 0.54371398f;
758 const float cos_h = native_cos(
Ych.z);
759 const float sin_h = native_sin(
Ych.z);
763 max_c = fmin(-D65_r / cos_h, max_c);
767 max_c = fmin(-D65_g / sin_h, max_c);
771 max_c = fmin((1.f - D65_r - D65_g) / (cos_h + sin_h), max_c);
792 const float Y_hat = native_powr(Y, 0.631651345306265f);
793 return 2.098883786377f * Y_hat / (Y_hat + 1.12426773749357f);
799 return native_powr((1.12426773749357f *
L_star / (2.098883786377f -
L_star)), 1.5831518565279648f);
804 float4 x_factors = { -0.783941002840055f, 0.745273540913283f, 0.318707282433486f, 0.f };
805 float4
y_factors = { 0.277512987809202f, -0.205375866083878f, 2.16743692732158f, 0.f };
806 float4
offsets = { 0.153836578598858f, -0.165478376301988f, 0.291320554395942f, 0.f };
812 const float factors[2] = { 1.39656225667f, 1.4513954287f };
813 const float half_values[2] = { 1.49217352929f, 1.52488637914f };
814 for(
int c = 0;
c < 2;
c++)
843 JCH.y = 15.932993652962535f * native_powr(
L_star, 0.6523997524738018f) * native_powr(
M2, 0.6007557017508491f) /
L_white;
862 const float M = native_powr(
JCH.y *
L_white / (15.932993652962535f * native_powr(
L_star, 0.6523997524738018f)), 0.8322850678616855f);
872 const float factors[2] = { 1.39656225667f, 1.4513954287f };
873 const float half_values[2] = { 1.49217352929f,1.52488637914f };
874 for(
int c = 0;
c < 2;
c++)
877 const float4
U_factors = { 0.167171472114775f, -0.150959086409163f, 0.940254742367256f, 0.f };
878 const float4
V_factors = { 0.141299802443708f, -0.155185060382272f, 1.000000000000000f, 0.f };
879 const float4
offsets = { -0.00801531300850582f, -0.00843312433578007f, -0.0256325967652889f, 0.f };
894 HSB.z =
JCH.x * (native_powr(
JCH.y, 1.33654221029386f) + 1.f);
906 JCH.x =
HSB.z / (native_powr(
JCH.y, 1.33654221029386f) + 1.f);
914 HCB.z =
JCH.x * (native_powr(
JCH.y, 1.33654221029386f) + 1.f);
926 JCH.x =
HCB.z / (native_powr(
HCB.y, 1.33654221029386f) + 1.f);
const dt_colormatrix_t CAT16_LMS_to_XYZ
Definition chromatic_adaptation.h:89
const dt_colormatrix_t XYZ_to_CAT16_LMS
Definition chromatic_adaptation.h:85
static const dt_aligned_pixel_simd_t const dt_adaptation_t const float p
Definition chromatic_adaptation.h:315
const dt_colormatrix_t XYZ_to_Bradford_LMS
Definition chromatic_adaptation.h:45
const dt_colormatrix_t Bradford_LMS_to_XYZ
Definition chromatic_adaptation.h:49
static float4 dt_UCS_JCH_to_HCB(const float4 JCH)
Definition colorspace.h:911
static float4 RGB_2_HSV(const float4 RGB)
Definition colorspace.h:271
static float4 LCH_2_Lab(float4 LCH)
Definition colorspace.h:86
static float4 XYZ_to_JzAzBz(float4 XYZ_D65)
Definition colorspace.h:380
static float4 dt_xyY_to_XYZ(const float4 xyY)
Definition colorspace.h:645
static float4 Lab_to_prophotorgb(float4 Lab)
Definition colorspace.h:175
static float4 prophotorgb_to_Lab(float4 rgb)
Definition colorspace.h:181
static float4 dt_UCS_HSB_to_JCH(const float4 HSB)
Definition colorspace.h:901
static void CAT16_adapt_D50(float4 *lms_in, const float4 origin_illuminant, const float D, const int full)
Definition colorspace.h:722
static float4 gradingRGB_to_LMS(const float4 RGB)
Definition colorspace.h:509
static void xyY_to_dt_UCS_UV(const float4 xyY, float UV_star_prime[2])
Definition colorspace.h:802
static float4 XYZ_to_sRGB(float4 XYZ)
Definition colorspace.h:353
static float4 gamut_check_Yrg(float4 Ych)
Definition colorspace.h:748
static float4 dt_xyY_to_uvY(const float4 xyY)
Definition colorspace.h:600
static float4 XYZ_to_Lab(float4 xyz)
Definition colorspace.h:104
static float4 matrix_product_float4(const float4 xyz, constant const float *const matrix)
Definition colorspace.h:64
static float4 JzAzBz_2_XYZ(const float4 JzAzBz)
Definition colorspace.h:414
static float4 HSL_2_RGB(const float4 HSL)
Definition colorspace.h:241
static float3 matrix_dot_float4(const constant float4 *const matrix, const float3 xyz)
Definition colorspace.h:58
static float4 LMS_to_XYZ(const float4 LMS)
Definition colorspace.h:491
static float4 prophotorgb_to_XYZ(float4 rgb)
Definition colorspace.h:135
static float4 Lab_2_LCH(float4 Lab)
Definition colorspace.h:73
static float4 convert_XYZ_to_bradford_LMS(const float4 XYZ)
Definition colorspace.h:657
static float4 JzAzBz_to_JzCzhz(float4 JzAzBz)
Definition colorspace.h:460
static float4 matrix_product(const float4 xyz, constant const float *const matrix)
Definition colorspace.h:43
static float4 Yrg_to_Ych(const float4 Yrg)
Definition colorspace.h:574
static float4 Ych_to_Yrg(const float4 Ych)
Definition colorspace.h:589
static float Hue_2_RGB(float v1, float v2, float vH)
Definition colorspace.h:229
static float4 dt_uvY_to_xyY(const float4 uvY)
Definition colorspace.h:618
static float4 convert_XYZ_to_CAT16_LMS(const float4 XYZ)
Definition colorspace.h:677
static void bradford_adapt_D50(float4 *lms_in, const float4 origin_illuminant, const float p, const int full)
Definition colorspace.h:697
static float4 lab_f(float4 x)
Definition colorspace.h:96
static float4 LMS_to_gradingRGB(const float4 LMS)
Definition colorspace.h:519
static void XYZ_adapt_D50(float4 *lms_in, const float4 origin_illuminant)
Definition colorspace.h:737
static float4 RGB_2_HSL(const float4 RGB)
Definition colorspace.h:187
static float4 dt_UCS_JCH_to_HSB(const float4 JCH)
Definition colorspace.h:891
static float4 matrix_dot(const float4 vector, const float4 matrix[3])
Definition colorspace.h:31
static float dt_UCS_L_star_to_Y(const float L_star)
Definition colorspace.h:796
static float4 dt_UCS_JCH_to_xyY(const float4 JCH, const float L_white)
Definition colorspace.h:849
static float4 HSV_2_RGB(const float4 HSV)
Definition colorspace.h:308
static float4 Yrg_to_LMS(const float4 Yrg)
Definition colorspace.h:550
static float4 LMS_to_Yrg(const float4 LMS)
Definition colorspace.h:534
static float3 matrix_dot_float4_rows(const float4 row0, const float4 row1, const float4 row2, const float3 xyz)
Definition colorspace.h:52
static float Y_to_dt_UCS_L_star(const float Y)
Definition colorspace.h:789
static float4 lab_f_inv(float4 x)
Definition colorspace.h:117
static float4 xyY_to_dt_UCS_JCH(const float4 xyY, const float L_white)
Definition colorspace.h:823
static float4 dt_XYZ_to_xyY(const float4 XYZ)
Definition colorspace.h:635
static float4 convert_CAT16_LMS_to_XYZ(const float4 LMS)
Definition colorspace.h:687
static float4 Lab_to_XYZ(float4 Lab)
Definition colorspace.h:125
static float4 XYZ_to_prophotorgb(float4 XYZ)
Definition colorspace.h:155
static float4 convert_bradford_LMS_to_XYZ(const float4 LMS)
Definition colorspace.h:667
static float4 XYZ_to_LMS(const float4 XYZ)
Definition colorspace.h:480
static float4 dt_UCS_HCB_to_JCH(const float4 HCB)
Definition colorspace.h:921
static float4 sRGB_to_XYZ(float4 sRGB)
Definition colorspace.h:367
#define B(y, x)
Definition colorspaces.c:187
#define A(y, x)
Definition colorspaces.c:186
dt_aligned_pixel_t LMS
Definition colorspaces_inline_conversions.h:952
static dt_aligned_pixel_t Ych
Definition colorspaces_inline_conversions.h:1357
const float U_star_prime
Definition colorspaces_inline_conversions.h:1645
dt_aligned_pixel_t UVD
Definition colorspaces_inline_conversions.h:1571
static float UV_star_prime[2]
Definition colorspaces_inline_conversions.h:1565
static const float L_white
Definition colorspaces_inline_conversions.h:1594
const float i
Definition colorspaces_inline_conversions.h:669
float UV_star[2]
Definition colorspaces_inline_conversions.h:1578
dt_aligned_pixel_t lms
Definition colorspaces_inline_conversions.h:1293
static dt_aligned_pixel_t HSV
Definition colorspaces_inline_conversions.h:767
static dt_aligned_pixel_t xyY
Definition colorspaces_inline_conversions.h:266
const float L_star
Definition colorspaces_inline_conversions.h:1608
const float factors[2]
Definition colorspaces_inline_conversions.h:1579
const float h
Definition colorspaces_inline_conversions.h:1366
const float c
Definition colorspaces_inline_conversions.h:1365
const float L
Definition colorspaces_inline_conversions.h:724
const dt_aligned_pixel_t V_factors
Definition colorspaces_inline_conversions.h:1659
const float g
Definition colorspaces_inline_conversions.h:925
float UV[2]
Definition colorspaces_inline_conversions.h:1652
const float denom
Definition colorspaces_inline_conversions.h:1334
const dt_aligned_pixel_t f
Definition colorspaces_inline_conversions.h:256
static dt_aligned_pixel_t LCH
Definition colorspaces_inline_conversions.h:835
const dt_aligned_pixel_t offsets
Definition colorspaces_inline_conversions.h:1569
static dt_aligned_pixel_t uvY
Definition colorspaces_inline_conversions.h:303
static dt_aligned_pixel_t Yrg
Definition colorspaces_inline_conversions.h:1287
const float half_values[2]
Definition colorspaces_inline_conversions.h:1580
static const dt_aligned_pixel_t d50
Definition colorspaces_inline_conversions.h:222
static dt_aligned_pixel_t HSL
Definition colorspaces_inline_conversions.h:719
static const dt_colormatrix_t filmlightRGB_D65_to_LMS_D65
Definition colorspaces_inline_conversions.h:1227
static const float dt_aligned_pixel_t JCH
Definition colorspaces_inline_conversions.h:1595
const float d0
Definition colorspaces_inline_conversions.h:932
const float d
Definition colorspaces_inline_conversions.h:931
static dt_aligned_pixel_t HSB
Definition colorspaces_inline_conversions.h:1682
static const dt_colormatrix_t M
Definition colorspaces_inline_conversions.h:933
const float n_inv
Definition colorspaces_inline_conversions.h:1057
const dt_colormatrix_t MI
Definition colorspaces_inline_conversions.h:1061
static const dt_colormatrix_t LMS_D65_to_filmlightRGB_D65
Definition colorspaces_inline_conversions.h:1232
static dt_aligned_pixel_t sRGB
Definition colorspaces_inline_conversions.h:430
dt_aligned_pixel_t xyD
Definition colorspaces_inline_conversions.h:1662
const float r
Definition colorspaces_inline_conversions.h:1324
dt_aligned_pixel_t IzAzBz
Definition colorspaces_inline_conversions.h:1074
static dt_aligned_pixel_t XYZ_D65
Definition colorspaces_inline_conversions.h:869
const float b
Definition colorspaces_inline_conversions.h:1326
static dt_aligned_pixel_t Lab
Definition colorspaces_inline_conversions.h:228
static dt_aligned_pixel_t HCB
Definition colorspaces_inline_conversions.h:1717
const float a
Definition colorspaces_inline_conversions.h:1292
const float p_inv
Definition colorspaces_inline_conversions.h:1058
const dt_colormatrix_t AI
Definition colorspaces_inline_conversions.h:1066
const dt_aligned_pixel_t y_factors
Definition colorspaces_inline_conversions.h:1568
static const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:184
const float c3
Definition colorspaces_inline_conversions.h:928
static const dt_colormatrix_t XYZ_D65_to_LMS_2006_D65
Definition colorspaces_inline_conversions.h:1165
const float M2
Definition colorspaces_inline_conversions.h:1609
static const dt_colormatrix_t LMS_2006_D65_to_XYZ_D65
Definition colorspaces_inline_conversions.h:1170
static dt_aligned_pixel_t XYZ
Definition colorspaces_inline_conversions.h:252
static dt_aligned_pixel_t JzCzhz
Definition colorspaces_inline_conversions.h:1030
static const float const float C
Definition colorspaces_inline_conversions.h:666
static dt_aligned_pixel_t JzAzBz
Definition colorspaces_inline_conversions.h:923
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:530
const float V_star_prime
Definition colorspaces_inline_conversions.h:1646
static dt_aligned_pixel_t RGB
Definition colorspaces_inline_conversions.h:509
static const dt_colormatrix_t matrix
Definition colorspaces_inline_conversions.h:182
const float delta
Definition colorspaces_inline_conversions.h:722
const dt_aligned_pixel_t U_factors
Definition colorspaces_inline_conversions.h:1658
#define S(V, params)
Definition common/histogram.c:39
static const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row1
Definition darktable.h:547
static const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t const dt_aligned_pixel_simd_t row2
Definition darktable.h:548
static const dt_aligned_pixel_simd_t row0
Definition darktable.h:546
#define M_PI_F
Definition data/kernels/common.h:36
#define H
Definition diffuse.c:624
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 int t
Definition iop_profile.h:227
static const float v
Definition iop_profile.h:223
#define c2
Definition colorspaces_inline_conversions.h:1055
#define c1
Definition colorspaces_inline_conversions.h:1054