/**
 * Copyright (C) 2011 by Evan Wallace
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

/**
 *
 * This filter applies a vignette effect
 * @class VignetteFilter
 * @contructor
 */
PIXI.VignetteFilter = function()
{
	PIXI.AbstractFilter.call( this );
 
	this.passes = [this];
 
	// set the uniforms
	this.uniforms = {
		size: {type: '1f', value: 0.0},
		amount: {type: '1f', value: 1.0}
	};

	this.fragmentSrc = [
		'precision mediump float;',
		'varying vec2 vTextureCoord;',
		'uniform sampler2D uSampler;',
		'uniform float size;',
		'uniform float amount;',
		'void main() {',
		'	vec2 coord = vTextureCoord;',
		'	vec4 color = texture2D(uSampler, coord);',
		'	float dist = distance(coord, vec2(0.5, 0.5));',
		'	color.rgb *= smoothstep(0.8, size * 0.799, dist * (amount + size));',
		// 'if (coord.x % 2 == 0) {',
		// '	color.r = 0;',
		// '	color.g = 0;',
		// '	color.b = 0;',
		// '}',
		'	gl_FragColor = color;',
		'}'
	];
};
 
PIXI.VignetteFilter.prototype = Object.create( PIXI.AbstractFilter.prototype );
PIXI.VignetteFilter.prototype.constructor = PIXI.VignetteFilter;
