#

API Docs for: 2.0.0
Show: Inherited Protected Private Deprecated

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

    /**
     * @author Vico @vicocotea
     * original filter: https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/noise.js
     */

    /**
     * A Noise effect filter.
     *
     * @class NoiseFilter
     * @extends AbstractFilter
     * @constructor
     */
    PIXI.NoiseFilter = function()
    {
        PIXI.AbstractFilter.call( this );

        this.passes = [this];

        // set the uniforms
        this.uniforms = {
            noise: {type: '1f', value: 0.5}
        };

        this.fragmentSrc = [
            'precision mediump float;',
            'uniform sampler2D uSampler;',
            'uniform float noise;',
            'varying vec2 vTextureCoord;',

            'float rand(vec2 co) {',
            '    return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);',
            '}',
            'void main() {',
            '    vec4 color = texture2D(uSampler, vTextureCoord);',

            '    float diff = (rand(vTextureCoord) - 0.5) * noise;',
            '    color.r += diff;',
            '    color.g += diff;',
            '    color.b += diff;',

            '    gl_FragColor = color;',
            '}'
        ];
    };

    PIXI.NoiseFilter.prototype = Object.create( PIXI.AbstractFilter.prototype );
    PIXI.NoiseFilter.prototype.constructor = PIXI.NoiseFilter;

    /**
     * The amount of noise to apply.
     * @property noise
     * @type Number
    */
    Object.defineProperty(PIXI.NoiseFilter.prototype, 'noise', {
        get: function() {
            return this.uniforms.noise.value;
        },
        set: function(value) {
            this.dirty = true;
            this.uniforms.noise.value = value;
        }
    });