RGBHSV 转换
2017-10-20 14:30
316 查看
fixed3 RGBtoHSV(fixed3 c)
{
fixed4 K = fixed4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
fixed4 p = lerp(fixed4(c.bg, K.wz), fixed4(c.gb, K.xy), step(c.b, c.g));
fixed4 q = lerp(fixed4(p.xyw, c.r), fixed4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return fixed3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
fixed3 HSVtoRGB(fixed3 c)
{
fixed4 K = fixed4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
fixed3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y);
}
{
fixed4 K = fixed4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
fixed4 p = lerp(fixed4(c.bg, K.wz), fixed4(c.gb, K.xy), step(c.b, c.g));
fixed4 q = lerp(fixed4(p.xyw, c.r), fixed4(c.r, p.yzx), step(p.x, c.r));
float d = q.x - min(q.w, q.y);
float e = 1.0e-10;
return fixed3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
fixed3 HSVtoRGB(fixed3 c)
{
fixed4 K = fixed4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
fixed3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y);
}
相关文章推荐
- RGB空间与HSV空间的相互转换(C++实现,修正网上大多数的代码错误)
- rgb和hsv的互相转换
- 将HSV空间和RGB空间互相转换知识
- Unity中的Shader(HSV,RGB转换)
- 计算机中的颜色IX——总述:RGB和HSV快速转换
- RGB、HSB\HSV、HSL三种颜色空间的原理理解与转换
- RGB和HSV颜色转换
- HSV颜色到RGB的转换C++代码 直接可用
- RGB和HSV区别与互相转换
- 【C#/算法】RGB、HSV、HSL颜色模型的互相转换
- 从 RGB 到 HSL 或 HSV 的转换
- Rgb和Hsv相互转换的方法!
- 【shaderforge学习笔记】 RGB to HSV、HSV to RGB节点(色彩空间转换节点)
- 基于OpenCV的RGB和HSV色彩空间相互转换C++程序
- 颜色模型RGB,HSV颜色模型的数值之间相互转换
- 颜色空间RGB与HSV(HSL)的转换
- » RGB与HSV(HSB)的转换公式 mybeky’s blog
- 颜色空间RGB与HSV(HSL)的转换
- RGB 到HSV转换 摘自wiki百科
- RGB和HSV颜色转换