babylonjs.postProcess.min.js 9.9 KB

1
  1. !(function(t,e){var i=[],n=t.BABYLON||this.BABYLON;"object"==typeof exports&&"object"==typeof module?(n=n||require("babylonjs"),module.exports=e(n)):"function"==typeof define&&define.amd?(i.push("babylonjs"),define("babylonjs-post-process",i,e)):"object"==typeof exports?(n=n||require("babylonjs"),exports["babylonjs-post-process"]=e(n)):t.BABYLON=e(n)})(this,(function(t){t=t||this.BABYLON;var t,e=this&&this.__decorate||function(t,e,i,n){var o,r=arguments.length,a=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,i,n);else for(var l=t.length-1;l>=0;l--)(o=t[l])&&(a=(r<3?o(a):r>3?o(e,i,a):o(e,i))||a);return r>3&&a&&Object.defineProperty(e,i,a),a},i=this&&this.__extends||(function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])};return function(e,i){function n(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}})();!(function(t){var n=(function(n){function o(e,i,o,r){void 0===r&&(r=null);var a=n.call(this,r)||this;if(!(r=a.getScene()))return a;a.name=e,a._text,a._font,a.wrapU=t.Texture.CLAMP_ADDRESSMODE,a.wrapV=t.Texture.CLAMP_ADDRESSMODE;var l=a.getFontHeight(i),c=a.getFontWidth(i);a._charSize=Math.max(l.height,c);var f=Math.ceil(a._charSize*o.length),s=a._charSize;a._texture=r.getEngine().createDynamicTexture(f,s,!1,t.Texture.NEAREST_SAMPLINGMODE);var g=a.getSize(),u=document.createElement("canvas");u.width=g.width,u.height=g.height;var h=u.getContext("2d");h.textBaseline="top",h.font=i,h.fillStyle="white",h.imageSmoothingEnabled=!1;for(var x=0;x<o.length;x++)h.fillText(o[x],x*a._charSize,-l.offset);return r.getEngine().updateDynamicTexture(a._texture,u,!1,!0),a}return i(o,n),Object.defineProperty(o.prototype,"charSize",{get:function(){return this._charSize},enumerable:!0,configurable:!0}),o.prototype.getFontWidth=function(t){var e=document.createElement("canvas"),i=e.getContext("2d");return i.fillStyle="white",i.font=t,i.measureText("W").width},o.prototype.getFontHeight=function(t){var e=document.createElement("canvas"),i=e.getContext("2d");i.fillRect(0,0,e.width,e.height),i.textBaseline="top",i.fillStyle="white",i.font=t,i.fillText("jH|",0,0);for(var n=i.getImageData(0,0,e.width,e.height).data,o=-1,r=-1,a=0;a<e.height;a++)for(var l=0;l<e.width;l++){var c=4*(a*e.width+l);{if(0!==n[c]){-1===o&&(o=a);break}if(l===e.width-1&&-1!==o){r=a,a=e.height;break}}}return{height:r-o+1,offset:o-1}},o.prototype.clone=function(){return new o(this.name,this._font,this._text,this.getScene())},o.Parse=function(e,i){return t.SerializationHelper.Parse((function(){return new o(e.name,e.font,e.text,i)}),e,i,null)},e([t.serialize("font")],o.prototype,"_font",void 0),e([t.serialize("text")],o.prototype,"_text",void 0),o})(t.BaseTexture);t.AsciiArtFontTexture=n;var o=(function(e){function o(i,o,r){var a=e.call(this,i,"asciiart",["asciiArtFontInfos","asciiArtOptions"],["asciiArtFont"],{width:o.getEngine().getRenderWidth(),height:o.getEngine().getRenderHeight()},o,t.Texture.TRILINEAR_SAMPLINGMODE,o.getEngine(),!0)||this;a.mixToTile=0,a.mixToNormal=0;var l="40px Monospace",c=" `-.'_:,\"=^;<+!*?/cL\\zrs7TivJtC{3F)Il(xZfY5S2eajo14[nuyE]P6V9kXpKwGhqAUbOd8#HRDB0$mgMW&Q%N@";r&&("string"==typeof r?l=r:(l=r.font||l,c=r.characterSet||c,a.mixToTile=r.mixToTile||a.mixToTile,a.mixToNormal=r.mixToNormal||a.mixToNormal)),a._asciiArtFontTexture=new n(i,l,c,o.getScene());var f=a._asciiArtFontTexture.getSize();return a.onApply=function(t){t.setTexture("asciiArtFont",a._asciiArtFontTexture),t.setFloat4("asciiArtFontInfos",a._asciiArtFontTexture.charSize,c.length,f.width,f.height),t.setFloat4("asciiArtOptions",a.width,a.height,a.mixToNormal,a.mixToTile)},a}return i(o,e),o})(t.PostProcess);t.AsciiArtPostProcess=o})(t||(t={})),t.Effect.ShadersStore.asciiartPixelShader="\nvarying vec2 vUV;\nuniform sampler2D textureSampler;\nuniform sampler2D asciiArtFont;\n\nuniform vec4 asciiArtFontInfos;\nuniform vec4 asciiArtOptions;\n\nfloat getLuminance(vec3 color)\n{\nreturn clamp(dot(color,vec3(0.2126,0.7152,0.0722)),0.,1.);\n}\n\nvoid main(void) \n{\nfloat caracterSize=asciiArtFontInfos.x;\nfloat numChar=asciiArtFontInfos.y-1.0;\nfloat fontx=asciiArtFontInfos.z;\nfloat fonty=asciiArtFontInfos.w;\nfloat screenx=asciiArtOptions.x;\nfloat screeny=asciiArtOptions.y;\nfloat tileX=float(floor((gl_FragCoord.x)/caracterSize))*caracterSize/screenx;\nfloat tileY=float(floor((gl_FragCoord.y)/caracterSize))*caracterSize/screeny;\nvec2 tileUV=vec2(tileX,tileY);\nvec4 tileColor=texture2D(textureSampler,tileUV);\nvec4 baseColor=texture2D(textureSampler,vUV);\nfloat tileLuminance=getLuminance(tileColor.rgb);\nfloat offsetx=(float(floor(tileLuminance*numChar)))*caracterSize/fontx;\nfloat offsety=0.0;\nfloat x=float(mod(gl_FragCoord.x,caracterSize))/fontx;\nfloat y=float(mod(gl_FragCoord.y,caracterSize))/fonty;\nvec4 finalColor=texture2D(asciiArtFont,vec2(offsetx+x,offsety+(caracterSize/fonty-y)));\nfinalColor.rgb*=tileColor.rgb;\nfinalColor.a=1.0;\nfinalColor=mix(finalColor,tileColor,asciiArtOptions.w);\nfinalColor=mix(finalColor,baseColor,asciiArtOptions.z);\ngl_FragColor=finalColor;\n}";var t;return (function(t){var n=(function(n){function o(e,i,o,r){void 0===r&&(r=null);var a=n.call(this,r)||this;if(!(r=a.getScene()))return a;a.name=e,a._text,a._font,a.wrapU=t.Texture.CLAMP_ADDRESSMODE,a.wrapV=t.Texture.CLAMP_ADDRESSMODE;var l=a.getFontHeight(i),c=a.getFontWidth(i);a._charSize=Math.max(l.height,c);var f=a._charSize,s=Math.ceil(a._charSize*o.length);a._texture=r.getEngine().createDynamicTexture(f,s,!1,t.Texture.NEAREST_SAMPLINGMODE);var g=a.getSize(),u=document.createElement("canvas");u.width=g.width,u.height=g.height;var h=u.getContext("2d");h.textBaseline="top",h.font=i,h.fillStyle="white",h.imageSmoothingEnabled=!1;for(var x=0;x<o.length;x++)h.fillText(o[x],0,x*a._charSize-l.offset);return r.getEngine().updateDynamicTexture(a._texture,u,!1,!0),a}return i(o,n),Object.defineProperty(o.prototype,"charSize",{get:function(){return this._charSize},enumerable:!0,configurable:!0}),o.prototype.getFontWidth=function(t){var e=document.createElement("canvas"),i=e.getContext("2d");return i.fillStyle="white",i.font=t,i.measureText("W").width},o.prototype.getFontHeight=function(t){var e=document.createElement("canvas"),i=e.getContext("2d");i.fillRect(0,0,e.width,e.height),i.textBaseline="top",i.fillStyle="white",i.font=t,i.fillText("jH|",0,0);for(var n=i.getImageData(0,0,e.width,e.height).data,o=-1,r=-1,a=0;a<e.height;a++)for(var l=0;l<e.width;l++){var c=4*(a*e.width+l);{if(0!==n[c]){-1===o&&(o=a);break}if(l===e.width-1&&-1!==o){r=a,a=e.height;break}}}return{height:r-o+1,offset:o-1}},o.prototype.clone=function(){return new o(this.name,this._font,this._text,this.getScene())},o.Parse=function(e,i){return t.SerializationHelper.Parse((function(){return new o(e.name,e.font,e.text,i)}),e,i,null)},e([t.serialize("font")],o.prototype,"_font",void 0),e([t.serialize("text")],o.prototype,"_text",void 0),o})(t.BaseTexture);t.DigitalRainFontTexture=n;var o=(function(e){function o(i,o,r){var a=e.call(this,i,"digitalrain",["digitalRainFontInfos","digitalRainOptions","cosTimeZeroOne","matrixSpeed"],["digitalRainFont"],{width:o.getEngine().getRenderWidth(),height:o.getEngine().getRenderHeight()},o,t.Texture.TRILINEAR_SAMPLINGMODE,o.getEngine(),!0)||this;a.mixToTile=0,a.mixToNormal=0;var l="15px Monospace",c="古池や蛙飛び込む水の音ふるいけやかわずとびこむみずのおと初しぐれ猿も小蓑をほしげ也はつしぐれさるもこみのをほしげなり江戸の雨何石呑んだ時鳥えどのあめなんごくのんだほととぎす";r&&("string"==typeof r?l=r:(l=r.font||l,a.mixToTile=r.mixToTile||a.mixToTile,a.mixToNormal=r.mixToNormal||a.mixToNormal)),a._digitalRainFontTexture=new n(i,l,c,o.getScene());for(var f=a._digitalRainFontTexture.getSize(),s=0,g=0,u=new t.Matrix,h=0;h<16;h++)u.m[h]=Math.random();return a.onApply=function(t){t.setTexture("digitalRainFont",a._digitalRainFontTexture),t.setFloat4("digitalRainFontInfos",a._digitalRainFontTexture.charSize,c.length,f.width,f.height),t.setFloat4("digitalRainOptions",a.width,a.height,a.mixToNormal,a.mixToTile),t.setMatrix("matrixSpeed",u),s+=.003,g=s,t.setFloat("cosTimeZeroOne",g)},a}return i(o,e),o})(t.PostProcess);t.DigitalRainPostProcess=o})(t||(t={})),t.Effect.ShadersStore.digitalrainPixelShader="\nvarying vec2 vUV;\nuniform sampler2D textureSampler;\nuniform sampler2D digitalRainFont;\n\nuniform vec4 digitalRainFontInfos;\nuniform vec4 digitalRainOptions;\nuniform mat4 matrixSpeed;\nuniform float cosTimeZeroOne;\n\nfloat getLuminance(vec3 color)\n{\nreturn clamp(dot(color,vec3(0.2126,0.7152,0.0722)),0.,1.);\n}\n\nvoid main(void) \n{\nfloat caracterSize=digitalRainFontInfos.x;\nfloat numChar=digitalRainFontInfos.y-1.0;\nfloat fontx=digitalRainFontInfos.z;\nfloat fonty=digitalRainFontInfos.w;\nfloat screenx=digitalRainOptions.x;\nfloat screeny=digitalRainOptions.y;\nfloat ratio=screeny/fonty;\nfloat columnx=float(floor((gl_FragCoord.x)/caracterSize));\nfloat tileX=float(floor((gl_FragCoord.x)/caracterSize))*caracterSize/screenx;\nfloat tileY=float(floor((gl_FragCoord.y)/caracterSize))*caracterSize/screeny;\nvec2 tileUV=vec2(tileX,tileY);\nvec4 tileColor=texture2D(textureSampler,tileUV);\nvec4 baseColor=texture2D(textureSampler,vUV);\nfloat tileLuminance=getLuminance(tileColor.rgb);\nint st=int(mod(columnx,4.0));\nfloat speed=cosTimeZeroOne*(sin(tileX*314.5)*0.5+0.6); \nfloat x=float(mod(gl_FragCoord.x,caracterSize))/fontx;\nfloat y=float(mod(speed+gl_FragCoord.y/screeny,1.0));\ny*=ratio;\nvec4 finalColor=texture2D(digitalRainFont,vec2(x,1.0-y));\nvec3 high=finalColor.rgb*(vec3(1.2,1.2,1.2)*pow(1.0-y,30.0));\nfinalColor.rgb*=vec3(pow(tileLuminance,5.0),pow(tileLuminance,1.5),pow(tileLuminance,3.0));\nfinalColor.rgb+=high;\nfinalColor.rgb=clamp(finalColor.rgb,0.,1.);\nfinalColor.a=1.0;\nfinalColor=mix(finalColor,tileColor,digitalRainOptions.w);\nfinalColor=mix(finalColor,baseColor,digitalRainOptions.z);\ngl_FragColor=finalColor;\n}",t}));