MCPcopy
hub / github.com/Vishal-raj-1/Awesome-JavaScript-Projects / a

Function a

assets/js/nebula-js/postprocessing.min.js:6–6  ·  view source on GitHub ↗
(e)

Source from the content-addressed store, hash-verified

4 * Copyright 2019 Raoul van Rüschen, Zlib
5 */
6"use strict";function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}(function(e,t){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?t(exports,require("three")):"function"==typeof define&&define.amd?define(["exports","three"],t):(e=e||self,t(e.POSTPROCESSING={},e.THREE))})(void 0,function(e,t){'use strict';var k=Math.cos,U=Math.sin,G=Math.PI,Q=Math.pow,z=Math.floor,N=Number.parseInt,H=Math.abs,Y=Math.sqrt,V=Math.min,X=Math.max;function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var r,n=0;n<t.length;n++)r=t[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}function o(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}function s(e,t){return s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},s(e,t)}function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function l(e,t){return t&&("object"===_typeof(t)||"function"==typeof t)?t:c(e)}function u(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&(e=a(e),null!==e););return e}function d(e,t,r){return d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=u(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(r):o.value}},d(e,t,r||e)}function f(){if(null===le){var e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),r=new Float32Array([0,0,2,0,0,2]);le=new t.BufferGeometry,le.addAttribute("position",new t.BufferAttribute(e,3)),le.addAttribute("uv",new t.BufferAttribute(r,2))}return le}function A(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r[1]);return n}function g(e,t,r){var n,o,i=!0,a=!1,s=void 0;try{for(var c,l,u=t[Symbol.iterator]();!(i=(c=u.next()).done);i=!0){l=c.value,n="$1"+e+l.charAt(0).toUpperCase()+l.slice(1),o=new RegExp("([^\\.])(\\b"+l+"\\b)","g");var d=!0,f=!1,A=void 0;try{for(var g,v,p=r.entries()[Symbol.iterator]();!(d=(g=p.next()).done);d=!0)v=g.value,null!==v[1]&&r.set(v[0],v[1].replace(o,n))}catch(e){f=!0,A=e}finally{try{d||null==p["return"]||p["return"]()}finally{if(f)throw A}}}}catch(e){a=!0,s=e}finally{try{i||null==u["return"]||u["return"]()}finally{if(a)throw s}}}function p(e,t,r,n,o,i,a){var s=/(?:\w+\s+(\w+)\([\w\s,]*\)\s*{[^}]+})/g,c=/(?:varying\s+\w+\s+(\w*))/g,l=t.blendMode,u=new Map([["fragment",t.fragmentShader],["vertex",t.vertexShader]]),d=u.get("fragment")!==void 0&&0<=u.get("fragment").indexOf("mainImage"),f=u.get("fragment")!==void 0&&0<=u.get("fragment").indexOf("mainUv"),v=[],p=[],m=!1,x=!1;if(u.get("fragment")===void 0)console.error("Missing fragment shader",t);else if(f&&0!=(a&Be.CONVOLUTION))console.error("Effects that transform UV coordinates are incompatible with convolution effects",t);else if(!d&&!f)console.error("The fragment shader contains neither a mainImage nor a mainUv function",t);else{if(f&&(r.set(oe.FRAGMENT_MAIN_UV,r.get(oe.FRAGMENT_MAIN_UV)+"\t"+e+"MainUv(UV);\n"),m=!0),null!==u.get("vertex")&&0<=u.get("vertex").indexOf("mainSupport")){var C="\t"+e+"MainSupport(";0<=u.get("vertex").indexOf("uv")&&(C+="vUv"),C+=");\n",r.set(oe.VERTEX_MAIN_SUPPORT,r.get(oe.VERTEX_MAIN_SUPPORT)+C),v=v.concat(A(c,u.get("vertex"))),p=p.concat(v).concat(A(s,u.get("vertex")))}if(p=p.concat(A(s,u.get("fragment"))).concat(Array.from(t.uniforms.keys())).concat(Array.from(t.defines.keys())),t.uniforms.forEach(function(t,r){return i.set(e+r.charAt(0).toUpperCase()+r.slice(1),t)}),t.defines.forEach(function(t,r){return o.set(e+r.charAt(0).toUpperCase()+r.slice(1),t)}),g(e,p,o),g(e,p,u),n.set(l.blendFunction,l),d){var y=e+"MainImage(color0, UV, ";0!=(a&Be.DEPTH)&&0<=u.get("fragment").indexOf("depth")&&(y+="depth, ",x=!0),y+="color1);\n\t";var B=e+"BlendOpacity";i.set(B,l.opacity),y+="color0 = blend"+l.blendFunction+"(color0, color1, "+B+");\n\n\t",r.set(oe.FRAGMENT_MAIN_IMAGE,r.get(oe.FRAGMENT_MAIN_IMAGE)+y),r.set(oe.FRAGMENT_HEAD,r.get(oe.FRAGMENT_HEAD)+"uniform float "+B+";\n\n")}r.set(oe.FRAGMENT_HEAD,r.get(oe.FRAGMENT_HEAD)+u.get("fragment")+"\n"),null!==u.get("vertex")&&r.set(oe.VERTEX_HEAD,r.get(oe.VERTEX_HEAD)+u.get("vertex")+"\n")}return{varyings:v,transformedUv:m,readDepth:x}}function x(e,t){return e+Math.random()*(t-e)}function C(e,t,r,n){var o,a,s,c,l=document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),u=l.getContext("2d"),d=u.createImageData(e,t),f=d.data;for(a=0;a<t;++a)for(o=0;o<e;++o)s=4*(a*e+o),c=(a*e+o)*n,f[s]=0<n?r[c]:0,f[s+1]=1<n?r[c+1]:0,f[s+2]=2<n?r[c+2]:0,f[s+3]=3<n?r[c+3]:255;return l.width=e,l.height=t,u.putImageData(d,0,0),l}function y(e,t,r){return e+(t-e)*r}function B(e){return V(X(e,0),1)}function D(e,t){var r=t.min,n=t.max,o=.5*Y(2*r.x),i=.5*Y(2*r.y),a=.5*Y(2*n.x),s=.5*Y(2*n.y),c=B(e/32);return r.set(y(o,r.x,c),y(i,r.y,c)),n.set(y(a,n.x,c),y(s,n.y,c)),t}function E(e,r,n,o){var c,l,u,d,i=Math.trunc,s=Math.sign,f=r.x-e.x,A=r.y-e.y,g=n,v=n+1,p=e.y+A*(g-e.x)/f,m=e.y+A*(v-e.x)/f;return g>=e.x&&g<r.x||v>e.x&&v<=r.x?s(p)===s(m)||1e-4>H(p)||1e-4>H(m)?(c=(p+m)/2,0>c?o.set(H(c),0):o.set(0,H(c))):(d=-e.y*f/A+e.x,l=d>e.x?p*(d-i(d))/2:0,u=d<r.x?m*(1-(d-i(d)))/2:0,c=H(l)>H(u)?l:-u,0>c?o.set(H(l),H(u)):o.set(H(u),H(l))):o.set(0,0),o}function h(e,t,r,n,o){var i=at.min,s=at.max,c=st.min,l=st.max,u=st,a=.5+n,f=.5+n-1,A=t+r+1;switch(e){case 0:{o.set(0,0);break}case 1:{t<=r?E(i.set(0,f),s.set(A/2,0),t,o):o.set(0,0);break}case 2:{t>=r?E(i.set(A/2,0),s.set(A,f),t,o):o.set(0,0);break}case 3:{E(i.set(0,f),s.set(A/2,0),t,c),E(i.set(A/2,0),s.set(A,f),t,l),D(A,u),o.addVectors(c,l);break}case 4:{t<=r?E(i.set(0,a),s.set(A/2,0),t,o):o.set(0,0);break}case 5:{o.set(0,0);break}case 6:{0<H(n)?(E(i.set(0,a),s.set(A,f),t,c),E(i.set(0,a),s.set(A/2,0),t,l),l.add(E(i.set(A/2,0),s.set(A,f),t,o)),o.addVectors(c,l).divideScalar(2)):E(i.set(0,a),s.set(A,f),t,o);break}case 7:{E(i.set(0,a),s.set(A,f),t,o);break}case 8:{t>=r?E(i.set(A/2,0),s.set(A,a),t,o):o.set(0,0);break}case 9:{0<H(n)?(E(i.set(0,f),s.set(A,a),t,c),E(i.set(0,f),s.set(A/2,0),t,l),l.add(E(i.set(A/2,0),s.set(A,a),t,o)),o.addVectors(c,l).divideScalar(2)):E(i.set(0,f),s.set(A,a),t,o);break}case 10:{o.set(0,0);break}case 11:{E(i.set(0,f),s.set(A,a),t,o);break}case 12:{E(i.set(0,a),s.set(A/2,0),t,c),E(i.set(A/2,0),s.set(A,a),t,l),D(A,u),o.addVectors(c,l);break}case 13:{E(i.set(0,f),s.set(A,a),t,o);break}case 14:{E(i.set(0,a),s.set(A,f),t,o);break}case 15:{o.set(0,0);break}}return o}function T(e,t,r,n){var o,i,s,l,u,d=e.equals(t);return d||(o=(e.x+t.x)/2,i=(e.y+t.y)/2,s=t.y-e.y,l=e.x-t.x,u=s*(r-o)+l*(n-i),d=0<u),d}function S(e,t,r,n){var o,i,s,c,l;for(o=0,s=0;s<30;++s)for(i=0;i<30;++i)c=i/29,l=s/29,T(e,t,r+c,n+l)&&++o;return o/900}function w(t,r,n,o,i,a){var s=At[t],e=s[0],c=s[1];return 0<e&&(r.x+=i[0],r.y+=i[1]),0<c&&(n.x+=i[0],n.y+=i[1]),a.set(1-S(r,n,1+o,0+o),S(r,n,1+o,1+o))}function P(e,t,r,n,o){var i=at.min,a=at.max,s=st.min,c=st.max,l=t+r+1;switch(e){case 0:{w(e,i.set(1,1),a.set(1+l,1+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 1:{w(e,i.set(1,0),a.set(0+l,0+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 2:{w(e,i.set(0,0),a.set(1+l,0+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 3:{w(e,i.set(1,0),a.set(1+l,0+l),t,n,o);break}case 4:{w(e,i.set(1,1),a.set(0+l,0+l),t,n,s),w(e,i.set(1,1),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 5:{w(e,i.set(1,1),a.set(0+l,0+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 6:{w(e,i.set(1,1),a.set(1+l,0+l),t,n,o);break}case 7:{w(e,i.set(1,1),a.set(1+l,0+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 8:{w(e,i.set(0,0),a.set(1+l,1+l),t,n,s),w(e,i.set(1,0),a.set(1+l,1+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 9:{w(e,i.set(1,0),a.set(1+l,1+l),t,n,o);break}case 10:{w(e,i.set(0,0),a.set(1+l,1+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 11:{w(e,i.set(1,0),a.set(1+l,1+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 12:{w(e,i.set(1,1),a.set(1+l,1+l),t,n,o);break}case 13:{w(e,i.set(1,1),a.set(1+l,1+l),t,n,s),w(e,i.set(1,0),a.set(1+l,1+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 14:{w(e,i.set(1,1),a.set(1+l,1+l),t,n,s),w(e,i.set(1,1),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}case 15:{w(e,i.set(1,1),a.set(1+l,1+l),t,n,s),w(e,i.set(1,0),a.set(1+l,0+l),t,n,c),o.addVectors(s,c).divideScalar(2);break}}return o}function I(e,r,n){var o,a,s,u,d,f,A,g,v=new t.Vector2;for(o=0,a=e.length;o<a;++o)for(f=e[o],A=f.data,g=f.width,u=0;u<g;++u)for(s=0;s<g;++s)n?h(o,s,u,r,v):P(o,s,u,r,v),d=2*(u*g+s),A[d]=255*v.x,A[d+1]=255*v.y}function M(e,r,n,o,a,s){var u,f,A,g,v,m,C,B,D,E,h=new t.Vector2,p=s.data,T=s.width;for(u=0,f=r.length;u<f;++u)for(C=n[u],B=r[u],D=B.data,E=B.width,g=0;g<o;++g)for(A=0;A<o;++A)h.fromArray(C).multiplyScalar(o),h.add(e),h.x+=A,h.y+=g,v=2*(h.y*T+h.x),m=a?2*(g*g*E+A*A):2*(g*E+A),p[v]=D[m],p[v+1]=D[m+1]}function F(e,t,r){return e+(t-e)*r}function R(t){var e=F(t[0],t[1],1-.25),r=F(t[2],t[3],1-.25);return F(e,r,1-.125)}function L(e,t){var r=0;return 1===t[3]&&(r+=1),1==r&&1===t[2]&&1!==e[1]&&1!==e[3]&&(r+=1),r}function O(e,t){var r=0;return 1===t[3]&&1!==e[1]&&1!==e[3]&&(r+=1),1==r&&1===t[2]&&1!==e[0]&&1!==e[2]&&(r+=1),r}var W=function(){function e(){r(this,e)}return o(e,[{key:"dispose",value:function(){}}]),e}(),K=function(){function e(){r(this,e)}return o(e,[{key:"initialize",value:function(){}}]),e}(),j="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",J=function(e){function n(){return r(this,n),l(this,a(n).call(this,{type:"AdaptiveLuminanceMaterial",defines:{MIP_LEVEL_1X1:"0.0"},uniforms:{previousLuminanceBuffer:new t.Uniform(null),currentLuminanceBuffer:new t.Uniform(null),minLuminance:new t.Uniform(.01),deltaTime:new t.Uniform(0),tau:new t.Uniform(1)},fragmentShader:"uniform sampler2D previousLuminanceBuffer;uniform sampler2D currentLuminanceBuffer;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float previousLuminance=texture2D(previousLuminanceBuffer,vUv,MIP_LEVEL_1X1).r;float currentLuminance=texture2D(currentLuminanceBuffer,vUv,MIP_LEVEL_1X1).r;previousLuminance=max(minLuminance,previousLuminance);currentLuminance=max(minLuminance,currentLuminance);float adaptedLum=previousLuminance+(currentLuminance-previousLuminance)*(1.0-exp(-deltaTime*tau));gl_FragColor.r=adaptedLum;}",vertexShader:j,depthWrite:!1,depthTest:!1}))}return i(n,e),n}(t.ShaderMaterial),Z=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new t.Vector2;return r(this,n),l(this,a(n).call(this,{type:"ColorEdgesMaterial",defines:{LOCAL_CONTRAST_ADAPTATION_FACTOR:"2.0",EDGE_THRESHOLD:"0.1"},uniforms:{inputBuffer:new t.Uniform(null),texelSize:new t.Uniform(e)},fragmentShader:"uniform sampler2D inputBuffer;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;void main(){const vec2 threshold=vec2(EDGE_THRESHOLD);vec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);float maxDelta=max(max(max(delta.x,delta.y),delta.z),delta.w);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(max(maxDelta,delta.z),delta.w);edges*=step(maxDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);vUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}",depthWrite:!1,depthTest:!1}))}return i(n,e),o(n,[{key:"setLocalContrastAdaptationFactor",value:function(e){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=e.toFixed("2"),this.needsUpdate=!0}},{key:"setEdgeDetectionThreshold",value:function(e){e=V(X(e,.05),.5),this.defines.EDGE_THRESHOLD=e.toFixed("2"),this.needsUpdate=!0}}]),n}(t.ShaderMaterial),q=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new t.Vector2;return r(this,n),e=l(this,a(n).call(this,{type:"ConvolutionMaterial",uniforms:{inputBuffer:new t.Uniform(null),texelSize:new t.Uniform(new t.Vector2()),halfTexelSize:new t.Uniform(new t.Vector2()),kernel:new t.Uniform(0)},fragmentShader:"#include <common>\n#include <dithering_pars_fragment>\nuniform sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;\n#include <dithering_fragment>\n}",vertexShader:"uniform vec2 texelSize;uniform vec2 halfTexelSize;uniform float kernel;/*Packing multiple texture coordinates into one varying and using a swizzle toextract them in the fragment shader still causes a dependent texture read.*/varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize*vec2(kernel))+halfTexelSize;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}",depthWrite:!1,depthTest:!1})),e.setTexelSize(o.x,o.y),e.kernelSize=$.LARGE,e}return i(n,e),o(n,[{key:"getKernel",value:function(){return _[this.kernelSize]}},{key:"setTexelSize",value:function(e,t){this.uniforms.texelSize.value.set(e,t),this.uniforms.halfTexelSize.value.set(e,t).multiplyScalar(.5)}}]),n}(t.ShaderMaterial),_=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],$={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},ee=function(e){function n(){return r(this,n),l(this,a(n).call(this,{type:"CopyMaterial",uniforms:{inputBuffer:new t.Uniform(null),opacity:new t.Uniform(1)},fragmentShader:"uniform sampler2D inputBuffer;uniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel;}",vertexShader:j,depthWrite:!1,depthTest:!1}))}return i(n,e),n}(t.ShaderMaterial),te=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,i=1<arguments.length?arguments[1]:void 0;return r(this,n),e=l(this,a(n).call(this,{type:"DepthComparisonMaterial",uniforms:{depthBuffer:new t.Uniform(o),cameraNear:new t.Uniform(.3),cameraFar:new t.Uniform(1e3)},fragmentShader:"#include <packing>\n#include <clipping_planes_pars_fragment>\nuniform sampler2D depthBuffer;uniform float cameraNear;uniform float cameraFar;varying float vViewZ;varying vec4 vProjTexCoord;void main(){\n#include <clipping_planes_fragment>\nvec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5;projTexCoord=clamp(projTexCoord,0.002,0.998);float fragCoordZ=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord));\n#ifdef PERSPECTIVE_CAMERA\nfloat viewZ=perspectiveDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\n#else\nfloat viewZ=orthographicDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\n#endif\nfloat depthTest=(-vViewZ>-viewZ)? 1.0 : 0.0;gl_FragColor.rg=vec2(0.0,depthTest);}",vertexShader:"#include <common>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying float vViewZ;varying vec4 vProjTexCoord;void main(){\n#include <skinbase_vertex>\n#include <begin_vertex>\n#include <morphtarget_vertex>\n#include <skinning_vertex>\n#include <project_vertex>\nvViewZ=mvPosition.z;vProjTexCoord=gl_Position;\n#include <clipping_planes_vertex>\n}",depthWrite:!1,depthTest:!1,morphTargets:!0,skinning:!0})),e.adoptCameraSettings(i),e}return i(n,e),o(n,[{key:"adoptCameraSettings",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;null!==e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof t.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA)}}]),n}(t.ShaderMaterial),re=function(e){function n(){return r(this,n),l(this,a(n).call(this,{type:"DepthMaskMaterial",uniforms:{depthBuffer0:new t.Uniform(null),depthBuffer1:new t.Uniform(null),inputBuffer:new t.Uniform(null)},fragmentShader:"uniform sampler2D depthBuffer0;uniform sampler2D depthBuffer1;uniform sampler2D inputBuffer;varying vec2 vUv;void main(){float d0=texture2D(depthBuffer0,vUv).r;float d1=texture2D(depthBuffer1,vUv).r;if(d0<d1){discard;}gl_FragColor=texture2D(inputBuffer,vUv);}",vertexShader:j,depthWrite:!1,depthTest:!1}))}return i(n,e),n}(t.ShaderMaterial),ne=function(e){function n(e,o,i){var s,c=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,u=!!(4<arguments.length&&void 0!==arguments[4])&&arguments[4];if(r(this,n),s=l(this,a(n).call(this,{type:"EffectMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{inputBuffer:new t.Uniform(null),depthBuffer:new t.Uniform(null),resolution:new t.Uniform(new t.Vector2()),texelSize:new t.Uniform(new t.Vector2()),cameraNear:new t.Uniform(.3),cameraFar:new t.Uniform(1e3),aspect:new t.Uniform(1),time:new t.Uniform(0)},fragmentShader:"#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\nuniform sampler2D inputBuffer;uniform sampler2D depthBuffer;uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}FRAGMENT_HEADvoid main(){FRAGMENT_MAIN_UVvec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGEgl_FragColor=color0;\n#include <dithering_fragment>\n}".replace(oe.FRAGMENT_HEAD,e.get(oe.FRAGMENT_HEAD)).replace(oe.FRAGMENT_MAIN_UV,e.get(oe.FRAGMENT_MAIN_UV)).replace(oe.FRAGMENT_MAIN_IMAGE,e.get(oe.FRAGMENT_MAIN_IMAGE)),vertexShader:"uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEADvoid main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORTgl_Position=vec4(position.xy,1.0,1.0);}".replace(oe.VERTEX_HEAD,e.get(oe.VERTEX_HEAD)).replace(oe.VERTEX_MAIN_SUPPORT,e.get(oe.VERTEX_MAIN_SUPPORT)),dithering:u,depthWrite:!1,depthTest:!1})),null!==o){var d=!0,f=!1,A=void 0;try{for(var g,v,p=o.entries()[Symbol.iterator]();!(d=(g=p.next()).done);d=!0)v=g.value,s.defines[v[0]]=v[1]}catch(e){f=!0,A=e}finally{try{d||null==p["return"]||p["return"]()}finally{if(f)throw A}}}if(null!==i){var m=!0,x=!1,C=void 0;try{for(var y,B,D=i.entries()[Symbol.iterator]();!(m=(y=D.next()).done);m=!0)B=y.value,s.uniforms[B[0]]=B[1]}catch(e){x=!0,C=e}finally{try{m||null==D["return"]||D["return"]()}finally{if(x)throw C}}}return s.adoptCameraSettings(c),s}return i(n,e),o(n,[{key:"setSize",value:function(e,t){e=X(e,1),t=X(t,1),this.uniforms.resolution.value.set(e,t),this.uniforms.texelSize.value.set(1/e,1/t),this.uniforms.aspect.value=e/t}},{key:"adoptCameraSettings",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;null!==e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof t.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA)}},{key:"depthPacking",get:function(){return N(this.defines.DEPTH_PACKING)},set:function(e){this.defines.DEPTH_PACKING=e.toFixed(0)}}]),n}(t.ShaderMaterial),oe={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},ie=function(e){function n(e){return r(this,n),l(this,a(n).call(this,{type:"GodRaysMaterial",defines:{SAMPLES_INT:"60",SAMPLES_FLOAT:"60.0"},uniforms:{inputBuffer:new t.Uniform(null),lightPosition:new t.Uniform(e),density:new t.Uniform(1),decay:new t.Uniform(1),weight:new t.Uniform(1),exposure:new t.Uniform(1),clampMax:new t.Uniform(1)},fragmentShader:"#include <common>\n#include <dithering_pars_fragment>\nuniform sampler2D inputBuffer;uniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=coord-lightPosition;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 texel;vec4 color=vec4(0.0);/*Estimate the probability of occlusion at each pixel by summing samplesalong a ray to the light position.*/for(int i=0;i<SAMPLES_INT;++i){coord-=delta;texel=texture2D(inputBuffer,coord);texel*=illuminationDecay*weight;color+=texel;illuminationDecay*=decay;}gl_FragColor=clamp(color*exposure,0.0,clampMax);\n#include <dithering_fragment>\n}",vertexShader:j,depthWrite:!1,depthTest:!1}))}return i(n,e),o(n,[{key:"samples",get:function(){return N(this.defines.SAMPLES_INT)},set:function(e){e=z(e),this.defines.SAMPLES_INT=e.toFixed(0),this.defines.SAMPLES_FLOAT=e.toFixed(1),this.needsUpdate=!0}}]),n}(t.ShaderMaterial),ae=function(e){function n(){var e,o=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0],i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;r(this,n);var s=null!==i;return e=l(this,a(n).call(this,{type:"LuminanceMaterial",uniforms:{inputBuffer:new t.Uniform(null),distinction:new t.Uniform(1),range:new t.Uniform(s?i:new t.Vector2)},fragmentShader:"#include <common>\nuniform sampler2D inputBuffer;uniform float distinction;uniform vec2 range;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=linearToRelativeLuminance(texel.rgb);\n#ifdef RANGE\nfloat low=step(range.x,l);float high=step(l,range.y);l*=low*high;\n#endif\nl=pow(abs(l),distinction);\n#ifdef COLOR\ngl_FragColor=vec4(texel.rgb*l,texel.a);\n#else\ngl_FragColor=vec4(l,l,l,texel.a);\n#endif\n}",vertexShader:j,depthWrite:!1,depthTest:!1})),e.colorOutput=o,e.luminanceRange=s,e}return i(n,e),o(n,[{key:"setColorOutputEnabled",value:function(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}},{key:"setLuminanceRangeEnabled",value:function(e){e?this.defines.RANGE="1":delete this.defines.RANGE,this.needsUpdate=!0}},{key:"colorOutput",get:function(){return void 0!==this.defines.COLOR},set:function(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}},{key:"luminanceRange",get:function(){return void 0!==this.defines.RANGE},set:function(e){e?this.defines.RANGE="1":delete this.defines.RANGE,this.needsUpdate=!0}}]),n}(t.ShaderMaterial),se=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new t.Vector2;return r(this,n),e=l(this,a(n).call(this,{type:"OutlineEdgesMaterial",uniforms:{maskTexture:new t.Uniform(null),texelSize:new t.Uniform(new t.Vector2())},fragmentShader:"uniform sampler2D maskTexture;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(maskTexture,vUv0).rg;vec2 c1=texture2D(maskTexture,vUv1).rg;vec2 c2=texture2D(maskTexture,vUv2).rg;vec2 c3=texture2D(maskTexture,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)? vec2(d,0.0): vec2(0.0,d);}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}",depthWrite:!1,depthTest:!1})),e.setTexelSize(o.x,o.y),e}return i(n,e),o(n,[{key:"setTexelSize",value:function(e,t){this.uniforms.texelSize.value.set(e,t)}}]),n}(t.ShaderMaterial),ce=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new t.Vector2,o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new t.Vector2;return r(this,n),l(this,a(n).call(this,{type:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new t.Uniform(null),areaTexture:new t.Uniform(null),searchTexture:new t.Uniform(null),texelSize:new t.Uniform(e),resolution:new t.Uniform(o)},fragmentShader:"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)\n#if __VERSION__ < 300\n#define round(v) floor(v + 0.5)\n#endif\nuniform sampler2D inputBuffer;uniform sampler2D areaTexture;uniform sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;/***Moves values to a target vector based on a given conditional vector.*/void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}/***Allows to decode two binary values from a bilinear-filtered access.**Bilinear access for fetching 'e' have a 0.25 offset,and we are interested*in the R and G edges:**+---G---+-------+*|x o R x|*+-------+-------+**Then,if one of these edge is enabled:*Red:(0.75*X+0.25*1)=>0.25 or 1.0*Green:(0.75*1+0.25*X)=>0.75 or 1.0**This function will unpack the values(mad+mul+round):*wolframalpha.com: round(x*abs(5*x-5*0.75))plot 0 to 1*/vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}/***Diagonal pattern searches.*/vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}/***Calculates the area corresponding to a certain diagonal distance and crossing*edges 'e'.*/vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}/***Searches for diagonal patterns and returns the corresponding weights.*/vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}/***Determines how much length should be added in the last step of the searches.**Takes the bilinearly interpolated edge(see @PSEUDO_GATHER4),and adds 0,1*or 2 depending on which edges and crossing edges are active.*/float searchLength(const in vec2 e,const in float offset){/*The texture is flipped vertically,with left and right cases taking halfof the space horizontally.*/vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}/***Horizontal search for the second pass.*/float searchXLeft(in vec2 texCoord,const in float end){/*@PSEUDO_GATHER4This texCoord has been offset by(-0.25,-0.125)in the vertex shader tosample between edges,thus fetching four edges in a row.Sampling with different offsets in each direction allows to disambiguatewhich edges are active from the four fetched ones.*/vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x>end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x<end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}/***Vertical search for the second pass.*/float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.y>end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;i++){if(!(texCoord.y<end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}/***Determines the areas at each side of the current edge.*/vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}/***Corner detection.*/void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\n#if !defined(DISABLE_CORNER_DETECTION)\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=saturate(factor);\n#endif\n}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\n#if !defined(DISABLE_CORNER_DETECTION)\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=saturate(factor);\n#endif\n}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){\n#if !defined(DISABLE_DIAG_DETECTION)\n/*Diagonals have both north and west edges,so searching for them in one ofthe boundaries is enough.*/weights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){\n#endif\nvec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;/*Now fetch the left crossing edges,two at a time using bilinearfiltering. Sampling at-0.25(see @CROSSING_OFFSET)enables to discern whatvalue each edge has.*/float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;/*Translate distances to pixel units for better interleave arithmetic andmemory accesses.*/d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);\n#if !defined(DISABLE_DIAG_DETECTION)\n}else{e.r=0.0;}\n#endif\n}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}",vertexShader:"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}",depthWrite:!1,depthTest:!1}))}return i(n,e),o(n,[{key:"setOrthogonalSearchSteps",value:function(e){e=V(X(e,0),112),this.defines.MAX_SEARCH_STEPS_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=e.toFixed("1"),this.needsUpdate=!0}},{key:"setDiagonalSearchSteps",value:function(e){e=V(X(e,0),20),this.defines.MAX_SEARCH_STEPS_DIAG_INT=e.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=e.toFixed("1"),this.needsUpdate=!0}},{key:"setCornerRounding",value:function(e){e=V(X(e,0),100),this.defines.CORNER_ROUNDING=e.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(e/100).toFixed("4"),this.needsUpdate=!0}},{key:"diagonalDetection",get:function(){return void 0===this.defines.DISABLE_DIAG_DETECTION},set:function(e){e?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}},{key:"cornerRounding",get:function(){return void 0===this.defines.DISABLE_CORNER_DETECTION},set:function(e){e?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}}]),n}(t.ShaderMaterial),le=null,ue=function(){function e(){var n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"Pass",o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new t.Scene,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new t.OrthographicCamera(-1,1,1,-1,0,1);r(this,e),this.name=n,this.scene=o,this.camera=i,this.screen=null,this.needsSwap=!0,this.needsDepthTexture=!1,this.renderToScreen=!1,this.enabled=!0}return o(e,[{key:"getFullscreenMaterial",value:function(){return null===this.screen?null:this.screen.material}},{key:"setFullscreenMaterial",value:function(e){var r=this.screen;null===r?(r=new t.Mesh(f(),e),r.frustumCulled=!1,null===this.scene&&(this.scene=new t.Scene),this.scene.add(r),this.screen=r):r.material=e}},{key:"getDepthTexture",value:function(){return null}},{key:"setDepthTexture",value:function(){}},{key:"render",value:function(){throw new Error("Render method not implemented!")}},{key:"setSize",value:function(){}},{key:"initialize",value:function(){}},{key:"dispose",value:function(){var e=this.getFullscreenMaterial();null!==e&&e.dispose();for(var t,r=0,n=Object.keys(this);r<n.length;r++)t=n[r],null!==this[t]&&"function"==typeof this[t].dispose&&this[t].dispose()}}]),e}(),de=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.resolutionScale,s=void 0===i?.5:i,c=o.kernelSize,u=void 0===c?$.LARGE:c;return r(this,n),e=l(this,a(n).call(this,"BlurPass")),e.renderTargetX=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),e.renderTargetX.texture.name="Blur.TargetX",e.renderTargetY=e.renderTargetX.clone(),e.renderTargetY.texture.name="Blur.TargetY",e.resolution=new t.Vector2,e.resolutionScale=s,e.convolutionMaterial=new q,e.ditheredConvolutionMaterial=new q,e.ditheredConvolutionMaterial.dithering=!0,e.dithering=!1,e.kernelSize=u,e}return i(n,e),o(n,[{key:"getResolutionScale",value:function(){return this.resolutionScale}},{key:"setResolutionScale",value:function(e){this.resolutionScale=e,this.setSize(this.resolution.x,this.resolution.y)}},{key:"render",value:function(e,t,r){var n,o,a,s=this.scene,c=this.camera,u=this.renderTargetX,d=this.renderTargetY,f=this.convolutionMaterial,A=f.uniforms,g=f.getKernel(),v=t;for(this.setFullscreenMaterial(f),o=0,a=g.length-1;o<a;++o)n=0==o%2?u:d,A.kernel.value=g[o],A.inputBuffer.value=v.texture,e.setRenderTarget(n),e.render(s,c),v=n;this.dithering&&(f=this.ditheredConvolutionMaterial,A=f.uniforms,this.setFullscreenMaterial(f)),A.kernel.value=g[o],A.inputBuffer.value=v.texture,e.setRenderTarget(this.renderToScreen?null:r),e.render(s,c)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),e=X(1,z(e*this.resolutionScale)),t=X(1,z(t*this.resolutionScale)),this.renderTargetX.setSize(e,t),this.renderTargetY.setSize(e,t),this.convolutionMaterial.setTexelSize(1/e,1/t),this.ditheredConvolutionMaterial.setTexelSize(1/e,1/t)}},{key:"initialize",value:function(e,r){r||(this.renderTargetX.texture.format=t.RGBFormat,this.renderTargetY.texture.format=t.RGBFormat)}},{key:"width",get:function(){return this.renderTargetX.width}},{key:"height",get:function(){return this.renderTargetX.height}},{key:"kernelSize",get:function(){return this.convolutionMaterial.kernelSize},set:function(e){this.convolutionMaterial.kernelSize=e,this.ditheredConvolutionMaterial.kernelSize=e}}]),n}(ue),fe=function(e){function t(){var e;return r(this,t),e=l(this,a(t).call(this,"ClearMaskPass",null,null)),e.needsSwap=!1,e}return i(t,e),o(t,[{key:"render",value:function(e){e.state.buffers.stencil.setTest(!1)}}]),t}(ue),Ae=new t.Color,ge=function(e){function t(){var e,n=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],o=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],i=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2];return r(this,t),e=l(this,a(t).call(this,"ClearPass",null,null)),e.needsSwap=!1,e.color=n,e.depth=o,e.stencil=i,e.overrideClearColor=null,e.overrideClearAlpha=-1,e}return i(t,e),o(t,[{key:"render",value:function(e,t){var r=this.overrideClearColor,n=this.overrideClearAlpha,o=e.getClearAlpha(),i=null!==r,a=0<=n;i?(Ae.copy(e.getClearColor()),e.setClearColor(r,a?n:o)):a&&e.setClearAlpha(n),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),i?e.setClearColor(Ae,o):a&&e.setClearAlpha(o)}}]),t}(ue),ve=function(e){function t(e,n){var o,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;return r(this,t),o=l(this,a(t).call(this,"RenderPass",e,n)),o.needsSwap=!1,o.overrideMaterial=i,o.clearPass=new ge,o.depthTexture=null,o}return i(t,e),o(t,[{key:"getClearPass",value:function(){return this.clearPass}},{key:"getDepthTexture",value:function(){return this.depthTexture}},{key:"setDepthTexture",value:function(e){this.depthTexture=e}},{key:"render",value:function(e,t,r){var n=this.scene,o=this.renderToScreen?null:t,i=n.overrideMaterial;null===this.depthTexture||this.renderToScreen||(t.depthTexture=this.depthTexture,r.depthTexture=null),this.clear&&(this.clearPass.renderToScreen=this.renderToScreen,this.clearPass.render(e,t)),n.overrideMaterial=this.overrideMaterial,e.setRenderTarget(o),e.render(n,this.camera),n.overrideMaterial=i}},{key:"clear",get:function(){return this.clearPass.enabled},set:function(e){this.clearPass.enabled=e}}]),t}(ue),pe=function(e){function n(e,o){var i,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=s.resolutionScale,u=void 0===c?1:c,d=s.renderTarget;r(this,n),i=l(this,a(n).call(this,"DepthPass")),i.needsSwap=!1,i.renderPass=new ve(e,o,new t.MeshDepthMaterial({depthPacking:t.RGBADepthPacking,morphTargets:!0,skinning:!0}));var f=i.renderPass.getClearPass();return f.overrideClearColor=new t.Color(16777215),f.overrideClearAlpha=1,i.renderTarget=d,void 0===i.renderTarget&&(i.renderTarget=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1}),i.renderTarget.texture.name="DepthPass.Target"),i.resolutionScale=u,i.resolution=new t.Vector2,i}return i(n,e),o(n,[{key:"getResolutionScale",value:function(){return this.resolutionScale}},{key:"setResolutionScale",value:function(e){this.resolutionScale=e,this.setSize(this.resolution.x,this.resolution.y)}},{key:"render",value:function(e){var t=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,t)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.renderTarget.setSize(X(1,z(e*this.resolutionScale)),X(1,z(t*this.resolutionScale)))}}]),n}(ue),me={SKIP:0,ADD:1,ALPHA:2,AVERAGE:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,EXCLUSION:8,LIGHTEN:9,MULTIPLY:10,DIVIDE:11,NEGATION:12,NORMAL:13,OVERLAY:14,REFLECT:15,SCREEN:16,SOFT_LIGHT:17,SUBTRACT:18},xe=new Map([[me.SKIP,null],[me.ADD,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return min(x+y,1.0)*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.ALPHA,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){float a=min(y.a,opacity);return vec4(blend(x.rgb,y.rgb,a),max(x.a,a));}"],[me.AVERAGE,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return(x+y)*0.5*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.COLOR_BURN,"float blend(const in float x,const in float y){return(y==0.0)? y : max(1.0-(1.0-x)/y,0.0);}vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){vec3 z=vec3(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b));return z*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.COLOR_DODGE,"float blend(const in float x,const in float y){return(y==1.0)? y : min(x/(1.0-y),1.0);}vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){vec3 z=vec3(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b));return z*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.DARKEN,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return min(x,y)*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.DIFFERENCE,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return abs(x-y)*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.EXCLUSION,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return(x+y-2.0*x*y)*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.LIGHTEN,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return max(x,y)*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.MULTIPLY,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return x*y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.DIVIDE,"float blend(const in float x,const in float y){return(y>0.0)? min(x/y,1.0): 1.0;}vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){vec3 z=vec3(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b));return z*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.NEGATION,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return(1.0-abs(1.0-x-y))*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.NORMAL,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.OVERLAY,"float blend(const in float x,const in float y){return(x<0.5)?(2.0*x*y):(1.0-2.0*(1.0-x)*(1.0-y));}vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){vec3 z=vec3(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b));return z*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.REFLECT,"float blend(const in float x,const in float y){return(y==1.0)? y : min(x*x/(1.0-y),1.0);}vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){vec3 z=vec3(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b));return z*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.SCREEN,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return(1.0-(1.0-x)*(1.0-y))*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.SOFT_LIGHT,"float blend(const in float x,const in float y){return(y<0.5)?(2.0*x*y+x*x*(1.0-2.0*y)):(sqrt(x)*(2.0*y-1.0)+2.0*x*(1.0-y));}vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){vec3 z=vec3(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b));return z*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"],[me.SUBTRACT,"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return max(x+y-1.0,0.0)*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return vec4(blend(x.rgb,y.rgb,opacity),y.a);}"]]),Ce=function(){function e(n){var o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;r(this,e),this.blendFunction=n,this.opacity=new t.Uniform(o)}return o(e,[{key:"getShaderCode",value:function(){return xe.get(this.blendFunction)}}]),e}(),ye=function(){function e(t,n){var o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},i=o.attributes,a=void 0===i?Be.NONE:i,s=o.blendFunction,c=void 0===s?me.SCREEN:s,l=o.defines,u=void 0===l?new Map:l,d=o.uniforms,f=void 0===d?new Map:d,A=o.extensions,g=void 0===A?null:A,v=o.vertexShader,p=void 0===v?null:v;r(this,e),this.name=t,this.attributes=a,this.fragmentShader=n,this.vertexShader=p,this.defines=u,this.uniforms=f,this.extensions=g,this.blendMode=new Ce(c)}return o(e,[{key:"setDepthTexture",value:function(){}},{key:"update",value:function(){}},{key:"setSize",value:function(){}},{key:"initialize",value:function(){}},{key:"dispose",value:function(){for(var e,t=0,r=Object.keys(this);t<r.length;t++)e=r[t],null!==this[e]&&"function"==typeof this[e].dispose&&this[e].dispose()}}]),e}(),Be={CONVOLUTION:2,DEPTH:1,NONE:0},De=function(e){function t(e){var n;r(this,t),n=l(this,a(t).call(this,"EffectPass")),n.mainCamera=e;for(var o=arguments.length,i=Array(1<o?o-1:0),s=1;s<o;s++)i[s-1]=arguments[s];return n.effects=i.sort(function(e,t){return t.attributes-e.attributes}),n.skipRendering=!1,n.quantize=!1,n.uniforms=0,n.varyings=0,n.minTime=1,n.maxTime=1e3,n.setFullscreenMaterial(n.createMaterial()),n}return i(t,e),o(t,[{key:"createMaterial",value:function(){var e,t=/\bblend\b/g,r=new Map([[oe.FRAGMENT_HEAD,""],[oe.FRAGMENT_MAIN_UV,""],[oe.FRAGMENT_MAIN_IMAGE,""],[oe.VERTEX_HEAD,""],[oe.VERTEX_MAIN_SUPPORT,""]]),n=new Map,o=new Map,i=new Map,a=new Set,s=0,c=0,l=0,u=!1,d=!1,f=!0,A=!1,g=void 0;try{for(var v,m,x=this.effects[Symbol.iterator]();!(f=(v=x.next()).done);f=!0)if(m=v.value,m.blendMode.blendFunction===me.SKIP)l|=m.attributes&Be.DEPTH;else if(0!=(l&Be.CONVOLUTION)&&0!=(m.attributes&Be.CONVOLUTION))console.error("Convolution effects cannot be merged",m);else if(l|=m.attributes,e=p("e"+s++,m,r,n,o,i,l),c+=e.varyings.length,u=u||e.transformedUv,d=d||e.readDepth,null!==m.extensions){var C=!0,y=!1,B=void 0;try{for(var D,E,h=m.extensions[Symbol.iterator]();!(C=(D=h.next()).done);C=!0)E=D.value,a.add(E)}catch(e){y=!0,B=e}finally{try{C||null==h["return"]||h["return"]()}finally{if(y)throw B}}}}catch(e){A=!0,g=e}finally{try{f||null==x["return"]||x["return"]()}finally{if(A)throw g}}var T=!0,S=!1,w=void 0;try{for(var P,I,M=n.values()[Symbol.iterator]();!(T=(P=M.next()).done);T=!0)I=P.value,r.set(oe.FRAGMENT_HEAD,r.get(oe.FRAGMENT_HEAD)+I.getShaderCode().replace(t,"blend"+I.blendFunction)+"\n")}catch(e){S=!0,w=e}finally{try{T||null==M["return"]||M["return"]()}finally{if(S)throw w}}0!=(l&Be.DEPTH)&&(d&&r.set(oe.FRAGMENT_MAIN_IMAGE,"float depth = readDepth(UV);\n\n\t"+r.get(oe.FRAGMENT_MAIN_IMAGE)),this.needsDepthTexture=!0),u?(r.set(oe.FRAGMENT_MAIN_UV,"vec2 transformedUv = vUv;\n"+r.get(oe.FRAGMENT_MAIN_UV)),o.set("UV","transformedUv")):o.set("UV","vUv"),r.forEach(function(e,t,r){return r.set(t,e.trim())}),this.uniforms=i.size,this.varyings=c,this.skipRendering=0===s,this.needsSwap=!this.skipRendering;var b=new ne(r,o,i,this.mainCamera,this.dithering);if(0<a.size){var F=!0,R=!1,L=void 0;try{for(var O,k,U=a[Symbol.iterator]();!(F=(O=U.next()).done);F=!0)k=O.value,b.extensions[k]=!0}catch(e){R=!0,L=e}finally{try{F||null==U["return"]||U["return"]()}finally{if(R)throw L}}}return b}},{key:"recompile",value:function(){var e=this.getFullscreenMaterial(),t=0,r=0,n=null,o=0;if(null!==e){var i=e.uniforms.resolution.value;t=i.x,r=i.y,n=e.uniforms.depthBuffer.value,o=e.depthPacking,e.dispose(),this.uniforms=0,this.varyings=0}e=this.createMaterial(),e.setSize(t,r),this.setFullscreenMaterial(e),this.setDepthTexture(n,o)}},{key:"getDepthTexture",value:function(){var e=this.getFullscreenMaterial();return null===e?null:e.uniforms.depthBuffer.value}},{key:"setDepthTexture",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,r=this.getFullscreenMaterial();r.uniforms.depthBuffer.value=e,r.depthPacking=t,r.needsUpdate=!0;var n=!0,o=!1,i=void 0;try{for(var a,s,c=this.effects[Symbol.iterator]();!(n=(a=c.next()).done);n=!0)s=a.value,s.setDepthTexture(e,t)}catch(e){o=!0,i=e}finally{try{n||null==c["return"]||c["return"]()}finally{if(o)throw i}}}},{key:"render",value:function(e,t,r,n){var o=this.getFullscreenMaterial(),i=o.uniforms.time.value+n,a=!0,s=!1,c=void 0;try{for(var l,u,d=this.effects[Symbol.iterator]();!(a=(l=d.next()).done);a=!0)u=l.value,u.update(e,t,n)}catch(e){s=!0,c=e}finally{try{a||null==d["return"]||d["return"]()}finally{if(s)throw c}}(!this.skipRendering||this.renderToScreen)&&(o.uniforms.inputBuffer.value=t.texture,o.uniforms.time.value=i<=this.maxTime?i:this.minTime,e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera))}},{key:"setSize",value:function(e,t){this.getFullscreenMaterial().setSize(e,t);var r=!0,n=!1,o=void 0;try{for(var i,a,s=this.effects[Symbol.iterator]();!(r=(i=s.next()).done);r=!0)a=i.value,a.setSize(e,t)}catch(e){n=!0,o=e}finally{try{r||null==s["return"]||s["return"]()}finally{if(n)throw o}}}},{key:"initialize",value:function(e,t){var r=e.capabilities,n=V(r.maxFragmentUniforms,r.maxVertexUniforms);this.uniforms>n&&console.warn("The current rendering context doesn't support more than "+n+" uniforms, but "+this.uniforms+" were defined"),n=r.maxVaryings,this.varyings>n&&console.warn("The current rendering context doesn't support more than "+n+" varyings, but "+this.varyings+" were defined");var o=!0,i=!1,a=void 0;try{for(var s,c,l=this.effects[Symbol.iterator]();!(o=(s=l.next()).done);o=!0)c=s.value,c.initialize(e,t)}catch(e){i=!0,a=e}finally{try{o||null==l["return"]||l["return"]()}finally{if(i)throw a}}}},{key:"dispose",value:function(){d(a(t.prototype),"dispose",this).call(this);var e=!0,r=!1,n=void 0;try{for(var o,i,s=this.effects[Symbol.iterator]();!(e=(o=s.next()).done);e=!0)i=o.value,i.dispose()}catch(e){r=!0,n=e}finally{try{e||null==s["return"]||s["return"]()}finally{if(r)throw n}}}},{key:"dithering",get:function(){return this.quantize},set:function(e){if(this.quantize!==e){var t=this.getFullscreenMaterial();null!==t&&(t.dithering=e,t.needsUpdate=!0),this.quantize=e}}}]),t}(ue),Ee=function(e){function t(e,n){var o;return r(this,t),o=l(this,a(t).call(this,"MaskPass",e,n)),o.needsSwap=!1,o.clearPass=new ge(!1,!1,!0),o.inverse=!1,o}return i(t,e),o(t,[{key:"render",value:function(e,t,r){var n=e.context,o=e.state,i=this.scene,a=this.camera,s=this.clearPass,c=this.inverse?0:1;o.buffers.color.setMask(!1),o.buffers.depth.setMask(!1),o.buffers.color.setLocked(!0),o.buffers.depth.setLocked(!0),o.buffers.stencil.setTest(!0),o.buffers.stencil.setOp(n.REPLACE,n.REPLACE,n.REPLACE),o.buffers.stencil.setFunc(n.ALWAYS,c,4294967295),o.buffers.stencil.setClear(1-c),this.clear&&(this.renderToScreen?s.render(e,null):(s.render(e,t),s.render(e,r))),this.renderToScreen?(e.setRenderTarget(null),e.render(i,a)):(e.setRenderTarget(t),e.render(i,a),e.setRenderTarget(r),e.render(i,a)),o.buffers.color.setLocked(!1),o.buffers.depth.setLocked(!1),o.buffers.stencil.setFunc(n.EQUAL,1,4294967295),o.buffers.stencil.setOp(n.KEEP,n.KEEP,n.KEEP)}},{key:"clear",get:function(){return this.clearPass.enabled},set:function(e){this.clearPass.enabled=e}}]),t}(ue),he=function(e){function n(e,o){var i,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=s.resolutionScale,u=void 0===c?1:c,d=s.renderTarget;r(this,n),i=l(this,a(n).call(this,"NormalPass")),i.needsSwap=!1,i.renderPass=new ve(e,o,new t.MeshNormalMaterial({morphTargets:!0,skinning:!0}));var f=i.renderPass.getClearPass();return f.overrideClearColor=new t.Color(7829503),f.overrideClearAlpha=1,i.renderTarget=d,void 0===i.renderTarget&&(i.renderTarget=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,format:t.RGBFormat,stencilBuffer:!1}),i.renderTarget.texture.name="NormalPass.Target"),i.resolutionScale=u,i.resolution=new t.Vector2,i}return i(n,e),o(n,[{key:"getResolutionScale",value:function(){return this.resolutionScale}},{key:"setResolutionScale",value:function(e){this.resolutionScale=e,this.setSize(this.resolution.x,this.resolution.y)}},{key:"render",value:function(e){var t=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,t,t)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.renderTarget.setSize(X(1,z(e*this.resolutionScale)),X(1,z(t*this.resolutionScale)))}}]),n}(ue),Te=function(e){function n(e){var o,i=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];return r(this,n),o=l(this,a(n).call(this,"SavePass")),o.setFullscreenMaterial(new ee),o.needsSwap=!1,o.renderTarget=e,void 0===e&&(o.renderTarget=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),o.renderTarget.texture.name="SavePass.Target"),o.resize=i,o}return i(n,e),o(n,[{key:"render",value:function(e,t){this.getFullscreenMaterial().uniforms.inputBuffer.value=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}},{key:"setSize",value:function(e,t){this.resize&&(e=X(1,e),t=X(1,t),this.renderTarget.setSize(e,t))}}]),n}(ue),Se=function(e){function t(e){var n,o=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"inputBuffer";return r(this,t),n=l(this,a(t).call(this,"ShaderPass")),n.setFullscreenMaterial(e),n.uniform=null,n.setInput(o),n}return i(t,e),o(t,[{key:"setInput",value:function(e){var t=this.getFullscreenMaterial();if(this.uniform=null,null!==t){var r=t.uniforms;void 0!==r&&void 0!==r[e]&&(this.uniform=r[e])}}},{key:"render",value:function(e,t,r){null!==this.uniform&&(this.uniform.value=t.texture),e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}}]),t}(ue),we=function(){function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},o=n.depthBuffer,i=n.stencilBuffer;r(this,e),this.renderer=t,this.inputBuffer=null,this.outputBuffer=null,null!==this.renderer&&(this.renderer.autoClear=!1,this.inputBuffer=this.createBuffer(void 0===o||o,void 0!==i&&i),this.outputBuffer=this.inputBuffer.clone()),this.copyPass=new Se(new ee()),this.depthTexture=null,this.passes=[]}return o(e,[{key:"getRenderer",value:function(){return this.renderer}},{key:"replaceRenderer",value:function(e){var r=this.renderer;if(null!==r&&r!==e){var n=r.getSize(new t.Vector2),o=e.getSize(new t.Vector2),i=r.domElement.parentNode;this.renderer=e,this.renderer.autoClear=!1,n.equals(o)||this.setSize(),null!==i&&(i.removeChild(r.domElement),i.appendChild(e.domElement))}return r}},{key:"createDepthTexture",value:function(){var e=this.depthTexture=new t.DepthTexture;return this.inputBuffer.stencilBuffer&&(e.format=t.DepthStencilFormat,e.type=t.UnsignedInt248Type),e}},{key:"createBuffer",value:function(e,r){var n=this.renderer.getDrawingBufferSize(new t.Vector2),o=this.renderer.context.getContextAttributes().alpha,i=new t.WebGLRenderTarget(n.width,n.height,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,format:o?t.RGBAFormat:t.RGBFormat,depthBuffer:e,stencilBuffer:r});return i.texture.name="EffectComposer.Buffer",i.texture.generateMipmaps=!1,i}},{key:"addPass",value:function(e,r){var n=this.passes,o=this.renderer,i=o.getDrawingBufferSize(new t.Vector2);if(e.setSize(i.width,i.height),e.initialize(o,o.context.getContextAttributes().alpha),void 0===r?n.push(e):n.splice(r,0,e),e.needsDepthTexture||null!==this.depthTexture)if(null===this.depthTexture){var a=this.createDepthTexture(),s=!0,c=!1,l=void 0;try{for(var u,d=n[Symbol.iterator]();!(s=(u=d.next()).done);s=!0)e=u.value,e.setDepthTexture(a)}catch(e){c=!0,l=e}finally{try{s||null==d["return"]||d["return"]()}finally{if(c)throw l}}}else e.setDepthTexture(this.depthTexture)}},{key:"removePass",value:function(e){var t=this.passes,r=0<t.splice(t.indexOf(e),1).length;if(r&&null!==this.depthTexture){var n=function(e,t){return e||t.needsDepthTexture},o=t.reduce(n,!1);if(!o){this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.outputBuffer.depthTexture=null;var i=!0,a=!1,s=void 0;try{for(var c,l=t[Symbol.iterator]();!(i=(c=l.next()).done);i=!0)e=c.value,e.setDepthTexture(null)}catch(e){a=!0,s=e}finally{try{i||null==l["return"]||l["return"]()}finally{if(a)throw s}}}}}},{key:"render",value:function(e){var t,r,n,o=this.renderer,i=this.copyPass,a=this.inputBuffer,s=this.outputBuffer,c=!1,l=!0,u=!1,d=void 0;try{for(var f,A,g=this.passes[Symbol.iterator]();!(l=(f=g.next()).done);l=!0)A=f.value,A.enabled&&(A.render(o,a,s,e,c),A.needsSwap&&(c&&(i.renderToScreen=A.renderToScreen,t=o.context,r=o.state,r.buffers.stencil.setFunc(t.NOTEQUAL,1,4294967295),i.render(o,a,s,e,c),r.buffers.stencil.setFunc(t.EQUAL,1,4294967295)),n=a,a=s,s=n),A instanceof Ee?c=!0:A instanceof fe&&(c=!1))}catch(e){u=!0,d=e}finally{try{l||null==g["return"]||g["return"]()}finally{if(u)throw d}}}},{key:"setSize",value:function(e,r){var n=this.renderer;if(void 0===e||void 0===r){var o=n.getSize(new t.Vector2);e=o.width,r=o.height}n.setSize(e,r);var i=n.getDrawingBufferSize(new t.Vector2);this.inputBuffer.setSize(i.width,i.height),this.outputBuffer.setSize(i.width,i.height);var a=!0,s=!1,c=void 0;try{for(var l,u,d=this.passes[Symbol.iterator]();!(a=(l=d.next()).done);a=!0)u=l.value,u.setSize(i.width,i.height)}catch(e){s=!0,c=e}finally{try{a||null==d["return"]||d["return"]()}finally{if(s)throw c}}}},{key:"reset",value:function(){var e=this.createBuffer(this.inputBuffer.depthBuffer,this.inputBuffer.stencilBuffer);this.dispose(),this.inputBuffer=e,this.outputBuffer=e.clone(),this.depthTexture=null,this.copyPass=new Se(new ee())}},{key:"dispose",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,o,i=this.passes[Symbol.iterator]();!(e=(n=i.next()).done);e=!0)o=n.value,o.dispose()}catch(e){t=!0,r=e}finally{try{e||null==i["return"]||i["return"]()}finally{if(t)throw r}}this.passes=[],null!==this.inputBuffer&&(this.inputBuffer.dispose(),this.inputBuffer=null),null!==this.outputBuffer&&(this.outputBuffer.dispose(),this.outputBuffer=null),null!==this.depthTexture&&this.depthTexture.dispose(),this.copyPass.dispose()}}]),e}(),Pe=function(){function e(){r(this,e)}return o(e,[{key:"setSize",value:function(){}}]),e}(),Ie="uniform sampler2D texture;\n#ifdef ASPECT_CORRECTION\nvarying vec2 vUv2;\n#endif\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){\n#ifdef ASPECT_CORRECTION\noutputColor=texture2D(texture,vUv2);\n#else\noutputColor=texture2D(texture,uv);\n#endif\n}",Me=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.SCREEN:i,c=o.distinction,u=void 0===c?1:c,d=o.resolutionScale,f=void 0===d?.5:d,A=o.kernelSize,g=void 0===A?$.LARGE:A;return r(this,n),e=l(this,a(n).call(this,"BloomEffect",Ie,{blendFunction:s,uniforms:new Map([["texture",new t.Uniform(null)]])})),e.renderTarget=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),e.renderTarget.texture.name="Bloom.Target",e.renderTarget.texture.generateMipmaps=!1,e.uniforms.get("texture").value=e.renderTarget.texture,e.blurPass=new de({resolutionScale:f,kernelSize:g}),e.resolution=new t.Vector2,e.luminancePass=new Se(new ae(!0)),e.distinction=u,e}return i(n,e),o(n,[{key:"getResolutionScale",value:function(){return this.blurPass.getResolutionScale()}},{key:"setResolutionScale",value:function(e){this.blurPass.setResolutionScale(e),this.setSize(this.resolution.x,this.resolution.y)}},{key:"update",value:function(e,t){var r=this.renderTarget;this.luminancePass.render(e,t,r),this.blurPass.render(e,r,r)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.blurPass.setSize(e,t),e=this.blurPass.width,t=this.blurPass.height,this.renderTarget.setSize(e,t)}},{key:"initialize",value:function(e,r){this.blurPass.initialize(e,r),r||(this.renderTarget.texture.format=t.RGBFormat)}},{key:"texture",get:function(){return this.renderTarget.texture}},{key:"dithering",get:function(){return this.blurPass.dithering},set:function(e){this.blurPass.dithering=e}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(e){this.blurPass.kernelSize=e}},{key:"distinction",get:function(){return this.luminancePass.getFullscreenMaterial().uniforms.distinction.value},set:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1;this.luminancePass.getFullscreenMaterial().uniforms.distinction.value=e}}]),n}(ye),be=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=e.blendFunction,i=void 0===o?me.NORMAL:o,s=e.focus,c=void 0===s?.5:s,u=e.dof,d=void 0===u?.02:u,f=e.aperture,A=void 0===f?.015:f,g=e.maxBlur,v=void 0===g?1:g;return r(this,n),l(this,a(n).call(this,"BokehEffect","uniform float focus;uniform float dof;uniform float aperture;uniform float maxBlur;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec2 aspectCorrection=vec2(1.0,aspect);float focusNear=clamp(focus-dof,0.0,1.0);float focusFar=clamp(focus+dof,0.0,1.0);float low=step(depth,focusNear);float high=step(focusFar,depth);float factor=(depth-focusNear)*low+(depth-focusFar)*high;vec2 dofBlur=vec2(clamp(factor*aperture,-maxBlur,maxBlur));vec2 dofblur9=dofBlur*0.9;vec2 dofblur7=dofBlur*0.7;vec2 dofblur4=dofBlur*0.4;vec4 color=inputColor;color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur4);outputColor=color/41.0;}",{blendFunction:i,attributes:Be.CONVOLUTION|Be.DEPTH,uniforms:new Map([["focus",new t.Uniform(c)],["dof",new t.Uniform(d)],["aperture",new t.Uniform(A)],["maxBlur",new t.Uniform(v)]])}))}return i(n,e),n}(ye),Fe=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=e.blendFunction,i=void 0===o?me.NORMAL:o,s=e.brightness,c=void 0===s?0:s,u=e.contrast,d=void 0===u?0:u;return r(this,n),l(this,a(n).call(this,"BrightnessContrastEffect","uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(min(color+vec3(0.5),1.0),inputColor.a);}",{blendFunction:i,uniforms:new Map([["brightness",new t.Uniform(c)],["contrast",new t.Uniform(d)]])}))}return i(n,e),n}(ye),Re=function(e){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:me.NORMAL;return r(this,t),l(this,a(t).call(this,"ColorAverageEffect","void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float sum=inputColor.r+inputColor.g+inputColor.b;outputColor=vec4(vec3(sum/3.0),inputColor.a);}",{blendFunction:e}))}return i(t,e),t}(ye),Le=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.bits,u=void 0===c?16:c;return r(this,n),e=l(this,a(n).call(this,"ColorDepthEffect","uniform float factor;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(floor(inputColor.rgb*factor+0.5)/factor,inputColor.a);}",{blendFunction:s,uniforms:new Map([["factor",new t.Uniform(1)]])})),e.bits=0,e.setBitDepth(u),e}return i(n,e),o(n,[{key:"getBitDepth",value:function(){return this.bits}},{key:"setBitDepth",value:function(e){this.bits=e,this.uniforms.get("factor").value=Q(2,e/3)}}]),n}(ye),Oe=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=e.blendFunction,i=void 0===o?me.NORMAL:o,s=e.offset,c=void 0===s?new t.Vector2(.001,5e-4):s;return r(this,n),l(this,a(n).call(this,"ChromaticAberrationEffect","varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 color=inputColor;color.r=texture2D(inputBuffer,vUvR).r;color.b=texture2D(inputBuffer,vUvB).b;outputColor=color;}",{vertexShader:"uniform vec2 offset;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vUvR=uv+offset;vUvB=uv-offset;}",blendFunction:i,attributes:Be.CONVOLUTION,uniforms:new Map([["offset",new t.Uniform(c)]])}))}return i(n,e),o(n,[{key:"offset",get:function(){return this.uniforms.get("offset").value},set:function(e){this.uniforms.get("offset").value=e}}]),n}(ye),ke=function(e){function t(){var e,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=n.blendFunction,i=void 0===o?me.NORMAL:o,s=n.inverted;return r(this,t),e=l(this,a(t).call(this,"DepthEffect","void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){\n#ifdef INVERTED\nvec3 color=vec3(1.0-depth);\n#else\nvec3 color=vec3(depth);\n#endif\noutputColor=vec4(color,inputColor.a);}",{blendFunction:i,attributes:Be.DEPTH})),e.inverted=void 0!==s&&s,e}return i(t,e),o(t,[{key:"inverted",get:function(){return this.defines.has("INVERTED")},set:function(e){e?this.defines.set("INVERTED","1"):this.defines["delete"]("INVERTED")}}]),t}(ye),Ue=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.angle,u=void 0===c?.5*G:c,d=o.scale,f=void 0===d?1:d;return r(this,n),e=l(this,a(n).call(this,"DotScreenEffect","uniform vec2 angle;uniform float scale;float pattern(const in vec2 uv){vec2 point=scale*vec2(dot(angle.yx,vec2(uv.x,-uv.y)),dot(angle,uv));return(sin(point.x)*sin(point.y))*4.0;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(inputColor.rgb*10.0-5.0+pattern(uv*resolution));outputColor=vec4(color,inputColor.a);}",{blendFunction:s,uniforms:new Map([["angle",new t.Uniform(new t.Vector2())],["scale",new t.Uniform(f)]])})),e.setAngle(u),e}return i(n,e),o(n,[{key:"setAngle",value:function(e){this.uniforms.get("angle").value.set(U(e),k(e))}}]),n}(ye),Ge=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=e.blendFunction,i=void 0===o?me.NORMAL:o,s=e.gamma,c=void 0===s?2:s;return r(this,n),l(this,a(n).call(this,"GammaCorrectionEffect","uniform float gamma;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=LinearToGamma(max(inputColor,0.0),gamma);}",{blendFunction:i,uniforms:new Map([["gamma",new t.Uniform(c)]])}))}return i(n,e),n}(ye),Qe="Glitch.Generated",ze=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.chromaticAberrationOffset,u=void 0===c?null:c,d=o.delay,f=void 0===d?new t.Vector2(1.5,3.5):d,A=o.duration,g=void 0===A?new t.Vector2(.6,1):A,v=o.strength,p=void 0===v?new t.Vector2(.3,1):v,m=o.columns,C=void 0===m?.05:m,y=o.ratio,B=void 0===y?.85:y,D=o.perturbationMap,E=void 0===D?null:D,h=o.dtSize,T=void 0===h?64:h;return r(this,n),e=l(this,a(n).call(this,"GlitchEffect","uniform sampler2D perturbationMap;uniform bool active;uniform float columns;uniform float random;uniform vec2 seed;uniform vec2 distortion;void mainUv(inout vec2 uv){if(active){vec4 normal=texture2D(perturbationMap,uv*random*random);if(uv.y<distortion.x+columns&&uv.y>distortion.x-columns*random){float sx=clamp(ceil(seed.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.x<distortion.y+columns&&uv.x>distortion.y-columns*random){float sy=clamp(ceil(seed.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}uv.x+=normal.x*seed.x*(random*0.2);uv.y+=normal.y*seed.y*(random*0.2);}}",{blendFunction:s,uniforms:new Map([["perturbationMap",new t.Uniform(null)],["columns",new t.Uniform(C)],["active",new t.Uniform(!1)],["random",new t.Uniform(.02)],["seed",new t.Uniform(new t.Vector2())],["distortion",new t.Uniform(new t.Vector2())]])})),e.perturbationMap=null,e.setPerturbationMap(null===E?e.generatePerturbationMap(T):E),e.perturbationMap.generateMipmaps=!1,e.delay=f,e.duration=g,e.breakPoint=new t.Vector2(x(e.delay.x,e.delay.y),x(e.duration.x,e.duration.y)),e.time=0,e.seed=e.uniforms.get("seed").value,e.distortion=e.uniforms.get("distortion").value,e.mode=Ne.SPORADIC,e.strength=p,e.ratio=B,e.chromaticAberrationOffset=u,e}return i(n,e),o(n,[{key:"getPerturbationMap",value:function(){return this.perturbationMap}},{key:"setPerturbationMap",value:function(e){null!==this.perturbationMap&&this.perturbationMap.name===Qe&&this.perturbationMap.dispose(),e.wrapS=e.wrapT=t.RepeatWrapping,e.magFilter=e.minFilter=t.NearestFilter,this.perturbationMap=e,this.uniforms.get("perturbationMap").value=e}},{key:"generatePerturbationMap",value:function(){var e,r,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:64,o=n*n,a=new Float32Array(3*o);for(e=0;e<o;++e)r=Math.random(),a[3*e]=r,a[3*e+1]=r,a[3*e+2]=r;var s=new t.DataTexture(a,n,n,t.RGBFormat,t.FloatType);return s.name=Qe,s.needsUpdate=!0,s}},{key:"update",value:function(e,t,n){var o,i=this.mode,c=this.breakPoint,l=this.chromaticAberrationOffset,u=this.strength,s=this.time,d=!1,f=0,A=0;i!==Ne.DISABLED&&(i===Ne.SPORADIC&&(s+=n,o=s>c.x,s>=c.x+c.y&&(c.set(x(this.delay.x,this.delay.y),x(this.duration.x,this.duration.y)),s=0)),f=Math.random(),this.uniforms.get("random").value=f,o&&f>this.ratio||i===Ne.CONSTANT_WILD?(d=!0,f*=.03*u.y,A=x(-G,Math.PI),this.seed.set(x(-u.y,u.y),x(-u.y,u.y)),this.distortion.set(x(0,1),x(0,1))):(o||i===Ne.CONSTANT_MILD)&&(d=!0,f*=.03*u.x,A=x(-G,Math.PI),this.seed.set(x(-u.x,u.x),x(-u.x,u.x)),this.distortion.set(x(0,1),x(0,1))),this.time=s),null!==l&&(d?l.set(k(A),U(A)).multiplyScalar(f):l.set(0,0)),this.uniforms.get("active").value=d}},{key:"active",get:function(){return this.uniforms.get("active").value}}]),n}(ye),Ne={DISABLED:0,SPORADIC:1,CONSTANT_MILD:2,CONSTANT_WILD:3},He=new t.Vector3,v=new t.Matrix4,m=function(e){function n(e,o){var i,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=s.blendFunction,u=void 0===c?me.SCREEN:c,d=s.samples,f=void 0===d?60:d,A=s.density,g=void 0===A?.96:A,v=s.decay,p=void 0===v?.9:v,m=s.weight,x=void 0===m?.4:m,C=s.exposure,y=void 0===C?.6:C,B=s.clampMax,D=void 0===B?1:B,E=s.resolutionScale,h=void 0===E?.5:E,T=s.kernelSize,S=void 0===T?$.SMALL:T,w=s.blur;return r(this,n),i=l(this,a(n).call(this,"GodRaysEffect",Ie,{blendFunction:u,attributes:Be.DEPTH,uniforms:new Map([["texture",new t.Uniform(null)]])})),i.camera=e,i.lightSource=o,i.lightSource.material.depthWrite=!1,i.lightSource.material.transparent=!0,i.lightScene=new t.Scene,i.screenPosition=new t.Vector2,i.resolution=new t.Vector2,i.renderTargetX=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),i.renderTargetX.texture.name="GodRays.TargetX",i.renderTargetY=i.renderTargetX.clone(),i.renderTargetY.texture.name="GodRays.TargetY",i.uniforms.get("texture").value=i.renderTargetY.texture,i.renderTargetLight=i.renderTargetX.clone(),i.renderTargetLight.texture.name="GodRays.Light",i.renderTargetLight.depthBuffer=!0,i.renderTargetLight.depthTexture=new t.DepthTexture,i.renderPassLight=new ve(i.lightScene,e),i.renderPassLight.getClearPass().overrideClearColor=new t.Color(0),i.clearPass=new ge(!0,!1,!1),i.blurPass=new de({resolutionScale:h,kernelSize:S}),i.depthMaskPass=new Se(new re()),i.godRaysPass=new Se(function(){var e=new ie(i.screenPosition);return e.uniforms.density.value=g,e.uniforms.decay.value=p,e.uniforms.weight.value=x,e.uniforms.exposure.value=y,e.uniforms.clampMax.value=D,e}()),i.samples=f,i.blur=void 0===w||w,i}return i(n,e),o(n,[{key:"getResolutionScale",value:function(){return this.blurPass.getResolutionScale()}},{key:"setResolutionScale",value:function(e){this.blurPass.setResolutionScale(e),this.setSize(this.resolution.x,this.resolution.y)}},{key:"setDepthTexture",value:function(e){var t=this.depthMaskPass.getFullscreenMaterial();t.uniforms.depthBuffer0.value=e,t.uniforms.depthBuffer1.value=this.renderTargetLight.depthTexture}},{key:"update",value:function(e){var t=this.lightSource,r=t.parent,n=t.matrixAutoUpdate,o=this.renderTargetX,i=this.renderTargetLight;n||v.copy(t.matrix),t.material.depthWrite=!0,t.matrixAutoUpdate=!1,t.updateWorldMatrix(!0,!1),t.matrix.copy(t.matrixWorld),this.lightScene.add(t),this.renderPassLight.render(e,i),this.clearPass.render(e,o),this.depthMaskPass.render(e,i,o),t.material.depthWrite=!1,t.matrixAutoUpdate=n,n||t.matrix.copy(v),null!==r&&r.add(t),He.setFromMatrixPosition(t.matrixWorld).project(this.camera),this.screenPosition.set(X(0,V(1,.5*(He.x+1))),X(0,V(1,.5*(He.y+1)))),this.blur&&this.blurPass.render(e,o,o),this.godRaysPass.render(e,o,this.renderTargetY)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.renderPassLight.setSize(e,t),this.blurPass.setSize(e,t),this.depthMaskPass.setSize(e,t),this.godRaysPass.setSize(e,t),e=this.blurPass.width,t=this.blurPass.height,this.renderTargetX.setSize(e,t),this.renderTargetY.setSize(e,t),this.renderTargetLight.setSize(e,t)}},{key:"initialize",value:function(e,r){this.renderPassLight.initialize(e,r),this.blurPass.initialize(e,r),this.depthMaskPass.initialize(e,r),this.godRaysPass.initialize(e,r),r||(this.renderTargetX.texture.format=t.RGBFormat,this.renderTargetY.texture.format=t.RGBFormat,this.renderTargetLight.texture.format=t.RGBFormat)}},{key:"texture",get:function(){return this.renderTargetY.texture}},{key:"godRaysMaterial",get:function(){return this.godRaysPass.getFullscreenMaterial()}},{key:"dithering",get:function(){return this.godRaysMaterial.dithering},set:function(e){var t=this.godRaysMaterial;t.dithering=e,t.needsUpdate=!0}},{key:"blur",get:function(){return this.blurPass.enabled},set:function(e){this.blurPass.enabled=e}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(e){this.blurPass.kernelSize=e}},{key:"samples",get:function(){return this.godRaysMaterial.samples},set:function(e){this.godRaysMaterial.samples=e}}]),n}(ye),b=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.OVERLAY:i,c=o.scale,u=void 0===c?1:c,d=o.lineWidth,f=void 0===d?0:d;return r(this,n),e=l(this,a(n).call(this,"GridEffect","uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}",{blendFunction:s,uniforms:new Map([["scale",new t.Uniform(new t.Vector2())],["lineWidth",new t.Uniform(f)]])})),e.resolution=new t.Vector2,e.scale=X(u,1e-6),e.lineWidth=X(f,0),e}return i(n,e),o(n,[{key:"getScale",value:function(){return this.scale}},{key:"setScale",value:function(e){this.scale=e,this.setSize(this.resolution.x,this.resolution.y)}},{key:"getLineWidth",value:function(){return this.lineWidth}},{key:"setLineWidth",value:function(e){this.lineWidth=e,this.setSize(this.resolution.x,this.resolution.y)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t);var r=this.scale*(.125*t);this.uniforms.get("scale").value.set(e/t*r,r),this.uniforms.get("lineWidth").value=r/t+this.lineWidth}}]),n}(ye),Ye=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.hue,u=void 0===c?0:c,d=o.saturation,f=void 0===d?0:d;return r(this,n),e=l(this,a(n).call(this,"HueSaturationEffect","uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}",{blendFunction:s,uniforms:new Map([["hue",new t.Uniform(new t.Vector3())],["saturation",new t.Uniform(f)]])})),e.setHue(u),e}return i(n,e),o(n,[{key:"setHue",value:function(e){var t=U(e),r=k(e);this.uniforms.get("hue").value.set(2*r,-Y(3)*t-r,Y(3)*t-r).addScalar(1).divideScalar(3)}}]),n}(ye),Ve=function(e){function t(){var e,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=n.blendFunction,i=void 0===o?me.SCREEN:o,s=n.premultiply;return r(this,t),e=l(this,a(t).call(this,"NoiseEffect","void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*time));\n#ifdef PREMULTIPLY\noutputColor=vec4(inputColor.rgb*noise,inputColor.a);\n#else\noutputColor=vec4(noise,inputColor.a);\n#endif\n}",{blendFunction:i})),e.premultiply=void 0!==s&&s,e}return i(t,e),o(t,[{key:"premultiply",get:function(){return this.defines.has("PREMULTIPLY")},set:function(e){e?this.defines.set("PREMULTIPLY","1"):this.defines["delete"]("PREMULTIPLY")}}]),t}(ye),Xe=function(e){function n(e,o){var i,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=s.blendFunction,u=void 0===c?me.SCREEN:c,d=s.patternTexture,f=void 0===d?null:d,A=s.edgeStrength,g=void 0===A?1:A,v=s.pulseSpeed,p=void 0===v?0:v,m=s.visibleEdgeColor,x=void 0===m?16777215:m,C=s.hiddenEdgeColor,y=void 0===C?2230538:C,B=s.resolutionScale,D=void 0===B?.5:B,E=s.kernelSize,h=void 0===E?$.VERY_SMALL:E,T=s.blur,S=s.xRay;r(this,n),i=l(this,a(n).call(this,"OutlineEffect","uniform sampler2D edgeTexture;uniform sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength;\n#ifdef USE_PATTERN\nuniform sampler2D patternTexture;varying vec2 vUvPattern;\n#endif\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 edge=texture2D(edgeTexture,uv).rg;vec2 mask=texture2D(maskTexture,uv).rg;\n#ifndef X_RAY\nedge.y=0.0;\n#endif\nedge*=(edgeStrength*mask.x*pulse);vec3 color=edge.x*visibleEdgeColor+edge.y*hiddenEdgeColor;float visibilityFactor=0.0;\n#ifdef USE_PATTERN\nvec4 patternColor=texture2D(patternTexture,vUvPattern);\n#ifdef X_RAY\nfloat hiddenFactor=0.5;\n#else\nfloat hiddenFactor=0.0;\n#endif\nvisibilityFactor=(1.0-mask.y>0.0)? 1.0 : hiddenFactor;visibilityFactor*=(1.0-mask.x)*patternColor.a;color+=visibilityFactor*patternColor.rgb;\n#endif\nfloat alpha=max(max(edge.x,edge.y),visibilityFactor);\n#ifdef ALPHA\noutputColor=vec4(color,alpha);\n#else\noutputColor=vec4(color,max(alpha,inputColor.a));\n#endif\n}",{uniforms:new Map([["maskTexture",new t.Uniform(null)],["edgeTexture",new t.Uniform(null)],["edgeStrength",new t.Uniform(g)],["visibleEdgeColor",new t.Uniform(new t.Color(x))],["hiddenEdgeColor",new t.Uniform(new t.Color(y))],["pulse",new t.Uniform(1)]])})),i.blendMode=function(e){return new Proxy(i.blendMode,{set:function(t,r,n){return n===me.ALPHA?e.set("ALPHA","1"):e["delete"]("ALPHA"),t[r]=n,!0}})}(i.defines),i.blendMode.blendFunction=u,i.setPatternTexture(f),i.xRay=void 0===S||S,i.scene=e,i.camera=o,i.renderTargetMask=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1,format:t.RGBFormat}),i.renderTargetMask.texture.name="Outline.Mask",i.uniforms.get("maskTexture").value=i.renderTargetMask.texture,i.renderTargetEdges=i.renderTargetMask.clone(),i.renderTargetEdges.texture.name="Outline.Edges",i.renderTargetEdges.depthBuffer=!1,i.renderTargetBlurredEdges=i.renderTargetEdges.clone(),i.renderTargetBlurredEdges.texture.name="Outline.BlurredEdges",i.clearPass=new ge,i.clearPass.overrideClearColor=new t.Color(0),i.clearPass.overrideClearAlpha=1,i.depthPass=new pe(e,o,{resolutionScale:D}),i.maskPass=new ve(e,o,new te(i.depthPass.renderTarget.texture,o));var w=i.maskPass.getClearPass();return w.overrideClearColor=new t.Color(16777215),w.overrideClearAlpha=1,i.blurPass=new de({resolutionScale:D,kernelSize:h}),i.blur=void 0!==T&&T,i.resolution=new t.Vector2,i.outlineEdgesPass=new Se(new se()),i.outlineEdgesPass.getFullscreenMaterial().uniforms.maskTexture.value=i.renderTargetMask.texture,i.selection=[],i.time=0,i.pulseSpeed=p,i.selectionLayer=10,i.clear=!1,i}return i(n,e),o(n,[{key:"setPatternTexture",value:function(e){null===e?(this.defines["delete"]("USE_PATTERN"),this.uniforms["delete"]("patternScale"),this.uniforms["delete"]("patternTexture"),this.vertexShader=null):(e.wrapS=e.wrapT=t.RepeatWrapping,this.defines.set("USE_PATTERN","1"),this.uniforms.set("patternScale",new t.Uniform(1)),this.uniforms.set("patternTexture",new t.Uniform(e)),this.vertexShader="uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}")}},{key:"getResolutionScale",value:function(){return this.blurPass.getResolutionScale()}},{key:"setResolutionScale",value:function(e){this.blurPass.setResolutionScale(e),this.depthPass.setResolutionScale(e),this.setSize(this.resolution.x,this.resolution.y)}},{key:"setSelection",value:function(e){var t,r,n=e.slice(0),o=this.selectionLayer;for(this.clearSelection(),t=0,r=n.length;t<r;++t)n[t].layers.enable(o);return this.selection=n,this}},{key:"clearSelection",value:function(){var e,t,r=this.selection,n=this.selectionLayer;for(e=0,t=r.length;e<t;++e)r[e].layers.disable(n);return this.selection=[],this.time=0,this.clear=!0,this}},{key:"selectObject",value:function(e){return e.layers.enable(this.selectionLayer),this.selection.push(e),this}},{key:"deselectObject",value:function(e){var t=this.selection,r=t.indexOf(e);return 0<=r&&(t[r].layers.disable(this.selectionLayer),t.splice(r,1),0===t.length&&(this.time=0,this.clear=!0)),this}},{key:"setSelectionVisible",value:function(e){var t,r,n=this.selection;for(t=0,r=n.length;t<r;++t)e?n[t].layers.enable(0):n[t].layers.disable(0)}},{key:"update",value:function(e,t,r){var n=this.scene,o=this.camera,i=this.uniforms.get("pulse"),a=n.background,s=o.layers.mask;0<this.selection.length?(n.background=null,i.value=1,0<this.pulseSpeed&&(i.value=.625+.375*k(10*(this.time*this.pulseSpeed)),this.time+=r),this.setSelectionVisible(!1),this.depthPass.render(e),this.setSelectionVisible(!0),o.layers.mask=1<<this.selectionLayer,this.maskPass.render(e,this.renderTargetMask),o.layers.mask=s,n.background=a,this.outlineEdgesPass.render(e,null,this.renderTargetEdges),this.blur&&this.blurPass.render(e,this.renderTargetEdges,this.renderTargetBlurredEdges)):this.clear&&(this.clearPass.render(e,this.renderTargetMask),this.clear=!1)}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.renderTargetMask.setSize(e,t),this.blurPass.setSize(e,t),this.maskPass.setSize(e,t),this.depthPass.setSize(e,t),e=this.blurPass.width,t=this.blurPass.height,this.renderTargetEdges.setSize(e,t),this.renderTargetBlurredEdges.setSize(e,t),this.outlineEdgesPass.getFullscreenMaterial().setTexelSize(1/e,1/t)}},{key:"initialize",value:function(e,t){this.depthPass.initialize(e,t),this.maskPass.initialize(e,t),this.blurPass.initialize(e,t)}},{key:"dithering",get:function(){return this.blurPass.dithering},set:function(e){this.blurPass.dithering=e}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(e){this.blurPass.kernelSize=e}},{key:"blur",get:function(){return this.blurPass.enabled},set:function(e){this.blurPass.enabled=e,this.uniforms.get("edgeTexture").value=e?this.renderTargetBlurredEdges.texture:this.renderTargetEdges.texture}},{key:"xRay",get:function(){return this.defines.has("X_RAY")},set:function(e){e?this.defines.set("X_RAY","1"):this.defines["delete"]("X_RAY")}}]),n}(ye),We=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:30;return r(this,n),e=l(this,a(n).call(this,"PixelationEffect","uniform bool active;uniform vec2 d;void mainUv(inout vec2 uv){if(active){uv=vec2(d.x*(floor(uv.x/d.x)+0.5),d.y*(floor(uv.y/d.y)+0.5));}}",{uniforms:new Map([["active",new t.Uniform(!1)],["d",new t.Uniform(new t.Vector2())]])})),e.resolution=new t.Vector2,e.granularity=o,e}return i(n,e),o(n,[{key:"getGranularity",value:function(){return this.granularity}},{key:"setGranularity",value:function(e){e=z(e),0<e%2&&(e+=1);var t=this.uniforms;t.get("active").value=0<e,t.get("d").value.set(e,e).divide(this.resolution),this.granularity=e}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.setGranularity(this.granularity)}}]),n}(ye),Ke=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.focus,u=void 0===c?1:c,d=o.focalLength,f=void 0===d?24:d,A=o.luminanceThreshold,g=void 0===A?.5:A,v=o.luminanceGain,p=void 0===v?2:v,m=o.bias,x=void 0===m?.5:m,C=o.fringe,y=void 0===C?.7:C,B=o.maxBlur,D=void 0===B?1:B,E=o.rings,h=void 0===E?3:E,T=o.samples,S=void 0===T?2:T,w=o.showFocus,P=o.manualDoF,I=o.pentagon;return r(this,n),e=l(this,a(n).call(this,"RealisticBokehEffect","uniform float focus;uniform float focalLength;uniform float maxBlur;uniform float luminanceThreshold;uniform float luminanceGain;uniform float bias;uniform float fringe;\n#ifdef MANUAL_DOF\nuniform vec4 dof;\n#endif\n#ifdef PENTAGON\nfloat pentagon(const in vec2 coords){const vec4 HS0=vec4(1.0,0.0,0.0,1.0);const vec4 HS1=vec4(0.309016994,0.951056516,0.0,1.0);const vec4 HS2=vec4(-0.809016994,0.587785252,0.0,1.0);const vec4 HS3=vec4(-0.809016994,-0.587785252,0.0,1.0);const vec4 HS4=vec4(0.309016994,-0.951056516,0.0,1.0);const vec4 HS5=vec4(0.0,0.0,1.0,1.0);const vec4 ONE=vec4(1.0);const float P_FEATHER=0.4;const float N_FEATHER=-P_FEATHER;float inOrOut=-4.0;vec4 P=vec4(coords,vec2(RINGS_FLOAT-1.3));vec4 dist=vec4(dot(P,HS0),dot(P,HS1),dot(P,HS2),dot(P,HS3));dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dot(dist,ONE);dist.x=dot(P,HS4);dist.y=HS5.w-abs(P.z);dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dist.x;return clamp(inOrOut,0.0,1.0);}\n#endif\nvec3 processTexel(const in vec2 coords,const in float blur){vec2 scale=texelSize*fringe*blur;vec3 c=vec3(texture2D(inputBuffer,coords+vec2(0.0,1.0)*scale).r,texture2D(inputBuffer,coords+vec2(-0.866,-0.5)*scale).g,texture2D(inputBuffer,coords+vec2(0.866,-0.5)*scale).b);float luminance=linearToRelativeLuminance(c);float threshold=max((luminance-luminanceThreshold)*luminanceGain,0.0);return c+mix(vec3(0.0),c,threshold*blur);}float gather(const in float i,const in float j,const in float ringSamples,const in vec2 uv,const in vec2 blurFactor,const in float blur,inout vec3 color){float step=PI2/ringSamples;vec2 wh=vec2(cos(j*step)*i,sin(j*step)*i);\n#ifdef PENTAGON\nfloat p=pentagon(wh);\n#else\nfloat p=1.0;\n#endif\ncolor+=processTexel(wh*blurFactor+uv,blur)*mix(1.0,i/RINGS_FLOAT,bias)*p;return mix(1.0,i/RINGS_FLOAT,bias)*p;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float linearDepth=(-cameraFar*cameraNear/(depth*(cameraFar-cameraNear)-cameraFar));\n#ifdef MANUAL_DOF\nfloat focalPlane=linearDepth-focus;float farDoF=(focalPlane-dof.z)/dof.w;float nearDoF=(-focalPlane-dof.x)/dof.y;float blur=(focalPlane>0.0)? farDoF : nearDoF;\n#else\nconst float CIRCLE_OF_CONFUSION=0.03;float focalPlaneMM=focus*1000.0;float depthMM=linearDepth*1000.0;float focalPlane=(depthMM*focalLength)/(depthMM-focalLength);float farDoF=(focalPlaneMM*focalLength)/(focalPlaneMM-focalLength);float nearDoF=(focalPlaneMM-focalLength)/(focalPlaneMM*focus*CIRCLE_OF_CONFUSION);float blur=abs(focalPlane-farDoF)*nearDoF;\n#endif\nconst int MAX_RING_SAMPLES=RINGS_INT*SAMPLES_INT;blur=clamp(blur,0.0,1.0);vec3 color=inputColor.rgb;if(blur>=0.05){vec2 blurFactor=blur*maxBlur*texelSize;float s=1.0;int ringSamples;for(int i=1;i<=RINGS_INT;i++){ringSamples=i*SAMPLES_INT;for(int j=0;j<MAX_RING_SAMPLES;j++){if(j>=ringSamples){break;}s+=gather(float(i),float(j),float(ringSamples),uv,blurFactor,blur,color);}}color/=s;}\n#ifdef SHOW_FOCUS\nfloat edge=0.002*linearDepth;float m=clamp(smoothstep(0.0,edge,blur),0.0,1.0);float e=clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);color=mix(color,vec3(1.0,0.5,0.0),(1.0-m)*0.6);color=mix(color,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2);\n#endif\noutputColor=vec4(color,inputColor.a);}",{blendFunction:s,attributes:Be.CONVOLUTION|Be.DEPTH,uniforms:new Map([["focus",new t.Uniform(u)],["focalLength",new t.Uniform(f)],["luminanceThreshold",new t.Uniform(g)],["luminanceGain",new t.Uniform(p)],["bias",new t.Uniform(x)],["fringe",new t.Uniform(y)],["maxBlur",new t.Uniform(D)]])})),e.rings=h,e.samples=S,e.showFocus=void 0!==w&&w,e.manualDoF=void 0!==P&&P,e.pentagon=void 0!==I&&I,e}return i(n,e),o(n,[{key:"rings",get:function(){return N(this.defines.get("RINGS_INT"))},set:function(e){e=z(e),this.defines.set("RINGS_INT",e.toFixed(0)),this.defines.set("RINGS_FLOAT",e.toFixed(1))}},{key:"samples",get:function(){return N(this.defines.get("SAMPLES_INT"))},set:function(e){e=z(e),this.defines.set("SAMPLES_INT",e.toFixed(0)),this.defines.set("SAMPLES_FLOAT",e.toFixed(1))}},{key:"showFocus",get:function(){return this.defines.has("SHOW_FOCUS")},set:function(e){e?this.defines.set("SHOW_FOCUS","1"):this.defines["delete"]("SHOW_FOCUS")}},{key:"manualDoF",get:function(){return this.defines.has("MANUAL_DOF")},set:function(e){e?(this.defines.set("MANUAL_DOF","1"),this.uniforms.set("dof",new t.Uniform(new t.Vector4(.2,1,.2,2)))):(this.defines["delete"]("MANUAL_DOF"),this.uniforms["delete"]("dof"))}},{key:"pentagon",get:function(){return this.defines.has("PENTAGON")},set:function(e){e?this.defines.set("PENTAGON","1"):this.defines["delete"]("PENTAGON")}}]),n}(ye),je=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.OVERLAY:i,c=o.density,u=void 0===c?1.25:c;return r(this,n),e=l(this,a(n).call(this,"ScanlineEffect","uniform float count;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 sl=vec2(sin(uv.y*count),cos(uv.y*count));vec3 scanlines=vec3(sl.x,sl.y,sl.x);outputColor=vec4(scanlines,inputColor.a);}",{blendFunction:s,uniforms:new Map([["count",new t.Uniform(0)]])})),e.resolution=new t.Vector2,e.density=u,e}return i(n,e),o(n,[{key:"getDensity",value:function(){return this.density}},{key:"setDensity",value:function(e){this.density=e,this.setSize(this.resolution.x,this.resolution.y)}},{key:"setSize",value:function(e,t){var r=Math.round;this.resolution.set(e,t),this.uniforms.get("count").value=r(t*this.density)}}]),n}(ye),Je=new t.Vector3,Ze=new t.Vector3,qe=function(e){function n(e){var o,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new t.Vector3,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=s.speed,u=void 0===c?2:c,d=s.maxRadius,f=void 0===d?1:d,A=s.waveSize,g=void 0===A?.2:A,v=s.amplitude,p=void 0===v?.05:v;return r(this,n),o=l(this,a(n).call(this,"ShockWaveEffect","uniform bool active;uniform vec2 center;uniform float waveSize;uniform float radius;uniform float maxRadius;uniform float amplitude;varying float vSize;void mainUv(inout vec2 uv){if(active){vec2 aspectCorrection=vec2(aspect,1.0);vec2 difference=uv*aspectCorrection-center*aspectCorrection;float distance=sqrt(dot(difference,difference))*vSize;if(distance>radius){if(distance<radius+waveSize){float angle=(distance-radius)*PI2/waveSize;float cosSin=(1.0-cos(angle))*0.5;float extent=maxRadius+waveSize;float decay=max(extent-distance*distance,0.0)/extent;uv-=((cosSin*amplitude*difference)/distance)*decay;}}}}",{vertexShader:"uniform float size;uniform float cameraDistance;varying float vSize;void mainSupport(){vSize=(0.1*cameraDistance)/size;}",uniforms:new Map([["active",new t.Uniform(!1)],["center",new t.Uniform(new t.Vector2(.5,.5))],["cameraDistance",new t.Uniform(1)],["size",new t.Uniform(1)],["radius",new t.Uniform(-g)],["maxRadius",new t.Uniform(f)],["waveSize",new t.Uniform(g)],["amplitude",new t.Uniform(p)]])})),o.camera=e,o.epicenter=i,o.screenPosition=o.uniforms.get("center").value,o.speed=u,o.time=0,o.active=!1,o}return i(n,e),o(n,[{key:"explode",value:function(){this.time=0,this.active=!0,this.uniforms.get("active").value=!0}},{key:"update",value:function(e,t,r){var n,o=this.epicenter,i=this.camera,a=this.uniforms;if(this.active){var s=a.get("waveSize").value;i.getWorldDirection(Je),Ze.copy(i.position).sub(o),Je.angleTo(Ze)>.5*G&&(a.get("cameraDistance").value=i.position.distanceTo(o),Je.copy(o).project(i),this.screenPosition.set(.5*(Je.x+1),.5*(Je.y+1))),this.time+=r*this.speed,n=this.time-s,a.get("radius").value=n,n>=2*(a.get("maxRadius").value+s)&&(this.active=!1,a.get("active").value=!1)}}}]),n}(ye),_e=function(e){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=e.blendFunction,i=void 0===o?me.NORMAL:o,s=e.intensity,c=void 0===s?1:s;return r(this,n),l(this,a(n).call(this,"SepiaEffect","uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,vec3(1.0-0.607*intensity,0.769*intensity,0.189*intensity)),dot(inputColor.rgb,vec3(0.349*intensity,1.0-0.314*intensity,0.168*intensity)),dot(inputColor.rgb,vec3(0.272*intensity,0.534*intensity,1.0-0.869*intensity)));outputColor=vec4(color,inputColor.a);}",{blendFunction:i,uniforms:new Map([["intensity",new t.Uniform(c)]])}))}return i(n,e),n}(ye),$e=function(e){function n(e,o){var i,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:et.HIGH;return r(this,n),i=l(this,a(n).call(this,"SMAAEffect","uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;/***Moves values to a target vector based on a given conditional vector.*/void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}",{vertexShader:"varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}",blendFunction:me.NORMAL,attributes:Be.CONVOLUTION,uniforms:new Map([["weightMap",new t.Uniform(null)]])})),i.renderTargetColorEdges=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearFilter,stencilBuffer:!1,depthBuffer:!1,format:t.RGBFormat}),i.renderTargetColorEdges.texture.name="SMAA.ColorEdges",i.renderTargetWeights=i.renderTargetColorEdges.clone(),i.renderTargetWeights.texture.name="SMAA.Weights",i.renderTargetWeights.texture.format=t.RGBAFormat,i.uniforms.get("weightMap").value=i.renderTargetWeights.texture,i.clearPass=new ge(!0,!1,!1),i.clearPass.overrideClearColor=new t.Color(0),i.clearPass.overrideClearAlpha=1,i.colorEdgesPass=new Se(new Z()),i.weightsPass=new Se(new ce()),i.weightsPass.getFullscreenMaterial().uniforms.searchTexture.value=function(){var r=new t.Texture(e);return r.name="SMAA.Search",r.magFilter=t.NearestFilter,r.minFilter=t.NearestFilter,r.format=t.RGBAFormat,r.generateMipmaps=!1,r.needsUpdate=!0,r.flipY=!0,r}(),i.weightsPass.getFullscreenMaterial().uniforms.areaTexture.value=function(){var e=new t.Texture(o);return e.name="SMAA.Area",e.minFilter=t.LinearFilter,e.format=t.RGBAFormat,e.generateMipmaps=!1,e.needsUpdate=!0,e.flipY=!1,e}(),i.applyPreset(s),i}return i(n,e),o(n,[{key:"setEdgeDetectionThreshold",value:function(e){this.colorEdgesPass.getFullscreenMaterial().setEdgeDetectionThreshold(e)}},{key:"setOrthogonalSearchSteps",value:function(e){this.weightsPass.getFullscreenMaterial().setOrthogonalSearchSteps(e)}},{key:"applyPreset",value:function(e){var t=this.colorEdgesMaterial,r=this.weightsMaterial;e===et.LOW?(t.setEdgeDetectionThreshold(.15),r.setOrthogonalSearchSteps(4),r.diagonalDetection=!1,r.cornerRounding=!1):e===et.MEDIUM?(t.setEdgeDetectionThreshold(.1),r.setOrthogonalSearchSteps(8),r.diagonalDetection=!1,r.cornerRounding=!1):e===et.HIGH?(t.setEdgeDetectionThreshold(.1),r.setOrthogonalSearchSteps(16),r.setDiagonalSearchSteps(8),r.setCornerRounding(25),r.diagonalDetection=!0,r.cornerRounding=!0):e===et.ULTRA?(t.setEdgeDetectionThreshold(.05),r.setOrthogonalSearchSteps(32),r.setDiagonalSearchSteps(16),r.setCornerRounding(25),r.diagonalDetection=!0,r.cornerRounding=!0):void 0}},{key:"update",value:function(e,t){this.clearPass.render(e,this.renderTargetColorEdges),this.colorEdgesPass.render(e,t,this.renderTargetColorEdges),this.weightsPass.render(e,this.renderTargetColorEdges,this.renderTargetWeights)}},{key:"setSize",value:function(e,t){var r=this.colorEdgesPass.getFullscreenMaterial(),n=this.weightsPass.getFullscreenMaterial();this.renderTargetColorEdges.setSize(e,t),this.renderTargetWeights.setSize(e,t),n.uniforms.resolution.value.set(e,t),n.uniforms.texelSize.value.set(1/e,1/t),r.uniforms.texelSize.value.copy(n.uniforms.texelSize.value)}},{key:"colorEdgesMaterial",get:function(){return this.colorEdgesPass.getFullscreenMaterial()}},{key:"weightsMaterial",get:function(){return this.weightsPass.getFullscreenMaterial()}}],[{key:"searchImageDataURL",get:function(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC"}},{key:"areaImageDataURL",get:function(){return"data:image/png;base64,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"}}]),n}(ye),et={LOW:0,MEDIUM:1,HIGH:2,ULTRA:3},tt=function(e){function n(e,o){var i,s=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},c=s.blendFunction,u=void 0===c?me.MULTIPLY:c,d=s.samples,f=void 0===d?11:d,A=s.rings,g=void 0===A?4:A,v=s.distanceThreshold,p=void 0===v?.65:v,m=s.distanceFalloff,x=void 0===m?.1:m,C=s.rangeThreshold,y=void 0===C?.0015:C,B=s.rangeFalloff,D=void 0===B?.01:B,E=s.luminanceInfluence,h=void 0===E?.7:E,T=s.radius,S=void 0===T?18.25:T,w=s.scale,P=void 0===w?1:w,I=s.bias,M=void 0===I?.5:I;return r(this,n),i=l(this,a(n).call(this,"SSAOEffect","uniform sampler2D normalBuffer;uniform mat4 cameraProjectionMatrix;uniform mat4 cameraInverseProjectionMatrix;uniform vec2 radiusStep;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;uniform float seed;uniform float luminanceInfluence;uniform float scale;uniform float bias;float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\n}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){float clipW=cameraProjectionMatrix[2][3]*viewZ+cameraProjectionMatrix[3][3];vec4 clipPosition=vec4((vec3(screenPosition,depth)-0.5)*2.0,1.0);clipPosition*=clipW;return(cameraInverseProjectionMatrix*clipPosition).xyz;}float getOcclusion(const in vec3 p,const in vec3 n,const in vec3 sampleViewPosition){vec3 viewDelta=sampleViewPosition-p;float d=length(viewDelta)*scale;return max(0.0,dot(n,viewDelta)/d-bias)/(1.0+pow2(d));}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){vec2 radius=radiusStep;float angle=rand(uv+seed)*PI2;float occlusionSum=0.0;for(int i=0;i<SAMPLES_INT;++i){vec2 coord=uv+vec2(cos(angle),sin(angle))*radius;radius+=radiusStep;angle+=ANGLE_STEP;float sampleDepth=readDepth(coord);float proximity=abs(depth-sampleDepth);if(sampleDepth<distanceCutoff.y&&proximity<proximityCutoff.y){float falloff=1.0-smoothstep(proximityCutoff.x,proximityCutoff.y,proximity);vec3 sampleViewPosition=getViewPosition(coord,sampleDepth,getViewZ(sampleDepth));occlusionSum+=getOcclusion(p,n,sampleViewPosition)*falloff;}}return occlusionSum/SAMPLES_FLOAT;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float ao=1.0;if(depth<distanceCutoff.y){vec3 viewPosition=getViewPosition(uv,depth,getViewZ(depth));vec3 viewNormal=unpackRGBToNormal(texture2D(normalBuffer,uv).xyz);ao-=getAmbientOcclusion(viewPosition,viewNormal,depth,uv);float l=linearToRelativeLuminance(inputColor.rgb);ao=mix(ao,1.0,max(l*luminanceInfluence,smoothstep(distanceCutoff.x,distanceCutoff.y,depth)));}outputColor=vec4(vec3(ao),inputColor.a);}",{blendFunction:u,attributes:Be.DEPTH,defines:new Map([["RINGS_INT","0"],["SAMPLES_INT","0"],["SAMPLES_FLOAT","0.0"]]),uniforms:new Map([["normalBuffer",new t.Uniform(o)],["cameraInverseProjectionMatrix",new t.Uniform(new t.Matrix4())],["cameraProjectionMatrix",new t.Uniform(new t.Matrix4())],["radiusStep",new t.Uniform(new t.Vector2())],["distanceCutoff",new t.Uniform(new t.Vector2())],["proximityCutoff",new t.Uniform(new t.Vector2())],["seed",new t.Uniform(Math.random())],["luminanceInfluence",new t.Uniform(h)],["scale",new t.Uniform(P)],["bias",new t.Uniform(M)]])})),i.r=0,i.resolution=new t.Vector2(1,1),i.camera=e,i.samples=f,i.rings=g,i.radius=S,i.setDistanceCutoff(p,x),i.setProximityCutoff(y,D),i}return i(n,e),o(n,[{key:"updateAngleStep",value:function(){this.defines.set("ANGLE_STEP",(2*G*this.rings/this.samples).toFixed(11))}},{key:"updateRadiusStep",value:function(){var e=this.r/this.samples;this.uniforms.get("radiusStep").value.set(e,e).divide(this.resolution)}},{key:"setDistanceCutoff",value:function(e,t){this.uniforms.get("distanceCutoff").value.set(e,V(e+t,1-1e-6))}},{key:"setProximityCutoff",value:function(e,t){this.uniforms.get("proximityCutoff").value.set(e,V(e+t,1-1e-6))}},{key:"setSize",value:function(e,t){this.resolution.set(e,t),this.updateRadiusStep(),this.uniforms.get("cameraInverseProjectionMatrix").value.getInverse(this.camera.projectionMatrix),this.uniforms.get("cameraProjectionMatrix").value.copy(this.camera.projectionMatrix)}},{key:"samples",get:function(){return N(this.defines.get("SAMPLES_INT"))},set:function(e){e=z(e),this.defines.set("SAMPLES_INT",e.toFixed(0)),this.defines.set("SAMPLES_FLOAT",e.toFixed(1)),this.updateAngleStep(),this.updateRadiusStep()}},{key:"rings",get:function(){return N(this.defines.get("RINGS_INT"))},set:function(e){e=z(e),this.defines.set("RINGS_INT",e.toFixed(0)),this.updateAngleStep()}},{key:"radius",get:function(){return this.r},set:function(e){this.r=e,this.updateRadiusStep()}}]),n}(ye),rt=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.texture,u=void 0===c?null:c,d=o.aspectCorrection;return r(this,n),e=l(this,a(n).call(this,"TextureEffect",Ie,{blendFunction:s,uniforms:new Map([["texture",new t.Uniform(u)]])})),e.aspectCorrection=void 0!==d&&d,e}return i(n,e),o(n,[{key:"aspectCorrection",get:function(){return this.defines.has("ASPECT_CORRECTION")},set:function(e){e?(this.defines.set("ASPECT_CORRECTION","1"),this.uniforms.set("scale",new t.Uniform(1)),this.vertexShader="uniform float scale;varying vec2 vUv2;void mainSupport(const in vec2 uv){vUv2=uv*vec2(aspect,1.0)*scale;}"):(this.defines["delete"]("ASPECT_CORRECTION"),this.uniforms["delete"]("scale"),this.vertexShader=null)}}]),n}(ye),nt=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=o.blendFunction,s=void 0===i?me.NORMAL:i,c=o.adaptive,u=o.resolution,d=void 0===u?256:u,f=o.distinction,A=void 0===f?1:f,g=o.middleGrey,v=void 0===g?.6:g,p=o.maxLuminance,m=void 0===p?16:p,x=o.averageLuminance,C=void 0===x?1:x,y=o.adaptationRate,B=void 0===y?2:y;return r(this,n),e=l(this,a(n).call(this,"ToneMappingEffect","uniform sampler2D luminanceMap;uniform float middleGrey;uniform float maxLuminance;uniform float averageLuminance;vec3 toneMap(vec3 c){\n#ifdef ADAPTED_LUMINANCE\nfloat lumAvg=texture2D(luminanceMap,vec2(0.5)).r;\n#else\nfloat lumAvg=averageLuminance;\n#endif\nfloat lumPixel=linearToRelativeLuminance(c);float lumScaled=(lumPixel*middleGrey)/lumAvg;float lumCompressed=(lumScaled*(1.0+(lumScaled/(maxLuminance*maxLuminance))))/(1.0+lumScaled);return lumCompressed*c;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(toneMap(inputColor.rgb),inputColor.a);}",{blendFunction:s,uniforms:new Map([["luminanceMap",new t.Uniform(null)],["middleGrey",new t.Uniform(v)],["maxLuminance",new t.Uniform(m)],["averageLuminance",new t.Uniform(C)]])})),e.renderTargetLuminance=new t.WebGLRenderTarget(1,1,{minFilter:t.LinearMipMapLinearFilter,magFilter:t.LinearFilter,stencilBuffer:!1,depthBuffer:!1,format:t.RGBFormat}),e.renderTargetLuminance.texture.name="ToneMapping.Luminance",e.renderTargetLuminance.texture.generateMipmaps=!0,e.renderTargetAdapted=e.renderTargetLuminance.clone(),e.renderTargetAdapted.texture.name="ToneMapping.AdaptedLuminance",e.renderTargetAdapted.texture.generateMipmaps=!1,e.renderTargetAdapted.texture.minFilter=t.LinearFilter,e.renderTargetPrevious=e.renderTargetAdapted.clone(),e.renderTargetPrevious.texture.name="ToneMapping.PreviousLuminance",e.savePass=new Te(e.renderTargetPrevious,!1),e.luminancePass=new Se(new ae()),e.adaptiveLuminancePass=new Se(new J()),e.adaptationRate=B,e.distinction=A,e.resolution=d,e.adaptive=void 0===c||c,e}return i(n,e),o(n,[{key:"update",value:function(e,t,r){if(this.adaptive){this.luminancePass.render(e,t,this.renderTargetLuminance);var n=this.adaptiveLuminancePass.getFullscreenMaterial().uniforms;n.previousLuminanceBuffer.value=this.renderTargetPrevious.texture,n.currentLuminanceBuffer.value=this.renderTargetLuminance.texture,n.deltaTime.value=r,this.adaptiveLuminancePass.render(e,null,this.renderTargetAdapted),this.savePass.render(e,this.renderTargetAdapted)}}},{key:"setSize",value:function(e,t){this.savePass.setSize(e,t)}},{key:"initialize",value:function(e){var r=new ge(!0,!1,!1);r.overrideClearColor=new t.Color(8388607),r.render(e,this.renderTargetPrevious),r.dispose()}},{key:"resolution",get:function(){return this.renderTargetLuminance.width},set:function(e){var t=Math.ceil,r=Math.log2,n=X(0,t(r(e)));e=Q(2,n),this.renderTargetLuminance.setSize(e,e),this.renderTargetPrevious.setSize(e,e),this.renderTargetAdapted.setSize(e,e),this.adaptiveLuminancePass.getFullscreenMaterial().defines.MIP_LEVEL_1X1=n.toFixed(1)}},{key:"adaptive",get:function(){return this.defines.has("ADAPTED_LUMINANCE")},set:function(e){e?(this.defines.set("ADAPTED_LUMINANCE","1"),this.uniforms.get("luminanceMap").value=this.renderTargetAdapted.texture):(this.defines["delete"]("ADAPTED_LUMINANCE"),this.uniforms.get("luminanceMap").value=null)}},{key:"adaptationRate",get:function(){return this.adaptiveLuminancePass.getFullscreenMaterial().uniforms.tau.value},set:function(e){this.adaptiveLuminancePass.getFullscreenMaterial().uniforms.tau.value=e}},{key:"distinction",get:function(){return this.luminancePass.getFullscreenMaterial().uniforms.distinction.value},set:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1;this.luminancePass.getFullscreenMaterial().uniforms.distinction.value=e}}]),n}(ye),ot=function(e){function n(){var e,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};r(this,n);var i=Object.assign({blendFunction:me.NORMAL,eskil:!1,offset:.5,darkness:.5},o);return e=l(this,a(n).call(this,"VignetteEffect","uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb;\n#ifdef ESKIL\nvec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord));\n#else\nfloat d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset));\n#endif\noutputColor=vec4(color,inputColor.a);}",{blendFunction:i.blendFunction,uniforms:new Map([["offset",new t.Uniform(i.offset)],["darkness",new t.Uniform(i.darkness)]])})),e.eskil=i.eskil,e}return i(n,e),o(n,[{key:"eskil",get:function(){return this.defines.has("ESKIL")},set:function(e){e?this.defines.set("ESKIL","1"):this.defines["delete"]("ESKIL")}}]),n}(ye),it=function(){function e(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:4;r(this,e),this.width=t,this.height=n,this.data=o,this.channels=i}return o(e,[{key:"toCanvas",value:function(){return"undefined"==typeof document?null:C(this.width,this.height,this.data,this.channels)}}]),e}(),at=new t.Box2,st=new t.Box2,ct=16,lt=20,ut=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),dt=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],ft=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],At=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])],gt=function(){function e(){r(this,e)}return o(e,null,[{key:"generate",value:function(){var e,r,n=10*ct,o=5*ut.length*ct,a=new Uint8ClampedArray(2*(n*o)),s=new it(n,o,a,2),c=Q(ct-1,2)+1,u=lt,d=[],f=[],A=new t.Vector2;for(e=0;16>e;++e)d.push(new it(c,c,new Uint8ClampedArray(2*(c*c)),2)),f.push(new it(u,u,new Uint8ClampedArray(2*(u*u)),2));for(e=0,r=ut.length;e<r;++e)I(d,ut[e],!0),A.set(0,5*ct*e),M(A,d,ft,ct,!0,s);for(e=0,r=dt.length;e<r;++e)I(f,dt[e],!1),A.set(5*ct,4*lt*e),M(A,f,At,lt,!1,s);return s}}]),e}(),vt=new Map([[R([0,0,0,0]),[0,0,0,0]],[R([0,0,0,1]),[0,0,0,1]],[R([0,0,1,0]),[0,0,1,0]],[R([0,0,1,1]),[0,0,1,1]],[R([0,1,0,0]),[0,1,0,0]],[R([0,1,0,1]),[0,1,0,1]],[R([0,1,1,0]),[0,1,1,0]],[R([0,1,1,1]),[0,1,1,1]],[R([1,0,0,0]),[1,0,0,0]],[R([1,0,0,1]),[1,0,0,1]],[R([1,0,1,0]),[1,0,1,0]],[R([1,0,1,1]),[1,0,1,1]],[R([1,1,0,0]),[1,1,0,0]],[R([1,1,0,1]),[1,1,0,1]],[R([1,1,1,0]),[1,1,1,0]],[R([1,1,1,1]),[1,1,1,1]]]),pt=function(){function e(){r(this,e)}return o(e,null,[{key:"generate",value:function(){var e,r,n,o,a,c,l,u=33,d=64,f=16,A=new Uint8ClampedArray(66*u),g=new Uint8ClampedArray(d*f);for(r=0;r<u;++r)for(e=0;66>e;++e)n=.03125*e,o=.03125*r,vt.has(n)&&vt.has(o)&&(c=vt.get(n),l=vt.get(o),A[66*r+e]=127*L(c,l),A[66*r+e+33]=127*O(c,l));for(a=0,r=u-f;r<u;++r)for(e=0;e<d;++e,++a)g[a]=A[66*r+e];return new it(d,f,g,1)}}]),e}();e.AdaptiveLuminanceMaterial=J,e.BlendFunction=me,e.BlendMode=Ce,e.BloomEffect=Me,e.BlurPass=de,e.BokehEffect=be,e.BrightnessContrastEffect=Fe,e.ChromaticAberrationEffect=Oe,e.ClearMaskPass=fe,e.ClearPass=ge,e.ColorAverageEffect=Re,e.ColorDepthEffect=Le,e.ColorEdgesMaterial=Z,e.ConvolutionMaterial=q,e.CopyMaterial=ee,e.DepthComparisonMaterial=te,e.DepthEffect=ke,e.DepthMaskMaterial=re,e.DepthPass=pe,e.Disposable=W,e.DotScreenEffect=Ue,e.Effect=ye,e.EffectAttribute=Be,e.EffectComposer=we,e.EffectMaterial=ne,e.EffectPass=De,e.GammaCorrectionEffect=Ge,e.GlitchEffect=ze,e.GlitchMode=Ne,e.GodRaysEffect=m,e.GodRaysMaterial=ie,e.GridEffect=b,e.HueSaturationEffect=Ye,e.Initializable=K,e.KernelSize=$,e.LuminanceMaterial=ae,e.MaskPass=Ee,e.NoiseEffect=Ve,e.NormalPass=he,e.OutlineEdgesMaterial=se,e.OutlineEffect=Xe,e.Pass=ue,e.PixelationEffect=We,e.RawImageData=it,e.RealisticBokehEffect=Ke,e.RenderPass=ve,e.Resizable=Pe,e.SMAAAreaImageData=gt,e.SMAAEffect=$e,e.SMAAPreset=et,e.SMAASearchImageData=pt,e.SMAAWeightsMaterial=ce,e.SSAOEffect=tt,e.SavePass=Te,e.ScanlineEffect=je,e.SepiaEffect=_e,e.ShaderPass=Se,e.ShockWaveEffect=qe,e.TextureEffect=rt,e.ToneMappingEffect=nt,e.VignetteEffect=ot,e.WebGLExtension={DERIVATIVES:"derivatives",FRAG_DEPTH:"fragDepth",DRAW_BUFFERS:"drawBuffers",SHADER_TEXTURE_LOD:"shaderTextureLOD"},Object.defineProperty(e,"__esModule",{value:!0})});

Callers 4

uFunction · 0.70
nFunction · 0.70
tFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected