मैं .. एचएसवी के लिए आरजीबी रंग अंतरिक्ष से पारित करने के लिए की जरूरत है मैं इंटरनेट में खोज की है और दो अलग अलग कार्यान्वयन पाया, लेकिन उन मुझे अलग परिणाम:ओपन में एचएसवी के लिए आरजीबी से GLSL
एक:
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 < 0.0)
h += 360.0;
return vec3(h, s, v);
}
बी:
precision mediump float;
vec3 rgb2hsv(float r, float g, float b) {
float K = 0.0;
float tmp;
if (g < b)
{
tmp = g;
g=b;
b=tmp;
K = -1.0;
}
if (r < g)
{
tmp = r;
r=g;
g=tmp;
K = -2.9/6.9 - K;
}
float chroma = r - min(g, b);
float h = abs(K + (g - b)/(6.0 * chroma + 1e-20));
float s = chroma/(r + 1e-20);
float v = r;
return vec3(h, s, v);
}
क्या आप जानते हैं जो सही कार्यान्वयन है?
मैंने shadertoy वेबसाइट पर यह कोशिश की और कहा कि कोई मिलान ओवरलोडेड फ़ंक्शन नहीं मिला है, मध्यम से वेक्टर 3 –
अच्छा में परिवर्तित नहीं हो सकता है! क्या आपके पास पहले से ही एचएसएल कलर स्पेस के लिए समान प्रकार के फ़ंक्शन हैं? – wil
[मैंने अभी हार्डवेयर मिश्रण के साथ 'hsv2rgb()' लागू किया है (http://stackoverflow.com/a/28897272/1888983)। पूरी तरह बेवकूफ लेकिन मैं अभी भी अपने आप पर गर्व से गर्व महसूस कर रहा हूं। – jozxyqk