voxel-test/resources/shaders/tiling.vs

40 lines
1.2 KiB
Text
Raw Normal View History

2024-09-19 21:33:32 +01:00
#version 330
in vec3 vertexPosition;
in vec2 vertexTexCoord;
in vec3 vertexNormal;
in vec2 vertexTileTexCoord;
in vec4 vertexMetadata1;
2024-09-19 21:33:32 +01:00
out vec2 fragTexCoord;
out vec3 fragNormal;
out vec2 fragTileTexCoord;
2024-09-19 21:33:32 +01:00
2024-12-23 18:45:07 +00:00
flat out int ambientOcclusionSide1;
flat out int ambientOcclusionSide2;
flat out int ambientOcclusionCorner1;
flat out int ambientOcclusionCorner2;
flat out int ambientOcclusionCorner3;
flat out int quadHeight;
flat out int quadWidth;
2024-09-19 21:33:32 +01:00
uniform mat4 mvp;
void main() {
fragTexCoord = vertexTexCoord;
fragTileTexCoord = vertexTileTexCoord;
fragNormal = vertexNormal;
2024-09-19 21:33:32 +01:00
gl_Position = mvp*vec4(vertexPosition, 1.0);
2024-12-23 18:45:07 +00:00
// metadata 1 parsing
ambientOcclusionSide1 = floatBitsToInt(vertexMetadata1.x);
ambientOcclusionSide2 = floatBitsToInt(vertexMetadata1.y);
int metadata1Z = floatBitsToInt(vertexMetadata1.z);
int metadata1W = floatBitsToInt(vertexMetadata1.w);
ambientOcclusionCorner1 = (metadata1Z & 0x1) >> 0; // Take 0th bit.
ambientOcclusionCorner2 = (metadata1Z & 0x2) >> 1; // Take 1st bit.
ambientOcclusionCorner3 = (metadata1Z & 0x4) >> 2; // Take 2nd bit.
quadHeight = (metadata1Z & 0x1f8) >> 3; // Take 3rd-8th bits.
quadWidth = (metadata1Z & 0x7e00) >> 9; // Take 9th-14th bits.
2024-09-19 21:33:32 +01:00
}