1.0.0 • Published 7 years ago

glsl-y-hsv v1.0.0

Weekly downloads
40
License
MIT
Repository
github
Last release
7 years ago

glsl-y-hsv

The conversions between RGB and HSV for glslify.

originally sources from
https://www.shadertoy.com/view/lsdGzN
https://www.shadertoy.com/view/MsS3Wc
http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl

Usage

NPM

vec3 hsv2rgb(in vec3 hsv)

uniform vec2 resolution;

#pragma glslify: hsv2rgb = require(glsl-y-hsv)
// or 
// #pragma glslify: hsv2rgb = require(glsl-y-hsv/hsv2rgb)

void main(void) {
    vec2 position = (gl_FragCoord.xy / resolution);
    
    vec3 hsv = vec3(position, 1.0);
    vec3 rgb = hsv2rgb(hsv);
    
    gl_FragColor = vec4(rgb, 1.0);
}

vec3 hsv2rgbSmooth(in vec3 hsv)

uniform vec2 resolution;

#pragma glslify: hsv2rgbSmooth = require(glsl-y-hsv/hsv2rgbSmooth)

void main(void) {
    vec2 position = (gl_FragCoord.xy / resolution);
    
    vec3 hsv = vec3(position, 1.0);
    vec3 rgb = hsv2rgbSmooth(hsv);
    
    gl_FragColor = vec4(rgb, 1.0);
}

vec3 rgb2hsv(in vec3 rgb)

uniform vec2 resolution;

#pragma glslify: hsv2rgb = require(glsl-y-hsv/hsv2rgb)
#pragma glslify: rgb2hsv = require(glsl-y-hsv/rgb2hsv)

void main(void) {
    vec2 position = (gl_FragCoord.xy / resolution);
    
    vec3 rgb = vec3(position, 1.0);
    vec3 hsv = rgb2hsv(rgb);
    hsv.x += 90.0/360.0;
    rgb = hsv2rgb(hsv);
    
    gl_FragColor = vec4(rgb, 1.0);
}

vec3 lerpHSV(in vec3 hsv1, in vec3 hsv2, in float rate)

uniform vec2 resolution;
uniform float time;

#pragma glslify: hsv2rgb = require(glsl-y-hsv/hsv2rgb)
#pragma glslify: lerpHSV = require(glsl-y-hsv/lerpHSV)

void main(void) {
    vec2 position = (gl_FragCoord.xy / resolution);
    
    vec3 hsv1 = vec3(position, 1.0);
    vec3 hsv2 = vec3(position, 1.0);
    hsv2.x += 180.0/360.0;
    
    vec3 hsv = lerpHSV(hsv1, hsv2, sin(time) * 0.5 + 0.5);
    vec3 rgb = hsv2rgb(hsv);
	
    gl_FragColor = vec4(rgb, 1.0);
}