/**
|
* Converts an HSL color (hue, saturation, lightness) to RGB
|
* HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html}
|
*
|
* @name czm_HSLToRGB
|
* @glslFunction
|
*
|
* @param {vec3} rgb The color in HSL.
|
*
|
* @returns {vec3} The color in RGB.
|
*
|
* @example
|
* vec3 hsl = czm_RGBToHSL(rgb);
|
* hsl.z *= 0.1;
|
* rgb = czm_HSLToRGB(hsl);
|
*/
|
|
vec3 hueToRGB(float hue)
|
{
|
float r = abs(hue * 6.0 - 3.0) - 1.0;
|
float g = 2.0 - abs(hue * 6.0 - 2.0);
|
float b = 2.0 - abs(hue * 6.0 - 4.0);
|
return clamp(vec3(r, g, b), 0.0, 1.0);
|
}
|
|
vec3 czm_HSLToRGB(vec3 hsl)
|
{
|
vec3 rgb = hueToRGB(hsl.x);
|
float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y;
|
return (rgb - 0.5) * c + hsl.z;
|
}
|