diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-08-24 02:28:15 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-08-24 02:37:20 +0200 |
commit | 91df2beee394afc17f379511007a7b26b911278f (patch) | |
tree | 2e6889d84dc52af54f81ebafaf089620c25503eb /src/video_core/host_shaders/opengl_present.vert | |
parent | gl_shader_util: Use std::string_view instead of star pointer (diff) | |
download | yuzu-91df2beee394afc17f379511007a7b26b911278f.tar yuzu-91df2beee394afc17f379511007a7b26b911278f.tar.gz yuzu-91df2beee394afc17f379511007a7b26b911278f.tar.bz2 yuzu-91df2beee394afc17f379511007a7b26b911278f.tar.lz yuzu-91df2beee394afc17f379511007a7b26b911278f.tar.xz yuzu-91df2beee394afc17f379511007a7b26b911278f.tar.zst yuzu-91df2beee394afc17f379511007a7b26b911278f.zip |
Diffstat (limited to 'src/video_core/host_shaders/opengl_present.vert')
-rw-r--r-- | src/video_core/host_shaders/opengl_present.vert | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/video_core/host_shaders/opengl_present.vert b/src/video_core/host_shaders/opengl_present.vert new file mode 100644 index 000000000..2235d31a4 --- /dev/null +++ b/src/video_core/host_shaders/opengl_present.vert @@ -0,0 +1,24 @@ +#version 430 core + +out gl_PerVertex { + vec4 gl_Position; +}; + +layout (location = 0) in vec2 vert_position; +layout (location = 1) in vec2 vert_tex_coord; +layout (location = 0) out vec2 frag_tex_coord; + +// This is a truncated 3x3 matrix for 2D transformations: +// The upper-left 2x2 submatrix performs scaling/rotation/mirroring. +// The third column performs translation. +// The third row could be used for projection, which we don't need in 2D. It hence is assumed to +// implicitly be [0, 0, 1] +layout (location = 0) uniform mat3x2 modelview_matrix; + +void main() { + // Multiply input position by the rotscale part of the matrix and then manually translate by + // the last column. This is equivalent to using a full 3x3 matrix and expanding the vector + // to `vec3(vert_position.xy, 1.0)` + gl_Position = vec4(mat2(modelview_matrix) * vert_position + modelview_matrix[2], 0.0, 1.0); + frag_tex_coord = vert_tex_coord; +} |