HSBToRGB.glsl 651 B

123456789101112131415161718192021222324
  1. /**
  2. * Converts an HSB color (hue, saturation, brightness) to RGB
  3. * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl}
  4. *
  5. * @name czm_HSBToRGB
  6. * @glslFunction
  7. *
  8. * @param {vec3} hsb The color in HSB.
  9. *
  10. * @returns {vec3} The color in RGB.
  11. *
  12. * @example
  13. * vec3 hsb = czm_RGBToHSB(rgb);
  14. * hsb.z *= 0.1;
  15. * rgb = czm_HSBToRGB(hsb);
  16. */
  17. const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
  18. vec3 czm_HSBToRGB(vec3 hsb)
  19. {
  20. vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www);
  21. return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y);
  22. }