summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/gl_shader_gen.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2016-06-28 07:16:04 +0200
committerYuri Kunde Schlesner <yuriks@yuriks.net>2016-06-28 07:16:04 +0200
commitecf6ecf32537634db15946630d62ac3bdc4fe8c9 (patch)
tree02bf917874b79e350e5f3c29c16599dc869b3d57 /src/video_core/renderer_opengl/gl_shader_gen.cpp
parentPICA: Scissor fixes and cleanups (diff)
downloadyuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.tar
yuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.tar.gz
yuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.tar.bz2
yuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.tar.lz
yuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.tar.xz
yuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.tar.zst
yuzu-ecf6ecf32537634db15946630d62ac3bdc4fe8c9.zip
Diffstat (limited to 'src/video_core/renderer_opengl/gl_shader_gen.cpp')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_gen.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp
index b2e452afe..36513dedc 100644
--- a/src/video_core/renderer_opengl/gl_shader_gen.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp
@@ -554,6 +554,7 @@ struct LightSrc {
};
layout (std140) uniform shader_data {
+ vec2 framebuffer_scale;
int alphatest_ref;
float depth_scale;
float depth_offset;
@@ -595,8 +596,10 @@ vec4 secondary_fragment_color = vec4(0.0);
if (state.scissor_test_mode == Regs::ScissorMode::Include)
out += "!";
// x2,y2 have +1 added to cover the entire pixel area
- out += "(gl_FragCoord.x >= scissor_x1 && gl_FragCoord.x < scissor_x2 + 1 && "
- "gl_FragCoord.y >= scissor_y1 && gl_FragCoord.y < scissor_y2 + 1)) discard;\n";
+ out += "(gl_FragCoord.x >= scissor_x1 * framebuffer_scale.x && "
+ "gl_FragCoord.y >= scissor_y1 * framebuffer_scale.y && "
+ "gl_FragCoord.x < (scissor_x2 + 1) * framebuffer_scale.x && "
+ "gl_FragCoord.y < (scissor_y2 + 1) * framebuffer_scale.y)) discard;\n";
}
out += "float z_over_w = 1.0 - gl_FragCoord.z * 2.0;\n";