From a8019a1a1a420b73783fc76e6f5a8d8afeb59927 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sat, 15 Feb 2020 18:00:25 -0800 Subject: [PATCH] Fix mask positioning on OpenGL --- resources/shaders/gl3/mask_winding.vs.glsl | 7 ++++++- resources/shaders/metal/mask_winding.vs.metal | 4 +++- shaders/mask_winding.vs.glsl | 7 ++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/resources/shaders/gl3/mask_winding.vs.glsl b/resources/shaders/gl3/mask_winding.vs.glsl index 2bd98862..a254c9b5 100644 --- a/resources/shaders/gl3/mask_winding.vs.glsl +++ b/resources/shaders/gl3/mask_winding.vs.glsl @@ -22,8 +22,13 @@ out vec2 vMaskTexCoord; out float vBackdrop; void main(){ + vec2 position = mix(vec2(- 1.0), vec2(1.0), aPosition); + + + + vMaskTexCoord = aMaskTexCoord; vBackdrop = float(aBackdrop); - gl_Position = vec4(mix(vec2(- 1.0, 1.0), vec2(1.0, - 1.0), aPosition), 0.0, 1.0); + gl_Position = vec4(position, 0.0, 1.0); } diff --git a/resources/shaders/metal/mask_winding.vs.metal b/resources/shaders/metal/mask_winding.vs.metal index 6cce4f2f..acb17a02 100644 --- a/resources/shaders/metal/mask_winding.vs.metal +++ b/resources/shaders/metal/mask_winding.vs.metal @@ -21,9 +21,11 @@ struct main0_in vertex main0_out main0(main0_in in [[stage_in]]) { main0_out out = {}; + float2 position = mix(float2(-1.0), float2(1.0), in.aPosition); + position.y = -position.y; out.vMaskTexCoord = in.aMaskTexCoord; out.vBackdrop = float(in.aBackdrop); - out.gl_Position = float4(mix(float2(-1.0, 1.0), float2(1.0, -1.0), in.aPosition), 0.0, 1.0); + out.gl_Position = float4(position, 0.0, 1.0); return out; } diff --git a/shaders/mask_winding.vs.glsl b/shaders/mask_winding.vs.glsl index c757cb1f..c1e3cd81 100644 --- a/shaders/mask_winding.vs.glsl +++ b/shaders/mask_winding.vs.glsl @@ -20,7 +20,12 @@ out vec2 vMaskTexCoord; out float vBackdrop; void main() { + vec2 position = mix(vec2(-1.0), vec2(1.0), aPosition); +#ifdef PF_ORIGIN_UPPER_LEFT + position.y = -position.y; +#endif + vMaskTexCoord = aMaskTexCoord; vBackdrop = float(aBackdrop); - gl_Position = vec4(mix(vec2(-1.0, 1.0), vec2(1.0, -1.0), aPosition), 0.0, 1.0); + gl_Position = vec4(position, 0.0, 1.0); }