Difference between revisions of "User:Lerc/Blur"
From CodeStuff
| Line 1: | Line 1: | ||
<edcode> | <edcode> | ||
| + | |||
var imageSize = 256; | var imageSize = 256; | ||
| Line 21: | Line 22: | ||
} | } | ||
} | } | ||
| + | |||
function mix(source,dest) { | function mix(source,dest) { | ||
| − | + | function readPixel(x,y) { | |
| + | if ( (x<0) || (y<0) || (x>=bufferWidth) || (y>=bufferHeight) ) return {r:0,g:0,b:0,a:0.0} | ||
| + | |||
| + | var i =(y*bufferWidth+x)*4; | ||
| + | var result = {r:source[i++],g:source[i++],b:source[i++],a:source[i++]/255.0}; | ||
| + | return result; | ||
| + | } | ||
| + | |||
for (var ty=0;ty<bufferHeight;ty++) { | for (var ty=0;ty<bufferHeight;ty++) { | ||
for (var tx=0;tx<bufferWidth;tx++) { | for (var tx=0;tx<bufferWidth;tx++) { | ||
| − | + | var up = readPixel(tx,ty-1); | |
| − | + | var down = readPixel(tx,ty+1); | |
| − | dest[i++]= | + | var left = readPixel(tx-1,ty); |
| − | dest[i++]= | + | var right = readPixel(tx-1,ty); |
| − | + | var here = readPixel(tx,ty); | |
| + | var alphasum = up.a+down.a+left.a+right.a+here.a; | ||
| + | |||
| + | var red = (up.r*up.a + down.r*down.a +left.r*left.a + right.r*right.a + here.r*here.a)/alphasum; | ||
| + | var green = (up.g*up.a + down.g*down.a +left.g*left.a + right.g*right.a + here.g*here.a)/alphasum; | ||
| + | var blue = (up.b*up.a + down.b*down.a +left.b*left.a + right.b*right.a + here.b*here.a)/alphasum; | ||
| + | var i =(ty*bufferWidth+tx)*4; | ||
| + | |||
| + | dest[i++]=red; | ||
| + | dest[i++]=green; | ||
| + | dest[i++]=blue; | ||
| + | dest[i++]=(alphasum==0)?0:255;; | ||
} | } | ||
} | } | ||
| Line 39: | Line 59: | ||
drawImageData(0,0,bufferWidth,bufferHeight,a); | drawImageData(0,0,bufferWidth,bufferHeight,a); | ||
print("wibble"); | print("wibble"); | ||
| − | mix(a,b); | + | |
| + | for (var i=0; i<30; i++) { | ||
| + | mix(a,b); | ||
| + | mix(b,a); | ||
| + | } | ||
drawImageData(0,0,bufferWidth,bufferHeight,b); | drawImageData(0,0,bufferWidth,bufferHeight,b); | ||
| + | |||
| + | |||
</edcode> | </edcode> | ||