18 #ifndef PIC_GL_COLORS_COLOR_CONV_XYZ_TO_CIE_LAB_HPP 19 #define PIC_GL_COLORS_COLOR_CONV_XYZ_TO_CIE_LAB_HPP 21 #include "../../gl/colors/color_conv.hpp" 53 uniform sampler2D u_tex; \n
60 const float C_CIELAB_C1 = 7.787037037037037037037037037037;
64 return pow(t, 1.0 / 3.0);
73 ivec2 coords = ivec2(gl_FragCoord.xy); \n
74 vec3 colIn = texelFetch(u_tex, coords, 0).xyz; \n
79 colOut[0] = 116.0 * fY_Yn - 16.0;
80 colOut[1] = 500.0 * (f(colIn[0] /
white_point[0]) - fY_Yn);
81 colOut[2] = 200.0 * (fY_Yn - f(colIn[2] /
white_point[2]));
83 f_color = vec4(colOut, 1.0); \n
87 return fragment_source;
98 uniform sampler2D u_tex; \n
106 float f_inv(
float t) {
116 ivec2 coords = ivec2(gl_FragCoord.xy); \n
117 vec3 colIn = texelFetch(u_tex, coords, 0).xyz; \n
120 float tmp = (colIn[0] + 16.0f) / 116.0;
123 colOut[0] =
white_point[0] * f_inv(tmp + colIn[1] / 500.0);
124 colOut[2] =
white_point[2] * f_inv(tmp - colIn[2] / 200.0);
126 f_color = vec4(colOut, 1.0); \n
130 return fragment_source;
void setUniforms()
setUniforms
Definition: color_conv_xyz_to_cielab.hpp:136
const float C_CIELAB_C1_INV
Definition: color_conv_xyz_to_cielab.hpp:30
std::string getInverseFunction()
getInverseFunction
Definition: color_conv_xyz_to_cielab.hpp:94
void bind()
bind
Definition: display.hpp:189
#define MAKE_STRING(input_string)
std::string getDirectFunction()
getDirectFunction
Definition: color_conv_xyz_to_cielab.hpp:49
The ColorConvGLXYZtoCIELAB class.
Definition: color_conv_xyz_to_cielab.hpp:28
TechniqueGL techniques[2]
Definition: display.hpp:34
The ColorConvGL class.
Definition: color_conv.hpp:30
float white_point[3]
Definition: color_conv_xyz_to_cielab.hpp:31
const float C_SIX_OVER_TWENTY_NINE
Definition: color_conv_xyz_to_cielab.hpp:25
int direct
Definition: display.hpp:33
void unbind()
unbind
Definition: display.hpp:197
Definition: bilateral_separation.hpp:25
const float C_SIX_OVER_TWENTY_NINE_CUBIC
Definition: color_conv_xyz_to_cielab.hpp:26
const float C_FOUR_OVER_TWENTY_NINE
Definition: color_conv_xyz_to_cielab.hpp:31
void setUniform3fv(const char *name_uniform, const float *value)
setUniform3
Definition: display.hpp:331
const float C_CIELAB_C1
Definition: color_conv_xyz_to_cielab.hpp:28
ColorConvGLXYZtoCIELAB(bool direct=true)
ColorConvGLXYZtoCIELAB.
Definition: color_conv_xyz_to_cielab.hpp:38