classes
FadeDisplacerPV.as
package sk.yoz.displacing
{
import flash.display.BitmapData;
import flash.display.Shader;
import flash.display.ShaderJob;
import flash.utils.ByteArray;
import org.papervision3d.materials.BitmapMaterial;
import sk.yoz.displacing.SimpleDisplacerPV;
public class FadeDisplacerPV extends SimpleDisplacerPV
{
[Embed("FadeDisplacer.pbj", mimeType="application/octet-stream")]
public static const SHADER_CLASS:Class;
public var fade:BitmapData;
public var fadeNear:Number = 0;
public var fadeDistant:Number = 1;
public function FadeDisplacerPV(
viewportWidth:Number, viewportHeight:Number,
image:BitmapData, map:BitmapData, fade:BitmapData,
rotationXMax:Number = 10, rotationYMax:Number = 10,
depth:Number = 10, segmentsW:uint = 20, segmentsH:uint = 20,
fadeNear:Number = 0, fadeDistant:Number = 1)
{
this.fade = fade;
this.fadeNear = fadeNear;
this.fadeDistant = fadeDistant;
super(viewportWidth, viewportHeight, image, map,
rotationXMax, rotationYMax, depth, segmentsW, segmentsH);
}
override protected function get material():BitmapMaterial
{
var w:uint = image.width;
var h:uint = image.height;
var bitmapData:BitmapData = new BitmapData(w, h, true);
var shader:Shader = new Shader(new SHADER_CLASS() as ByteArray);
shader.data.src.input = image;
shader.data.map.input = map;
shader.data.fader.input = fade;
shader.data.dy.value = [0];
shader.data.dx.value = [0];
shader.data.fadeNear.value = [fadeNear];
shader.data.fadeDistant.value = [fadeDistant];
var job:ShaderJob = new ShaderJob(shader, bitmapData, w, h);
job.start(false);
var material:BitmapMaterial = new BitmapMaterial(bitmapData, false);
material.oneSide = true;
material.smooth = true;
return material;
}
}
}