summaryrefslogtreecommitdiffstats
path: root/gfx/wr/webrender/res/ps_copy.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/wr/webrender/res/ps_copy.glsl')
-rw-r--r--gfx/wr/webrender/res/ps_copy.glsl41
1 files changed, 41 insertions, 0 deletions
diff --git a/gfx/wr/webrender/res/ps_copy.glsl b/gfx/wr/webrender/res/ps_copy.glsl
new file mode 100644
index 0000000000..b4e43f1556
--- /dev/null
+++ b/gfx/wr/webrender/res/ps_copy.glsl
@@ -0,0 +1,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