function DisplacementFilter(dudvMap, distance) {
		this.Filter_constructor();

		if (!createjs.Filter.isValidImageSource(dudvMap)) {
			throw "Must provide valid image source for displacement map, see Filter.isValidImageSource";
		}

		// public properties:
		/**
		 * The visual source to fetch the displacement map from.
		 * @property dudvMap
		 * @type {Image|HTMLCanvasElement}
		 **/
		this.dudvMap = dudvMap;

		/**
		 * The absolute value of the maximum shift in x/y possible.
		 * @property distance
		 * @default 128
		 * @type {Image|HTMLCanvasElement}
		 **/
		this.distance = Number(distance);
		if(isNaN(this.distance)) { this.distance = 128; }

		/**
		 * This is a template to generate the shader for {{#crossLink FRAG_SHADER_BODY}}{{/crossLink}}
		 */
		this.FRAG_SHADER_BODY = (
			"uniform sampler2D uDudvSampler;"+
			"uniform float fPower;" +
			"uniform vec2 pixelAdjustment;" +

			"void main(void) {" +
				"vec4 dudvValue = texture2D(uDudvSampler, vTextureCoord);" +
				"vec2 sampleOffset = mix(vec2(0.0), dudvValue.rg-0.5, dudvValue.a) * (fPower*pixelAdjustment);" +
				"gl_FragColor = texture2D(uSampler, vTextureCoord + sampleOffset);" +
			"}"
		);

		if(dudvMap instanceof WebGLTexture) {
			this._mapTexture = dudvMap;
		} else if (dudvMap instanceof HTMLCanvasElement) {
			this._dudvCanvas = dudvMap;
			this._dudvCtx = dudvMap.getContext("2d");
		} else {
			var canvas = this._dudvCanvas = createjs.createCanvas ? createjs.createCanvas() : document.createElement("canvas");
			canvas.width = dudvMap.width;
			canvas.height = dudvMap.height;
			(this._dudvCtx = canvas.getContext("2d")).drawImage(dudvMap, 0,0);
		}
	}
Distorts portions of the image, creates effects like computer glitches, bulge/pinch, and pond ripples. This filter
Uses a reference image/canvas and interprets its r/g channels as a displacement map. A displacement map species
how far from the original pixel the output pixel should be taken from.

Painting a displacement map means understanding how the r/g channel are interpreted. The red channel changes
how far in the x to sample, and the green changes how far in the y to sample. The maximum range is -distance to
+distance ('distance' being the distance value on the filter instance). This maps to the 0-255 color space for
each channel. This means that for an image to experience no change it should be painted #808000 as that is in the
middle for both the x and the y displacements.
<ul>
    <li>Red values smaller than 0x80 sample from further left, and larger than 0x80 sample form further right.</li>
    <li>Green values smaller than 0x80 sample from higher up, and larger than 0x80 sample form lower down.</li>
</ul>
The output vs input can take some getting used to so experiment! As a tip: when painting to a canvas that
will act as displacement map, consider using the blend mode of "overlay" or "softlight". These blend modes
will preserve mid tones (no displacement) while still mixing the high and low values as you might need per channel.

See {{#crossLink "Filter"}}{{/crossLink}} for an more information on applying filters.
@class DisplacementFilter
@extends Filter
@constructor
@param {HTMLImageElement|HTMLCanvasElement|WebGLTexture} dudvMap The horizontal blur radius in pixels.
@param {Number} [distance=0] The absolute value of the maximum possible displacement from the original pixel.