File: src/pixi/filters/ColorStepFilter.js
/**
* @author Mat Groves http://matgroves.com/ @Doormat23
*/
/**
* This lowers the color depth of your image by the given amount, producing an image with a smaller palette.
*
* @class ColorStepFilter
* @extends AbstractFilter
* @constructor
*/
PIXI.ColorStepFilter = function()
{
PIXI.AbstractFilter.call( this );
this.passes = [this];
// set the uniforms
this.uniforms = {
step: {type: '1f', value: 5}
};
this.fragmentSrc = [
'precision mediump float;',
'varying vec2 vTextureCoord;',
'varying vec4 vColor;',
'uniform sampler2D uSampler;',
'uniform float step;',
'void main(void) {',
' vec4 color = texture2D(uSampler, vTextureCoord);',
' color = floor(color * step) / step;',
' gl_FragColor = color;',
'}'
];
};
PIXI.ColorStepFilter.prototype = Object.create( PIXI.AbstractFilter.prototype );
PIXI.ColorStepFilter.prototype.constructor = PIXI.ColorStepFilter;
/**
* The number of steps to reduce the palette by.
*
* @property step
* @type Number
*/
Object.defineProperty(PIXI.ColorStepFilter.prototype, 'step', {
get: function() {
return this.uniforms.step.value;
},
set: function(value) {
this.uniforms.step.value = value;
}
});