36 lines
No EOL
821 B
GLSL
36 lines
No EOL
821 B
GLSL
#version 450
|
|
|
|
layout(location = 0) in vec2 inPos;
|
|
layout(location = 1) in vec2 inUV;
|
|
|
|
layout(location = 0) out vec2 outUV;
|
|
|
|
|
|
layout(push_constant) uniform pc {
|
|
vec2 modelSize;
|
|
vec2 position;
|
|
vec2 screenSize;
|
|
float zAmount;
|
|
} push_constants;
|
|
|
|
layout(set = 0, binding = 0) uniform ViewUniform{
|
|
vec2 camPos;
|
|
vec2 camScale;
|
|
} viewUniform;
|
|
|
|
|
|
void main() {
|
|
vec2 ScaledPos = inPos * push_constants.modelSize;
|
|
vec2 worldPos = push_constants.position + ScaledPos;
|
|
worldPos += (viewUniform.camPos * push_constants.zAmount);
|
|
vec2 ndc = vec2(
|
|
(worldPos.x / push_constants.screenSize.x) * 2.0 - 1.0,
|
|
(worldPos.y / push_constants.screenSize.y) * 2.0 - 1.0
|
|
);
|
|
|
|
ndc.y = -ndc.y;
|
|
|
|
|
|
gl_Position = vec4(ndc * viewUniform.camScale, 0.0, 1.0);
|
|
outUV = vec2(inUV.x, 1 - inUV.y);
|
|
} |