瀏覽代碼

color: conversions from CIE XYZ to CIE L*a*b*.

legacy
Sam Hocevar sam 12 年之前
父節點
當前提交
461b02a9b3
共有 1 個文件被更改,包括 29 次插入0 次删除
  1. +29
    -0
      src/lol/image/color.h

+ 29
- 0
src/lol/image/color.h 查看文件

@@ -96,6 +96,35 @@ public:
{
return vec4(CIEXYZToLinearRGB(c.rgb), c.a);
}

/*
* Convert CIE XYZ to CIE L*a*b*
*/
static vec3 CIEXYZToCIELab(vec3 col)
{
using std::pow;

float const a = 8.85645167903563081e-3; /* (6/29)^3 */
float const b = 7.78703703703703703; /* 1/3 (29/6)^2 */
float const c = 1.37931034482758620e-1; /* 4/29 */

vec3 f = b * col + vec3(c);
if (col.x > a)
f.x = pow(col.x, 1.0 / 3.0);
if (col.y > a)
f.y = pow(col.y, 1.0 / 3.0);
if (col.z > a)
f.z = pow(col.z, 1.0 / 3.0);

return vec3(116.0 * f.y - 16.0,
500.0 * (f.x - f.y),
200.0 * (f.y - f.z));
}

static vec4 CIEXYZToCIELab(vec4 c)
{
return vec4(CIEXYZToLinearRGB(c.rgb), c.a);
}
};

} /* namespace lol */


Loading…
取消
儲存