HSLToRGB.glsl 714 B

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * Converts an HSL color (hue, saturation, lightness) to RGB
  3. * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html}
  4. *
  5. * @name czm_HSLToRGB
  6. * @glslFunction
  7. *
  8. * @param {vec3} rgb The color in HSL.
  9. *
  10. * @returns {vec3} The color in RGB.
  11. *
  12. * @example
  13. * vec3 hsl = czm_RGBToHSL(rgb);
  14. * hsl.z *= 0.1;
  15. * rgb = czm_HSLToRGB(hsl);
  16. */
  17. vec3 hueToRGB(float hue)
  18. {
  19. float r = abs(hue * 6.0 - 3.0) - 1.0;
  20. float g = 2.0 - abs(hue * 6.0 - 2.0);
  21. float b = 2.0 - abs(hue * 6.0 - 4.0);
  22. return clamp(vec3(r, g, b), 0.0, 1.0);
  23. }
  24. vec3 czm_HSLToRGB(vec3 hsl)
  25. {
  26. vec3 rgb = hueToRGB(hsl.x);
  27. float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y;
  28. return (rgb - 0.5) * c + hsl.z;
  29. }