20 lines
723 B
GLSL
20 lines
723 B
GLSL
#version 330 core
|
|
layout (location = 0) in vec3 pos;
|
|
layout (location = 1) in vec2 texCoord;
|
|
layout (location = 2) in uint light; // first 16 bits are RGBA (4 bits each) light, last 2 bits are the vertex AO
|
|
|
|
out vec2 passTexCoord;
|
|
out vec3 passLight;
|
|
out float passAO;
|
|
|
|
uniform mat4 model;
|
|
uniform mat4 view;
|
|
uniform mat4 projection;
|
|
|
|
void main() {
|
|
gl_Position = projection * view * model * vec4(pos, 1.0f);
|
|
passTexCoord = vec2(texCoord.x, 1.0f - texCoord.y);
|
|
float intensity = (light & 0xFu) / 15.0f;
|
|
passLight = vec3(((light >> 12u) & 0xFu) / 15.0f * intensity, ((light >> 8u) & 0xFu) / 15.0f * intensity, ((light >> 4u) & 0xFu) / 15.0f * intensity);
|
|
passAO = 1.0f - (((light >> 30u) & 3u) / 3.0f);
|
|
}
|