Newer
Older
pixi.js / src / filters / InvertFilter.js
@Chad Engler Chad Engler on 27 Dec 2014 1 KB tons of jshint and typo fixes
var AbstractFilter = require('./AbstractFilter');

/**
 * This inverts your Display Objects colors.
 *
 * @class
 * @extends AbstractFilter
 * @namespace PIXI
 */
function InvertFilter() {
    AbstractFilter.call(this);

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

    this.fragmentSrc = [
        'precision mediump float;',

        'varying vec2 vTextureCoord;',
        'varying vec4 vColor;',

        'uniform float invert;',
        'uniform sampler2D uSampler;',

        'void main(void) {',
        '   gl_FragColor = texture2D(uSampler, vTextureCoord);',
        '   gl_FragColor.rgb = mix( (vec3(1)-gl_FragColor.rgb) * gl_FragColor.a, gl_FragColor.rgb, 1.0 - invert);',
        //'   gl_FragColor.rgb = gl_FragColor.rgb  * gl_FragColor.a;',
      //  '   gl_FragColor = gl_FragColor * vColor;',
        '}'
    ];
}

InvertFilter.prototype = Object.create(AbstractFilter.prototype);
InvertFilter.prototype.constructor = InvertFilter;
module.exports = InvertFilter;

Object.defineProperties(InvertFilter.prototype, {
    /**
     * The strength of the invert. 1 will fully invert the colors, 0 will make the object its normal color
     *
     * @member {number}
     * @memberof InvertFilter#
     */
    invert: {
        get: function () {
            return this.uniforms.invert.value;
        },
        set: function (value) {
            this.uniforms.invert.value = value;
        }
    }
});