@petkoneo/phaser3-rex-plugins
Version:
2 lines (1 loc) • 3.4 kB
JavaScript
var e,n;e=void 0,n=function(){const e=Phaser.Renderer.WebGL.Pipelines.PostFXPipeline,n=Phaser.Utils.Objects.GetValue;class t extends e{constructor(e){super({name:"rexGlowFilterPostFx",game:e,renderTarget:!0,fragShader:"#ifdef GL_FRAGMENT_PRECISION_HIGH\n#define highmedp highp\n#else\n#define highmedp mediump\n#endif\nprecision highmedp float;\n\n// Scene buffer\nuniform sampler2D uMainSampler; \nvarying vec2 outTexCoord;\n\n// Effect parameters\nuniform float intensity;\n\nvoid main() {\n vec4 front = texture2D(uMainSampler, outTexCoord);\n vec4 sum = vec4(0);\n for(int xx = -4; xx <= 4; xx++) {\n for(int yy = -3; yy <= 3; yy++) {\n float dist = sqrt(float(xx*xx) + float(yy*yy));\n float factor = 0.0;\n if (dist == 0.0) {\n factor = 2.0;\n } else {\n factor = 2.0/abs(float(dist));\n }\n sum += texture2D(uMainSampler, outTexCoord + vec2(xx, yy) * 0.002) * factor;\n }\n }\n \n gl_FragColor = mix(front, sum, intensity);\n}\n"}),this.intensity=0}resetFromJSON(e){return this.setIntensity(n(e,"intensity",0)),this}onPreRender(){this.set1f("intensity",this.intensity)}setIntensity(e){return this.intensity=e,this}}const i=Phaser.Game;var s=function(e){return e instanceof i};const o=Phaser.Scene;var r=function(e){return e instanceof o},l=function(e,n,t){var i;(i=e,null==i||"object"!=typeof i?null:s(i)?i:s(i.game)?i.game:r(i)?i.sys.game:r(i.scene)?i.scene.sys.game:void 0).renderer.pipelines.addPostPipeline(n,t)};const a=Phaser.Utils.Array.SpliceOne;class f extends Phaser.Plugins.BasePlugin{setPostPipelineClass(e,n){return this.PostFxPipelineClass=e,this.postFxPipelineName=n,this}start(){this.game.events.once("destroy",this.destroy,this),l(this.game,this.postFxPipelineName,this.PostFxPipelineClass)}add(e,n){return function(e,n,t){void 0===t&&(t={}),e.setPostPipeline(n);var i=e.postPipelines[e.postPipelines.length-1];return i.resetFromJSON(t),t.name&&(i.name=t.name),i}(e,this.PostFxPipelineClass,n)}remove(e,n){return function(e,n,t){if(void 0===t)for(var i=(s=e.postPipelines).length-1;i>=0;i--)(r=s[i])instanceof n&&(r.destroy(),a(s,i));else{i=0;for(var s,o=(s=e.postPipelines).length;i<o;i++){var r;(r=s[i])instanceof n&&r.name===t&&(r.destroy(),a(s,i))}}e.hasPostPipeline=e.postPipelines.length>0}(e,this.PostFxPipelineClass,n),this}get(e,n){return function(e,n,t){if(void 0===t){for(var i=[],s=0,o=(r=e.postPipelines).length;s<o;s++)(l=r[s])instanceof n&&i.push(l);return i}var r;for(s=0,o=(r=e.postPipelines).length;s<o;s++){var l;if((l=r[s])instanceof n&&l.name===t)return l}}(e,this.PostFxPipelineClass,n)}}var p=function(e){return null==e||""===e||0===e.length};return function(e,n,t,i){if(void 0===i&&(i="."),"object"==typeof e)if(p(n)){if(null==t)return;"object"==typeof t&&(e=t)}else{"string"==typeof n&&(n=n.split(i));var s=n.pop(),o=function(e,n,t){var i=e;if(p(n));else{var s;"string"==typeof n&&(n=n.split("."));for(var o=0,r=n.length;o<r;o++){var l;null!=i[s=n[o]]&&"object"==typeof i[s]||(l=o===r-1?void 0===t?{}:t:{},i[s]=l),i=i[s]}}return i}(e,n);o[s]=t}}(window,"RexPlugins.Pipelines.GlowFilterPostFx",t),class extends f{constructor(e){super(e),this.setPostPipelineClass(t,"rexGlowFilterPostFx")}}},"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).rexglowfilterpipelineplugin=n();