OK you'll need a movie 768x768 - copy this code on to frame 1 etc. with blur filter:
[/as] import flash.filters.*; import flash.geom.*; import flash.display.*; // //import flash.display.Bitmap; var width:Number = 768; var height:Number = 768; var offScreen1:BitmapData = new BitmapData(width, height, false, 0); var onScreen:BitmapData = new BitmapData(width, height, false, 0); var zeroPoint:Point = new Point(0, 0); var clip:MovieClip = createEmptyMovieClip("clip", 1); clip._x = 0; clip._y = 0; clip.attachBitmap(onScreen, 1); // wire the bitmap to the screen function RGBtoHEX(r, g, b) { return (r << 16 | g << 8 | b); } function spectre(angle) { r = (180-angle)/180*Math.PI; var c_r = Math.sin(r++)*127+128 << 16; var c_g = Math.sin(r)*127+128 << 8; var c_b = Math.cos(r--)*127+128; return (c_r | c_g | c_b); } var filterArray = new Array(); //var filter:GlowFilter = new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout); //filterArray.push(filter); var blurX = 20; var blurY = 20; var quality = 2; var filter = new BlurFilter(blurX, blurY, quality); filterArray.push(filter); // var plug = _root.createEmptyMovieClip('plug', 10); plug._y = 200; plug._x = 200; createEmptyMovieClip('canvas', 200); t = 0; numsegs = 15; segmentLength = 6; drawCord = function () { t += 2; lw = Math.sin(t)*100; //trace(lw); a = 100; //trace(a) canvas.clear(); var col = spectre(t); canvas.lineStyle(1, col, a); canvas.moveTo(plug._x, plug._y); points[0] = new Object(); points[0].x = plug._x; points[0].y = plug._y; var v1 = 1; while (v1<points.length-1) { v4 = Math.atan2(points[v1].y-points[v1-1].y, points[v1].x-points[v1-1].x); v3 = points[v1-1].x+(segmentLength)*Math.cos(v4)*2; v2 = points[v1-1].y+(segmentLength)*Math.sin(v4)*2; points[v1].x = v3; points[v1].y = v2; canvas.lineStyle((points.length-v1)/2, col); canvas.lineTo(v3, v2); ++v1; } //(points.length-v1)/2 }; var points = new Array(); var i = 0; while (i<numsegs) { points[i] = new Object(); points[i].x=5*i, points[i].y=Math.sin(i/20); ++i; } //drawCord(); plug.xVel = 10+Math.random()*10; plug.yVel = 10+Math.random()*10; plug.xmax = Stage.width; plug.xmin = 0; plug.ymax = Stage.height; plug.ymin = 0; /* var matrixX:Number = 3; var matrixY:Number = 3; var matrix:Array = [1, 1, 1, 0, 0, 0, 0, 1, 0]; var divisor:Number = 4; */ //var sfilter:ConvolutionFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor); var blurX = 10; var blurY = 10; var quality = 2; var sfilter = new BlurFilter(blurX, blurY, quality); // myMatrix = new Matrix(); translateMatrix = new Matrix(); degrees = 180; radians = (degrees/180)*Math.PI; myMatrix.rotate(radians); translateMatrix.translate(768, 768); myMatrix.concat(translateMatrix); myColorTransform = new ColorTransform(); blendMode = "normal"; myRectangle = new Rectangle(0, 0, 768, 768); smooth = true; // sfilter = new BlurFilter(5, 5, 1); plug.onEnterFrame = function() { rolldie = Math.random()*100; if (rolldie>97) { this.xVel = -10+Math.random()*20; this.yVel = -10+Math.random()*20; } canvas.filters = filterArray; drawCord(); copyStage(); var nextX = this.xVel+this._x; var nextY = this.yVel+this._y; if (nextX>this.xmax) { this.xVel = (this.xVel+Math.random()*10)*-1; nextX = this.xmax-(nextX-this.xmax); } else if (nextX<this.xmin) { this.xVel = (this.xVel+Math.random()*10)*-1; nextX = this.xmin+(this.xmin-nextX); } if (nextY>this.ymax) { this.yVel = (this.yVel+Math.random()*10)*-1; nextY = this.ymax-(nextY-this.ymax); } else if (nextY<this.ymin) { this.yVel = (this.yVel+Math.random()*10)*-1; nextY = this.ymin+(this.ymin-nextY); } this._x = nextX; this._y = nextY; onScreen.copyPixels(offScreen1, offScreen1.rectangle, zeroPoint); onScreen.applyFilter(offScreen1, offScreen1.rectangle, new Point(0, 0), sfilter); offScreen1.draw(_root, myMatrix, myColorTransform, blendMode, myRectangle, smooth); }; [/as] With convolution filter: [as] import flash.filters.*; import flash.geom.*; import flash.display.*; // //import flash.display.Bitmap; var width:Number = 768; var height:Number = 768; var offScreen1:BitmapData = new BitmapData(width, height, false, 0); var onScreen:BitmapData = new BitmapData(width, height, false, 0); var zeroPoint:Point = new Point(0, 0); var clip:MovieClip = createEmptyMovieClip("clip", 1); clip._x = 0; clip._y = 0; clip.attachBitmap(onScreen, 1); // wire the bitmap to the screen function RGBtoHEX(r, g, b) { return (r << 16 | g << 8 | b); } function spectre(angle) { r = (180-angle)/180*Math.PI; var c_r = Math.sin(r++)*127+128 << 16; var c_g = Math.sin(r)*127+128 << 8; var c_b = Math.cos(r--)*127+128; return (c_r | c_g | c_b); } var filterArray = new Array(); //var filter:GlowFilter = new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout); //filterArray.push(filter); var blurX = 20; var blurY = 20; var quality = 2; var filter = new BlurFilter(blurX, blurY, quality); filterArray.push(filter); // var plug = _root.createEmptyMovieClip('plug', 10); plug._y = 200; plug._x = 200; createEmptyMovieClip('canvas', 200); t = 0; numsegs = 15; segmentLength = 6; drawCord = function () { t += 2; lw = Math.sin(t)*100; //trace(lw); a = 100; //trace(a) canvas.clear(); var col = spectre(t); canvas.lineStyle(1, col, a); canvas.moveTo(plug._x, plug._y); points[0] = new Object(); points[0].x = plug._x; points[0].y = plug._y; var v1 = 1; while (v1<points.length-1) { v4 = Math.atan2(points[v1].y-points[v1-1].y, points[v1].x-points[v1-1].x); v3 = points[v1-1].x+(segmentLength)*Math.cos(v4)*2; v2 = points[v1-1].y+(segmentLength)*Math.sin(v4)*2; points[v1].x = v3; points[v1].y = v2; canvas.lineStyle((points.length-v1)/2, col); canvas.lineTo(v3, v2); ++v1; } //(points.length-v1)/2 }; var points = new Array(); var i = 0; while (i<numsegs) { points[i] = new Object(); points[i].x=5*i, points[i].y=Math.sin(i/20); ++i; } //drawCord(); plug.xVel = 10+Math.random()*10; plug.yVel = 10+Math.random()*10; plug.xmax = Stage.width; plug.xmin = 0; plug.ymax = Stage.height; plug.ymin = 0; var matrixX:Number = 3; var matrixY:Number = 3; var matrix:Array = [1, 1, 1, 0, 0, 0, 0, 1, 0]; var divisor:Number = 4; var sfilter:ConvolutionFilter = new ConvolutionFilter(matrixX, matrixY, matrix, divisor); /* var blurX = 10; var blurY = 10; var quality = 2; var sfilter = new BlurFilter(blurX, blurY, quality); */ // myMatrix = new Matrix(); translateMatrix = new Matrix(); degrees = 180; radians = (degrees/180)*Math.PI; myMatrix.rotate(radians); translateMatrix.translate(768, 768); myMatrix.concat(translateMatrix); myColorTransform = new ColorTransform(); blendMode = "normal"; myRectangle = new Rectangle(0, 0, 768, 768); smooth = true; // sfilter = new BlurFilter(5, 5, 1); plug.onEnterFrame = function() { rolldie = Math.random()*100; if (rolldie>97) { this.xVel = -10+Math.random()*20; this.yVel = -10+Math.random()*20; } canvas.filters = filterArray; drawCord(); copyStage(); var nextX = this.xVel+this._x; var nextY = this.yVel+this._y; if (nextX>this.xmax) { this.xVel = (this.xVel+Math.random()*10)*-1; nextX = this.xmax-(nextX-this.xmax); } else if (nextX<this.xmin) { this.xVel = (this.xVel+Math.random()*10)*-1; nextX = this.xmin+(this.xmin-nextX); } if (nextY>this.ymax) { this.yVel = (this.yVel+Math.random()*10)*-1; nextY = this.ymax-(nextY-this.ymax); } else if (nextY<this.ymin) { this.yVel = (this.yVel+Math.random()*10)*-1; nextY = this.ymin+(this.ymin-nextY); } this._x = nextX; this._y = nextY; onScreen.copyPixels(offScreen1, offScreen1.rectangle, zeroPoint); onScreen.applyFilter(offScreen1, offScreen1.rectangle, new Point(0, 0), sfilter); offScreen1.draw(_root, myMatrix, myColorTransform, blendMode, myRectangle, smooth); }; [/as] Although it may be something to do with the application of the filter.... Scuse the dodgy code - WIP. M > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf > Of Mike Duguid > Sent: 30 January 2006 22:44 > To: Flashcoders mailing list > Subject: Re: [Flashcoders] ConvolutionFilter performance > > Mike, do you have an example of this? My current test shows > the opposite - that convolution is proving more cpu intensive > than blurfilter? > > > > Mike Mountain <[EMAIL PROTECTED]> wrote: > > In my tests convolution filter was much faster than a blurfilter. > > But it's an easy one to swap oout and test for yourself... > > > > Andreas Rønning <[EMAIL PROTECTED]> wrote: > > Does anyone know which is faster; a blurring one-pass convolution > > filter or a blurfilter? Or are they just 2 sides to the > same story? I > > need a high performance blur operation for depth of field.. > > > > Cheers, > > > > - Andreas > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders