an_editor/shaders/vertex.vert

50 lines
1.7 KiB
GLSL

#version 330 core
uniform uint naga_vs_first_instance;
struct VertexInput {
vec3 position;
vec2 tex_coord;
vec2 atlas_position;
vec2 size;
vec2 target_position;
float y_offset;
uint glyph_id;
};
struct VertexOutput {
vec4 position;
vec2 tex_coord;
};
uniform vec4 screen_size;
layout(location = 0) in vec3 _p2vs_location0;
layout(location = 1) in vec2 _p2vs_location1;
layout(location = 2) in vec2 _p2vs_location2;
layout(location = 3) in vec2 _p2vs_location3;
layout(location = 4) in vec2 _p2vs_location4;
layout(location = 5) in float _p2vs_location5;
smooth out vec2 _vs2fs_location0;
vec4 to_device_position(vec2 position, vec2 size) {
return vec4((((position / size) * 2.0) - vec2(1.0)), 1.0, 1.0);
}
void main() {
VertexInput input_ = VertexInput(_p2vs_location0, _p2vs_location1, _p2vs_location2, _p2vs_location3, _p2vs_location4, _p2vs_location5, (uint(gl_InstanceID) + naga_vs_first_instance));
VertexOutput out_ = VertexOutput(vec4(0.0), vec2(0.0));
vec4 vertex_pos = vec4(0.0);
vec2 atlas_position = vec2(0.0);
vec4 _e28 = to_device_position((((((input_.position.xy + vec2(1.0)) / vec2(2.0)) * (input_.size / vec2(2.0))) + input_.target_position) + vec2(0.0, ((input_.y_offset / 2.0) + 32.0))), screen_size.xy);
vertex_pos = _e28;
atlas_position = (((((input_.position.xy + vec2(1.0)) / vec2(2.0)) * input_.size) + input_.atlas_position) / vec2(1024.0));
vec4 _e47 = vertex_pos;
out_.position = _e47;
vec2 _e49 = atlas_position;
out_.tex_coord = _e49;
VertexOutput _e50 = out_;
gl_Position = _e50.position;
_vs2fs_location0 = _e50.tex_coord;
gl_Position.yz = vec2(-gl_Position.y, gl_Position.z * 2.0 - gl_Position.w);
return;
}