supercell-wx/scwx-qt/gl/texture2d_array.vert

48 lines
1.2 KiB
GLSL

#version 330 core
#define DEG2RAD 0.0174532925199432957692369055556f
layout (location = 0) in vec2 aVertex;
layout (location = 1) in vec2 aXYOffset;
layout (location = 2) in vec3 aTexCoord;
layout (location = 3) in vec4 aModulate;
layout (location = 4) in float aAngleDeg;
layout (location = 5) in int aDisplayed;
uniform mat4 uMVPMatrix;
out VertexData
{
int threshold;
vec3 texCoord;
vec4 color;
ivec2 timeRange;
int displayed;
} vsOut;
smooth out vec3 texCoord;
smooth out vec4 color;
void main()
{
// Always set threshold and time range to zero
vsOut.threshold = 0;
vsOut.timeRange = ivec2(0, 0);
// Pass displayed to the geometry shader
vsOut.displayed = aDisplayed;
// Pass the texture coordinate and color modulate to the geometry and
// fragment shaders
vsOut.texCoord = aTexCoord;
vsOut.color = aModulate;
texCoord = aTexCoord;
color = aModulate;
// Rotate clockwise
float angle = aAngleDeg * DEG2RAD;
mat2 rotate = mat2(cos(angle), -sin(angle),
sin(angle), cos(angle));
gl_Position = uMVPMatrix * vec4(aVertex + rotate * aXYOffset, 0.0f, 1.0f);
}