diff options
author | bobo1on1 <bobo1on1@svn> | 2010-02-10 19:59:17 +0000 |
---|---|---|
committer | bobo1on1 <bobo1on1@svn> | 2010-02-10 19:59:17 +0000 |
commit | d7cfed93c587a0c76191f79a9cd25e8bb7ef2100 (patch) | |
tree | 6975893bd2565b8f79dffb117efff2108de34589 /system/shaders/convolution-6x6.glsl | |
parent | 1807ae7c1e8c784ccecb180d792ec43ff5d06540 (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.glsl | 9 |
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; |