function AberrationFilter(xDir, yDir, redMultiplier, greenMultiplier, blueMultiplier, originalMix, alphaMax) {
		this.Filter_constructor();

		// public properties:
		this.xDir = Number(xDir) || 0;
		this.yDir = Number(yDir) || 0;

		this.redMultiplier = Number(redMultiplier) || 0;
		this.greenMultiplier = Number(greenMultiplier) || 0;
		this.blueMultiplier = Number(blueMultiplier) || 0;

		this.originalMix = Math.min(Math.max(originalMix, 0), 1) || 0;
		this._alphaMax = Boolean(alphaMax);

		this.FRAG_SHADER_BODY = (
			"uniform vec2 uColorDirection;" +
			"uniform vec3 uColorMultiplier;" +
			"uniform vec2 uExtraProps;" +

			"void main(void) {" +
				"vec4 sample = texture2D(" +
					"uSampler, " +
					"vTextureCoord" +
				");" +
				"vec4 rSample = texture2D(" +
					"uSampler, " +
					"vTextureCoord + (uColorDirection * uColorMultiplier.r)" +
				");" +
				"vec4 gSample = texture2D(" +
					"uSampler, " +
					"vTextureCoord + (uColorDirection * uColorMultiplier.g)" +
				");" +
				"vec4 bSample = texture2D(" +
					"uSampler, " +
					"vTextureCoord + (uColorDirection * uColorMultiplier.b)" +
				");" +

				"float newAlpha = " + (alphaMax ?
					"max(rSample.a, max(gSample.a, max(bSample.a, sample.a)))" :
					"(rSample.a + gSample.a + bSample.a) / 3.0"
				) + ";" +
				"vec4 result = vec4(" +
					"min(1.0, rSample.r/(rSample.a+0.00001)) * newAlpha, " +
					"min(1.0, gSample.g/(gSample.a+0.00001)) * newAlpha, " +
					"min(1.0, bSample.b/(bSample.a+0.00001)) * newAlpha, " +
					"newAlpha" +
				");" +
				"gl_FragColor = mix(result, sample, uExtraProps[0]*sample.a);" +
			"}"
		);

	}
Separates and pushes each of the colour channels apart. I.E. shift the red channel slightly left.
Allows specifying the direction and the ammount it affects each channel. Great for computer glitches and VCR like
effects.

See {{#crossLink "Filter"}}{{/crossLink}} for an more information on applying filters.
@class AberrationFilter
@extends Filter
@constructor
@param {Number} [xDir=0] Movement in x at a multiplier of 1, specified in pixels.
@param {Number} [yDir=0] Movement in y at a multiplier of 1, specified in pixels.
@param {Number} [redMultiplier=0] Multiplier for the movement of the Red channel. Negative values allowed.
@param {Number} [greenMultiplier=0] Multiplier for the movement of the Green channel. Negative values allowed.
@param {Number} [blueMultiplier=0] Multiplier for the movement of the Blue channel. Negative values allowed.
@param {Number} [originalMix=0] Amount of original image to keep, 0-1.
@param {Boolean} [alphaMax=false] Calculate combined alpha using maximum alpha available. Creates a stronger image.