diff --git a/src/filters/emboss/EmbossFilter.js b/src/filters/emboss/EmbossFilter.js new file mode 100644 index 0000000..0468d1f --- /dev/null +++ b/src/filters/emboss/EmbossFilter.js @@ -0,0 +1,46 @@ +var core = require('../../core'); +var glslify = require('glslify'); + +/** + * An RGB Split Filter. + * + * @class + * @extends PIXI.Filter + * @memberof PIXI.filters + */ +function EmbossFilter() +{ + core.Filter.call(this, + // vertex shader + glslify('../fragments/default.vert'), + // fragment shader + glslify('./emboss.frag') + ); + + this.strength = 5; +} + +EmbossFilter.prototype = Object.create(core.Filter.prototype); +EmbossFilter.prototype.constructor = EmbossFilter; +module.exports = EmbossFilter; + +Object.defineProperties(EmbossFilter.prototype, { + /** + * Strength of Emboss. + * + * @member {PIXI.Point} + * @memberof PIXI.filters.EmbossFilter# + */ + strength: { + get: function () + { + return this.uniforms.strength; + }, + set: function (value) + { + this.uniforms.strength = value; + } + }, + + +}); diff --git a/src/filters/emboss/EmbossFilter.js b/src/filters/emboss/EmbossFilter.js new file mode 100644 index 0000000..0468d1f --- /dev/null +++ b/src/filters/emboss/EmbossFilter.js @@ -0,0 +1,46 @@ +var core = require('../../core'); +var glslify = require('glslify'); + +/** + * An RGB Split Filter. + * + * @class + * @extends PIXI.Filter + * @memberof PIXI.filters + */ +function EmbossFilter() +{ + core.Filter.call(this, + // vertex shader + glslify('../fragments/default.vert'), + // fragment shader + glslify('./emboss.frag') + ); + + this.strength = 5; +} + +EmbossFilter.prototype = Object.create(core.Filter.prototype); +EmbossFilter.prototype.constructor = EmbossFilter; +module.exports = EmbossFilter; + +Object.defineProperties(EmbossFilter.prototype, { + /** + * Strength of Emboss. + * + * @member {PIXI.Point} + * @memberof PIXI.filters.EmbossFilter# + */ + strength: { + get: function () + { + return this.uniforms.strength; + }, + set: function (value) + { + this.uniforms.strength = value; + } + }, + + +}); diff --git a/src/filters/emboss/emboss.frag b/src/filters/emboss/emboss.frag new file mode 100644 index 0000000..7554ada --- /dev/null +++ b/src/filters/emboss/emboss.frag @@ -0,0 +1,24 @@ +precision mediump float; + +varying vec2 vTextureCoord; + +uniform sampler2D uSampler; +uniform float strength; +uniform vec4 filterArea; + + +void main(void) +{ + vec2 onePixel = vec2(1.0 / filterArea); + + vec4 color; + + color.rgb = vec3(0.5); + + color -= texture2D(uSampler, vTextureCoord - onePixel) * strength; + color += texture2D(uSampler, vTextureCoord + onePixel) * strength; + + color.rgb = vec3((color.r + color.g + color.b) / 3.0); + + gl_FragColor = vec4(color.rgb, 1); +} diff --git a/src/filters/emboss/EmbossFilter.js b/src/filters/emboss/EmbossFilter.js new file mode 100644 index 0000000..0468d1f --- /dev/null +++ b/src/filters/emboss/EmbossFilter.js @@ -0,0 +1,46 @@ +var core = require('../../core'); +var glslify = require('glslify'); + +/** + * An RGB Split Filter. + * + * @class + * @extends PIXI.Filter + * @memberof PIXI.filters + */ +function EmbossFilter() +{ + core.Filter.call(this, + // vertex shader + glslify('../fragments/default.vert'), + // fragment shader + glslify('./emboss.frag') + ); + + this.strength = 5; +} + +EmbossFilter.prototype = Object.create(core.Filter.prototype); +EmbossFilter.prototype.constructor = EmbossFilter; +module.exports = EmbossFilter; + +Object.defineProperties(EmbossFilter.prototype, { + /** + * Strength of Emboss. + * + * @member {PIXI.Point} + * @memberof PIXI.filters.EmbossFilter# + */ + strength: { + get: function () + { + return this.uniforms.strength; + }, + set: function (value) + { + this.uniforms.strength = value; + } + }, + + +}); diff --git a/src/filters/emboss/emboss.frag b/src/filters/emboss/emboss.frag new file mode 100644 index 0000000..7554ada --- /dev/null +++ b/src/filters/emboss/emboss.frag @@ -0,0 +1,24 @@ +precision mediump float; + +varying vec2 vTextureCoord; + +uniform sampler2D uSampler; +uniform float strength; +uniform vec4 filterArea; + + +void main(void) +{ + vec2 onePixel = vec2(1.0 / filterArea); + + vec4 color; + + color.rgb = vec3(0.5); + + color -= texture2D(uSampler, vTextureCoord - onePixel) * strength; + color += texture2D(uSampler, vTextureCoord + onePixel) * strength; + + color.rgb = vec3((color.r + color.g + color.b) / 3.0); + + gl_FragColor = vec4(color.rgb, 1); +} diff --git a/src/filters/index.js b/src/filters/index.js index 1681c69..a16f87e 100644 --- a/src/filters/index.js +++ b/src/filters/index.js @@ -21,6 +21,7 @@ // NoiseFilter: require('./noise/NoiseFilter'), PixelateFilter: require('./pixelate/PixelateFilter'), RGBSplitFilter: require('./rgb/RGBSplitFilter'), + EmbossFilter: require('./emboss/EmbossFilter'), // ShockwaveFilter: require('./shockwave/ShockwaveFilter'), // SepiaFilter: require('./sepia/SepiaFilter'), // SmartBlurFilter: require('./blur/SmartBlurFilter'),