diff --git a/renderer/src/gpu/renderer.rs b/renderer/src/gpu/renderer.rs index b32d890e..1901c862 100644 --- a/renderer/src/gpu/renderer.rs +++ b/renderer/src/gpu/renderer.rs @@ -538,18 +538,16 @@ where Some(ColorF::new(1.0, 1.0, 1.0, 1.0)) }; - let textures = vec![self.device.framebuffer_texture(&self.fill_framebuffer)]; - let uniforms = vec![ - (&self.mask_winding_tile_program.mask_texture_uniform, UniformData::TextureUnit(0)), - ]; - self.device.draw_elements(tile_count * 6, &RenderState { target: &RenderTarget::Framebuffer(&self.mask_framebuffer), program: &self.mask_winding_tile_program.program, vertex_array: &self.mask_winding_tile_vertex_array.vertex_array, primitive: Primitive::Triangles, - textures: &textures, - uniforms: &uniforms, + textures: &[self.device.framebuffer_texture(&self.fill_framebuffer)], + uniforms: &[ + (&self.mask_winding_tile_program.mask_texture_uniform, + UniformData::TextureUnit(0)), + ], viewport: self.mask_viewport(), options: RenderOptions { // TODO(pcwalton): MIN blending for masks. diff --git a/resources/shaders/gl3/mask_winding.vs.glsl b/resources/shaders/gl3/mask_winding.vs.glsl index 788b2c73..2bd98862 100644 --- a/resources/shaders/gl3/mask_winding.vs.glsl +++ b/resources/shaders/gl3/mask_winding.vs.glsl @@ -24,6 +24,6 @@ out float vBackdrop; void main(){ 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(mix(vec2(- 1.0, 1.0), vec2(1.0, - 1.0), aPosition), 0.0, 1.0); } diff --git a/resources/shaders/metal/mask_winding.vs.metal b/resources/shaders/metal/mask_winding.vs.metal index 418f997f..6cce4f2f 100644 --- a/resources/shaders/metal/mask_winding.vs.metal +++ b/resources/shaders/metal/mask_winding.vs.metal @@ -23,7 +23,7 @@ vertex main0_out main0(main0_in in [[stage_in]]) main0_out out = {}; out.vMaskTexCoord = in.aMaskTexCoord; out.vBackdrop = float(in.aBackdrop); - out.gl_Position = float4(mix(float2(-1.0), float2(1.0), in.aPosition), 0.0, 1.0); + out.gl_Position = float4(mix(float2(-1.0, 1.0), float2(1.0, -1.0), in.aPosition), 0.0, 1.0); return out; } diff --git a/shaders/mask_winding.vs.glsl b/shaders/mask_winding.vs.glsl index 495df8e1..c757cb1f 100644 --- a/shaders/mask_winding.vs.glsl +++ b/shaders/mask_winding.vs.glsl @@ -22,5 +22,5 @@ out float vBackdrop; void main() { 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(mix(vec2(-1.0, 1.0), vec2(1.0, -1.0), aPosition), 0.0, 1.0); }