classes
AnaglyphDisplacer.as
package sk.yoz.displacing
{
import flash.display.BitmapData;
import flash.display.Shader;
import flash.filters.ShaderFilter;
import flash.utils.ByteArray;
public class AnaglyphDisplacer extends ShaderDisplacer
{
[Embed("AnaglyphDisplacer.pbj", mimeType="application/octet-stream")]
public static const SHADER_CLASS:Class;
protected var maxDistanceX:Number = 10;
protected var maxDistanceY:Number = 0;
protected var zBase:Number = 0.5;
protected var matrixLeft:Array =
[0.0, 0.0, 0.0, 0.7, 0.0, 0.0, 0.3, 0.0, 0.0];
protected var matrixRight:Array =
[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0];
public function AnaglyphDisplacer(image:BitmapData, map:BitmapData,
rotationXMax:Number = 10, rotationYMax:Number = 10,
rotationXMultiplier:Number = 1, rotationYMultiplier:Number = 1,
maxDistanceX:Number = 10, maxDistanceY:Number = 0, zBase:Number = 0.5,
matrixLeft:Array = null, matrixRight:Array = null)
{
super(image, map, rotationXMax, rotationYMax, rotationXMultiplier,
rotationYMultiplier);
this.maxDistanceX = maxDistanceX;
this.maxDistanceY = maxDistanceY;
this.zBase = zBase;
this.matrixLeft = matrixLeft || this.matrixLeft;
this.matrixRight = matrixRight || this.matrixRight;
shader = new Shader(new SHADER_CLASS() as ByteArray);
shader.data.srcWidth.value = [image.width];
shader.data.srcHeight.value = [image.height];
shader.data.map.input = map;
shader.data.zBase.value = [zBase];
shader.data.matrixLeft.value = this.matrixLeft
shader.data.matrixRight.value = this.matrixRight;
filter = new ShaderFilter(shader);
}
override public function set rotX(value:Number):void
{
super.rotX = value;
shader.data.dy.value = [maxDistanceY];
}
override public function set rotY(value:Number):void
{
super.rotY = value;
shader.data.dx.value = [maxDistanceX];
}
}
}