50 lines
1.7 KiB
GLSL
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;
|
|
}
|
|
|