VoxelEngine2/shaders/rt_quad.vert
2025-02-28 14:06:20 +01:00

41 lines
No EOL
1.1 KiB
GLSL

#version 450
layout(binding = 0) uniform UniformBufferObject {
mat4 model;
mat4 geom_rot;
mat4 view;
mat4 proj;
vec3 camera_pos;
bool[16] use_geom_shader;
} ubo;
layout(location = 0) in vec3 inPosition;
layout(location = 1) in uvec2 inRasterPos;
layout(location = 2) in uint inVolumeStart;
layout(location = 3) in uint inFacing;
layout(location = 4) in uvec2 inMinRasterPos;
layout(location = 5) in uvec2 inMaxRasterPos;
layout(location = 0) out vec2 rasterPos;
layout(location = 1) flat out uint volumeStart;
layout(location = 2) out vec3 origPosition;
layout(location = 3) flat out uint facing;
layout(location = 4) flat out uvec2 minRasterPos;
layout(location = 5) flat out uvec2 maxRasterPos;
void main() {
if (ubo.use_geom_shader[0]) {
gl_Position = ubo.geom_rot * ubo.model * vec4(inPosition, 1.0);
} else {
gl_Position = ubo.proj * ubo.view * ubo.geom_rot * ubo.model * vec4(inPosition, 1.0);
}
rasterPos = inRasterPos;
volumeStart = inVolumeStart;
origPosition = inPosition;
facing = inFacing;
minRasterPos = inMinRasterPos;
maxRasterPos = inMaxRasterPos;
}