gltest/shaders/vertex.glsl

44 lines
919 B
GLSL

#version 330 core
uniform mat4 mWorld;
uniform mat4 mView;
uniform mat4 mProjection;
layout (location = 0) in vec3 vp;
layout (location = 1) in vec3 normals;
smooth out vec3 theColor;
vec3 hsv_to_rgb(float h, float s, float v)
{
float c = v * s;
h = mod((h * 6.0), 6.0);
float x = c * (1.0 - abs(mod(h, 2.0) - 1.0));
vec3 color;
if (0.0 <= h && h < 1.0) {
color = vec3(c, x, 0.0);
} else if (1.0 <= h && h < 2.0) {
color = vec3(x, c, 0.0);
} else if (2.0 <= h && h < 3.0) {
color = vec3(0.0, c, x);
} else if (3.0 <= h && h < 4.0) {
color = vec3(0.0, x, c);
} else if (4.0 <= h && h < 5.0) {
color = vec3(x, 0.0, c);
} else if (5.0 <= h && h < 6.0) {
color = vec3(c, 0.0, x);
} else {
color = vec3(0.0, 0.0, 0.0);
}
color.rgb += v - c;
return color;
}
void main () {
gl_Position = mProjection*mView*mWorld*vec4(vp, 1.0);
theColor = hsv_to_rgb(vp.z, 1, 1); //vec3(1.0, 1.0, 1.0);
}