aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/video_core/renderer_opengl/gl_shaders.h
diff options
context:
space:
mode:
authorGravatar Kevin Hartman <kevin@hart.mn>2014-08-21 00:27:53 -0700
committerGravatar Kevin Hartman <kevin@hart.mn>2014-08-25 20:56:59 -0700
commitcbfd6b6e52e3b8c1d6324d86461f4e8aa240a756 (patch)
tree31355774610d25174521e88ca7dcebfe5bbfe715 /src/video_core/renderer_opengl/gl_shaders.h
parentaa7472057ae9b56e3f7216931cbb9e927e39a930 (diff)
Rewrite of OpenGL renderer, including OS X support
Screen contents are now displayed using textured quads. This can be updated to expose an FBO once an OpenGL backend for when Pica rendering is being worked on. That FBO's texture can then be applied to the quads. Previously, FBO blitting was used in order to display screen contents, which did not work on OS X. The new textured quad approach is less of a compatibility risk.
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shaders.h')
-rw-r--r--src/video_core/renderer_opengl/gl_shaders.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_shaders.h b/src/video_core/renderer_opengl/gl_shaders.h
new file mode 100644
index 00000000..f84424c4
--- /dev/null
+++ b/src/video_core/renderer_opengl/gl_shaders.h
@@ -0,0 +1,39 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2
+// Refer to the license.txt file included.
+
+#pragma once
+
+namespace GLShaders {
+
+static const char g_vertex_shader[] = R"(
+#version 330 core
+layout(location = 0) in vec3 position;
+layout(location = 1) in vec2 texCoord;
+
+out vec2 UV;
+
+mat3 window_scale = mat3(
+ vec3(1.0, 0.0, 0.0),
+ vec3(0.0, 5.0/6.0, 0.0), // TODO(princesspeachum): replace hard-coded aspect with uniform
+ vec3(0.0, 0.0, 1.0)
+ );
+
+void main() {
+ gl_Position.xyz = window_scale * position;
+ gl_Position.w = 1.0;
+
+ UV = texCoord;
+})";
+
+static const char g_fragment_shader[] = R"(
+#version 330 core
+in vec2 UV;
+out vec3 color;
+uniform sampler2D sampler;
+
+void main() {
+ color = texture(sampler, UV).rgb;
+})";
+
+}