summaryrefslogtreecommitdiffstats
path: root/gfx/wr/webrender/res/ps_copy.glsl
blob: b4e43f1556357da5d0440fc61698069aab50ef42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include base

#ifdef WR_VERTEX_SHADER

attribute vec2 aPosition;

// See CopyInstance struct.
attribute vec4 a_src_rect;
attribute vec4 a_dst_rect;
attribute vec2 a_dst_texture_size;

varying highp vec2 v_uv;

void main(void) {
    // We use texel fetch so v_uv is in unnormalized device space.
    v_uv = mix(a_src_rect.xy, a_src_rect.zw, aPosition.xy);

    // Transform into framebuffer [-1, 1] space.
    vec2 pos = mix(a_dst_rect.xy, a_dst_rect.zw, aPosition.xy);
    gl_Position = vec4(pos / (a_dst_texture_size  * 0.5) - vec2(1.0, 1.0), 0.0, 1.0);
}
#endif

#ifdef WR_FRAGMENT_SHADER


out vec4 oFragColor;

varying highp vec2 v_uv;

uniform sampler2D sColor0;

void main(void) {
    oFragColor = texelFetch(sColor0, ivec2(v_uv), 0);
}

#endif