51 lines
1.1 KiB
GLSL
51 lines
1.1 KiB
GLSL
#version 330 core
|
|
|
|
uniform mat4 mWorld;
|
|
uniform mat4 mView;
|
|
uniform mat4 mProjection;
|
|
uniform vec3 vEye;
|
|
|
|
layout (location = 0) in vec3 position;
|
|
layout (location = 1) in vec3 normal;
|
|
|
|
out float zPos;
|
|
out vec3 norm;
|
|
|
|
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 () {
|
|
norm = -normalize(vec3(mProjection*mView*mWorld*vec4(normal, 0)));
|
|
zPos = position.z;
|
|
gl_Position = mProjection*mView*mWorld*vec4(position, 1.0);
|
|
|
|
// vec3 materialColor = hsv_to_rgb(position.z, 1, 1);
|
|
// float brightness = clamp(dot(normalize(normal), normalize(vEye)), 0.4, 0.6);
|
|
// color = materialColor*brightness;
|
|
}
|