aboutsummaryrefslogtreecommitdiff
path: root/system/shaders/convolution-6x6.glsl
diff options
context:
space:
mode:
authorbobo1on1 <bobo1on1@svn>2010-02-10 19:59:17 +0000
committerbobo1on1 <bobo1on1@svn>2010-02-10 19:59:17 +0000
commitd7cfed93c587a0c76191f79a9cd25e8bb7ef2100 (patch)
tree6975893bd2565b8f79dffb117efff2108de34589 /system/shaders/convolution-6x6.glsl
parent1807ae7c1e8c784ccecb180d792ec43ff5d06540 (diff)
fixed: make sure all taps added together is exactly 1.0, otherwise some distortion can occur, this lowers performance by less than one percent
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@27628 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
Diffstat (limited to 'system/shaders/convolution-6x6.glsl')
-rw-r--r--system/shaders/convolution-6x6.glsl9
1 files changed, 9 insertions, 0 deletions
diff --git a/system/shaders/convolution-6x6.glsl b/system/shaders/convolution-6x6.glsl
index f97121fc4e..e3937f6802 100644
--- a/system/shaders/convolution-6x6.glsl
+++ b/system/shaders/convolution-6x6.glsl
@@ -5,6 +5,7 @@ uniform float stepy;
//nvidia's half is a 16 bit float and can bring some speed improvements
//without affecting quality
#ifndef __GLSL_CG_DATA_TYPES
+ #define half float
#define half3 vec3
#define half4 vec4
#endif
@@ -52,6 +53,14 @@ void main()
half3 columntaps1 = weight((1.0 - yf) / 2.0);
half3 columntaps2 = weight((1.0 - yf) / 2.0 + 0.5);
+ //make sure all taps added together is exactly 1.0, otherwise some (very small) distortion can occur
+ half sum = linetaps1.r + linetaps1.g + linetaps1.b + linetaps2.r + linetaps2.g + linetaps2.b;
+ linetaps1 /= sum;
+ linetaps2 /= sum;
+ sum = columntaps1.r + columntaps1.g + columntaps1.b + columntaps2.r + columntaps2.g + columntaps2.b;
+ columntaps1 /= sum;
+ columntaps2 /= sum;
+
float xstart = (-1.5 - xf) * stepx + gl_TexCoord[0].x;
vec3 xpos1 = vec3(xstart, xstart + stepx, xstart + stepx * 2.0);
xstart += stepx * 3.0;