diff options
author | Chris "Koying" Browet <cbro@semperpax.com> | 2015-01-06 17:13:32 +0100 |
---|---|---|
committer | Chris "koying" Browet <cbro@semperpax.com> | 2015-01-20 14:17:08 +0100 |
commit | e4e9f7a74b0f7e5ebf7ccced65778710be8bbd7d (patch) | |
tree | d97713ee5a8fbfaeef15fe46cf6bc42c84fd353e /system/shaders | |
parent | c0ac9c470719d97a5ac6630b94cd70ae9c60ae07 (diff) |
ADD: [gles] BOB deinterlacing
Diffstat (limited to 'system/shaders')
-rw-r--r-- | system/shaders/guishader_frag_rgba_bob.glsl | 47 | ||||
-rw-r--r-- | system/shaders/guishader_frag_rgba_bob_oes.glsl | 49 |
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); +} |