aboutsummaryrefslogtreecommitdiff
path: root/system/shaders
diff options
context:
space:
mode:
authorChris "Koying" Browet <cbro@semperpax.com>2015-01-06 17:13:32 +0100
committerChris "koying" Browet <cbro@semperpax.com>2015-01-20 14:17:08 +0100
commite4e9f7a74b0f7e5ebf7ccced65778710be8bbd7d (patch)
treed97713ee5a8fbfaeef15fe46cf6bc42c84fd353e /system/shaders
parentc0ac9c470719d97a5ac6630b94cd70ae9c60ae07 (diff)
ADD: [gles] BOB deinterlacing
Diffstat (limited to 'system/shaders')
-rw-r--r--system/shaders/guishader_frag_rgba_bob.glsl47
-rw-r--r--system/shaders/guishader_frag_rgba_bob_oes.glsl49
2 files changed, 96 insertions, 0 deletions
diff --git a/system/shaders/guishader_frag_rgba_bob.glsl b/system/shaders/guishader_frag_rgba_bob.glsl
new file mode 100644
index 0000000000..3b02726496
--- /dev/null
+++ b/system/shaders/guishader_frag_rgba_bob.glsl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2010-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+precision highp float;
+uniform sampler2D m_samp0;
+uniform sampler2D m_samp1;
+varying vec4 m_cord0;
+varying vec4 m_cord1;
+varying lowp vec4 m_colour;
+uniform int m_method;
+uniform int m_field;
+uniform float m_step;
+
+void main ()
+{
+ vec2 source;
+ source = m_cord0.xy;
+
+ float temp1 = mod(source.y, 2.0*m_step);
+ float temp2 = source.y - temp1;
+ source.y = temp2 + m_step/2.0 - float(m_field)*m_step;
+
+ // Blend missing line
+ vec2 below;
+ float bstep = step(m_step, temp1);
+ below.x = source.x;
+ below.y = source.y + (2.0*m_step*bstep);
+
+ gl_FragColor = mix(texture2D(m_samp0, source), texture2D(m_samp0, below), 0.5);
+}
diff --git a/system/shaders/guishader_frag_rgba_bob_oes.glsl b/system/shaders/guishader_frag_rgba_bob_oes.glsl
new file mode 100644
index 0000000000..9b7be39744
--- /dev/null
+++ b/system/shaders/guishader_frag_rgba_bob_oes.glsl
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010-2013 Team XBMC
+ * http://xbmc.org
+ *
+ * This Program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This Program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with XBMC; see the file COPYING. If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#extension GL_OES_EGL_image_external : require
+
+precision highp float;
+uniform samplerExternalOES m_samp0;
+uniform samplerExternalOES m_samp1;
+varying vec4 m_cord0;
+varying vec4 m_cord1;
+varying lowp vec4 m_colour;
+uniform int m_method;
+uniform int m_field;
+uniform float m_step;
+
+void main ()
+{
+ vec2 source;
+ source = m_cord0.xy;
+
+ float temp1 = mod(source.y, 2.0*m_step);
+ float temp2 = source.y - temp1;
+ source.y = temp2 + m_step/2.0 - float(m_field)*m_step;
+
+ // Blend missing line
+ vec2 below;
+ float bstep = step(m_step, temp1);
+ below.x = source.x;
+ below.y = source.y + (2.0*m_step*bstep);
+
+ gl_FragColor = mix(texture2D(m_samp0, source), texture2D(m_samp0, below), 0.5);
+}