Files
dt/shaders/ImageBox.vert
2026-11-02 19:35:36 -05:00

30 lines
801 B
GLSL

#version 330 core
layout (location = 0) in vec2 aPos;
layout (location = 1) in vec2 aTexCoords;
out vec2 TexCoords;
uniform vec2 screenSize;
uniform vec2 pixelPos;
uniform vec2 pixelScale;
uniform float z;
uniform float rotation;
uniform int uvMode = 0; // 0 = stretch, 1 = tile
uniform vec3 tileScale = vec3(1.0);
uniform vec2 uvOffset = vec2(0.0);
void main()
{
vec2 unitPos = aPos * 0.5 + 0.5;
vec2 pixelPosTopLeft = pixelPos + unitPos * pixelScale;
vec2 ndc = (pixelPosTopLeft / screenSize) * 2.0 - 1.0;
ndc.y = -ndc.y;
gl_Position = vec4(ndc, 0.0f, 1.0f);
// Screen y runs down here, so flip v to keep images the right way up
vec2 uv = vec2(aTexCoords.x, 1.0 - aTexCoords.y);
TexCoords = (uvMode == 1 ? uv * tileScale.xy : uv) + uvOffset;
}