GLSL HSV RGB変換
記事とは関係ないけど、Fractal Noiseで遊んでみた動画
というのもHSV変換は絵がないので。
こんばんはこんばんは。muchoです。こんばんは。
以前 ActionScriptでもやったので、全然目新しくないですが、
GLSLでも変換する必要があったので作りました。
[code lang="cpp"]
// vertical Shader
#version 120
vec3 HSVtoRGB(vec3 hsv)
{
vec3 col;
float hue = mod(hsv.r, 360.0);
float s = max(0, min(1, hsv.g));
float v = max(0, min(1, hsv.b));
if(s > 0.0) {
int h = int(floor(hue / 60.0));
float f = hue / 60.0 - float(h);
float p = v * (1.0 - s);
float q = v * (1.0 - f * s);
float r = v * (1.0 - (1.0 - f) * s);
if(h == 0) col = vec3(v, r, p);
else if(h == 1) col = vec3(q, v, p);
else if(h == 2) col = vec3(p, v, r);
else if(h == 3) col = vec3(p, q, v);
else if(h == 4) col = vec3(r, p, v);
else col = vec3(v, p, q);
}else{
col = vec3(v);
}
return col;
}
void main()
{
gl_FragColor.rgb = HSVtoRGB(vec3(gl_TexCoord[0].x * 360.0, gl_TexCoord[0].y, 1.0));
gl_FragColor.a = 1.0;
}
[/code]
こんなかんじで、カラーピッカーもどきなグラデが描画されます。
こういうシンプルなのは今後はWEBGLでブログにアップしたいです。
今後ってのがいつになるやら・・・