I need to pass from RGB color space to HSV .. I searched in internet and found two different implementations, but those give me different results:
A:
precision mediump float; vec3 rgb2hsv(float r, float g, float b) { float h = 0.0; float s = 0.0; float v = 0.0; float min = min( min(r, g), b ); float max = max( max(r, g), b ); v = max; // v float delta = max - min; if( max != 0.0 ) s = delta / max; // s else { // r = g = b = 0 // s = 0, v is undefined s = 0.0; h = -1.0; return vec3(h, s, v); } if( r == max ) h = ( g - b ) / delta; // between yellow & magenta else if( g == max ) h = 2.0 + ( b - r ) / delta; // between cyan & yellow else h = 4.0 + ( r - g ) / delta; // between magenta & cyan h = h * 60.0; // degrees if( h
B:
precision mediump float; vec3 rgb2hsv(float r, float g, float b) { float K = 0.0; float tmp; if (g
Do you know which is the correct implementation?