var AbstractFilter = require('./AbstractFilter');
/**
* A Cross Hatch effect filter.
*
* @class
* @extends AbstractFilter
* @namespace PIXI
*/
function CrossHatchFilter() {
AbstractFilter.call(this);
// set the uniforms
this.uniforms = {
blur: { type: '1f', value: 1 / 512 }
};
this.fragmentSrc = [
'precision mediump float;',
'varying vec2 vTextureCoord;',
'varying vec4 vColor;',
'uniform float blur;',
'uniform sampler2D uSampler;',
'void main(void) {',
' float lum = length(texture2D(uSampler, vTextureCoord.xy).rgb);',
' gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);',
' if (lum < 1.00) {',
' if (mod(gl_FragCoord.x + gl_FragCoord.y, 10.0) == 0.0) {',
' gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);',
' }',
' }',
' if (lum < 0.75) {',
' if (mod(gl_FragCoord.x - gl_FragCoord.y, 10.0) == 0.0) {',
' gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);',
' }',
' }',
' if (lum < 0.50) {',
' if (mod(gl_FragCoord.x + gl_FragCoord.y - 5.0, 10.0) == 0.0) {',
' gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);',
' }',
' }',
' if (lum < 0.3) {',
' if (mod(gl_FragCoord.x - gl_FragCoord.y - 5.0, 10.0) == 0.0) {',
' gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);',
' }',
' }',
'}'
];
}
CrossHatchFilter.prototype = Object.create(AbstractFilter.prototype);
CrossHatchFilter.prototype.constructor = CrossHatchFilter;
module.exports = CrossHatchFilter;
Object.defineProperties(CrossHatchFilter.prototype, {
/**
* Sets the strength of both the blur.
*
* @member {number}
* @memberof CrossHatchFilter#
* @default 2
*/
blur: {
get: function () {
return this.uniforms.blur.value / (1/7000);
},
set: function (value) {
//this.padding = value;
this.uniforms.blur.value = (1/7000) * value;
}
}
});