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でブログにアップしたいです。
今後ってのがいつになるやら・・・