18 #ifndef PIC_GL_COLORS_COLOR_CONV_RGB_TO_HSL_HPP 19 #define PIC_GL_COLORS_COLOR_CONV_RGB_TO_HSL_HPP 21 #include "../../gl/colors/color_conv.hpp" 46 const vec3 LUM_XYZ = vec3(0.213, 0.715, 0.072);
47 const vec3 ALPHA_VAL = vec3(0.0, 0.866, -0.866);
48 const vec3 BETA_VAL = vec3(1.0, -0.5, -0.5);
50 vec3 RGB2HSL(vec3 col) {
54 ret.y = dot(col, LUM_XYZ);
57 float alpha = dot(col, BETA_VAL);
58 float beta = dot(col, ALPHA_VAL);
61 if(alpha == 0.0 && beta == 0.0) {
65 ret.x = atan(alpha, beta);
66 ret.z = sqrt(alpha * alpha + beta * beta);
82 const vec3 R_VAL = vec3(0.9990, -0.3709, 0.7862);
83 const vec3 G_VAL = vec3(0.9990, 0.2065, -0.2138);
84 const vec3 B_VAL = vec3(0.9990, -0.9482, -0.2138);
88 vec3 HSL2RGB(vec3 col) {
92 tmp.y = col.z * cos(col.x);
93 tmp.z = col.z * sin(col.x);
95 ret.x = dot(tmp, R_VAL);
96 ret.y = dot(tmp, G_VAL);
97 ret.z = dot(tmp, B_VAL);
112 uniform sampler2D u_tex; \n
116 ivec2 coords = ivec2(gl_FragCoord.xy); \n
117 vec3 color = texelFetch(u_tex, coords, 0).xyz; \n
118 f_color = vec4(RGB2HSL(color), 1.0); \n
123 return fragment_source;
133 uniform sampler2D u_tex; \n
136 ivec2 coords = ivec2(gl_FragCoord.xy); \n
137 vec3 color = texelFetch(u_tex, coords, 0).xyz; \n
138 f_color = vec4(HSL2RGB(color), 1.0); \n
143 return fragment_source;
#define MAKE_STRING(input_string)
std::string getDirectFunction()
getDirectFunction
Definition: color_conv_rgb_to_hsl.hpp:109
ColorConvGLRGBtoHSL(bool direct=true)
ColorConvGLRGBtoHSL.
Definition: color_conv_rgb_to_hsl.hpp:35
std::string getInverseFunction()
getInverseFunction
Definition: color_conv_rgb_to_hsl.hpp:130
The ColorConvGL class.
Definition: color_conv.hpp:30
static std::string getInverse()
getInverse
Definition: color_conv_rgb_to_hsl.hpp:79
int direct
Definition: display.hpp:33
Definition: bilateral_separation.hpp:25
The ColorConvGLRGBtoHSL class.
Definition: color_conv_rgb_to_hsl.hpp:28
static std::string getDirect()
getDirect
Definition: color_conv_rgb_to_hsl.hpp:43