var __decorate=this&&this.__decorate||function(t,e,i,n){if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)return Reflect.decorate(t,e,i,n);switch(arguments.length){case 2:return t.reduceRight(function(t,e){return e&&e(t)||t},e);case 3:return t.reduceRight(function(t,n){return void(n&&n(e,i))},void 0);case 4:return t.reduceRight(function(t,n){return n&&n(e,i,t)||t},n)}},BABYLON;!function(t){var e=function(e){function i(i,n,o,a){e.call(this,a),this.name=i,this._text==o,this._font==n,this.wrapU=t.Texture.CLAMP_ADDRESSMODE,this.wrapV=t.Texture.CLAMP_ADDRESSMODE;var r=this.getFontHeight(n),l=this.getFontWidth(n);this._charSize=Math.max(r.height,l);var c=this._charSize,f=Math.ceil(this._charSize*o.length);this._texture=a.getEngine().createDynamicTexture(c,f,!1,t.Texture.NEAREST_SAMPLINGMODE);var s=this.getSize(),g=document.createElement("canvas");g.width=s.width,g.height=s.height;var h=g.getContext("2d");h.textBaseline="top",h.font=n,h.fillStyle="white",h.imageSmoothingEnabled=!1;for(var u=0;uu;u++)h.m[u]=Math.random();this.onApply=function(t){t.setTexture("digitalRainFont",r._digitalRainFontTexture),t.setFloat4("digitalRainFontInfos",r._digitalRainFontTexture.charSize,c.length,f.width,f.height),t.setFloat4("digitalRainOptions",r.width,r.height,r.mixToNormal,r.mixToTile),t.setMatrix("matrixSpeed",h),s+=.003,g=s,t.setFloat("cosTimeZeroOne",g)}}return __extends(n,i),n}(t.PostProcess);t.DigitalRainPostProcess=i}(BABYLON||(BABYLON={})),BABYLON.Effect.ShadersStore.digitalrainPixelShader="// Samplers.\nvarying vec2 vUV;\nuniform sampler2D textureSampler;\nuniform sampler2D digitalRainFont;\n\n// Infos.\nuniform vec4 digitalRainFontInfos;\nuniform vec4 digitalRainOptions;\nuniform mat4 matrixSpeed;\n\nuniform float cosTimeZeroOne;\n\n// Transform color to luminance.\nfloat getLuminance(vec3 color)\n{\n return clamp(dot(color, vec3(0.2126, 0.7152, 0.0722)), 0., 1.);\n}\n\n// Main functions.\nvoid main(void) \n{\n float caracterSize = digitalRainFontInfos.x;\n float numChar = digitalRainFontInfos.y - 1.0;\n float fontx = digitalRainFontInfos.z;\n float fonty = digitalRainFontInfos.w;\n\n float screenx = digitalRainOptions.x;\n float screeny = digitalRainOptions.y;\n float ratio = screeny / fonty;\n\n float columnx = float(floor((gl_FragCoord.x) / caracterSize));\n float tileX = float(floor((gl_FragCoord.x) / caracterSize)) * caracterSize / screenx;\n float tileY = float(floor((gl_FragCoord.y) / caracterSize)) * caracterSize / screeny;\n\n vec2 tileUV = vec2(tileX, tileY);\n vec4 tileColor = texture2D(textureSampler, tileUV);\n vec4 baseColor = texture2D(textureSampler, vUV);\n\n float tileLuminance = getLuminance(tileColor.rgb);\n \n int st = int(mod(columnx, 4.0));\n float speed = cosTimeZeroOne * (sin(tileX * 314.5) * 0.5 + 0.6); \n float x = float(mod(gl_FragCoord.x, caracterSize)) / fontx;\n float y = float(mod(speed + gl_FragCoord.y / screeny, 1.0));\n y *= ratio;\n\n vec4 finalColor = texture2D(digitalRainFont, vec2(x, 1.0 - y));\n vec3 high = finalColor.rgb * (vec3(1.2,1.2,1.2) * pow(1.0 - y, 30.0));\n\n finalColor.rgb *= vec3(pow(tileLuminance, 5.0), pow(tileLuminance, 1.5), pow(tileLuminance, 3.0));\n finalColor.rgb += high;\n finalColor.rgb = clamp(finalColor.rgb, 0., 1.);\n finalColor.a = 1.0;\n\n finalColor = mix(finalColor, tileColor, digitalRainOptions.w);\n finalColor = mix(finalColor, baseColor, digitalRainOptions.z);\n\n gl_FragColor = finalColor;\n}";