41 lines
958 B
GLSL
41 lines
958 B
GLSL
/* 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
|