XYZToRGB.glsl 822 B

123456789101112131415161718192021222324252627282930
  1. /**
  2. * Converts a CIE Yxy color to RGB.
  3. * <p>The conversion is described in
  4. * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform}
  5. * </p>
  6. *
  7. * @name czm_XYZToRGB
  8. * @glslFunction
  9. *
  10. * @param {vec3} Yxy The color in CIE Yxy.
  11. *
  12. * @returns {vec3} The color in RGB.
  13. *
  14. * @example
  15. * vec3 xyz = czm_RGBToXYZ(rgb);
  16. * xyz.x = max(xyz.x - luminanceThreshold, 0.0);
  17. * rgb = czm_XYZToRGB(xyz);
  18. */
  19. vec3 czm_XYZToRGB(vec3 Yxy)
  20. {
  21. const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556,
  22. -1.5371, 1.8760, -0.2040,
  23. -0.4985, 0.0416, 1.0572);
  24. vec3 xyz;
  25. xyz.r = Yxy.r * Yxy.g / Yxy.b;
  26. xyz.g = Yxy.r;
  27. xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b;
  28. return XYZ2RGB * xyz;
  29. }