mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
Add BulgePinch, Glitch, RadialBlur and Twist effects (#1531)
This commit is contained in:
@@ -89,8 +89,7 @@ module.exports = {
|
||||
const advancedBloomEffect = extension
|
||||
.addEffect('AdvancedBloom')
|
||||
.setFullName(_('Advanced bloom'))
|
||||
.setDescription(_('Applies a Bloom Effect.'))
|
||||
.addIncludeFile('Extensions/Effects/pixi-filters/filter-kawase-blur.js')
|
||||
.setDescription(_('Applies a bloom effect.'))
|
||||
.addIncludeFile(
|
||||
'Extensions/Effects/pixi-filters/filter-advanced-bloom.js'
|
||||
)
|
||||
@@ -256,7 +255,7 @@ module.exports = {
|
||||
);
|
||||
blurProperties.set(
|
||||
'resolution',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '2')
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '5')
|
||||
.setLabel(_('Kernel size (one of these values: 5, 7, 9, 11, 13, 15)'))
|
||||
.setType('number')
|
||||
);
|
||||
@@ -274,6 +273,39 @@ module.exports = {
|
||||
.setType('number')
|
||||
);
|
||||
|
||||
const bulgePinchEffect = extension
|
||||
.addEffect('BulgePinch')
|
||||
.setFullName(_('Bulge Pinch'))
|
||||
.setDescription(_('Bulges or pinches the image in a circle.'))
|
||||
.addIncludeFile('Extensions/Effects/pixi-filters/filter-bulge-pinch.js')
|
||||
.addIncludeFile('Extensions/Effects/bulge-pinch-pixi-filter.js');
|
||||
const bulgePinchProperties = bulgePinchEffect.getProperties();
|
||||
bulgePinchProperties.set(
|
||||
'centerX',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Center X (between 0 and 1, 0.5 is image middle)'))
|
||||
.setType('number')
|
||||
);
|
||||
bulgePinchProperties.set(
|
||||
'centerY',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Center Y (between 0 and 1, 0.5 is image middle)'))
|
||||
.setType('number')
|
||||
);
|
||||
bulgePinchProperties.set(
|
||||
'radius',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '100')
|
||||
.setLabel(_('Radius'))
|
||||
.setType('number')
|
||||
);
|
||||
bulgePinchProperties.set(
|
||||
'strength',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '1')
|
||||
.setLabel(_('strength (between -1 and 1)'))
|
||||
.setType('number')
|
||||
.setDescription(_('-1 is strong pinch, 0 is no effect, 1 is strong bulge'))
|
||||
);
|
||||
|
||||
const colorMapEffect = extension
|
||||
.addEffect('ColorMap')
|
||||
.setFullName(_('Color Map'))
|
||||
@@ -520,6 +552,109 @@ module.exports = {
|
||||
.setType('boolean')
|
||||
);
|
||||
|
||||
const glitchEffect = extension
|
||||
.addEffect('Glitch')
|
||||
.setFullName(_('Glitch'))
|
||||
.setDescription(_('Applies a glitch effect to an object.'))
|
||||
.addIncludeFile('Extensions/Effects/pixi-filters/filter-glitch.js')
|
||||
.addIncludeFile('Extensions/Effects/glitch-pixi-filter.js');
|
||||
const glitchProperties = glitchEffect.getProperties();
|
||||
glitchProperties.set(
|
||||
'slices',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '5')
|
||||
.setLabel(_('Slices (between 2 and infinite)'))
|
||||
.setType('number')
|
||||
.setDescription('The maximum number of slices')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'offset',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '100')
|
||||
.setLabel(_('Offset (between -400 and 400)'))
|
||||
.setType('number')
|
||||
.setDescription('The maximum offset amount of slices')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'direction',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Direction (between -180 and 180)'))
|
||||
.setType('number')
|
||||
.setDescription('The angle in degree of the offset of slices')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'fillMode',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Fill Mode (between 0 and 4)'))
|
||||
.setType('number')
|
||||
.setDescription(
|
||||
_(
|
||||
'The fill mode of the space after the offset.(0: TRANSPARENT, 1: ORIGINAL, 2: LOOP, 3: CLAMP, 4: MIRROR)'
|
||||
)
|
||||
)
|
||||
);
|
||||
glitchProperties.set(
|
||||
'average',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ 'false')
|
||||
.setLabel(_('Average'))
|
||||
.setType('boolean')
|
||||
.setDescription('Divide the bands roughly based on equal amounts')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'minSize',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '8')
|
||||
.setLabel(_('Min Size'))
|
||||
.setType('number')
|
||||
.setDescription('Minimum size of individual slice')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'sampleSize',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '512')
|
||||
.setLabel(_('Sample Size'))
|
||||
.setType('number')
|
||||
.setDescription('The resolution of the displacement image')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'animated',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ 'true')
|
||||
.setLabel(_('Animated (Enable animations)'))
|
||||
.setType('boolean')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'redX',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '2')
|
||||
.setLabel(_('Red X offset (between -50 and 50)'))
|
||||
.setType('number')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'redY',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '2')
|
||||
.setLabel(_('Red Y offset (between -50 and 50)'))
|
||||
.setType('number')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'greenX',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '10')
|
||||
.setLabel(_('Green X offset (between -50 and 50)'))
|
||||
.setType('number')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'greenY',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '-4')
|
||||
.setLabel(_('Green Y offset (between -50 and 50)'))
|
||||
.setType('number')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'blueX',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '10')
|
||||
.setLabel(_('Blue X offset (between -50 and 50)'))
|
||||
.setType('number')
|
||||
);
|
||||
glitchProperties.set(
|
||||
'blueY',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '-4')
|
||||
.setLabel(_('Blue Y offset (between -50 and 50)'))
|
||||
.setType('number')
|
||||
);
|
||||
|
||||
const glowEffect = extension
|
||||
.addEffect('Glow')
|
||||
.setFullName(_('Glow'))
|
||||
@@ -805,6 +940,47 @@ module.exports = {
|
||||
.setDescription(_('Size of the pixels (10 pixels by default)'))
|
||||
);
|
||||
|
||||
const radialBlurEffect = extension
|
||||
.addEffect('RadialBlur')
|
||||
.setFullName(_('Radial Blur'))
|
||||
.setDescription(_('Applies a Motion blur to an object.'))
|
||||
.addIncludeFile('Extensions/Effects/pixi-filters/filter-radial-blur.js')
|
||||
.addIncludeFile('Extensions/Effects/radial-blur-pixi-filter.js');
|
||||
const radialBlurProperties = radialBlurEffect.getProperties();
|
||||
radialBlurProperties.set(
|
||||
'radius',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '-1')
|
||||
.setLabel(_('Radius'))
|
||||
.setType('number')
|
||||
.setDescription(_('The maximum size of the blur radius, -1 is infinite'))
|
||||
);
|
||||
radialBlurProperties.set(
|
||||
'angle',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Angle (between -180 and 180)'))
|
||||
.setType('number')
|
||||
.setDescription(_('The angle in degree of the motion for blur effect'))
|
||||
);
|
||||
radialBlurProperties.set(
|
||||
'kernelSize',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '5')
|
||||
.setLabel(_('Kernel Size (between 3 and 25)'))
|
||||
.setType('number')
|
||||
.setDescription(_('The kernel size of the blur filter (Odd number)'))
|
||||
);
|
||||
radialBlurProperties.set(
|
||||
'centerX',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Center X'))
|
||||
.setType('number')
|
||||
);
|
||||
radialBlurProperties.set(
|
||||
'centerY',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Center Y'))
|
||||
.setType('number')
|
||||
);
|
||||
|
||||
const reflectionEffect = extension
|
||||
.addEffect('Reflection')
|
||||
.setFullName(_('Reflection'))
|
||||
@@ -961,6 +1137,51 @@ module.exports = {
|
||||
.setType('number')
|
||||
);
|
||||
|
||||
const twistEffect = extension
|
||||
.addEffect('Twist')
|
||||
.setFullName(_('Twist'))
|
||||
.setDescription(
|
||||
_(
|
||||
'Applies a twist effect making objects appear twisted in the given direction.'
|
||||
)
|
||||
)
|
||||
.addIncludeFile('Extensions/Effects/pixi-filters/filter-twist.js')
|
||||
.addIncludeFile('Extensions/Effects/twist-pixi-filter.js');
|
||||
const twistProperties = twistEffect.getProperties();
|
||||
twistProperties.set(
|
||||
'radius',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '200')
|
||||
.setLabel(_('Radius'))
|
||||
.setType('number')
|
||||
.setDescription(_('The radius of the twist'))
|
||||
);
|
||||
twistProperties.set(
|
||||
'angle',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '4')
|
||||
.setLabel(_('Angle (between -10 and 10)'))
|
||||
.setType('number')
|
||||
.setDescription(_('The angle in degree of the twist'))
|
||||
);
|
||||
twistProperties.set(
|
||||
'padding',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '20')
|
||||
.setLabel(_('Padding'))
|
||||
.setType('number')
|
||||
.setDescription(_('Padding for filter area'))
|
||||
);
|
||||
twistProperties.set(
|
||||
'offsetX',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Center X'))
|
||||
.setType('number')
|
||||
);
|
||||
twistProperties.set(
|
||||
'offsetY',
|
||||
new gd.PropertyDescriptor(/* defaultValue= */ '0')
|
||||
.setLabel(_('Center Y'))
|
||||
.setType('number')
|
||||
);
|
||||
|
||||
const zoomBlurEffect = extension
|
||||
.addEffect('ZoomBlur')
|
||||
.setFullName(_('Zoom blur'))
|
||||
|
@@ -14,7 +14,7 @@ gdjs.PixiFiltersTools.registerFilterCreator('Blur', {
|
||||
return;
|
||||
|
||||
if (parameterName === 'kernelSize') {
|
||||
value = gdjs.PixiFiltersTools.clampKernelSize(value);
|
||||
value = gdjs.PixiFiltersTools.clampKernelSize(value, 5, 15);
|
||||
}
|
||||
|
||||
filter[parameterName] = value;
|
||||
|
27
Extensions/Effects/bulge-pinch-pixi-filter.js
Normal file
27
Extensions/Effects/bulge-pinch-pixi-filter.js
Normal file
@@ -0,0 +1,27 @@
|
||||
gdjs.PixiFiltersTools.registerFilterCreator('BulgePinch', {
|
||||
makePIXIFilter: function(layer, effectData) {
|
||||
var bulgePinchFilter = new PIXI.filters.BulgePinchFilter();
|
||||
|
||||
return bulgePinchFilter;
|
||||
},
|
||||
update: function(filter, layer) {
|
||||
},
|
||||
updateDoubleParameter: function(filter, parameterName, value) {
|
||||
if (parameterName === 'centerX') {
|
||||
filter.center[0] = value;
|
||||
}
|
||||
else if (parameterName === 'centerY') {
|
||||
filter.center[1] = value;
|
||||
}
|
||||
else if (parameterName === 'radius') {
|
||||
filter.radius = value;
|
||||
}
|
||||
else if (parameterName === 'strength') {
|
||||
filter.strength = gdjs.PixiFiltersTools.clampValue(value, -1, 1);
|
||||
}
|
||||
},
|
||||
updateStringParameter: function(filter, parameterName, value) {
|
||||
},
|
||||
updateBooleanParameter: function(filter, parameterName, value) {
|
||||
},
|
||||
});
|
61
Extensions/Effects/glitch-pixi-filter.js
Normal file
61
Extensions/Effects/glitch-pixi-filter.js
Normal file
@@ -0,0 +1,61 @@
|
||||
gdjs.PixiFiltersTools.registerFilterCreator('Glitch', {
|
||||
makePIXIFilter: function(layer, effectData) {
|
||||
var glitchFilter = new PIXI.filters.GlitchFilter();
|
||||
|
||||
return glitchFilter;
|
||||
},
|
||||
update: function(filter, layer) {
|
||||
if (filter.animated) {
|
||||
filter.time += layer.getElapsedTime() / 1000;
|
||||
filter.seed = Math.random();
|
||||
}
|
||||
},
|
||||
updateDoubleParameter: function(filter, parameterName, value) {
|
||||
if (parameterName === 'slices') {
|
||||
filter.slices = value;
|
||||
}
|
||||
else if (parameterName === 'offset') {
|
||||
filter.offset = value;
|
||||
}
|
||||
else if (parameterName === 'direction') {
|
||||
filter.direction = value;
|
||||
}
|
||||
else if (parameterName === 'fillMode') {
|
||||
filter.fillMode = value;
|
||||
}
|
||||
else if (parameterName === 'minSize') {
|
||||
filter.minSize = value;
|
||||
}
|
||||
else if (parameterName === 'sampleSize') {
|
||||
filter.sampleSize = value;
|
||||
}
|
||||
else if (parameterName === 'redX') {
|
||||
filter.red.x = value;
|
||||
}
|
||||
else if (parameterName === 'redY') {
|
||||
filter.red.y = value;
|
||||
}
|
||||
else if (parameterName === 'greenX') {
|
||||
filter.green.x = value;
|
||||
}
|
||||
else if (parameterName === 'greenY') {
|
||||
filter.green.y = value;
|
||||
}
|
||||
else if (parameterName === 'blueX') {
|
||||
filter.blue.x = value;
|
||||
}
|
||||
else if (parameterName === 'blueY') {
|
||||
filter.blue.y = value;
|
||||
}
|
||||
|
||||
},
|
||||
updateStringParameter: function(filter, parameterName, value) {},
|
||||
updateBooleanParameter: function(filter, parameterName, value) {
|
||||
if (parameterName === 'animated') {
|
||||
filter.animated = value;
|
||||
}
|
||||
else if (parameterName === 'average') {
|
||||
filter.average = value;
|
||||
}
|
||||
},
|
||||
});
|
9
Extensions/Effects/pixi-filters/filter-bulge-pinch.js
Normal file
9
Extensions/Effects/pixi-filters/filter-bulge-pinch.js
Normal file
@@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* @pixi/filter-bulge-pinch - v2.7.0
|
||||
* Compiled Sun, 13 Jan 2019 22:51:52 UTC
|
||||
*
|
||||
* @pixi/filter-bulge-pinch is licensed under the MIT License.
|
||||
* http://www.opensource.org/licenses/mit-license
|
||||
*/
|
||||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("pixi.js")):"function"==typeof define&&define.amd?define(["exports","pixi.js"],n):n((e=e||self).__filters={},e.PIXI)}(this,function(e,n){"use strict";var t="attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",r="uniform float radius;\nuniform float strength;\nuniform vec2 center;\nuniform sampler2D uSampler;\nvarying vec2 vTextureCoord;\n\nuniform vec4 filterArea;\nuniform vec4 filterClamp;\nuniform vec2 dimensions;\n\nvoid main()\n{\n vec2 coord = vTextureCoord * filterArea.xy;\n coord -= center * dimensions.xy;\n float distance = length(coord);\n if (distance < radius) {\n float percent = distance / radius;\n if (strength > 0.0) {\n coord *= mix(1.0, smoothstep(0.0, radius / distance, percent), strength * 0.75);\n } else {\n coord *= mix(1.0, pow(percent, 1.0 + strength * 0.75) * radius / distance, 1.0 - percent);\n }\n }\n coord += center * dimensions.xy;\n coord /= filterArea.xy;\n vec2 clampedCoord = clamp(coord, filterClamp.xy, filterClamp.zw);\n vec4 color = texture2D(uSampler, clampedCoord);\n if (coord != clampedCoord) {\n color *= max(0.0, 1.0 - length(coord - clampedCoord));\n }\n\n gl_FragColor = color;\n}\n",o=function(e){function n(n,o,i){e.call(this,t,r),this.uniforms.dimensions=new Float32Array(2),this.center=n||[.5,.5],this.radius="number"==typeof o?o:100,this.strength="number"==typeof i?i:1}e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n;var o={radius:{configurable:!0},strength:{configurable:!0},center:{configurable:!0}};return n.prototype.apply=function(e,n,t,r){this.uniforms.dimensions[0]=n.sourceFrame.width,this.uniforms.dimensions[1]=n.sourceFrame.height,e.applyFilter(this,n,t,r)},o.radius.get=function(){return this.uniforms.radius},o.radius.set=function(e){this.uniforms.radius=e},o.strength.get=function(){return this.uniforms.strength},o.strength.set=function(e){this.uniforms.strength=e},o.center.get=function(){return this.uniforms.center},o.center.set=function(e){this.uniforms.center=e},Object.defineProperties(n.prototype,o),n}(n.Filter);e.BulgePinchFilter=o,Object.defineProperty(e,"__esModule",{value:!0})}),Object.assign(PIXI.filters,this?this.__filters:__filters);
|
||||
//# sourceMappingURL=filter-bulge-pinch.js.map
|
9
Extensions/Effects/pixi-filters/filter-glitch.js
Normal file
9
Extensions/Effects/pixi-filters/filter-glitch.js
Normal file
File diff suppressed because one or more lines are too long
9
Extensions/Effects/pixi-filters/filter-radial-blur.js
Normal file
9
Extensions/Effects/pixi-filters/filter-radial-blur.js
Normal file
@@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* @pixi/filter-radial-blur - v2.7.0
|
||||
* Compiled Sun, 13 Jan 2019 22:51:52 UTC
|
||||
*
|
||||
* @pixi/filter-radial-blur is licensed under the MIT License.
|
||||
* http://www.opensource.org/licenses/mit-license
|
||||
*/
|
||||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("pixi.js")):"function"==typeof define&&define.amd?define(["exports","pixi.js"],n):n((e=e||self).__filters={},e.PIXI)}(this,function(e,n){"use strict";var t="attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",r="varying vec2 vTextureCoord;\nuniform sampler2D uSampler;\nuniform vec4 filterArea;\n\nuniform float uRadian;\nuniform vec2 uCenter;\nuniform float uRadius;\nuniform int uKernelSize;\n\nconst int MAX_KERNEL_SIZE = 2048;\n\nvoid main(void)\n{\n vec4 color = texture2D(uSampler, vTextureCoord);\n\n if (uKernelSize == 0)\n {\n gl_FragColor = color;\n return;\n }\n\n float aspect = filterArea.y / filterArea.x;\n vec2 center = uCenter.xy / filterArea.xy;\n float gradient = uRadius / filterArea.x * 0.3;\n float radius = uRadius / filterArea.x - gradient * 0.5;\n int k = uKernelSize - 1;\n\n vec2 coord = vTextureCoord;\n vec2 dir = vec2(center - coord);\n float dist = length(vec2(dir.x, dir.y * aspect));\n\n float radianStep = uRadian;\n if (radius >= 0.0 && dist > radius) {\n float delta = dist - radius;\n float gap = gradient;\n float scale = 1.0 - abs(delta / gap);\n if (scale <= 0.0) {\n gl_FragColor = color;\n return;\n }\n radianStep *= scale;\n }\n radianStep /= float(k);\n\n float s = sin(radianStep);\n float c = cos(radianStep);\n mat2 rotationMatrix = mat2(vec2(c, -s), vec2(s, c));\n\n for(int i = 0; i < MAX_KERNEL_SIZE - 1; i++) {\n if (i == k) {\n break;\n }\n\n coord -= center;\n coord.y *= aspect;\n coord = rotationMatrix * coord;\n coord.y /= aspect;\n coord += center;\n\n vec4 sample = texture2D(uSampler, coord);\n\n // switch to pre-multiplied alpha to correctly blur transparent images\n // sample.rgb *= sample.a;\n\n color += sample;\n }\n\n gl_FragColor = color / float(uKernelSize);\n}\n",i=function(e){function n(n,i,o,a){void 0===n&&(n=0),void 0===i&&(i=[0,0]),void 0===o&&(o=5),void 0===a&&(a=-1),e.call(this,t,r),this._angle=0,this.angle=n,this.center=i,this.kernelSize=o,this.radius=a}e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n;var i={angle:{configurable:!0},center:{configurable:!0},radius:{configurable:!0}};return n.prototype.apply=function(e,n,t,r){this.uniforms.uKernelSize=0!==this._angle?this.kernelSize:0,e.applyFilter(this,n,t,r)},i.angle.set=function(e){this._angle=e,this.uniforms.uRadian=e*Math.PI/180},i.angle.get=function(){return this._angle},i.center.get=function(){return this.uniforms.uCenter},i.center.set=function(e){this.uniforms.uCenter=e},i.radius.get=function(){return this.uniforms.uRadius},i.radius.set=function(e){(e<0||e===1/0)&&(e=-1),this.uniforms.uRadius=e},Object.defineProperties(n.prototype,i),n}(n.Filter);e.RadialBlurFilter=i,Object.defineProperty(e,"__esModule",{value:!0})}),Object.assign(PIXI.filters,this?this.__filters:__filters);
|
||||
//# sourceMappingURL=filter-radial-blur.js.map
|
9
Extensions/Effects/pixi-filters/filter-twist.js
Normal file
9
Extensions/Effects/pixi-filters/filter-twist.js
Normal file
@@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* @pixi/filter-twist - v2.7.0
|
||||
* Compiled Sun, 13 Jan 2019 22:51:52 UTC
|
||||
*
|
||||
* @pixi/filter-twist is licensed under the MIT License.
|
||||
* http://www.opensource.org/licenses/mit-license
|
||||
*/
|
||||
!function(o,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("pixi.js")):"function"==typeof define&&define.amd?define(["exports","pixi.js"],n):n((o=o||self).__filters={},o.PIXI)}(this,function(o,n){"use strict";var r="attribute vec2 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nuniform mat3 projectionMatrix;\n\nvarying vec2 vTextureCoord;\n\nvoid main(void)\n{\n gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);\n vTextureCoord = aTextureCoord;\n}",e="varying vec2 vTextureCoord;\n\nuniform sampler2D uSampler;\nuniform float radius;\nuniform float angle;\nuniform vec2 offset;\nuniform vec4 filterArea;\n\nvec2 mapCoord( vec2 coord )\n{\n coord *= filterArea.xy;\n coord += filterArea.zw;\n\n return coord;\n}\n\nvec2 unmapCoord( vec2 coord )\n{\n coord -= filterArea.zw;\n coord /= filterArea.xy;\n\n return coord;\n}\n\nvec2 twist(vec2 coord)\n{\n coord -= offset;\n\n float dist = length(coord);\n\n if (dist < radius)\n {\n float ratioDist = (radius - dist) / radius;\n float angleMod = ratioDist * ratioDist * angle;\n float s = sin(angleMod);\n float c = cos(angleMod);\n coord = vec2(coord.x * c - coord.y * s, coord.x * s + coord.y * c);\n }\n\n coord += offset;\n\n return coord;\n}\n\nvoid main(void)\n{\n\n vec2 coord = mapCoord(vTextureCoord);\n\n coord = twist(coord);\n\n coord = unmapCoord(coord);\n\n gl_FragColor = texture2D(uSampler, coord );\n\n}\n",t=function(o){function n(n,t,i){void 0===n&&(n=200),void 0===t&&(t=4),void 0===i&&(i=20),o.call(this,r,e),this.radius=n,this.angle=t,this.padding=i}o&&(n.__proto__=o),n.prototype=Object.create(o&&o.prototype),n.prototype.constructor=n;var t={offset:{configurable:!0},radius:{configurable:!0},angle:{configurable:!0}};return t.offset.get=function(){return this.uniforms.offset},t.offset.set=function(o){this.uniforms.offset=o},t.radius.get=function(){return this.uniforms.radius},t.radius.set=function(o){this.uniforms.radius=o},t.angle.get=function(){return this.uniforms.angle},t.angle.set=function(o){this.uniforms.angle=o},Object.defineProperties(n.prototype,t),n}(n.Filter);o.TwistFilter=t,Object.defineProperty(o,"__esModule",{value:!0})}),Object.assign(PIXI.filters,this?this.__filters:__filters);
|
||||
//# sourceMappingURL=filter-twist.js.map
|
30
Extensions/Effects/radial-blur-pixi-filter.js
Normal file
30
Extensions/Effects/radial-blur-pixi-filter.js
Normal file
@@ -0,0 +1,30 @@
|
||||
gdjs.PixiFiltersTools.registerFilterCreator('RadialBlur', {
|
||||
makePIXIFilter: function(layer, effectData) {
|
||||
var radialBlurFilter = new PIXI.filters.RadialBlurFilter();
|
||||
|
||||
return radialBlurFilter;
|
||||
},
|
||||
update: function(filter, layer) {
|
||||
},
|
||||
updateDoubleParameter: function(filter, parameterName, value) {
|
||||
if (parameterName === 'radius') {
|
||||
filter.radius = (value < 0 ? -1 : value);
|
||||
}
|
||||
else if (parameterName === 'angle') {
|
||||
filter.angle = value;
|
||||
}
|
||||
else if (parameterName === 'kernelSize') {
|
||||
filter.kernelSize = gdjs.PixiFiltersTools.clampKernelSize(value, 3, 25);
|
||||
}
|
||||
else if (parameterName === 'centerX') {
|
||||
filter.center[0] = value;
|
||||
}
|
||||
else if (parameterName === 'centerY') {
|
||||
filter.center[1] = value;
|
||||
}
|
||||
},
|
||||
updateStringParameter: function(filter, parameterName, value) {
|
||||
},
|
||||
updateBooleanParameter: function(filter, parameterName, value) {
|
||||
},
|
||||
});
|
30
Extensions/Effects/twist-pixi-filter.js
Normal file
30
Extensions/Effects/twist-pixi-filter.js
Normal file
@@ -0,0 +1,30 @@
|
||||
gdjs.PixiFiltersTools.registerFilterCreator('Twist', {
|
||||
makePIXIFilter: function(layer, effectData) {
|
||||
var twistFilter = new PIXI.filters.TwistFilter();
|
||||
|
||||
return twistFilter;
|
||||
},
|
||||
update: function(filter, layer) {
|
||||
},
|
||||
updateDoubleParameter: function(filter, parameterName, value) {
|
||||
if (parameterName === 'radius') {
|
||||
filter.radius = value;
|
||||
}
|
||||
else if (parameterName === 'angle') {
|
||||
filter.angle = value;
|
||||
}
|
||||
else if (parameterName === 'padding') {
|
||||
filter.padding = value;
|
||||
}
|
||||
else if (parameterName === 'offsetX') {
|
||||
filter.offset[0] = value;
|
||||
}
|
||||
else if (parameterName === 'offsetY') {
|
||||
filter.offset[1] = value;
|
||||
}
|
||||
},
|
||||
updateStringParameter: function(filter, parameterName, value) {
|
||||
},
|
||||
updateBooleanParameter: function(filter, parameterName, value) {
|
||||
},
|
||||
});
|
@@ -8,7 +8,7 @@ gdjs.PixiFiltersTools.registerFilterCreator('ZoomBlur', {
|
||||
},
|
||||
updateDoubleParameter: function(filter, parameterName, value) {
|
||||
if (parameterName === 'centerX') {
|
||||
filter.center[0]= Math.round(window.innerWidth * value);
|
||||
filter.center[0] = Math.round(window.innerWidth * value);
|
||||
}
|
||||
else if (parameterName === 'centerY') {
|
||||
filter.center[1] = Math.round(window.innerHeight * value);
|
||||
|
@@ -5,7 +5,14 @@
|
||||
gdjs.PixiFiltersTools = {};
|
||||
|
||||
gdjs.PixiFiltersTools.clampValue = function(value, min, max) { return Math.max(min, Math.min(max, value)); };
|
||||
gdjs.PixiFiltersTools.clampKernelSize = function(value) { return (([5, 7, 9, 11, 13, 15].indexOf(value) !== -1) ? value : 5); };
|
||||
gdjs.PixiFiltersTools.clampKernelSize = function(value, min, max) {
|
||||
var len = Math.round((max - min) / 2 + 1);
|
||||
var arr = new Array(len);
|
||||
for (var i = 0; i < len; i++) {
|
||||
arr[i] = min + 2 * i;
|
||||
}
|
||||
return ((arr.indexOf(value) !== -1) ? value : min);
|
||||
};
|
||||
|
||||
/** Object.<string, gdjsPixiFiltersToolsFilterCreator> */
|
||||
gdjs.PixiFiltersTools._filterCreators = {};
|
||||
|
Reference in New Issue
Block a user