my mails seem to fall before getting to the list...
I am on OS X 10.4.4 using Flash 8 on a G5 dualcore 2*2ghz

ouch!!!!
WHAT IS THAT ?????

we are in a bad shape ;)
and macromedia is the only one to shed some light on 'hardware acceleration'
is it ??

cedric

uff, Cedric, i got opposite results

blurFilter=shaky and unstable
convultionFilter=svery smooth

can anybody tell me why?



On 1/31/06, Cédric Muller <[EMAIL PROTECTED]> wrote:
???????
blurFilter=very smooth
convultionFilter=shaky and unstable



much better with Convolution filter :)

On 1/31/06, Mike Mountain <[EMAIL PROTECTED]> wrote:
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



--
-------------------------------------------------------------------- -- -------------------------------------------------------------------- --
---------------------
Franto

http://blog.franto.com
http://www.flashcoders.sk
_______________________________________________
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



--
---------------------------------------------------------------------- ---------------------------------------------------------------------- ---------------------
Franto

http://blog.franto.com
http://www.flashcoders.sk
_______________________________________________
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

Reply via email to