#

API Docs for: 2.0.0
Show: Inherited Protected Private Deprecated

# File: src/pixi/filters/AbstractFilter.js

    /**
     * @author Mat Groves http://matgroves.com/ @Doormat23
     */

    /**
     * This is the base class for creating a PIXI filter. Currently only webGL supports filters.
     * If you want to make a custom filter this should be your base class.
     * @class AbstractFilter
     * @constructor
     * @param fragmentSrc {Array} The fragment source in an array of strings.
     * @param uniforms {Object} An object containing the uniforms for this filter.
     */
    PIXI.AbstractFilter = function(fragmentSrc, uniforms)
    {
        /**
        * An array of passes - some filters contain a few steps this array simply stores the steps in a liniear fashion.
        * For example the blur filter has two passes blurX and blurY.
        * @property passes
        * @type Array an array of filter objects
        * @private
        */
        this.passes = [this];

        /**
        * @property shaders
        * @type Array an array of shaders
        * @private
        */
        this.shaders = [];

        /**
        * @property dirty
        * @type Boolean
        */
        this.dirty = true;

        /**
        * @property padding
        * @type Number
        */
        this.padding = 0;

        /**
        * @property uniforms
        * @type object
        * @private
        */
        this.uniforms = uniforms || {};

        /**
        * @property fragmentSrc
        * @type Array
        * @private
        */
        this.fragmentSrc = fragmentSrc || [];
    };

    PIXI.AbstractFilter.prototype.constructor = PIXI.AbstractFilter;

    /**
     * Syncs the uniforms between the class object and the shaders.
     *
     * @method syncUniforms
     */
    PIXI.AbstractFilter.prototype.syncUniforms = function()
    {
        for(var i=0,j=this.shaders.length; i<j; i++)
        {
            this.shaders[i].dirty = true;
        }
    };

    /*
    PIXI.AbstractFilter.prototype.apply = function(frameBuffer)
    {
        // TODO :)
    };
    */