forked from WhitestormJS/whs.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwhs.min.js
260 lines (260 loc) · 202 KB
/
whs.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(g,c,t){g!=Array.prototype&&g!=Object.prototype&&(g[c]=t.value)};$jscomp.getGlobal=function(g){return"undefined"!=typeof window&&window===g?g:"undefined"!=typeof global&&null!=global?global:g};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(g){return $jscomp.SYMBOL_PREFIX+(g||"")+$jscomp.symbolCounter_++};
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var g=$jscomp.global.Symbol.iterator;g||(g=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[g]&&$jscomp.defineProperty(Array.prototype,g,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(g){var c=0;return $jscomp.iteratorPrototype(function(){return c<g.length?{done:!1,value:g[c++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(g){$jscomp.initSymbolIterator();g={next:g};g[$jscomp.global.Symbol.iterator]=function(){return this};return g};$jscomp.owns=function(g,c){return Object.prototype.hasOwnProperty.call(g,c)};$jscomp.polyfill=function(g,c,t,u){if(c){t=$jscomp.global;g=g.split(".");for(u=0;u<g.length-1;u++){var r=g[u];r in t||(t[r]={});t=t[r]}g=g[g.length-1];u=t[g];c=c(u);c!=u&&null!=c&&$jscomp.defineProperty(t,g,{configurable:!0,writable:!0,value:c})}};
$jscomp.polyfill("Object.assign",function(g){return g?g:function(c,g){for(var t=1;t<arguments.length;t++){var r=arguments[t];if(r)for(var x in r)$jscomp.owns(r,x)&&(c[x]=r[x])}return c}},"es6-impl","es3");$jscomp.makeIterator=function(g){$jscomp.initSymbolIterator();var c=g[Symbol.iterator];return c?c.call(g):$jscomp.arrayIterator(g)};$jscomp.FORCE_POLYFILL_PROMISE=!1;
$jscomp.polyfill("Promise",function(g){function c(){this.batch_=null}function t(c){return c instanceof r?c:new r(function(g,I){g(c)})}if(g&&!$jscomp.FORCE_POLYFILL_PROMISE)return g;c.prototype.asyncExecute=function(c){null==this.batch_&&(this.batch_=[],this.asyncExecuteBatch_());this.batch_.push(c);return this};c.prototype.asyncExecuteBatch_=function(){var c=this;this.asyncExecuteFunction(function(){c.executeBatch_()})};var u=$jscomp.global.setTimeout;c.prototype.asyncExecuteFunction=function(c){u(c,
0)};c.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var c=this.batch_;this.batch_=[];for(var g=0;g<c.length;++g){var r=c[g];delete c[g];try{r()}catch(E){this.asyncThrow_(E)}}}this.batch_=null};c.prototype.asyncThrow_=function(c){this.asyncExecuteFunction(function(){throw c;})};var r=function(c){this.state_=0;this.result_=void 0;this.onSettledCallbacks_=[];var g=this.createResolveAndReject_();try{c(g.resolve,g.reject)}catch(D){g.reject(D)}};r.prototype.createResolveAndReject_=
function(){function c(c){return function(h){r||(r=!0,c.call(g,h))}}var g=this,r=!1;return{resolve:c(this.resolveTo_),reject:c(this.reject_)}};r.prototype.resolveTo_=function(c){if(c===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(c instanceof r)this.settleSameAsPromise_(c);else{a:switch(typeof c){case "object":var g=null!=c;break a;case "function":g=!0;break a;default:g=!1}g?this.resolveToNonPromiseObj_(c):this.fulfill_(c)}};r.prototype.resolveToNonPromiseObj_=function(c){var g=
void 0;try{g=c.then}catch(D){this.reject_(D);return}"function"==typeof g?this.settleSameAsThenable_(g,c):this.fulfill_(c)};r.prototype.reject_=function(c){this.settle_(2,c)};r.prototype.fulfill_=function(c){this.settle_(1,c)};r.prototype.settle_=function(c,g){if(0!=this.state_)throw Error("Cannot settle("+c+", "+g|"): Promise already settled in state"+this.state_);this.state_=c;this.result_=g;this.executeOnSettledCallbacks_()};r.prototype.executeOnSettledCallbacks_=function(){if(null!=this.onSettledCallbacks_){for(var c=
this.onSettledCallbacks_,g=0;g<c.length;++g)c[g].call(),c[g]=null;this.onSettledCallbacks_=null}};var x=new c;r.prototype.settleSameAsPromise_=function(c){var g=this.createResolveAndReject_();c.callWhenSettled_(g.resolve,g.reject)};r.prototype.settleSameAsThenable_=function(c,g){var r=this.createResolveAndReject_();try{c.call(g,r.resolve,r.reject)}catch(E){r.reject(E)}};r.prototype.then=function(c,g){function t(c,g){return"function"==typeof c?function(g){try{u(c(g))}catch(m){h(m)}}:g}var u,h,l=new r(function(c,
g){u=c;h=g});this.callWhenSettled_(t(c,u),t(g,h));return l};r.prototype.catch=function(c){return this.then(void 0,c)};r.prototype.callWhenSettled_=function(c,g){function r(){switch(t.state_){case 1:c(t.result_);break;case 2:g(t.result_);break;default:throw Error("Unexpected state: "+t.state_);}}var t=this;null==this.onSettledCallbacks_?x.asyncExecute(r):this.onSettledCallbacks_.push(function(){x.asyncExecute(r)})};r.resolve=t;r.reject=function(c){return new r(function(g,r){r(c)})};r.race=function(c){return new r(function(g,
r){for(var u=$jscomp.makeIterator(c),h=u.next();!h.done;h=u.next())t(h.value).callWhenSettled_(g,r)})};r.all=function(c){var g=$jscomp.makeIterator(c),u=g.next();return u.done?t([]):new r(function(c,h){function l(g){return function(h){r[g]=h;q--;0==q&&c(r)}}var r=[],q=0;do r.push(void 0),q++,t(u.value).callWhenSettled_(l(r.length-1),h),u=g.next();while(!u.done)})};return r},"es6-impl","es3");
$jscomp.iteratorFromArray=function(g,c){$jscomp.initSymbolIterator();g instanceof String&&(g+="");var t=0,u={next:function(){if(t<g.length){var r=t++;return{value:c(r,g[r]),done:!1}}u.next=function(){return{done:!0,value:void 0}};return u.next()}};u[Symbol.iterator]=function(){return u};return u};$jscomp.polyfill("Array.prototype.keys",function(g){return g?g:function(){return $jscomp.iteratorFromArray(this,function(c){return c})}},"es6-impl","es3");
$jscomp.polyfill("Math.log2",function(g){return g?g:function(c){return Math.log(c)/Math.LN2}},"es6-impl","es3");$jscomp.checkStringArgs=function(g,c,t){if(null==g)throw new TypeError("The 'this' value for String.prototype."+t+" must not be null or undefined");if(c instanceof RegExp)throw new TypeError("First argument to String.prototype."+t+" must not be a regular expression");return g+""};
$jscomp.polyfill("String.prototype.repeat",function(g){return g?g:function(c){var g=$jscomp.checkStringArgs(this,null,"repeat");if(0>c||1342177279<c)throw new RangeError("Invalid count value");c|=0;for(var u="";c;)if(c&1&&(u+=g),c>>>=1)g+=g;return u}},"es6-impl","es3");
(function(g,c){"object"===typeof exports&&"undefined"!==typeof module?c(exports,require("three")):"function"===typeof define&&define.amd?define(["exports","three"],c):c(g.WHS=g.WHS||{},g.THREE)})(this,function(g,c){function t(c,g,h){function e(b){if("function"!==typeof b)throw Error("Expected listener to be a function.");var a=!0;z===f&&(z=f.slice());z.push(b);return function(){if(a){a=!1;z===f&&(z=f.slice());var d=z.indexOf(b);z.splice(d,1)}}}function a(b){var a;if(a=null!=b&&"object"==typeof b){if(null==
b)var c=void 0===b?"[object Undefined]":"[object Null]";else if(va&&va in Object(b)){a=Yb.call(b,J);var e=b[J];try{b[J]=void 0,c=!0}catch(xd){}var g=Zb.call(b);c&&(a?b[J]=e:delete b[J]);c=g}else c=$b.call(b);a="[object Object]"==c}a?(c=ac(b),null===c?c=!0:(c=bc.call(c,"constructor")&&c.constructor,c="function"==typeof c&&c instanceof c&&wa.call(c)==cc)):c=!1;if(!c)throw Error("Actions must be plain objects. Use custom middleware for async actions.");if("undefined"===typeof b.type)throw Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');
if(Y)throw Error("Reducers may not dispatch actions.");try{Y=!0,p=d(p,b)}finally{Y=!1}c=f=z;for(a=0;a<c.length;a++)(0,c[a])();return b}var b;"function"===typeof g&&"undefined"===typeof h&&(h=g,g=void 0);if("undefined"!==typeof h){if("function"!==typeof h)throw Error("Expected the enhancer to be a function.");return h(t)(c,g)}if("function"!==typeof c)throw Error("Expected the reducer to be a function.");var d=c,p=g,f=[],z=f,Y=!1;a({type:xa.INIT});return b={dispatch:a,subscribe:e,getState:function(){return p},
replaceReducer:function(b){if("function"!==typeof b)throw Error("Expected the nextReducer to be a function.");d=b;a({type:xa.INIT})}},b[ya]=function(){var b;return b={subscribe:function(b){function a(){b.next&&b.next(p)}if("object"!==typeof b)throw new TypeError("Expected the observer to be an object.");a();return{unsubscribe:e(a)}}},b[ya]=function(){return this},b},b}function u(){for(var c=arguments.length,g=Array(c),h=0;h<c;h++)g[h]=arguments[h];return function(c){for(var a=0;a<g.length;a++)for(var b=
g[a],d=0;d<b.map.length;d++){var e=b.map[d];Object.defineProperty(c.prototype,e,{get:b.getter(e),set:b.setter(e),configurable:b.configurable,enumerable:b.enumerable})}}}function r(){for(var c=arguments.length,g=Array(c),h=0;h<c;h++)g[h]=arguments[h];return{map:g,getter:function(c){return function(){return this.native[c]}},setter:function(c){return function(a){this.native[c].copy(a)}},configurable:!0,enumerable:!0}}function x(c,g){return c+Math.random()*(g-c)}var I=function Wb(c){for(var e=arguments.length,
a=Array(1<e?e-1:0),b=1;b<e;b++)a[b-1]=arguments[b];var e=!0,b=!1,d=void 0;try{$jscomp.initSymbol();$jscomp.initSymbolIterator();for(var p=a[Symbol.iterator](),f;!(e=(f=p.next()).done);e=!0){var z=f.value;if(z){var a=!0,g=!1,h=void 0;try{$jscomp.initSymbol();$jscomp.initSymbolIterator();for(var l=Object.getOwnPropertyNames(z)[Symbol.iterator](),m;!(a=(m=l.next()).done);a=!0){var k=m.value;void 0!==c[k]&&z[k]&&"[object Object]"===c[k].toString()&&"[object Object]"===z[k].toString()?c[k].constructor===
Object&&Wb(c[k],z[k]):c[k]="undefined"===typeof c[k]?z[k]:c[k];"undefined"===typeof c[k]&&Array.isArray(z[k])?c[k]=z[k].slice():"undefined"===typeof c[k]&&Array.isArray(z[k])&&(c[k]=z[k])}}catch(X){g=!0,h=X}finally{try{!a&&l.return&&l.return()}finally{if(g)throw h;}}}}}catch(X){b=!0,d=X}finally{try{!e&&p.return&&p.return()}finally{if(b)throw d;}}return c},ta=function(c,g){for(var e={},a=0,b=g.length;a<b;a++)e[g[a]]=c[a];return e},D=function Xb(c,a){for(var b in a)Array.isArray(c[b])?c[b]=ta(c[b],
a[b]):c[b]instanceof Object&&!Array.isArray(a[b])&&(c[b]=Xb(c[b],a[b]));return c},E=function(c){var e={},a=[];c=c||this;c.on=function(b,a,c){(e[b]=e[b]||[]).push([a,c])};c.off=function(b,d){b||(e={});b=e[b]||a;for(var c=b.length=d?b.length:0;c--;)d==b[c][0]&&b.splice(c,1)};c.emit=function(b){for(var d=e[b]||a,d=0<d.length?d.slice(0,d.length):d,c=0,f;f=d[c++];)f[0].apply(f[1],a.slice.call(arguments,1))}},h=function(c,e){if(!(c instanceof e))throw new TypeError("Cannot call a class as a function");
},l=function(){function c(c,a){for(var b=0;b<a.length;b++){var d=a[b];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(c,d.key,d)}}return function(e,a,b){a&&c(e.prototype,a);b&&c(e,b);return e}}(),Vb=function(c,e,a){e in c?Object.defineProperty(c,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):c[e]=a;return c},q=Object.assign||function(c){for(var e=1;e<arguments.length;e++){var a=arguments[e],b;for(b in a)Object.prototype.hasOwnProperty.call(a,
b)&&(c[b]=a[b])}return c},v=function e(a,b,d){null===a&&(a=Function.prototype);var c=Object.getOwnPropertyDescriptor(a,b);if(void 0===c){if(a=Object.getPrototypeOf(a),null!==a)return e(a,b,d)}else{if("value"in c)return c.value;b=c.get;return void 0===b?void 0:b.call(d)}},m=function(c,a){if("function"!==typeof a&&null!==a)throw new TypeError("Super expression must either be null or a function, not "+typeof a);c.prototype=Object.create(a&&a.prototype,{constructor:{value:c,enumerable:!1,writable:!0,
configurable:!0}});a&&(Object.setPrototypeOf?Object.setPrototypeOf(c,a):c.__proto__=a)},k=function(c,a){if(!c)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!a||"object"!==typeof a&&"function"!==typeof a?c:a},za=function(){return function(c,a){if(Array.isArray(c))return c;$jscomp.initSymbol();$jscomp.initSymbolIterator();if(Symbol.iterator in Object(c)){var b=[],d=!0,p=!1,f=void 0;try{$jscomp.initSymbol();$jscomp.initSymbolIterator();for(var e=c[Symbol.iterator](),
g;!(d=(g=e.next()).done)&&(b.push(g.value),!a||b.length!==a);d=!0);}catch(W){p=!0,f=W}finally{try{if(!d&&e["return"])e["return"]()}finally{if(p)throw f;}}return b}throw new TypeError("Invalid attempt to destructure non-iterable instance");}}(),F=function(c){function a(b,d,c){h(this,a);b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"@"+b+": "+d));d=b.stack.split("\n");d.splice(1,2);b.stack=d.join("\n");console&&console.error("Component:",c);b.name="CompositionError";return b}m(a,c);return a}(Error),
dc=function(c){function a(b,d,c){var f=3<arguments.length&&void 0!==arguments[3]?arguments[3]:!1;h(this,a);var p=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"@"+b+": "+d)),e=p.stack.split("\n");e.splice(1,2);p.stack=e.join("\n");console&&console.error("Active module:",c);console&&f&&console.error("Dependency published by module:",f);p.name="DependencyError";return p}m(a,c);return a}(Error),Aa=function(c){function a(b,d,c){var f=3<arguments.length&&void 0!==arguments[3]?arguments[3]:!1;
h(this,a);var p=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"@"+b+": "+d)),e=p.stack.split("\n");e.splice(1,2);p.stack=e.join("\n");console&&console.error("Component:",c);console&&f&&console.error("Active module:",f);p.name="ManagerError";return p}m(a,c);return a}(Error),Ba=function(){throw Error("WhitestormJS Framework requires Three.js r84. https://threejs.org/");};try{c.REVISION||Ba()}catch(e){Ba()}var Ca=function(c){function a(){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,
arguments))}m(a,c);l(a,[{key:"integrateModules",value:function(b){if(this.modules||b){b&&b.modules&&(this.modules=b.modules.slice(0));if(this.modules)for(var a=0,c=this.modules.length;a<c;a++)this.applyModule(this.modules[a],!1);b&&this.applyBridge({onCopy:b})}}},{key:"applyBridge",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},a=this.modules;if(!a)return b;for(var c=0,f=a.length;c<f;c++)for(var e in b)if(b[e]){var g=a[c];g&&g.bridge&&g.bridge[e]&&(b[e]=g.bridge[e].apply(this,
[b[e],g]))}return b}},{key:"applyCommand",value:function(b){var a=this,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:function(b,d){return b.apply(a,[d])},f=this.modules;if(f)for(var e=0,g=f.length;e<g;e++){var h=f[e];b in h&&c(h[b],h)}}},{key:"applyModule",value:function(b){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;if(b){a&&this.modules?this.modules.push(b):a&&(this.modules=[b]);this.manager&&this.manager.active(b);if(b.manager&&this.manager)b.manager(this.manager);
else if(b.manager)throw new Aa("Component","Module requires ModuleManager that is turned off for this component",this,b);b.integrate&&b.integrate.bind(this)(b);return b}}},{key:"disposeModules",value:function(){for(;this.modules.length;)this.disposeModule(this.modules[0])}},{key:"disposeModule",value:function(b){if(b)return this.modules.splice(this.modules.indexOf(b),1),b.dispose&&b.dispose.bind(this)(b),b}},{key:"module",value:function(b){this.applyModule(b);return this}}]);return a}(E),ec="object"==
typeof self&&self&&self.Object===Object&&self,M=("object"==typeof global&&global&&global.Object===Object&&global||ec||Function("return this")()).Symbol,Da=Object.prototype,Yb=Da.hasOwnProperty,Zb=Da.toString,J=M?M.toStringTag:void 0,$b=Object.prototype.toString,va=M?M.toStringTag:void 0,ac=function(c,a){return function(b){return c(a(b))}}(Object.getPrototypeOf,Object),wa=Function.prototype.toString,bc=Object.prototype.hasOwnProperty,cc=wa.call(Object),ya=function(c){var a=c.Symbol;"function"===typeof a?
a.observable?c=a.observable:(c=a("observable"),a.observable=c):c="@@observable";return c}("undefined"!==typeof self?self:"undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof module?module:Function("return this")()),xa={INIT:"@@redux/INIT"},O=function(){function c(a){h(this,c);this.handler=a;this.currentModule=null;this.store=t(function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[{},""],a=arguments[1];b[0][a.key]=a.data;b[1]=a.key;return b});
this.modules={}}l(c,[{key:"active",value:function(a){this.currentModule=a}},{key:"reset",value:function(){this.currentModule=null}},{key:"define",value:function(a){this.modules[a]=this.currentModule}},{key:"use",value:function(a){return this.modules[a]}},{key:"set",value:function(a,b){this.store.dispatch({type:"ADD",key:a,data:b})}},{key:"get",value:function(a){if(!this.store.getState()[0][a])throw new dc("ModuleManager","Module requires '"+a+"' dependency",this.currentModule);return this.store.getState()[0][a]}},
{key:"has",value:function(a){return!!this.store.getState()[0][a]}},{key:"update",value:function(){var a=this,b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.store.subscribe(function(){var d=a.store.getState(),c=za(d,2),d=c[0],c=c[1],f=b[c];f&&f(d[c])})}},{key:"add",value:function(){console.warn(".add() method is deprecated. Use .set() instead");return this.set.apply(this,arguments)}},{key:"require",value:function(a,b){void 0===this.use(a)&&this.handler.applyModule(b())}}]);return c}(),
P,Ea,B=(Ea=P=function(c){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a.defaults,c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:a.instructions;h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));f._wait=[];f.modules=[];f.children=[];f.params=I(D(b,c),d);f.params.manager&&(f.manager=new O(f));f.modules=f.params.modules;f.integrateModules();return f}m(a,c);l(a,[{key:"wait",value:function(b){b&&
this._wait.push(b);return Promise.all(this._wait)}},{key:"defer",value:function(b){var a=this;this.isDeffered?this.wait().then(function(){return b(a)}):b(this)}},{key:"updateParams",value:function(){return this.params=I(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},this.params)}},{key:"clone",value:function(){return(new this.constructor(this.params)).copy(this)}},{key:"copy",value:function(b,a){this.params=q({},b.params);b.native&&(this.native=b.native.clone(b.params));a&&a();this.integrateModules(b);
return this}},{key:"add",value:function(b){var a=this;b.parent=this;return new Promise(function(d,c){a.defer(function(){var f=b.native;f||c();var e=a.applyBridge({onAdd:b}).onAdd,p=function(){a.native.add(f);a.children.push(b);d(b)};e instanceof Promise?e.then(p):p()})})}},{key:"remove",value:function(b){b.parent=null;this.native.remove(b.native)}},{key:"addTo",value:function(b){return b.add(this)}},{key:"isDeffered",get:function(){return 0<this._wait.length}},{key:"manager",get:function(){if(this._manager)return this._manager;
throw new Aa("Component","ModuleManager is not used in this component. 'manager' parameter should be set as 'true'",this);},set:function(b){this._manager=b}},{key:"native",get:function(){return this._native},set:function(b){this._native=b;this._native.component=this;return this._native}}]);return a}(Ca),P.defaults={modules:null,manager:!0},P.instructions={},Ea),Fa,Ga,Q,Ha,n=(Fa=u(r("position","rotation","quaternion","scale"),function(){for(var c=arguments.length,a=Array(c),b=0;b<c;b++)a[b]=arguments[b];
return{map:a,getter:function(b){return function(){return this.native[b]}},setter:function(b){return function(a){this.native[b]=a}},configurable:!0,enumerable:!0}}("material","geometry")),Fa(Ga=(Ha=Q=function(e){function a(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a.defaults,c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:a.instructions;h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,d,c));if(f.params.build){var e=f.build(f.params);if(!e)throw new F("MeshComponent",
".build() method should return a THREE.Object3D or a Promise resolved with THREE.Object3D.",f);e instanceof Promise?(f.wait(e),f.wait(new Promise(function(b){e.then(function(a){f.native=a;f.wrap().then(b)})}))):(f.native=e,f.wait(f.wrap()))}f.applyCommand("postIntegrate");return f}m(a,e);l(a,null,[{key:"custom",value:function(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:c.Mesh;return function(a){function c(){h(this,c);return k(this,(c.__proto__||Object.getPrototypeOf(c)).apply(this,
arguments))}m(c,a);l(c,[{key:"build",value:function(){var a=this.applyBridge({geometry:b,material:(0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params).material});return this.applyBridge({mesh:new d(a.geometry,a.material)}).mesh}}]);return c}(a)}},{key:"create",value:function(b,d,c){return new (a.custom(b,c))(d)}},{key:"from",value:function(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};d.build=!1;d=new a(d);d.native=b;d.wrap();return d}}]);l(a,[{key:"build",value:function(){throw new F("MeshComponent",
"Instance should have it's own .build().",this);}},{key:"wrap",value:function(){var b=this;return new Promise(function(a){var d=b.params,c=d.position,e=d.rotation,g=d.scale,d=d.shadow;b.position.set(c.x,c.y,c.z);b.rotation.set(e.x,e.y,e.z);b.scale.set(g.x,g.y,g.z);b.native.castShadow=d.cast;b.native.receiveShadow=d.receive;b.applyBridge({onWrap:1});a(b)})}},{key:"copy",value:function(b){var d=this;return v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"copy",this).call(this,b,function(){d.position.copy(b.position);
d.rotation.copy(b.rotation);d.quaternion.copy(b.quaternion)})}},{key:"clone",value:function(b,a){var d=(new this.constructor({build:!1})).copy(this);b&&(d.geometry=d.geometry.clone());a&&(d.material=d.material.clone());return d}}]);return a}(B),Q.defaults=q({},B.defaults,{build:!0,geometry:{},material:!1,shadow:{cast:!0,receive:!0},position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0},scale:{x:1,y:1,z:1}}),Q.instructions={position:["x","y","z"],rotation:["x","y","z"],scale:["x","y","z"]},Ha))||Ga),Ia,Ja,
R,Ka,y=(Ia=u(r("position","rotation","quaternion","target")),Ia(Ja=(Ka=R=function(c){function a(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a.defaults,c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:a.instructions;h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,d,c));if(f.params.build){d=f.build(f.params);if(!d)throw new F("LightComponent",".build() method should return a THREE.Object3D or a Promise resolved with THREE.Object3D.",f);d instanceof
Promise?d.then(function(b){f.native=b}):f.native=d;f.wait(f.wrap())}f.applyCommand("postIntegrate");return f}m(a,c);l(a,[{key:"build",value:function(){throw new F("MeshComponent","Instance should have it's own .build().",this);}},{key:"wrap",value:function(){var b=this;return new Promise(function(a){b.defer(function(){var d=b.params,c=d.position,d=d.rotation;b.position.set(c.x,c.y,c.z);b.rotation.set(d.x,d.y,d.z);b.applyBridge({onWrap:1});a(b)})})}},{key:"wrapShadow",value:function(){var b=this.native,
a=this.params.shadow;b.castShadow=a.cast;b.shadow.mapSize.width=a.mapSize.width;b.shadow.mapSize.height=a.mapSize.height;b.shadow.bias=a.bias;b.shadow.radius=a.radius;b=b.shadow.camera;a=a.camera;b.near=a.near;b.far=a.far;b.fov=a.fov;b.left=a.left;b.right=a.right;b.top=a.top;b.bottom=a.bottom}},{key:"copy",value:function(b){var d=this;return v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"copy",this).call(this,b,function(){d.target&&d.target.copy(b.target());d.position.copy(b.position);
d.rotation.copy(b.rotation);d.quaternion.copy(b.quaternion)})}},{key:"clone",value:function(){return(new this.constructor({build:!1})).copy(this)}}]);return a}(B),R.defaults=q({},B.defaults,{build:!0,shadow:{cast:!0,bias:0,radius:1,mapSize:{width:1024,height:1024},camera:{near:!0,far:400,fov:90,top:200,bottom:-200,left:-200,right:200}},position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0}}),R.instructions={position:["x","y","z"],rotation:["x","y","z"]},Ka))||Ja),La,Ma,S,Na,C=(La=u(r("position","rotation",
"quaternion","target")),La(Ma=(Na=S=function(c){function a(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a.defaults,c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:a.instructions;h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,d,c));if(f.params.build){d=f.build(f.params);if(!d)throw new F("CameraComponent",".build() method should return a THREE.Object3D or a Promise resolved with THREE.Object3D.",f);d instanceof Promise?d.then(function(b){f.native=
b}):f.native=d;f.wait(f.wrap())}f.applyCommand("postIntegrate");return f}m(a,c);l(a,[{key:"build",value:function(){throw new F("CameraComponent","Instance should have it's own .build().",this);}},{key:"wrap",value:function(){var b=this;return new Promise(function(a){b.defer(function(){b.position.set(b.params.position.x,b.params.position.y,b.params.position.z);b.rotation.set(b.params.rotation.x,b.params.rotation.y,b.params.rotation.z);b.applyBridge({onWrap:1});a(b)})})}},{key:"copy",value:function(b){var d=
this;return v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"copy",this).call(this,b,function(){d.target&&d.target.copy(b.target());d.position.copy(b.position);d.rotation.copy(b.rotation);d.quaternion.copy(b.quaternion)})}},{key:"clone",value:function(){return(new this.constructor({build:!1})).copy(this)}}]);return a}(B),S.defaults=q({},B.defaults,{build:!0,position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0}}),S.instructions={position:["x","y","z"],rotation:["x","y","z"],scale:["x","y","z"]},
Na))||Ma),A="undefined"===typeof window?global:window,fc=function(c){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];h(this,a);console.log("WHS.App 2.1.7");var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));d.enabled=!0;d.loops=[];d.manager=new O(d);d.modules=b;d.integrateModules();return d}m(a,c);l(a,[{key:"start",value:function(){function b(){a(b);if(f)for(var d=0,e=c.length;d<e;d++){var p=c[d];p.enabled&&p.execute(p.clock)}}var a=function(){return A.requestAnimationFrame||
A.webkitRequestAnimationFrame||A.mozRequestAnimationFrame||function(b){A.setTimeout(b,1E3/60)}}(),c=this.loops,f=this.enabled;this.enabled=!0;b()}},{key:"stop",value:function(){this.enabled=!1}},{key:"addLoop",value:function(b){var a=this;return new Promise(function(d){a.loops.push(b);d(b)})}},{key:"removeLoop",value:function(b){var a=this;return new Promise(function(d){var c=a.loops.indexOf(b);-1!==c&&a.loops.splice(c,1);d(b)})}},{key:"get",value:function(b){return this.manager.get(b)}},{key:"use",
value:function(b){return this.manager.use(b)}}]);return a}(Ca),G=function(){function e(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;h(this,e);this.func=a;this.clock=b?new c.Clock:null;this.enabled=!1}l(e,[{key:"start",value:function(a){this.enabled||(a&&a.addLoop(this),this.clock&&this.clock.start(),this.enabled=!0)}},{key:"stop",value:function(a){this.enabled&&(this.clock&&this.clock.stop(),this.enabled=!1,a&&a.removeLoop(this))}},{key:"execute",value:function(){return this.func(this.clock)}}]);
return e}(),Oa,Pa,gc=(Pa=Oa=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new c.AmbientLight(b.color,b.intensity)}).light}}]);return a}(y),Oa.defaults=q({},y.defaults,{color:16777215,intensity:1}),Pa),Qa,Ra,hc=(Ra=Qa=function(e){function a(){var b=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults));b.wrapShadow();return b}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new c.DirectionalLight(b.color,b.intensity)}).light}}]);return a}(y),Qa.defaults=q({},y.defaults,{color:16777215,intensity:1}),Ra),Sa,Ta,ic=(Ta=Sa=function(e){function a(){var b=0<arguments.length&&
void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new c.HemisphereLight(b.skyColor,b.groundColor,b.intensity)}).light}}]);return a}(y),Sa.defaults=q({},y.defaults,{skyColor:16777215,groundColor:16777215,intensity:1}),Ta),Ua,Va,jc=(Va=Ua=function(e){function a(){var b=0<arguments.length&&
void 0!==arguments[0]?arguments[0]:{};h(this,a);b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults));b.wrapShadow();return b}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new c.PointLight(b.color,b.intensity,b.distance,b.decay)}).light}}]);return a}(y),Ua.defaults=q({},y.defaults,{color:16777215,intensity:1,distance:100,decay:1}),Va),Wa,Xa,kc=(Xa=Wa=function(e){function a(){var b=0<arguments.length&&
void 0!==arguments[0]?arguments[0]:{};h(this,a);b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults));b.wrapShadow();return b}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new c.SpotLight(b.color,b.intensity,b.distance,b.angle,b.exponent,b.decay)}).light}}]);return a}(y),Wa.defaults=q({},y.defaults,{color:16777215,intensity:1,distance:100,angle:Math.PI/3,exponent:0,decay:1}),Xa),Ya,Za,lc=
(Za=Ya=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({light:new c.RectAreaLight(b.color,b.intensity,b.width,b.height)}).light}}]);return a}(y),Ya.defaults=q({},y.defaults,{color:16777215,intensity:1,width:10,height:10}),Za),$a,ab,mc=(ab=$a=
function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({camera:new c.CubeCamera(b.near,b.far,b.cubeResolution)}).camera}}]);return a}(C),$a.defaults=q({},C.defaults,{near:1,far:1E3,cubeResolution:128}),ab),bb,cb,nc=(cb=bb=function(e){function a(){var b=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({camera:new c.OrthographicCamera(b.left,b.right,b.top,b.bottom,b.near,b.far)}).camera}}]);return a}(C),bb.defaults=q({},C.defaults,{near:1,far:1E3,left:A.innerWidth/-2,right:A.innerWidth/2,top:A.innerHeight/2,bottom:A.innerHeight/
-2}),cb),db,eb,fb=(eb=db=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return this.applyBridge({camera:new c.PerspectiveCamera(b.fov,b.aspect,b.near,b.far)}).camera}}]);return a}(C),db.defaults=q({},C.defaults,{near:1,far:1E3,fov:75,aspect:A.innerWidth/A.innerHeight}),
eb),T,gb,oc=(gb=T=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.BoxBufferGeometry:c.BoxGeometry)(b.geometry.width,b.geometry.height,b.geometry.depth,b.geometry.widthSegments,b.geometry.heightSegments,b.geometry.depthSegments)}}]);return a}(n),T.defaults=q({},n.defaults,{geometry:{width:1,height:1,depth:1,widthSegments:1,heightSegments:1,depthSegments:1}}),T.instructions=q({},n.instructions,{geometry:"width height depth widthSegments heightSegments depthSegements".split(" ")}),gb),
Z,hb,pc=(hb=Z=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.CircleBufferGeometry:c.CircleGeometry)(b.geometry.radius,b.geometry.segments,b.geometry.thetaStart,b.geometry.thetaLength)}}]);return a}(n),Z.defaults=q({},n.defaults,{geometry:{radius:50,segments:8,thetaStart:0,thetaLength:2*Math.PI}}),Z.instructions=q({},n.instructions,{geometry:["radius","segments","thetaStart","thetaLength"]}),hb),aa,ib,qc=(ib=aa=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?
arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",
value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.ConeBufferGeometry:c.ConeGeometry)(b.geometry.radius,b.geometry.height,b.geometry.radiusSegments,b.geometry.heightSegments,b.geometry.openEnded,b.geometry.thetaStart,b.geometry.thetaLength)}}]);return a}(n),aa.defaults=q({},n.defaults,{geometry:{radius:20,height:100,radiusSegments:32,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:2*Math.PI}}),aa.instructions=q({},n.instructions,{geometry:"radius height radiusSegments heightSegments openEnded thetaStart thetaLength".split(" ")}),
ib),ba,jb,rc=(jb=ba=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});
return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.CylinderBufferGeometry:c.CylinderGeometry)(b.geometry.radiusTop,b.geometry.radiusBottom,b.geometry.height,b.geometry.radiusSegments,b.geometry.heightSegments,b.geometry.openEnded,b.geometry.thetaStart,b.geometry.thetaLength)}}]);return a}(n),ba.defaults=q({},n.defaults,{geometry:{radiusTop:0,radiusBottom:1,
height:1,radiusSegments:32,heightSegments:1,openEnded:!1,thetaStart:0,thetaLength:2*Math.PI}}),ba.instructions=q({},n.instructions,{geometry:"radiusTop radiusBottom height radiusSegments heightSegments openEnded thetaStart thetaLength".split(" ")}),jb),ca,kb,sc=(kb=ca=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||
Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.DodecahedronBufferGeometry:c.DodecahedronGeometry)(b.geometry.radius,
b.geometry.detail)}}]);return a}(n),ca.defaults=q({},n.defaults,{geometry:{radius:1,detail:0}}),ca.instructions=q({},n.instructions,{geometry:["radius","detail"]}),kb),da,lb,tc=(lb=da=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",
value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},a=new c.ExtrudeGeometry(b.geometry.shapes,b.geometry.options);return b.buffer?(new c.BufferGeometry).fromGeometry(a):a}}]);return a}(n),da.defaults=q({},n.defaults,
{geometry:{shapes:[],options:{}}}),da.instructions=q({},n.instructions,{geometry:["shapes","options"]}),lb),ea,mb,uc=(mb=ea=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==
arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.IcosahedronBufferGeometry:c.IcosahedronGeometry)(b.geometry.radius,b.geometry.detail)}}]);return a}(n),ea.defaults=q({},n.defaults,{geometry:{radius:1,detail:0}}),ea.instructions=q({},n.instructions,
{geometry:["radius","detail"]}),mb),fa,nb,vc=(nb=fa=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),
material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.LatheBufferGeometry:c.LatheGeometry)(b.geometry.points)}}]);return a}(n),fa.defaults=q({},n.defaults,{geometry:{points:[]}}),fa.instructions=q({},n.instructions,{geometry:["points"]}),nb),ga,ob,wc=(ob=ga=function(e){function a(b){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,
b,a.defaults,a.instructions))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Line(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},a=b.buffer?new c.BufferGeometry:new c.Geometry;if(b.buffer){for(var b=b.curve.getPoints(b.points),e=new Float32Array(3*
b.length),f=0,g=b.length;f<g;f++){var h=3*f;e[h]=b[f].x;e[h+1]=b[f].y;e[h+2]=b[f].z}a.addAttribute("position",new c.BufferAttribute(e,3))}else a.vertices=b.curve.getPoints(b.points);return a}}]);return a}(n),ga.defaults=q({},n.defaults,{curve:null,points:50}),ga.instructions=q({},n.instructions,{geometry:["curve","points"]}),ob),ha,pb,qb=(pb=ha=function(c){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,
b,a.defaults,a.instructions,!1))}m(a,c);l(a,null,[{key:"filter",value:function(b,a){return function f(b){b.children.forEach(function(d,c){d.children&&f(d);a(d)||b.children.splice(c,1)});return b}(b)}}]);l(a,[{key:"build",value:function(){var b=this,a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new Promise(function(d){a.texturePath&&a.loader.setTexturePath(a.texturePath);a.loader.load(a.url,function(){for(var c=arguments.length,e=Array(c),p=0;p<c;p++)e[p]=arguments[p];a.onLoad.apply(a,
e);c=a.parser.apply(b,e);a.material&&(c.material=a.material);d(c)},a.onProgress,a.onError)})}}]);return a}(n),ha.defaults=q({},n.defaults,{url:"",loader:new c.JSONLoader,onLoad:function(){},onProgress:function(){},onError:function(){},texturePath:null,useCustomMaterial:!1,parser:function(e,a){e=this.applyBridge({geom:e,mat:a});return this.applyBridge({mesh:new c.Mesh(e.geom,e.mat)}).mesh}}),ha.instructions=q({},n.instructions),pb),rb,sb,xc=(sb=rb=function(e){function a(){var b=0<arguments.length&&
void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},
{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.OctahedronBufferGeometry:c.OctahedronGeometry)(b.geometry.radius,b.geometry.detail)}}]);return a}(n),rb.defaults=q({},n.defaults,{geometry:{radius:1,detail:0}}),sb),tb,ub,yc=(ub=tb=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions))}m(a,
e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.ParametricBufferGeometry:c.ParametricGeometry)(b.geometry.func,b.geometry.slices,b.geometry.stacks)}}]);return a}(n),tb.defaults=
q({},n.defaults,{geometry:{func:function(e,a){return new c.Vector3(e,a,0)},slices:10,stacks:10}}),ub),ia,vb,zc=(vb=ia=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?
arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.PlaneBufferGeometry:c.PlaneGeometry)(b.geometry.width,b.geometry.height,b.geometry.wSegments,b.geometry.hSegments)}}]);return a}(n),ia.defaults=q({},n.defaults,{geometry:{width:10,height:10,wSegments:1,hSegments:1}}),
ia.instructions=q({},n.instructions,{geometry:["width","height","wSegments","hSegments"]}),vb),K,wb,xb=[-1,-1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1,1,1,-1,1,1,1,1,-1,1,1],yb=[2,1,0,0,3,2,0,4,7,7,3,0,0,1,5,5,4,0,1,2,6,6,5,1,2,3,7,7,6,2,4,5,6,6,7,4],Ac=(wb=K=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),
"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.PolyhedronBufferGeometry:c.PolyhedronGeometry)(b.geometry.verticesOfCube,b.geometry.indicesOfFaces,
b.geometry.radius,b.geometry.detail)}}]);return a}(n),K.verticesOfCube=xb,K.indicesOfFaces=yb,K.defaults=q({},n.defaults,{geometry:{verticesOfCube:xb,indicesOfFaces:yb,radius:6,detail:2}}),K.instructions=q({},n.instructions,{geometry:["verticesOfCube","indicesOfFaces","radius","detail"]}),wb),ja,zb,Bc=(zb=ja=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));
b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.RingBufferGeometry:
c.RingGeometry)(b.geometry.innerRadius,b.geometry.outerRadius,b.geometry.thetaSegments,b.geometry.phiSegments,b.geometry.thetaStart,b.geometry.thetaLength)}}]);return a}(n),ja.defaults=q({},n.defaults,{geometry:{innerRadius:0,outerRadius:50,thetaSegments:8,phiSegments:8,thetaStart:0,thetaLength:2*Math.PI}}),ja.instructions=q({},n.defaults,{geometry:"innerRadius outerRadius thetaSegments phiSegments thetaStart thetaLength".split(" ")}),zb),ka,Ab,Cc=(Ab=ka=function(e){function a(){var b=0<arguments.length&&
void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},
{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.ShapeBufferGeometry:c.ShapeGeometry)(b.geometry.shapes)}}]);return a}(n),ka.defaults=q({},n.defaults,{geometry:{shapes:[]}}),ka.instructions=q({},n.instructions,{geometry:["shapes"]}),Ab),la,Bb,Dc=(Bb=la=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,
a.instructions))}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.SphereBufferGeometry:c.SphereGeometry)(b.geometry.radius,b.geometry.widthSegments,b.geometry.heightSegments)}}]);
return a}(n),la.defaults=q({},n.defaults,{geometry:{radius:1,widthSegments:8,heightSegments:6}}),la.instructions=q({},n.instructions,{geometry:["radius","widthSegments","heightSegments"]}),Bb),ma,Cb,Ec=(Cb=ma=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));
return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.TetrahedronBufferGeometry:c.TetrahedronGeometry)(b.geometry.radius,b.geometry.detail)}}]);return a}(n),ma.defaults=
q({},n.defaults,{geometry:{radius:1,detail:0}}),ma.instructions=q({},n.instructions,{geometry:["radius","detail"]}),Cb),L,Db,Fc=(Db=L=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions))}m(a,e);l(a,null,[{key:"load",value:function(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:a.loader;return new Promise(function(a){d.load(b,a)})}}]);l(a,[{key:"build",
value:function(){var b=this,d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,e=new Promise(function(a){(d.font instanceof Promise?d.font:Promise.resolve(d.font)).then(function(f){f=b.applyBridge({geometry:new c.TextGeometry(d.text,Object.assign(d.geometry,{font:f})),material:d.material});a(b.applyBridge({mesh:new c.Mesh(f.geometry,f.material)}).mesh)})});v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wait",this).call(this,e);return e}}]);return a}(n),L.defaults=q({},
n.defaults,{text:"Hello World!",font:null,geometry:{size:12,height:50,curveSegments:12,font:new c.Font,bevelEnabled:!1,bevelThickness:10,bevelSize:8}}),L.instructions=q({},n.instructions),L.loader=new c.FontLoader,Db),na,Eb,Gc=(Eb=na=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),
"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new c.TorusGeometry(b.geometry.radius,b.geometry.tube,b.geometry.radialSegments,b.geometry.tubularSegments,
b.geometry.arc)}}]);return a}(n),na.defaults=q({},n.defaults,{geometry:{radius:100,tube:40,radialSegments:8,tubularSegments:6,arc:2*Math.PI}}),na.instructions=q({},n.instructions,{geometry:["radius","tube","radialSegments","tubularSegments","arc"]}),Eb),oa,Fb,Hc=(Fb=oa=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||
Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return new (b.buffer?c.TorusKnotBufferGeometry:c.TorusKnotGeometry)(b.geometry.radius,
b.geometry.tube,b.geometry.radialSegments,b.geometry.tubularSegments,b.geometry.p,b.geometry.q)}}]);return a}(n),oa.defaults=q({},n.defaults,{geometry:{radius:100,tube:40,radialSegments:64,tubularSegments:8,p:2,q:3}}),oa.instructions=q({},n.instructions,{geometry:"radius tube radialSegments tubularSegments p q".split(" ")}),Fb),pa,Gb,Ic=(Gb=pa=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,
b,a.defaults,a.instructions));b.build&&(d.build(b),v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"wrap",d).call(d));return d}m(a,e);l(a,[{key:"build",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.params,b=this.applyBridge({geometry:this.buildGeometry(b),material:b.material});return this.applyBridge({mesh:new c.Mesh(b.geometry,b.material)}).mesh}},{key:"buildGeometry",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};
return new (b.buffer?c.TubeBufferGeometry:c.TubeGeometry)(b.geometry.path,b.geometry.segments,b.geometry.radius,b.geometry.radiusSegments,b.geometry.closed)}}]);return a}(n),pa.defaults=q({},n.defaults,{geometry:{path:new c.LineCurve3(new c.Vector3(0,0,0),new c.Vector3(0,0,1)),segments:20,radius:2,radiusSegments:8,closed:!1}}),pa.instructions=q({},n.instructions,{geometry:["path","segments","radius","radiusSegments","closed"]}),Gb),Jc=function(e){function a(){h(this,a);for(var b=k(this,(a.__proto__||
Object.getPrototypeOf(a)).call(this,{})),d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];for(d=0;d<e.length;d++)f=e[d],f instanceof B?f.addTo(b):f instanceof c.Object3D&&b.native.add(f);return b}m(a,e);l(a,[{key:"build",value:function(){return new c.Object3D}}]);return a}(n),Kc=function(){function c(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:document.body;h(this,c);a.container?(console.warn("ElementModule now accepts only argument which is a DOM object, not a params object."),
this.container=a.container):this.container=a;this.createElement()}l(c,[{key:"createElement",value:function(){this.element=window.document.createElement("div");this.element.className="whs-app";this.element.style.width="inherit";this.element.style.height="inherit";this.element.style.position="relative"}},{key:"manager",value:function(a){a.set("element",this.element);a.set("container",this.container)}},{key:"integrate",value:function(a){a.container.appendChild(a.element)}}]);return c}(),Hb,Ib,Jb,Lc=
(Ib=Hb=function(){function e(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},b=arguments[1];h(this,e);Jb.call(this);var a=this.params=Object.assign({width:window.innerWidth,height:window.innerHeight,resolution:new c.Vector2(1,1),pixelRatio:window.devicePixelRatio,bgColor:0,bgOpacity:1,renderer:{},fix:function(){}},a),d=a.bgColor,p=a.bgOpacity,f=a.pixelRatio,g=a.width,k=a.height,l=a.resolution,m=a.fix;this.renderer=new c.WebGLRenderer(a.renderer);this.effects=[];this.renderer.setClearColor(d,
p);f&&this.renderer.setPixelRatio(f);this.setSize(Number(g*l.x).toFixed(),Number(k*l.y).toFixed());for(var ua in b)b[ua]&&this.applyAdditional(ua);m(this.renderer)}l(e,[{key:"applyAdditional",value:function(a){e.additional[a].apply(this,[this.renderer])}},{key:"integrateRenderer",value:function(a,b,d){var c=this;this.scene=b;this.camera=d;this.attachToCanvas(a);return new G(function(){return c.renderer.render(c.scene,c.camera)})}},{key:"effect",value:function(a){var b=this,d=1<arguments.length&&void 0!==
arguments[1]?arguments[1]:function(){a.render(b.scene,b.camera)};this.renderLoop.stop();var c=this.renderer.getSize();a.setSize(c.width,c.height);d=new G(d);this.effects.push(d);this.enabled&&d.start(this.app);return this}},{key:"setSize",value:function(a,b){this.renderer&&this.renderer.setSize(a,b)}},{key:"attachToCanvas",value:function(a){var b=this.renderer.domElement;a.appendChild(b);b.style.width="100%";b.style.height="100%"}},{key:"stop",value:function(){this.enabled=!1;this.renderLoop.stop();
this.effects.forEach(function(a){return a.stop()})}},{key:"play",value:function(){this.enabled=!0;this.renderLoop.start();this.effects.forEach(function(a){return a.start()})}},{key:"manager",value:function(a){var b=this;a.define("rendering");a.set("renderer",this.renderer);this.app=a.handler;this.renderLoop=this.integrateRenderer(a.get("element"),a.get("scene"),a.get("camera").native);a.update({element:function(a){b.attachToCanvas(a)},scene:function(a){b.scene=a},camera:function(a){b.camera=a.native}})}},
{key:"integrate",value:function(a){var b=this;a.renderLoop.start(this);a.effects.forEach(function(a){return a.start(b)})}},{key:"dispose",value:function(){this.stop();this.renderer.forceContextLoss()}}]);return e}(),Hb.additional={shadow:function(c){c.shadowMap.enabled=!0}},Jb=function(){this.enabled=!0},Ib),Mc=function(){function e(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:!1;h(this,e);this.scene=a?null:new c.Scene}l(e,[{key:"manager",value:function(a){a.set("scene",this.scene)}},
{key:"integrate",value:function(a){this.children=[];this.add=function(b){var d=this;b.parent=this;return new Promise(function(c,f){b.defer(function(){var e=b.native;e||f();var p=d.applyBridge({onAdd:b}).onAdd,g=function(){a.scene.add(e);d.children.push(b);c(b)};p instanceof Promise?p.then(g):g()})})};this.remove=function(b){b.parent=null;a.scene.remove(b.native)};this.setScene=function(b){a.scene=b;this.manager.set("scene",b)}}}]);return e}(),Nc=function(){function c(){var a=0<arguments.length&&void 0!==
arguments[0]?arguments[0]:{};h(this,c);this.params=Object.assign({auto:!0},a);this.callbacks=[this.setSize.bind(this)]}l(c,[{key:"setSize",value:function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;this.camera.native.aspect=a/b;this.camera.native.updateProjectionMatrix();this.rendering&&this.rendering.setSize(a,b)}},{key:"trigger",value:function(){var a=this.container,b=a.offsetHeight,d=this.resolution,c=Number(a.offsetWidth*
d.x).toFixed(),f=Number(b*d.y).toFixed();this.callbacks.forEach(function(b){b(c,f)})}},{key:"addAutoresize",value:function(){this.container=this.getContainer();this.resolution=this.getResolution();this.params.auto&&window.addEventListener("resize",this.trigger.bind(this))}},{key:"addCallback",value:function(a){this.callbacks.push(a)}},{key:"manager",value:function(a){var b=this;a.define("resize");this.rendering=a.get("renderer");this.camera=a.get("camera");this.getResolution=function(){return a.use("rendering").params.resolution};
this.getContainer=function(){return a.get("container")};a.update({container:function(a){b.container=a}});this.addAutoresize()}}]);return c}(),Oc=function(e){function a(){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"AdaptiveLuminosityMaterial",defines:{MIP_LEVEL_1X1:"0.0"},uniforms:{tPreviousLum:new c.Uniform(null),tCurrentLum:new c.Uniform(null),minLuminance:new c.Uniform(.01),delta:new c.Uniform(0),tau:new c.Uniform(1)},fragmentShader:"uniform sampler2D tPreviousLum;\r\nuniform sampler2D tCurrentLum;\r\nuniform float minLuminance;\r\nuniform float delta;\r\nuniform float tau;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tfloat previousLum = texture2D(tPreviousLum, vUv, MIP_LEVEL_1X1).r;\r\n\tfloat currentLum = texture2D(tCurrentLum, vUv, MIP_LEVEL_1X1).r;\r\n\r\n\tpreviousLum = max(minLuminance, previousLum);\r\n\tcurrentLum = max(minLuminance, currentLum);\r\n\r\n\t// Adapt the luminance using Pattanaik's technique.\r\n\tfloat adaptedLum = previousLum + (currentLum - previousLum) * (1.0 - exp(-delta * tau));\r\n\r\n\tgl_FragColor.r = adaptedLum;\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),Pc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};h(this,a);void 0===d.focus&&(d.focus=1);void 0===d.aperture&&(d.aperture=.025);void 0===d.maxBlur&&(d.maxBlur=1);d=k(this,
(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"BokehMaterial",uniforms:{cameraNear:new c.Uniform(.1),cameraFar:new c.Uniform(2E3),aspect:new c.Uniform(1),tDiffuse:new c.Uniform(null),tDepth:new c.Uniform(null),focus:new c.Uniform(d.focus),aperture:new c.Uniform(d.aperture),maxBlur:new c.Uniform(d.maxBlur)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform sampler2D tDepth;\r\n\r\nuniform float focus;\r\nuniform float aspect;\r\nuniform float aperture;\r\nuniform float maxBlur;\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifndef USE_LOGDEPTHBUF\r\n\r\n\t#include <packing>\r\n\r\n\tuniform float cameraNear;\r\n\tuniform float cameraFar;\r\n\r\n\tfloat readDepth(sampler2D depthSampler, vec2 coord) {\r\n\r\n\t\tfloat fragCoordZ = texture2D(depthSampler, coord).x;\r\n\t\tfloat viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\r\n\r\n\t\treturn viewZToOrthographicDepth(viewZ, cameraNear, cameraFar);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvoid main() {\r\n\r\n\tvec2 aspectCorrection = vec2(1.0, aspect);\r\n\r\n\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\tfloat depth = texture2D(tDepth, vUv).x;\r\n\r\n\t#else\r\n\r\n\t\tfloat depth = readDepth(tDepth, vUv);\r\n\r\n\t#endif\r\n\r\n\tfloat factor = depth - focus;\r\n\r\n\tvec2 dofBlur = vec2(clamp(factor * aperture, -maxBlur, maxBlur));\r\n\r\n\tvec2 dofblur9 = dofBlur * 0.9;\r\n\tvec2 dofblur7 = dofBlur * 0.7;\r\n\tvec2 dofblur4 = dofBlur * 0.4;\r\n\r\n\tvec4 color = vec4(0.0);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, 0.4 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, 0.37) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, 0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, 0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.40, 0.0 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, -0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, -0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, -0.37) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, -0.4 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, 0.37) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, 0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, 0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.4, 0.0 ) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, -0.15) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, -0.29) * aspectCorrection) * dofBlur);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, -0.37) * aspectCorrection) * dofBlur);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, 0.37) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, 0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, -0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, -0.37) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.15, 0.37) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.37, 0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.37, -0.15) * aspectCorrection) * dofblur9);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.15, -0.37) * aspectCorrection) * dofblur9);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, 0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.40, 0.0 ) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, -0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, -0.4 ) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, 0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.4, 0.0 ) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, -0.29) * aspectCorrection) * dofblur7);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, 0.4 ) * aspectCorrection) * dofblur7);\r\n\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, 0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.4, 0.0 ) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.29, -0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, -0.4 ) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, 0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.4, 0.0 ) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2(-0.29, -0.29) * aspectCorrection) * dofblur4);\r\n\tcolor += texture2D(tDiffuse, vUv + (vec2( 0.0, 0.4 ) * aspectCorrection) * dofblur4);\r\n\r\n\tgl_FragColor = color / 41.0;\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}));null!==b&&d.adoptCameraSettings(b);return d}m(a,e);l(a,[{key:"adoptCameraSettings",value:function(b){this.uniforms.cameraNear.value=b.near;this.uniforms.cameraFar.value=b.far;this.uniforms.aspect.value=b.aspect}}]);return a}(c.ShaderMaterial),Qc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?
arguments[0]:null,d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};h(this,a);void 0===d.rings&&(d.rings=3);void 0===d.samples&&(d.samples=2);void 0===d.showFocus&&(d.showFocus=!1);void 0===d.showFocus&&(d.showFocus=!1);void 0===d.manualDoF&&(d.manualDoF=!1);void 0===d.vignette&&(d.vignette=!1);void 0===d.pentagon&&(d.pentagon=!1);void 0===d.shaderFocus&&(d.shaderFocus=!0);void 0===d.noise&&(d.noise=!0);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"Bokeh2Material",
defines:{RINGS_INT:d.rings.toFixed(0),RINGS_FLOAT:d.rings.toFixed(1),SAMPLES_INT:d.samples.toFixed(0),SAMPLES_FLOAT:d.samples.toFixed(1)},uniforms:{tDiffuse:new c.Uniform(null),tDepth:new c.Uniform(null),texelSize:new c.Uniform(new c.Vector2),halfTexelSize:new c.Uniform(new c.Vector2),cameraNear:new c.Uniform(.1),cameraFar:new c.Uniform(2E3),focalLength:new c.Uniform(24),focalStop:new c.Uniform(.9),maxBlur:new c.Uniform(1),luminanceThreshold:new c.Uniform(.5),luminanceGain:new c.Uniform(2),bias:new c.Uniform(.5),
fringe:new c.Uniform(.7),ditherStrength:new c.Uniform(1E-4),focusCoords:new c.Uniform(new c.Vector2(.5,.5)),focalDepth:new c.Uniform(1)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform sampler2D tDepth;\r\n\r\nuniform vec2 texelSize;\r\nuniform vec2 halfTexelSize;\r\n\r\nuniform float cameraNear;\r\nuniform float cameraFar;\r\n\r\nuniform float focalLength;\r\nuniform float focalStop;\r\n\r\nuniform float maxBlur;\r\nuniform float luminanceThreshold;\r\nuniform float luminanceGain;\r\nuniform float bias;\r\nuniform float fringe;\r\nuniform float ditherStrength;\r\n\r\n#ifdef SHADER_FOCUS\r\n\r\n\tuniform vec2 focusCoords;\r\n\r\n#else\r\n\r\n\tuniform float focalDepth;\r\n\r\n#endif\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifndef USE_LOGDEPTHBUF\r\n\r\n\t#include <packing>\r\n\r\n\tfloat readDepth(sampler2D depthSampler, vec2 coord) {\r\n\r\n\t\tfloat fragCoordZ = texture2D(depthSampler, coord).x;\r\n\t\tfloat viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\r\n\r\n\t\treturn viewZToOrthographicDepth(viewZ, cameraNear, cameraFar);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#ifdef PENTAGON\r\n\r\n\tfloat penta(vec2 coords) {\r\n\r\n\t\tconst vec4 HS0 = vec4( 1.0, 0.0, 0.0, 1.0);\r\n\t\tconst vec4 HS1 = vec4( 0.309016994, 0.951056516, 0.0, 1.0);\r\n\t\tconst vec4 HS2 = vec4(-0.809016994, 0.587785252, 0.0, 1.0);\r\n\t\tconst vec4 HS3 = vec4(-0.809016994, -0.587785252, 0.0, 1.0);\r\n\t\tconst vec4 HS4 = vec4( 0.309016994, -0.951056516, 0.0, 1.0);\r\n\t\tconst vec4 HS5 = vec4( 0.0, 0.0, 1.0, 1.0);\r\n\r\n\t\tconst vec4 ONE = vec4(1.0);\r\n\r\n\t\tconst float P_FEATHER = 0.4;\r\n\t\tconst float N_FEATHER = -P_FEATHER;\r\n\r\n\t\tfloat inOrOut = -4.0;\r\n\r\n\t\tvec4 P = vec4(coords, vec2(RINGS_FLOAT - 1.3));\r\n\r\n\t\tvec4 dist = vec4(\r\n\t\t\tdot(P, HS0),\r\n\t\t\tdot(P, HS1),\r\n\t\t\tdot(P, HS2),\r\n\t\t\tdot(P, HS3)\r\n\t\t);\r\n\r\n\t\tdist = smoothstep(N_FEATHER, P_FEATHER, dist);\r\n\r\n\t\tinOrOut += dot(dist, ONE);\r\n\r\n\t\tdist.x = dot(P, HS4);\r\n\t\tdist.y = HS5.w - abs(P.z);\r\n\r\n\t\tdist = smoothstep(N_FEATHER, P_FEATHER, dist);\r\n\t\tinOrOut += dist.x;\r\n\r\n\t\treturn clamp(inOrOut, 0.0, 1.0);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#ifdef SHOW_FOCUS\r\n\r\n\tvec3 debugFocus(vec3 c, float blur, float depth) {\r\n\r\n\t\tfloat edge = 0.002 * depth;\r\n\t\tfloat m = clamp(smoothstep(0.0, edge, blur), 0.0, 1.0);\r\n\t\tfloat e = clamp(smoothstep(1.0 - edge, 1.0, blur), 0.0, 1.0);\r\n\r\n\t\tc = mix(c, vec3(1.0, 0.5, 0.0), (1.0 - m) * 0.6);\r\n\t\tc = mix(c, vec3(0.0, 0.5, 1.0), ((1.0 - e) - (1.0 - m)) * 0.2);\r\n\r\n\t\treturn c;\r\n\r\n\t}\r\n\r\n#endif\r\n\r\n#ifdef VIGNETTE\r\n\r\n\tfloat vignette() {\r\n\r\n\t\tconst vec2 CENTER = vec2(0.5);\r\n\r\n\t\tconst float VIGNETTE_OUT = 1.3;\r\n\t\tconst float VIGNETTE_IN = 0.0;\r\n\t\tconst float VIGNETTE_FADE = 22.0; \r\n\r\n\t\tfloat d = distance(vUv, CENTER);\r\n\t\td = smoothstep(VIGNETTE_OUT + (focalStop / VIGNETTE_FADE), VIGNETTE_IN + (focalStop / VIGNETTE_FADE), d);\r\n\r\n\t\treturn clamp(d, 0.0, 1.0);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvec2 rand(vec2 coord) {\r\n\r\n\tvec2 noise;\r\n\r\n\t#ifdef NOISE\r\n\r\n\t\tconst float a = 12.9898;\r\n\t\tconst float b = 78.233;\r\n\t\tconst float c = 43758.5453;\r\n\r\n\t\tnoise.x = clamp(fract(sin(mod(dot(coord, vec2(a, b)), 3.14)) * c), 0.0, 1.0) * 2.0 - 1.0;\r\n\t\tnoise.y = clamp(fract(sin(mod(dot(coord, vec2(a, b) * 2.0), 3.14)) * c), 0.0, 1.0) * 2.0 - 1.0;\r\n\r\n\t#else\r\n\r\n\t\tnoise.x = ((fract(1.0 - coord.s * halfTexelSize.x) * 0.25) + (fract(coord.t * halfTexelSize.y) * 0.75)) * 2.0 - 1.0;\r\n\t\tnoise.y = ((fract(1.0 - coord.s * halfTexelSize.x) * 0.75) + (fract(coord.t * halfTexelSize.y) * 0.25)) * 2.0 - 1.0;\r\n\r\n\t#endif\r\n\r\n\treturn noise;\r\n\r\n}\r\n\r\nvec3 processTexel(vec2 coords, float blur) {\r\n\r\n\tconst vec3 LUM_COEFF = vec3(0.299, 0.587, 0.114);\r\n\r\n\tvec3 c;\r\n\tc.r = texture2D(tDiffuse, coords + vec2(0.0, 1.0) * texelSize * fringe * blur).r;\r\n\tc.g = texture2D(tDiffuse, coords + vec2(-0.866, -0.5) * texelSize * fringe * blur).g;\r\n\tc.b = texture2D(tDiffuse, coords + vec2(0.866, -0.5) * texelSize * fringe * blur).b;\r\n\r\n\t// Calculate the luminance of the constructed colour.\r\n\tfloat luminance = dot(c.rgb, LUM_COEFF);\r\n\tfloat threshold = max((luminance - luminanceThreshold) * luminanceGain, 0.0);\r\n\r\n\treturn c + mix(vec3(0.0), c, threshold * blur);\r\n\r\n}\r\n\r\nfloat linearize(float depth) {\r\n\r\n\treturn -cameraFar * cameraNear / (depth * (cameraFar - cameraNear) - cameraFar);\r\n\r\n}\r\n\r\nfloat gather(float i, float j, float ringSamples, inout vec3 color, float w, float h, float blur) {\r\n\r\n\tconst float TWO_PI = 6.28318531;\r\n\r\n\tfloat step = TWO_PI / ringSamples;\r\n\tfloat pw = cos(j * step) * i;\r\n\tfloat ph = sin(j * step) * i;\r\n\r\n\t#ifdef PENTAGON\r\n\r\n\t\tfloat p = penta(vec2(pw, ph));\r\n\r\n\t#else\r\n\r\n\t\tfloat p = 1.0;\r\n\r\n\t#endif\r\n\r\n\tcolor += processTexel(vUv + vec2(pw * w, ph * h), blur) * mix(1.0, i / RINGS_FLOAT, bias) * p;\r\n\r\n\treturn mix(1.0, i / RINGS_FLOAT, bias) * p;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\tfloat depth = linearize(texture2D(tDepth, vUv).x);\r\n\r\n\t#else\r\n\r\n\t\tfloat depth = linearize(readDepth(tDepth, vUv));\r\n\r\n\t#endif\r\n\r\n\t#ifdef SHADER_FOCUS\r\n\r\n\t\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\t\tfloat fDepth = linearize(texture2D(tDepth, focusCoords).x);\r\n\r\n\t\t#else\r\n\r\n\t\t\tfloat fDepth = linearize(readDepth(tDepth, focusCoords));\r\n\r\n\t\t#endif\r\n\r\n\t#else\r\n\r\n\t\tfloat fDepth = focalDepth;\r\n\r\n\t#endif\r\n\r\n\t#ifdef MANUAL_DOF\r\n\r\n\t\tconst float nDoFStart = 1.0; \r\n\t\tconst float nDoFDist = 2.0;\r\n\t\tconst float fDoFStart = 1.0;\r\n\t\tconst float fDoFDist = 3.0;\r\n\r\n\t\tfloat focalPlane = depth - fDepth;\r\n\t\tfloat farDoF = (focalPlane - fDoFStart) / fDoFDist;\r\n\t\tfloat nearDoF = (-focalPlane - nDoFStart) / nDoFDist;\r\n\r\n\t\tfloat blur = (focalPlane > 0.0) ? farDoF : nearDoF;\r\n\r\n\t#else\r\n\r\n\t\tconst float CIRCLE_OF_CONFUSION = 0.03; // 35mm film = 0.03mm CoC.\r\n\r\n\t\tfloat focalPlaneMM = fDepth * 1000.0;\r\n\t\tfloat depthMM = depth * 1000.0;\r\n\r\n\t\tfloat focalPlane = (depthMM * focalLength) / (depthMM - focalLength);\r\n\t\tfloat farDoF = (focalPlaneMM * focalLength) / (focalPlaneMM - focalLength);\r\n\t\tfloat nearDoF = (focalPlaneMM - focalLength) / (focalPlaneMM * focalStop * CIRCLE_OF_CONFUSION);\r\n\r\n\t\tfloat blur = abs(focalPlane - farDoF) * nearDoF;\r\n\r\n\t#endif\r\n\r\n\tblur = clamp(blur, 0.0, 1.0);\r\n\r\n\t// Dithering.\r\n\tvec2 noise = rand(vUv) * ditherStrength * blur;\r\n\r\n\tfloat blurFactorX = texelSize.x * blur * maxBlur + noise.x;\r\n\tfloat blurFactorY = texelSize.y * blur * maxBlur + noise.y;\r\n\r\n\tconst int MAX_RING_SAMPLES = RINGS_INT * SAMPLES_INT;\r\n\r\n\t// Calculation of final color.\r\n\tvec4 color;\r\n\r\n\tif(blur < 0.05) {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv);\r\n\r\n\t} else {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv);\r\n\r\n\t\tfloat s = 1.0;\r\n\t\tint ringSamples;\r\n\r\n\t\tfor(int i = 1; i <= RINGS_INT; ++i) {\r\n\r\n\t\t\tringSamples = i * SAMPLES_INT;\r\n\r\n\t\t\t// Constant loop.\r\n\t\t\tfor(int j = 0; j < MAX_RING_SAMPLES; ++j) {\r\n\r\n\t\t\t\t// Break earlier.\r\n\t\t\t\tif(j >= ringSamples) { break; }\r\n\r\n\t\t\t\ts += gather(float(i), float(j), float(ringSamples), color.rgb, blurFactorX, blurFactorY, blur);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tcolor.rgb /= s; // Divide by sample count.\r\n\r\n\t}\r\n\r\n\t#ifdef SHOW_FOCUS\r\n\r\n\t\tcolor.rgb = debugFocus(color.rgb, blur, depth);\r\n\r\n\t#endif\r\n\r\n\t#ifdef VIGNETTE\r\n\r\n\t\tcolor.rgb *= vignette();\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}));d.showFocus&&(e.defines.SHOW_FOCUS="1");d.manualDoF&&(e.defines.MANUAL_DOF="1");d.vignette&&(e.defines.VIGNETTE="1");d.pentagon&&(e.defines.PENTAGON="1");d.shaderFocus&&(e.defines.SHADER_FOCUS="1");d.noise&&(e.defines.NOISE="1");void 0!==d.texelSize&&e.setTexelSize(d.texelSize.x,d.texelSize.y);null!==b&&e.adoptCameraSettings(b);
return e}m(a,e);l(a,[{key:"setTexelSize",value:function(b,a){this.uniforms.texelSize.value.set(b,a);this.uniforms.halfTexelSize.value.set(b,a).multiplyScalar(.5)}},{key:"adoptCameraSettings",value:function(b){this.uniforms.cameraNear.value=b.near;this.uniforms.cameraFar.value=b.far;this.uniforms.focalLength.value=b.getFocalLength()}}]);return a}(c.ShaderMaterial),Kb=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:!1;h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,
{type:"CombineMaterial",uniforms:{texture1:new c.Uniform(null),texture2:new c.Uniform(null),opacity1:new c.Uniform(1),opacity2:new c.Uniform(1)},fragmentShader:"uniform sampler2D texture1;\r\nuniform sampler2D texture2;\r\n\r\nuniform float opacity1;\r\nuniform float opacity2;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel1 = opacity1 * texture2D(texture1, vUv);\r\n\tvec4 texel2 = opacity2 * texture2D(texture2, vUv);\r\n\r\n\t#ifdef SCREEN_MODE\r\n\r\n\t\tvec3 invTexel1 = vec3(1.0) - texel1.rgb;\r\n\t\tvec3 invTexel2 = vec3(1.0) - texel2.rgb;\r\n\r\n\t\tvec4 color = vec4(\r\n\t\t\tvec3(1.0) - invTexel1 * invTexel2,\r\n\t\t\ttexel1.a + texel2.a\r\n\t\t);\r\n\r\n\t#else\r\n\r\n\t\tvec4 color = texel1 + texel2;\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}));b&&(d.defines.SCREEN_MODE="1");return d}m(a,e);return a}(c.ShaderMaterial),Sc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new c.Vector2;h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"ConvolutionMaterial",uniforms:{tDiffuse:new c.Uniform(null),
texelSize:new c.Uniform(new c.Vector2),halfTexelSize:new c.Uniform(new c.Vector2),kernel:new c.Uniform(0)},fragmentShader:"uniform sampler2D tDiffuse;\r\n\r\nvarying vec2 vUv0;\r\nvarying vec2 vUv1;\r\nvarying vec2 vUv2;\r\nvarying vec2 vUv3;\r\n\r\nvoid main() {\r\n\r\n\t// Sample top left texel.\r\n\tvec4 sum = texture2D(tDiffuse, vUv0);\r\n\r\n\t// Sample top right texel.\r\n\tsum += texture2D(tDiffuse, vUv1);\r\n\r\n\t// Sample bottom right texel.\r\n\tsum += texture2D(tDiffuse, vUv2);\r\n\r\n\t// Sample bottom left texel.\r\n\tsum += texture2D(tDiffuse, vUv3);\r\n\r\n\t// Compute the average.\r\n\tgl_FragColor = sum * 0.25;\r\n\r\n}\r\n",
vertexShader:"uniform vec2 texelSize;\r\nuniform vec2 halfTexelSize;\r\nuniform float kernel;\r\n\r\nvarying vec2 vUv0;\r\nvarying vec2 vUv1;\r\nvarying vec2 vUv2;\r\nvarying vec2 vUv3;\r\n\r\nvoid main() {\r\n\r\n\tvec2 dUv = (texelSize * vec2(kernel)) + halfTexelSize;\r\n\r\n\tvUv0 = vec2(uv.x - dUv.x, uv.y + dUv.y);\r\n\tvUv1 = vec2(uv.x + dUv.x, uv.y + dUv.y);\r\n\tvUv2 = vec2(uv.x + dUv.x, uv.y - dUv.y);\r\n\tvUv3 = vec2(uv.x - dUv.x, uv.y - dUv.y);\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",
depthWrite:!1,depthTest:!1}));d.setTexelSize(b.x,b.y);d.kernelSize=N.LARGE;return d}m(a,e);l(a,[{key:"getKernel",value:function(){return Rc[this.kernelSize]}},{key:"setTexelSize",value:function(b,a){this.uniforms.texelSize.value.set(b,a);this.uniforms.halfTexelSize.value.set(b,a).multiplyScalar(.5)}}]);return a}(c.ShaderMaterial),Rc=[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])],N={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3,VERY_LARGE:4,HUGE:5},H=function(e){function a(){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"CopyMaterial",uniforms:{tDiffuse:new c.Uniform(null),opacity:new c.Uniform(1)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform float opacity;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tgl_FragColor = opacity * texel;\r\n\r\n}\r\n",vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",
depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),Tc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null;h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"DepthMaterial",uniforms:{cameraNear:new c.Uniform(.1),cameraFar:new c.Uniform(2E3),tDepth:new c.Uniform(null)},fragmentShader:"uniform sampler2D tDepth;\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifndef USE_LOGDEPTHBUF\r\n\r\n\t#include <packing>\r\n\r\n\tuniform float cameraNear;\r\n\tuniform float cameraFar;\r\n\r\n\tfloat readDepth(sampler2D depthSampler, vec2 coord) {\r\n\r\n\t\tfloat fragCoordZ = texture2D(depthSampler, coord).x;\r\n\t\tfloat viewZ = perspectiveDepthToViewZ(fragCoordZ, cameraNear, cameraFar);\r\n\r\n\t\treturn viewZToOrthographicDepth(viewZ, cameraNear, cameraFar);\r\n\r\n\t}\r\n\r\n#endif\r\n\r\nvoid main() {\r\n\r\n\t#ifdef USE_LOGDEPTHBUF\r\n\r\n\t\tfloat depth = texture2D(tDepth, vUv).x;\r\n\r\n\t#else\r\n\r\n\t\tfloat depth = readDepth(tDepth, vUv);\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = vec4(depth, depth, depth, 1.0);\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}));null!==b&&d.adoptCameraSettings(b);return d}m(a,e);l(a,[{key:"adoptCameraSettings",value:function(b){this.uniforms.cameraNear.value=b.near;this.uniforms.cameraFar.value=b.far}}]);return a}(c.ShaderMaterial),Uc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:!1;h(this,a);
var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"DotScreenMaterial",uniforms:{tDiffuse:new c.Uniform(null),angle:new c.Uniform(1.57),scale:new c.Uniform(1),intensity:new c.Uniform(1),offsetRepeat:new c.Uniform(new c.Vector4(.5,.5,1,1))},fragmentShader:"uniform sampler2D tDiffuse;\r\n\r\nuniform float angle;\r\nuniform float scale;\r\nuniform float intensity;\r\n\r\nvarying vec2 vUv;\r\nvarying vec2 vUvPattern;\r\n\r\nfloat pattern() {\r\n\r\n\tfloat s = sin(angle);\r\n\tfloat c = cos(angle);\r\n\r\n\tvec2 point = vec2(c * vUvPattern.x - s * vUvPattern.y, s * vUvPattern.x + c * vUvPattern.y) * scale;\r\n\r\n\treturn (sin(point.x) * sin(point.y)) * 4.0;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tvec3 color = texel.rgb;\r\n\r\n\t#ifdef AVERAGE\r\n\r\n\t\tcolor = vec3((color.r + color.g + color.b) / 3.0);\r\n\r\n\t#endif\r\n\r\n\tcolor = vec3(color * 10.0 - 5.0 + pattern());\r\n\tcolor = texel.rgb + (color - texel.rgb) * intensity;\r\n\r\n\tgl_FragColor = vec4(color, texel.a);\r\n\r\n}\r\n",
vertexShader:"uniform vec4 offsetRepeat;\r\n\r\nvarying vec2 vUv;\r\nvarying vec2 vUvPattern;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tvUvPattern = uv * offsetRepeat.zw + offsetRepeat.xy;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}));b&&(d.defines.AVERAGE="1");return d}m(a,e);return a}(c.ShaderMaterial),Vc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);void 0===b.screenMode&&
(b.screenMode=!0);void 0===b.noise&&(b.noise=!0);void 0===b.scanlines&&(b.scanlines=!0);void 0===b.greyscale&&(b.greyscale=!1);void 0===b.sepia&&(b.sepia=!1);void 0===b.vignette&&(b.vignette=!1);void 0===b.eskil&&(b.eskil=!1);void 0===b.noiseIntensity&&(b.noiseIntensity=.5);void 0===b.scanlineIntensity&&(b.scanlineIntensity=.05);void 0===b.greyscaleIntensity&&(b.greyscaleIntensity=1);void 0===b.sepiaIntensity&&(b.sepiaIntensity=1);void 0===b.vignetteOffset&&(b.vignetteOffset=1);void 0===b.vignetteDarkness&&
(b.vignetteDarkness=1);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"FilmMaterial",uniforms:{tDiffuse:new c.Uniform(null),time:new c.Uniform(0),noiseIntensity:new c.Uniform(b.noiseIntensity),scanlineIntensity:new c.Uniform(b.scanlineIntensity),scanlineCount:new c.Uniform(0),greyscaleIntensity:new c.Uniform(b.greyscaleIntensity),sepiaIntensity:new c.Uniform(b.sepiaIntensity),vignetteOffset:new c.Uniform(b.vignetteOffset),vignetteDarkness:new c.Uniform(b.vignetteDarkness)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform float time;\r\n\r\nvarying vec2 vUv;\r\n\r\n#ifdef NOISE\r\n\r\n\tuniform float noiseIntensity;\r\n\r\n#endif\r\n\r\n#ifdef SCANLINES\r\n\r\n\tuniform float scanlineIntensity;\r\n\tuniform float scanlineCount;\r\n\r\n#endif\r\n\r\n#ifdef GREYSCALE\r\n\r\n\tuniform float greyscaleIntensity;\r\n\r\n\tconst vec3 LUM_COEFF = vec3(0.299, 0.587, 0.114);\r\n\r\n#elif defined(SEPIA)\r\n\r\n\tuniform float sepiaIntensity;\r\n\r\n#endif\r\n\r\n#ifdef VIGNETTE\r\n\r\n\tuniform float vignetteOffset;\r\n\tuniform float vignetteDarkness;\r\n\r\n#endif\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tvec3 color = texel.rgb;\r\n\r\n\t#ifdef SCREEN_MODE\r\n\r\n\t\tvec3 invColor;\r\n\r\n\t#endif\r\n\r\n\t#ifdef NOISE\r\n\r\n\t\tfloat x = vUv.x * vUv.y * time * 1000.0;\r\n\t\tx = mod(x, 13.0) * mod(x, 123.0);\r\n\t\tx = mod(x, 0.01);\r\n\r\n\t\tvec3 noise = texel.rgb * clamp(0.1 + x * 100.0, 0.0, 1.0) * noiseIntensity;\r\n\r\n\t\t#ifdef SCREEN_MODE\r\n\r\n\t\t\tinvColor = vec3(1.0) - color;\r\n\t\t\tvec3 invNoise = vec3(1.0) - noise;\r\n\r\n\t\t\tcolor = vec3(1.0) - invColor * invNoise;\r\n\r\n\t\t#else\r\n\r\n\t\t\tcolor += noise;\r\n\r\n\t\t#endif\r\n\r\n\t#endif\r\n\r\n\t#ifdef SCANLINES\r\n\r\n\t\tvec2 sl = vec2(sin(vUv.y * scanlineCount), cos(vUv.y * scanlineCount));\r\n\t\tvec3 scanlines = texel.rgb * vec3(sl.x, sl.y, sl.x) * scanlineIntensity;\r\n\r\n\t\t#ifdef SCREEN_MODE\r\n\r\n\t\t\tinvColor = vec3(1.0) - color;\r\n\t\t\tvec3 invScanlines = vec3(1.0) - scanlines;\r\n\r\n\t\t\tcolor = vec3(1.0) - invColor * invScanlines;\r\n\r\n\t\t#else\r\n\r\n\t\t\tcolor += scanlines;\r\n\r\n\t\t#endif\r\n\r\n\t#endif\r\n\r\n\t#ifdef GREYSCALE\r\n\r\n\t\tcolor = mix(color, vec3(dot(color, LUM_COEFF)), greyscaleIntensity);\r\n\r\n\t#elif defined(SEPIA)\r\n\r\n\t\tvec3 c = color.rgb;\r\n\r\n\t\tcolor.r = dot(c, vec3(1.0 - 0.607 * sepiaIntensity, 0.769 * sepiaIntensity, 0.189 * sepiaIntensity));\r\n\t\tcolor.g = dot(c, vec3(0.349 * sepiaIntensity, 1.0 - 0.314 * sepiaIntensity, 0.168 * sepiaIntensity));\r\n\t\tcolor.b = dot(c, vec3(0.272 * sepiaIntensity, 0.534 * sepiaIntensity, 1.0 - 0.869 * sepiaIntensity));\r\n\r\n\t#endif\r\n\r\n\t#ifdef VIGNETTE\r\n\r\n\t\tconst vec2 CENTER = vec2(0.5);\r\n\r\n\t\t#ifdef ESKIL\r\n\r\n\t\t\tvec2 uv = (vUv - CENTER) * vec2(vignetteOffset);\r\n\t\t\tcolor = mix(color.rgb, vec3(1.0 - vignetteDarkness), dot(uv, uv));\r\n\r\n\t\t#else\r\n\r\n\t\t\tfloat dist = distance(vUv, CENTER);\r\n\t\t\tcolor *= smoothstep(0.8, vignetteOffset * 0.799, dist * (vignetteDarkness + vignetteOffset));\r\n\r\n\t\t#endif\t\t\r\n\r\n\t#endif\r\n\r\n\tgl_FragColor = vec4(clamp(color, 0.0, 1.0), texel.a);\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}));b.greyscale&&(d.defines.GREYSCALE="1");b.sepia&&(d.defines.SEPIA="1");b.vignette&&(d.defines.VIGNETTE="1");b.eskil&&(d.defines.ESKIL="1");b.screenMode&&(d.defines.SCREEN_MODE="1");b.noise&&(d.defines.NOISE="1");b.scanlines&&(d.defines.SCANLINES="1");return d}m(a,e);return a}(c.ShaderMaterial),Wc=function(e){function a(){h(this,
a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"GlitchMaterial",uniforms:{tDiffuse:new c.Uniform(null),tPerturb:new c.Uniform(null),active:new c.Uniform(1),amount:new c.Uniform(.8),angle:new c.Uniform(.02),seed:new c.Uniform(.02),seedX:new c.Uniform(.02),seedY:new c.Uniform(.02),distortionX:new c.Uniform(.5),distortionY:new c.Uniform(.6),colS:new c.Uniform(.05)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform sampler2D tPerturb;\r\n\r\nuniform bool active;\r\n\r\nuniform float amount;\r\nuniform float angle;\r\nuniform float seed;\r\nuniform float seedX;\r\nuniform float seedY;\r\nuniform float distortionX;\r\nuniform float distortionY;\r\nuniform float colS;\r\n\r\nvarying vec2 vUv;\r\n\r\nfloat rand(vec2 tc) {\r\n\r\n\tconst float a = 12.9898;\r\n\tconst float b = 78.233;\r\n\tconst float c = 43758.5453;\r\n\r\n\tfloat dt = dot(tc, vec2(a, b));\r\n\tfloat sn = mod(dt, 3.14);\r\n\r\n\treturn fract(sin(sn) * c);\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec2 coord = vUv;\r\n\r\n\tfloat xs, ys;\r\n\tvec4 normal;\r\n\r\n\tvec2 offset;\r\n\tvec4 cr, cga, cb;\r\n\tvec4 snow, color;\r\n\r\n\tfloat sx, sy;\r\n\r\n\tif(active) {\r\n\r\n\t\txs = floor(gl_FragCoord.x / 0.5);\r\n\t\tys = floor(gl_FragCoord.y / 0.5);\r\n\r\n\t\tnormal = texture2D(tPerturb, coord * seed * seed);\r\n\r\n\t\tif(coord.y < distortionX + colS && coord.y > distortionX - colS * seed) {\r\n\r\n\t\t\tsx = clamp(ceil(seedX), 0.0, 1.0);\r\n\t\t\tcoord.y = sx * (1.0 - (coord.y + distortionY)) + (1.0 - sx) * distortionY;\r\n\r\n\t\t}\r\n\r\n\t\tif(coord.x < distortionY + colS && coord.x > distortionY - colS * seed) {\r\n\r\n\t\t\tsy = clamp(ceil(seedY), 0.0, 1.0);\r\n\t\t\tcoord.x = sy * distortionX + (1.0 - sy) * (1.0 - (coord.x + distortionX));\r\n\r\n\t\t}\r\n\r\n\t\tcoord.x += normal.x * seedX * (seed / 5.0);\r\n\t\tcoord.y += normal.y * seedY * (seed / 5.0);\r\n\r\n\t\toffset = amount * vec2(cos(angle), sin(angle));\r\n\r\n\t\tcr = texture2D(tDiffuse, coord + offset);\r\n\t\tcga = texture2D(tDiffuse, coord);\r\n\t\tcb = texture2D(tDiffuse, coord - offset);\r\n\r\n\t\tcolor = vec4(cr.r, cga.g, cb.b, cga.a);\r\n\t\tsnow = 200.0 * amount * vec4(rand(vec2(xs * seed, ys * seed * 50.0)) * 0.2);\r\n\t\tcolor += snow;\r\n\r\n\t} else {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv);\r\n\r\n\t}\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),Xc=function(e){function a(){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"GodRaysMaterial",defines:{NUM_SAMPLES_FLOAT:"60.0",NUM_SAMPLES_INT:"60"},uniforms:{tDiffuse:new c.Uniform(null),lightPosition:new c.Uniform(null),exposure:new c.Uniform(.6),
decay:new c.Uniform(.93),density:new c.Uniform(.96),weight:new c.Uniform(.4),clampMax:new c.Uniform(1)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform vec3 lightPosition;\r\n\r\nuniform float exposure;\r\nuniform float decay;\r\nuniform float density;\r\nuniform float weight;\r\nuniform float clampMax;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec2 texCoord = vUv;\r\n\r\n\t// Calculate vector from pixel to light source in screen space.\r\n\tvec2 deltaTexCoord = texCoord - lightPosition.st;\r\n\tdeltaTexCoord *= 1.0 / NUM_SAMPLES_FLOAT * density;\r\n\r\n\t// A decreasing illumination factor.\r\n\tfloat illuminationDecay = 1.0;\r\n\r\n\tvec4 sample;\r\n\tvec4 color = vec4(0.0);\r\n\r\n\t// Estimate the probability of occlusion at each pixel by summing samples along a ray to the light source.\r\n\tfor(int i = 0; i < NUM_SAMPLES_INT; ++i) {\r\n\r\n\t\ttexCoord -= deltaTexCoord;\r\n\t\tsample = texture2D(tDiffuse, texCoord);\r\n\r\n\t\t// Apply sample attenuation scale/decay factors.\r\n\t\tsample *= illuminationDecay * weight;\r\n\r\n\t\tcolor += sample;\r\n\r\n\t\t// Update exponential decay factor.\r\n\t\tilluminationDecay *= decay;\r\n\r\n\t}\r\n\r\n\tgl_FragColor = clamp(color * exposure, 0.0, clampMax);\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),Lb=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:!1,d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null;h(this,a);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"LuminosityMaterial",uniforms:{tDiffuse:new c.Uniform(null),
distinction:new c.Uniform(1),range:new c.Uniform(null!==d?d:new c.Vector2)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform float distinction;\r\nuniform vec2 range;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tconst vec4 LUM_COEFF = vec4(0.299, 0.587, 0.114, 0.0);\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tfloat v = dot(texel, LUM_COEFF);\r\n\r\n\t#ifdef RANGE\r\n\r\n\t\tfloat low = step(range.x, v);\r\n\t\tfloat high = step(v, range.y);\r\n\r\n\t\t// Apply the mask.\r\n\t\tv *= low * high;\r\n\r\n\t#endif\r\n\r\n\tv = pow(abs(v), distinction);\r\n\r\n\t#ifdef COLOR\r\n\r\n\t\tgl_FragColor = vec4(texel.rgb * v, texel.a);\r\n\r\n\t#else\r\n\r\n\t\tgl_FragColor = vec4(v, v, v, texel.a);\r\n\r\n\t#endif\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n"}));b&&(e.defines.COLOR="1");null!==d&&(e.defines.RANGE="1");return e}m(a,e);return a}(c.ShaderMaterial),Yc=function(e){function a(){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"PixelationMaterial",uniforms:{tDiffuse:new c.Uniform(null),granularity:new c.Uniform(1),resolution:new c.Uniform(new c.Vector2(1,
1)),dx:new c.Uniform(1),dy:new c.Uniform(1)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform float granularity;\r\nuniform float dx;\r\nuniform float dy;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel;\r\n\r\n\tif(granularity > 0.0) {\r\n\r\n\t\tvec2 coord = vec2(\r\n\t\t\tdx * (floor(vUv.x / dx) + 0.5),\r\n\t\t\tdy * (floor(vUv.y / dy) + 0.5)\r\n\t\t);\r\n\r\n\t\ttexel = texture2D(tDiffuse, coord);\r\n\r\n\t} else {\r\n\r\n\t\ttexel = texture2D(tDiffuse, vUv);\r\n\r\n\t}\r\n\r\n\tgl_FragColor = texel;\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);l(a,[{key:"setResolution",value:function(b,a){this.uniforms.resolution.value.set(b,a);this.granularity=this.granularity}},{key:"granularity",get:function(){return this.uniforms.granularity.value},set:function(b){var a=this.uniforms,c=a.resolution.value;a.granularity.value=b;a.dx.value=b/c.x;a.dy.value=
b/c.y}}]);return a}(c.ShaderMaterial),Zc=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);void 0===b.maxRadius&&(b.maxRadius=1);void 0===b.waveSize&&(b.waveSize=.2);void 0===b.amplitude&&(b.amplitude=.05);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"ShockWaveMaterial",uniforms:{tDiffuse:new c.Uniform(null),center:new c.Uniform(new c.Vector2(.5,.5)),aspect:new c.Uniform(1),cameraDistance:new c.Uniform(1),size:new c.Uniform(1),
radius:new c.Uniform(-b.waveSize),maxRadius:new c.Uniform(b.maxRadius),waveSize:new c.Uniform(b.waveSize),amplitude:new c.Uniform(b.amplitude)},fragmentShader:"#include <common>\r\n\r\nuniform sampler2D tDiffuse;\r\nuniform vec2 center;\r\nuniform float aspect;\r\nuniform float waveSize;\r\nuniform float radius;\r\nuniform float maxRadius;\r\nuniform float amplitude;\r\n\r\nvarying vec2 vUv;\r\nvarying float vSize;\r\n\r\nvoid main() {\r\n\r\n\tvec2 aspectCorrection = vec2(aspect, 1.0);\r\n\r\n\tvec2 difference = vUv * aspectCorrection - center * aspectCorrection;\r\n\tfloat distance = sqrt(dot(difference, difference)) * vSize;\r\n\r\n\tvec2 displacement = vec2(0.0);\r\n\r\n\tif(distance > radius) {\r\n\r\n\t\tif(distance < radius + waveSize) {\r\n\r\n\t\t\tfloat angle = (distance - radius) * PI2 / waveSize;\r\n\t\t\tfloat cosSin = (1.0 - cos(angle)) * 0.5;\r\n\r\n\t\t\tfloat extent = maxRadius + waveSize;\r\n\t\t\tfloat decay = max(extent - distance * distance, 0.0) / extent;\r\n\r\n\t\t\tdisplacement = ((cosSin * amplitude * difference) / distance) * decay;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tgl_FragColor = texture2D(tDiffuse, vUv - displacement);\r\n\r\n}\r\n",
vertexShader:"uniform float size;\r\nuniform float scale;\r\nuniform float cameraDistance;\r\n\r\nvarying vec2 vUv;\r\nvarying float vSize;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tvSize = (0.1 * cameraDistance) / size;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),$c=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new c.Vector2;h(this,a);return k(this,
(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"SMAABlendMaterial",uniforms:{tDiffuse:new c.Uniform(null),tWeights:new c.Uniform(null),texelSize:new c.Uniform(b)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform sampler2D tWeights;\r\n\r\nuniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset;\r\n\r\nvoid main() {\r\n\r\n\t// Fetch the blending weights for current pixel.\r\n\tvec4 a;\r\n\ta.xz = texture2D(tWeights, vUv).xz;\r\n\ta.y = texture2D(tWeights, vOffset.zw).g;\r\n\ta.w = texture2D(tWeights, vOffset.xy).a;\r\n\r\n\tvec4 color;\r\n\r\n\t// Check if there is any blending weight with a value greater than 0.0.\r\n\tif(dot(a, vec4(1.0)) < 1e-5) {\r\n\r\n\t\tcolor = texture2D(tDiffuse, vUv, 0.0);\r\n\r\n\t} else {\r\n\r\n\t\t/* Up to four lines can be crossing a pixel (one through each edge). We favor\r\n\t\t * blending by choosing the line with the maximum weight for each direction.\r\n\t\t */\r\n\r\n\t\tvec2 offset;\r\n\t\toffset.x = a.a > a.b ? a.a : -a.b; // Left vs. right.\r\n\t\toffset.y = a.g > a.r ? -a.g : a.r; // Top vs. bottom (changed signs).\r\n\r\n\t\t// Then we go in the direction that has the maximum weight (horizontal vs. vertical).\r\n\t\tif(abs(offset.x) > abs(offset.y)) {\r\n\r\n\t\t\toffset.y = 0.0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\toffset.x = 0.0;\r\n\r\n\t\t}\r\n\r\n\t\t// Fetch the opposite color and lerp by hand.\r\n\t\tcolor = texture2D(tDiffuse, vUv, 0.0);\r\n\t\tvec2 coord = vUv + sign(offset) * texelSize;\r\n\t\tvec4 oppositeColor = texture2D(tDiffuse, coord, 0.0);\r\n\t\tfloat s = abs(offset.x) > abs(offset.y) ? abs(offset.x) : abs(offset.y);\r\n\r\n\t\t// Gamma correction.\r\n\t\tcolor.rgb = pow(abs(color.rgb), vec3(2.2));\r\n\t\toppositeColor.rgb = pow(abs(oppositeColor.rgb), vec3(2.2));\r\n\t\tcolor = mix(color, oppositeColor, s);\r\n\t\tcolor.rgb = pow(abs(color.rgb), vec3(1.0 / 2.2));\r\n\r\n\t}\r\n\r\n\tgl_FragColor = color;\r\n\r\n}\r\n",
vertexShader:"uniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\r\n\tvOffset = uv.xyxy + texelSize.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // Changed sign in W component.\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),ad=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new c.Vector2;h(this,
a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"SMAAColorEdgesMaterial",defines:{EDGE_THRESHOLD:"0.1"},uniforms:{tDiffuse:new c.Uniform(null),texelSize:new c.Uniform(b)},fragmentShader:"uniform sampler2D tDiffuse;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\n\r\nvoid main() {\r\n\r\n\tconst vec2 THRESHOLD = vec2(EDGE_THRESHOLD);\r\n\r\n\t// Calculate color deltas.\r\n\tvec4 delta;\r\n\tvec3 c = texture2D(tDiffuse, vUv).rgb;\r\n\r\n\tvec3 cLeft = texture2D(tDiffuse, vOffset[0].xy).rgb;\r\n\tvec3 t = abs(c - cLeft);\r\n\tdelta.x = max(max(t.r, t.g), t.b);\r\n\r\n\tvec3 cTop = texture2D(tDiffuse, vOffset[0].zw).rgb;\r\n\tt = abs(c - cTop);\r\n\tdelta.y = max(max(t.r, t.g), t.b);\r\n\r\n\t// We do the usual threshold.\r\n\tvec2 edges = step(THRESHOLD, delta.xy);\r\n\r\n\t// Then discard if there is no edge.\r\n\tif(dot(edges, vec2(1.0)) == 0.0) {\r\n\r\n\t\tdiscard;\r\n\r\n\t}\r\n\r\n\t// Calculate right and bottom deltas.\r\n\tvec3 cRight = texture2D(tDiffuse, vOffset[1].xy).rgb;\r\n\tt = abs(c - cRight);\r\n\tdelta.z = max(max(t.r, t.g), t.b);\r\n\r\n\tvec3 cBottom = texture2D(tDiffuse, vOffset[1].zw).rgb;\r\n\tt = abs(c - cBottom);\r\n\tdelta.w = max(max(t.r, t.g), t.b);\r\n\r\n\t// Calculate the maximum delta in the direct neighborhood.\r\n\tfloat maxDelta = max(max(max(delta.x, delta.y), delta.z), delta.w);\r\n\r\n\t// Calculate left-left and top-top deltas.\r\n\tvec3 cLeftLeft = texture2D(tDiffuse, vOffset[2].xy).rgb;\r\n\tt = abs(c - cLeftLeft);\r\n\tdelta.z = max(max(t.r, t.g), t.b);\r\n\r\n\tvec3 cTopTop = texture2D(tDiffuse, vOffset[2].zw).rgb;\r\n\tt = abs(c - cTopTop);\r\n\tdelta.w = max(max(t.r, t.g), t.b);\r\n\r\n\t// Calculate the final maximum delta.\r\n\tmaxDelta = max(max(maxDelta, delta.z), delta.w);\r\n\r\n\t// Local contrast adaptation in action.\r\n\tedges.xy *= step(0.5 * maxDelta, delta.xy);\r\n\r\n\tgl_FragColor = vec4(edges, 0.0, 0.0);\r\n\r\n}\r\n",
vertexShader:"uniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\r\n\tvOffset[0] = uv.xyxy + texelSize.xyxy * vec4(-1.0, 0.0, 0.0, 1.0); // Changed sign in W component.\r\n\tvOffset[1] = uv.xyxy + texelSize.xyxy * vec4(1.0, 0.0, 0.0, -1.0); // Changed sign in W component.\r\n\tvOffset[2] = uv.xyxy + texelSize.xyxy * vec4(-2.0, 0.0, 0.0, 2.0); // Changed sign in W component.\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",
depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),bd=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new c.Vector2;h(this,a);b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"SMAAWeightsMaterial",defines:{SMAA_MAX_SEARCH_STEPS_INT:"8",SMAA_MAX_SEARCH_STEPS_FLOAT:"8.0",SMAA_AREATEX_MAX_DISTANCE:"16.0",SMAA_AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",SMAA_AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)"},uniforms:{tDiffuse:new c.Uniform(null),
tArea:new c.Uniform(null),tSearch:new c.Uniform(null),texelSize:new c.Uniform(b)},fragmentShader:"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + float(offset) * texelSize, 0.0)\r\n\r\nuniform sampler2D tDiffuse;\r\nuniform sampler2D tArea;\r\nuniform sampler2D tSearch;\r\n\r\nuniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\nvarying vec2 vPixCoord;\r\n\r\nvec2 round(vec2 x) {\r\n\r\n\treturn sign(x) * floor(abs(x) + 0.5);\r\n\r\n}\r\n\r\nfloat searchLength(vec2 e, float bias, float scale) {\r\n\r\n\t// Not required if tSearch accesses are set to point.\r\n\t// const vec2 SEARCH_TEX_PIXEL_SIZE = 1.0 / vec2(66.0, 33.0);\r\n\t// e = vec2(bias, 0.0) + 0.5 * SEARCH_TEX_PIXEL_SIZE + e * vec2(scale, 1.0) * vec2(64.0, 32.0) * SEARCH_TEX_PIXEL_SIZE;\r\n\r\n\te.r = bias + e.r * scale;\r\n\r\n\treturn 255.0 * texture2D(tSearch, e, 0.0).r;\r\n\r\n}\r\n\r\nfloat searchXLeft(vec2 texCoord, float end) {\r\n\r\n\t/* @PSEUDO_GATHER4\r\n\t * This texCoord has been offset by (-0.25, -0.125) in the vertex shader to\r\n\t * sample between edge, thus fetching four edges in a row.\r\n\t * Sampling with different offsets in each direction allows to disambiguate\r\n\t * which edges are active from the four fetched ones.\r\n\t */\r\n\r\n\tvec2 e = vec2(0.0, 1.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord -= vec2(2.0, 0.0) * texelSize;\r\n\r\n\t\tif(!(texCoord.x > end && e.g > 0.8281 && e.r == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\t// Correct the previously applied offset (-0.25, -0.125).\r\n\ttexCoord.x += 0.25 * texelSize.x;\r\n\r\n\t// The searches are biased by 1, so adjust the coords accordingly.\r\n\ttexCoord.x += texelSize.x;\r\n\r\n\t// Disambiguate the length added by the last step.\r\n\ttexCoord.x += 2.0 * texelSize.x; // Undo last step.\r\n\ttexCoord.x -= texelSize.x * searchLength(e, 0.0, 0.5);\r\n\r\n\treturn texCoord.x;\r\n\r\n}\r\n\r\nfloat searchXRight(vec2 texCoord, float end) {\r\n\r\n\tvec2 e = vec2(0.0, 1.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord += vec2(2.0, 0.0) * texelSize;\r\n\r\n\t\tif(!(texCoord.x < end && e.g > 0.8281 && e.r == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\ttexCoord.x -= 0.25 * texelSize.x;\r\n\ttexCoord.x -= texelSize.x;\r\n\ttexCoord.x -= 2.0 * texelSize.x;\r\n\ttexCoord.x += texelSize.x * searchLength(e, 0.5, 0.5);\r\n\r\n\treturn texCoord.x;\r\n\r\n}\r\n\r\nfloat searchYUp(vec2 texCoord, float end) {\r\n\r\n\tvec2 e = vec2(1.0, 0.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord += vec2(0.0, 2.0) * texelSize; // Changed sign.\r\n\r\n\t\tif(!(texCoord.y > end && e.r > 0.8281 && e.g == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\ttexCoord.y -= 0.25 * texelSize.y; // Changed sign.\r\n\ttexCoord.y -= texelSize.y; // Changed sign.\r\n\ttexCoord.y -= 2.0 * texelSize.y; // Changed sign.\r\n\ttexCoord.y += texelSize.y * searchLength(e.gr, 0.0, 0.5); // Changed sign.\r\n\r\n\treturn texCoord.y;\r\n\r\n}\r\n\r\nfloat searchYDown(vec2 texCoord, float end) {\r\n\r\n\tvec2 e = vec2(1.0, 0.0);\r\n\r\n\tfor(int i = 0; i < SMAA_MAX_SEARCH_STEPS_INT; ++i ) {\r\n\r\n\t\te = texture2D(tDiffuse, texCoord, 0.0).rg;\r\n\t\ttexCoord -= vec2(0.0, 2.0) * texelSize; // Changed sign.\r\n\r\n\t\tif(!(texCoord.y < end && e.r > 0.8281 && e.g == 0.0)) { break; }\r\n\r\n\t}\r\n\r\n\ttexCoord.y += 0.25 * texelSize.y; // Changed sign.\r\n\ttexCoord.y += texelSize.y; // Changed sign.\r\n\ttexCoord.y += 2.0 * texelSize.y; // Changed sign.\r\n\ttexCoord.y -= texelSize.y * searchLength(e.gr, 0.5, 0.5); // Changed sign.\r\n\r\n\treturn texCoord.y;\r\n\r\n}\r\n\r\nvec2 area(vec2 dist, float e1, float e2, float offset) {\r\n\r\n\t// Rounding prevents precision errors of bilinear filtering.\r\n\tvec2 texCoord = SMAA_AREATEX_MAX_DISTANCE * round(4.0 * vec2(e1, e2)) + dist;\r\n\r\n\t// Scale and bias for texel space translation.\r\n\ttexCoord = SMAA_AREATEX_PIXEL_SIZE * texCoord + (0.5 * SMAA_AREATEX_PIXEL_SIZE);\r\n\r\n\t// Move to proper place, according to the subpixel offset.\r\n\ttexCoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\r\n\r\n\treturn texture2D(tArea, texCoord, 0.0).rg;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec4 weights = vec4(0.0);\r\n\tvec4 subsampleIndices = vec4(0.0);\r\n\tvec2 e = texture2D(tDiffuse, vUv).rg;\r\n\r\n\tif(e.g > 0.0) {\r\n\r\n\t\t// Edge at north.\r\n\t\tvec2 d;\r\n\r\n\t\t// Find the distance to the left.\r\n\t\tvec2 coords;\r\n\t\tcoords.x = searchXLeft(vOffset[0].xy, vOffset[2].x);\r\n\t\tcoords.y = vOffset[1].y; // vOffset[1].y = vUv.y - 0.25 * texelSize.y (@CROSSING_OFFSET)\r\n\t\td.x = coords.x;\r\n\r\n\t\t/* Now fetch the left crossing edges, two at a time using bilinear filtering.\r\n\t\t * Sampling at -0.25 (see @CROSSING_OFFSET) enables to discern what value each edge has.\r\n\t\t */\r\n\r\n\t\tfloat e1 = texture2D(tDiffuse, coords, 0.0).r;\r\n\r\n\t\t// Find the distance to the right.\r\n\t\tcoords.x = searchXRight(vOffset[0].zw, vOffset[2].y);\r\n\t\td.y = coords.x;\r\n\r\n\t\t// Translate distances to pixel units for better interleave arithmetic and memory accesses.\r\n\t\td = d / texelSize.x - vPixCoord.x;\r\n\r\n\t\t// The area below needs a sqrt, as the areas texture is compressed quadratically.\r\n\t\tvec2 sqrtD = sqrt(abs(d));\r\n\r\n\t\t// Fetch the right crossing edges.\r\n\t\tcoords.y -= texelSize.y; // WebGL port note: Added.\r\n\t\tfloat e2 = sampleLevelZeroOffset(tDiffuse, coords, ivec2(1, 0)).r;\r\n\r\n\t\t// Pattern recognised, now get the actual area.\r\n\t\tweights.rg = area(sqrtD, e1, e2, subsampleIndices.y);\r\n\r\n\t}\r\n\r\n\tif(e.r > 0.0) {\r\n\r\n\t\t// Edge at west.\r\n\t\tvec2 d;\r\n\r\n\t\t// Find the distance to the top.\r\n\t\tvec2 coords;\r\n\r\n\t\tcoords.y = searchYUp(vOffset[1].xy, vOffset[2].z);\r\n\t\tcoords.x = vOffset[0].x; // vOffset[1].x = vUv.x - 0.25 * texelSize.x;\r\n\t\td.x = coords.y;\r\n\r\n\t\t// Fetch the top crossing edges.\r\n\t\tfloat e1 = texture2D(tDiffuse, coords, 0.0).g;\r\n\r\n\t\t// Find the distance to the bottom.\r\n\t\tcoords.y = searchYDown(vOffset[1].zw, vOffset[2].w);\r\n\t\td.y = coords.y;\r\n\r\n\t\t// Distances in pixel units.\r\n\t\td = d / texelSize.y - vPixCoord.y;\r\n\r\n\t\t// The area below needs a sqrt, as the areas texture is compressed quadratically.\r\n\t\tvec2 sqrtD = sqrt(abs(d));\r\n\r\n\t\t// Fetch the bottom crossing edges.\r\n\t\tcoords.y -= texelSize.y; // WebGL port note: Added.\r\n\t\tfloat e2 = sampleLevelZeroOffset(tDiffuse, coords, ivec2(0, 1)).g;\r\n\r\n\t\t// Get the area for this direction.\r\n\t\tweights.ba = area(sqrtD, e1, e2, subsampleIndices.x);\r\n\r\n\t}\r\n\r\n\tgl_FragColor = weights;\r\n\r\n}\r\n",
vertexShader:"uniform vec2 texelSize;\r\n\r\nvarying vec2 vUv;\r\nvarying vec4 vOffset[3];\r\nvarying vec2 vPixCoord;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\r\n\tvPixCoord = uv / texelSize;\r\n\r\n\t// Offsets for the searches (see @PSEUDO_GATHER4).\r\n\tvOffset[0] = uv.xyxy + texelSize.xyxy * vec4(-0.25, 0.125, 1.25, 0.125); // Changed sign in Y and W components.\r\n\tvOffset[1] = uv.xyxy + texelSize.xyxy * vec4(-0.125, 0.25, -0.125, -1.25); //Changed sign in Y and W components.\r\n\r\n\t// This indicates the ends of the loops.\r\n\tvOffset[2] = vec4(vOffset[0].xz, vOffset[1].yw) + vec4(-2.0, 2.0, -2.0, 2.0) * texelSize.xxyy * SMAA_MAX_SEARCH_STEPS_FLOAT;\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",
depthWrite:!1,depthTest:!1}));b.areaImage="data:image/png;base64,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";
b.searchImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII=";return b}m(a,e);return a}(c.ShaderMaterial),cd=function(e){function a(){h(this,a);return k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,{type:"ToneMappingMaterial",uniforms:{tDiffuse:new c.Uniform(null),luminanceMap:new c.Uniform(null),averageLuminance:new c.Uniform(1),maxLuminance:new c.Uniform(16),
middleGrey:new c.Uniform(.6)},fragmentShader:"uniform sampler2D tDiffuse;\r\nuniform float middleGrey;\r\nuniform float maxLuminance;\r\n\r\n#ifdef ADAPTED_LUMINANCE\r\n\r\n\tuniform sampler2D luminanceMap;\r\n\r\n#else\r\n\r\n\tuniform float averageLuminance;\r\n\r\n#endif\r\n\r\nvarying vec2 vUv;\r\n\r\nconst vec3 LUM_COEFF = vec3(0.299, 0.587, 0.114);\r\nconst vec2 CENTER = vec2(0.5, 0.5);\r\n\r\nvec3 toneMap(vec3 c) {\r\n\r\n\t#ifdef ADAPTED_LUMINANCE\r\n\r\n\t\t// Get the calculated average luminance.\r\n\t\tfloat lumAvg = texture2D(luminanceMap, CENTER).r;\r\n\r\n\t#else\r\n\r\n\t\tfloat lumAvg = averageLuminance;\r\n\r\n\t#endif\r\n\r\n\t// Calculate the luminance of the current pixel.\r\n\tfloat lumPixel = dot(c, LUM_COEFF);\r\n\r\n\t// Apply the modified operator (Reinhard Eq. 4).\r\n\tfloat lumScaled = (lumPixel * middleGrey) / lumAvg;\r\n\r\n\tfloat lumCompressed = (lumScaled * (1.0 + (lumScaled / (maxLuminance * maxLuminance)))) / (1.0 + lumScaled);\r\n\r\n\treturn lumCompressed * c;\r\n\r\n}\r\n\r\nvoid main() {\r\n\r\n\tvec4 texel = texture2D(tDiffuse, vUv);\r\n\tgl_FragColor = vec4(toneMap(texel.rgb), texel.a);\r\n\r\n}\r\n",
vertexShader:"varying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\r\n\r\n}\r\n",depthWrite:!1,depthTest:!1}))}m(a,e);return a}(c.ShaderMaterial),w=function(){function e(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new c.Scene,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new c.OrthographicCamera(-1,1,1,-1,0,1),d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new c.Mesh(new c.PlaneBufferGeometry(2,
2),null);h(this,e);this.name="Pass";this.scene=a;this.camera=b;this.quad=d;null!==this.quad&&(this.quad.frustumCulled=!1,null!==this.scene&&this.scene.add(this.quad));this.needsSwap=!1;this.enabled=!0;this.renderToScreen=!1}l(e,[{key:"render",value:function(a,b,c,e,f){throw Error("Render method not implemented!");}},{key:"setSize",value:function(a,b){}},{key:"initialise",value:function(a,b){}},{key:"dispose",value:function(){var a=Object.keys(this),b=void 0,c=!0,e=!1,f=void 0;try{$jscomp.initSymbol();
$jscomp.initSymbolIterator();for(var g=a[Symbol.iterator](),h;!(c=(h=g.next()).done);c=!0)b=h.value,null!==this[b]&&"function"===typeof this[b].dispose&&(this[b].dispose(),this[b]=null)}catch(W){e=!0,f=W}finally{try{!c&&g.return&&g.return()}finally{if(e)throw f;}}}}]);return e}(),Mb=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));d.name="BlurPass";d.needsSwap=!0;d.renderTargetX=new c.WebGLRenderTarget(1,
1,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,stencilBuffer:!1,depthBuffer:!1});d.renderTargetX.texture.name="Blur.TargetX";d.renderTargetX.texture.generateMipmaps=!1;d.renderTargetY=d.renderTargetX.clone();d.renderTargetY.texture.name="Blur.TargetY";d.resolutionScale=void 0!==b.resolutionScale?b.resolutionScale:.5;d.convolutionMaterial=new Sc;d.kernelSize=b.kernelSize;d.quad.material=d.convolutionMaterial;return d}m(a,e);l(a,[{key:"render",value:function(b,a,c){var d=this.scene,e=this.camera,
p=this.renderTargetX,g=this.renderTargetY,h=this.convolutionMaterial,k=h.uniforms,h=h.getKernel(),l;var m=0;for(l=h.length-1;m<l;++m){var n=0===m%2?p:g;k.kernel.value=h[m];k.tDiffuse.value=a.texture;b.render(d,e,n);a=n}k.kernel.value=h[m];k.tDiffuse.value=a.texture;b.render(d,e,this.renderToScreen?null:c)}},{key:"initialise",value:function(b,a){a||(this.renderTargetX.texture.format=c.RGBFormat,this.renderTargetY.texture.format=c.RGBFormat)}},{key:"setSize",value:function(b,a){b=Math.max(1,Math.floor(b*
this.resolutionScale));a=Math.max(1,Math.floor(a*this.resolutionScale));this.renderTargetX.setSize(b,a);this.renderTargetY.setSize(b,a);this.convolutionMaterial.setTexelSize(1/b,1/a)}},{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(){this.convolutionMaterial.kernelSize=0<arguments.length&&void 0!==arguments[0]?arguments[0]:N.LARGE}}]);
return a}(w);(function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));d.name="BloomPass";d.needsSwap=!0;d.blurPass=new Mb(b);d.renderTarget=new c.WebGLRenderTarget(1,1,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,stencilBuffer:!1,depthBuffer:!1});d.renderTarget.texture.name="Bloom.Target";d.renderTarget.texture.generateMipmaps=!1;d.combineMaterial=new Kb(void 0!==b.screenMode?b.screenMode:
!0);d.intensity=b.intensity;d.luminosityMaterial=new Lb(!0);d.distinction=b.distinction;return d}m(a,e);l(a,[{key:"render",value:function(b,a,c){var d=this.quad,e=this.scene,p=this.camera,g=this.blurPass,h=this.luminosityMaterial,k=this.combineMaterial,l=this.renderTarget;d.material=h;h.uniforms.tDiffuse.value=a.texture;b.render(e,p,l);g.render(b,l,l);d.material=k;k.uniforms.texture1.value=a.texture;k.uniforms.texture2.value=l.texture;b.render(e,p,this.renderToScreen?null:c)}},{key:"initialise",value:function(b,
a){this.blurPass.initialise(b,a);a||(this.renderTarget.texture.format=c.RGBFormat)}},{key:"setSize",value:function(b,a){this.blurPass.setSize(b,a);b=this.blurPass.width;a=this.blurPass.height;this.renderTarget.setSize(b,a)}},{key:"resolutionScale",get:function(){return this.blurPass.resolutionScale},set:function(){this.blurPass.resolutionScale=0<arguments.length&&void 0!==arguments[0]?arguments[0]:.5}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(){this.blurPass.kernelSize=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:N.LARGE}},{key:"intensity",get:function(){return this.combineMaterial.uniforms.opacity2.value},set:function(){this.combineMaterial.uniforms.opacity2.value=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1}},{key:"distinction",get:function(){return this.luminosityMaterial.uniforms.distinction.value},set:function(){this.luminosityMaterial.uniforms.distinction.value=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1}}]);return a})(w);
(function(c){function a(b){var c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};h(this,a);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));e.name="BokehPass";e.needsSwap=!0;e.bokehMaterial=new Pc(b,c);e.quad.material=e.bokehMaterial;return e}m(a,c);l(a,[{key:"render",value:function(b,a,c){this.bokehMaterial.uniforms.tDiffuse.value=a.texture;this.bokehMaterial.uniforms.tDepth.value=a.depthTexture;b.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"setSize",
value:function(b,a){this.bokehMaterial.uniforms.aspect.value=b/a}}]);return a})(w);(function(c){function a(b){var c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};h(this,a);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));e.name="Bokeh2Pass";e.needsSwap=!0;e.bokehMaterial=new Qc(b,c);e.quad.material=e.bokehMaterial;return e}m(a,c);l(a,[{key:"render",value:function(b,a,c){this.bokehMaterial.uniforms.tDiffuse.value=a.texture;this.bokehMaterial.uniforms.tDepth.value=a.depthTexture;
b.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"setSize",value:function(b,a){this.bokehMaterial.setTexelSize(1/b,1/a)}}]);return a})(w);var Nb=new c.Color,dd=function(c){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var c=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,null,null,null));c.name="ClearPass";c.clearColor=void 0!==b.clearColor?b.clearColor:null;c.clearAlpha=void 0!==b.clearAlpha?b.clearAlpha:0;return c}m(a,c);l(a,[{key:"render",
value:function(b,a){var c=this.clearColor,d=void 0;null!==c&&(Nb.copy(b.getClearColor()),d=b.getClearAlpha(),b.setClearColor(c,this.clearAlpha));b.setRenderTarget(this.renderToScreen?null:a);b.clear();null!==c&&b.setClearColor(Nb,d)}}]);return a}(w),ed=function(c){function a(){h(this,a);var b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,null,null,null));b.name="ClearMaskPass";return b}m(a,c);l(a,[{key:"render",value:function(b){b.state.buffers.stencil.setTest(!1)}}]);return a}(w);(function(c){function a(){var b=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var c=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));c.name="DotScreenPass";c.needsSwap=!0;c.material=new Uc(b.average);void 0!==b.angle&&(c.material.uniforms.angle.value=b.angle);void 0!==b.scale&&(c.material.uniforms.scale.value=b.scale);void 0!==b.intensity&&(c.material.uniforms.intensity.value=b.intensity);c.quad.material=c.material;return c}m(a,c);l(a,[{key:"render",value:function(b,a,c){this.material.uniforms.tDiffuse.value=
a.texture;b.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"setSize",value:function(b,a){b=Math.max(1,b);a=Math.max(1,a);this.material.uniforms.offsetRepeat.value.z=b;this.material.uniforms.offsetRepeat.value.w=a}}]);return a})(w);(function(c){function a(b){h(this,a);var c=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));c.name="DepthPass";c.needsSwap=!0;c.depthMaterial=new Tc(b);c.quad.material=c.depthMaterial;return c}m(a,c);l(a,[{key:"render",value:function(b,a,c){this.depthMaterial.uniforms.tDepth.value=
a.depthTexture;b.render(this.scene,this.camera,this.renderToScreen?null:c)}}]);return a})(w);(function(c){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var c=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));c.name="FilmPass";c.needsSwap=!0;c.material=new Vc(b);c.quad.material=c.material;c.scanlineDensity=void 0===b.scanlineDensity?1.25:b.scanlineDensity;return c}m(a,c);l(a,[{key:"render",value:function(b,a,c,f){this.material.uniforms.tDiffuse.value=
a.texture;this.material.uniforms.time.value+=f;b.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"setSize",value:function(b,a){this.material.uniforms.scanlineCount.value=Math.round(a*this.scanlineDensity)}}]);return a})(w);(function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var c=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));c.name="GlitchPass";c.needsSwap=!0;c.material=new Wc;c.quad.material=c.material;c.texture=null;c.perturbMap=
void 0!==b.perturbMap?b.perturbMap:c.generatePerturbMap(b.dtSize);c.perturbMap.name="Glitch.Perturbation";c.perturbMap.generateMipmaps=!1;c.mode=qa.SPORADIC;c.counter=0;c.breakPoint=120+Math.floor(121*Math.random());return c}m(a,e);l(a,[{key:"generatePerturbMap",value:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:64,a=b*b,e=new Float32Array(3*a),f=this.perturbMap,g;for(g=0;g<a;++g){var h=Math.random();e[3*g]=h;e[3*g+1]=h;e[3*g+2]=h}null!==f&&f.dispose();f=new c.DataTexture(e,
b,b,c.RGBFormat,c.FloatType);f.needsUpdate=!0;return this.perturbMap=f}},{key:"render",value:function(b,a,c){var d=this.mode,e=this.counter,g=this.breakPoint,p=this.material.uniforms;p.tDiffuse.value=a.texture;p.seed.value=Math.random();p.active.value=!0;0===e%g||d===qa.CONSTANT_WILD?(p.amount.value=Math.random()/30,p.angle.value=x(-Math.PI,Math.PI),p.seedX.value=x(-1,1),p.seedY.value=x(-1,1),p.distortionX.value=x(0,1),p.distortionY.value=x(0,1),this.breakPoint=120+Math.floor(121*Math.random()),this.counter=
0):e%g<g/5||d===qa.CONSTANT_MILD?(p.amount.value=Math.random()/90,p.angle.value=x(-Math.PI,Math.PI),p.distortionX.value=x(0,1),p.distortionY.value=x(0,1),p.seedX.value=x(-.3,.3),p.seedY.value=x(-.3,.3)):p.active.value=!1;++this.counter;b.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"perturbMap",get:function(){return this.texture},set:function(b){this.texture=b;this.material.uniforms.tPerturb.value=b}}]);return a})(w);var qa={SPORADIC:0,CONSTANT_MILD:1,CONSTANT_WILD:2},ra=function(c){function a(b,
c){var d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,b,c,null));f.name="RenderPass";f.clearPass=new dd(d);f.overrideMaterial=void 0!==d.overrideMaterial?d.overrideMaterial:null;f.clearDepth=void 0!==d.clearDepth?d.clearDepth:!1;f.clear=void 0!==d.clear?d.clear:!0;return f}m(a,c);l(a,[{key:"render",value:function(b,a){var c=this.scene;a=this.renderToScreen?null:a;this.clear?this.clearPass.render(b,a):this.clearDepth&&
(b.setRenderTarget(a),b.clearDepth());c.overrideMaterial=this.overrideMaterial;b.render(c,this.camera,a);c.overrideMaterial=null}}]);return a}(w);(function(e){function a(b,d,e){var f=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};h(this,a);var g=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));g.name="GodRaysPass";g.needsSwap=!0;g.lightScene=new c.Scene;g.mainScene=b;g.mainCamera=d;g.renderPassLight=new ra(g.lightScene,g.mainCamera);g.renderPassMask=new ra(g.mainScene,g.mainCamera,
{overrideMaterial:new c.MeshBasicMaterial({color:0}),clearColor:new c.Color(0)});g.renderPassMask.clear=!1;g.blurPass=new Mb(f);g.renderTargetX=new c.WebGLRenderTarget(1,1,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,stencilBuffer:!1,depthBuffer:!1});g.renderTargetX.texture.name="GodRays.TargetX";g.renderTargetX.texture.generateMipmaps=!1;g.renderTargetY=g.renderTargetX.clone();g.renderTargetY.texture.name="GodRays.TargetY";g.renderTargetMask=new c.WebGLRenderTarget(1,1,{minFilter:c.LinearFilter,
magFilter:c.LinearFilter});g.renderTargetMask.texture.name="GodRays.Mask";g.renderTargetMask.texture.generateMipmaps=!1;g.lightSource=e;g.screenPosition=new c.Vector3;g.godRaysMaterial=new Xc;g.godRaysMaterial.uniforms.lightPosition.value=g.screenPosition;void 0!==f.exposure&&(g.godRaysMaterial.uniforms.exposure.value=f.exposure);void 0!==f.density&&(g.godRaysMaterial.uniforms.density.value=f.density);void 0!==f.decay&&(g.godRaysMaterial.uniforms.decay.value=f.decay);void 0!==f.weight&&(g.godRaysMaterial.uniforms.weight.value=
f.weight);void 0!==f.clampMax&&(g.godRaysMaterial.uniforms.clampMax.value=f.clampMax);g.samples=f.samples;g.combineMaterial=new Kb(void 0!==f.screenMode?f.screenMode:!0);g.intensity=f.intensity;return g}m(a,e);l(a,[{key:"render",value:function(b,a,c){var d=this.quad,e=this.scene,g=this.camera,p=this.mainScene,h=this.lightSource,k=this.screenPosition,l=this.godRaysMaterial,m=this.combineMaterial,n=this.renderTargetMask,r=this.renderTargetX,q=this.renderTargetY;k.copy(h.position).project(this.mainCamera);
k.x=Math.max(0,Math.min(1,.5*(k.x+1)));k.y=Math.max(0,Math.min(1,.5*(k.y+1)));var t=h.parent;k=p.background;p.background=null;this.lightScene.add(h);this.renderPassLight.render(b,n);this.renderPassMask.render(b,n);null!==t&&t.add(h);p.background=k;this.blurPass.render(b,n,r);d.material=l;l.uniforms.tDiffuse.value=r.texture;b.render(e,g,q);d.material=m;m.uniforms.texture1.value=a.texture;m.uniforms.texture2.value=q.texture;b.render(e,g,this.renderToScreen?null:c)}},{key:"initialise",value:function(b,
a){this.renderPassLight.initialise(b,a);this.renderPassMask.initialise(b,a);this.blurPass.initialise(b,a);a||(this.renderTargetMask.texture.format=c.RGBFormat,this.renderTargetX.texture.format=c.RGBFormat,this.renderTargetY.texture.format=c.RGBFormat)}},{key:"setSize",value:function(b,a){this.renderPassLight.setSize(b,a);this.renderPassMask.setSize(b,a);this.blurPass.setSize(b,a);b=this.blurPass.width;a=this.blurPass.height;this.renderTargetMask.setSize(b,a);this.renderTargetX.setSize(b,a);this.renderTargetY.setSize(b,
a)}},{key:"resolutionScale",get:function(){return this.blurPass.resolutionScale},set:function(){this.blurPass.resolutionScale=0<arguments.length&&void 0!==arguments[0]?arguments[0]:.5}},{key:"kernelSize",get:function(){return this.blurPass.kernelSize},set:function(){this.blurPass.kernelSize=0<arguments.length&&void 0!==arguments[0]?arguments[0]:N.LARGE}},{key:"intensity",get:function(){return this.combineMaterial.uniforms.opacity2.value},set:function(){this.combineMaterial.uniforms.opacity2.value=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:1}},{key:"samples",get:function(){return Number.parseInt(this.godRaysMaterial.defines.NUM_SAMPLES_INT)},set:function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:60,b=Math.floor(b);this.godRaysMaterial.defines.NUM_SAMPLES_FLOAT=b.toFixed(1);this.godRaysMaterial.defines.NUM_SAMPLES_INT=b.toFixed(0);this.godRaysMaterial.needsUpdate=!0}}]);return a})(w);var fd=function(c){function a(b,c){h(this,a);b=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,
b,c,null));b.name="MaskPass";b.inverse=!1;b.clearStencil=!0;return b}m(a,c);l(a,[{key:"render",value:function(b,a,c){var d=b.context,e=b.state,g=this.scene,p=this.camera,h=this.inverse?0:1,k=1-h;e.buffers.color.setMask(!1);e.buffers.depth.setMask(!1);e.buffers.color.setLocked(!0);e.buffers.depth.setLocked(!0);e.buffers.stencil.setTest(!0);e.buffers.stencil.setOp(d.REPLACE,d.REPLACE,d.REPLACE);e.buffers.stencil.setFunc(d.ALWAYS,h,4294967295);e.buffers.stencil.setClear(k);this.clearStencil&&(b.setRenderTarget(a),
b.clearStencil(),b.setRenderTarget(c),b.clearStencil());b.render(g,p,a);b.render(g,p,c);e.buffers.color.setLocked(!1);e.buffers.depth.setLocked(!1);e.buffers.stencil.setFunc(d.EQUAL,1,4294967295);e.buffers.stencil.setOp(d.KEEP,d.KEEP,d.KEEP)}}]);return a}(w);(function(c){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:30;h(this,a);var c=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));c.name="PixelationPass";c.needsSwap=!0;c.pixelationMaterial=new Yc;c.granularity=
b;c.quad.material=c.pixelationMaterial;return c}m(a,c);l(a,[{key:"render",value:function(b,a,c){this.pixelationMaterial.uniforms.tDiffuse.value=a.texture;b.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"setSize",value:function(a,c){this.pixelationMaterial.setResolution(a,c)}},{key:"granularity",get:function(){return this.pixelationMaterial.granularity},set:function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:30,a=Math.floor(a);0<a%2&&(a+=1);this.pixelationMaterial.granularity=
a}}]);return a})(w);(function(e){function a(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;h(this,a);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));e.name="SavePass";e.material=new H;e.quad.material=e.material;e.renderTarget=void 0!==b?b:new c.WebGLRenderTarget(1,1,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,stencilBuffer:!1,depthBuffer:!1});e.renderTarget.texture.name="Save.Target";e.renderTarget.texture.generateMipmaps=!1;e.resize=d;return e}m(a,e);l(a,
[{key:"render",value:function(a,c){this.material.uniforms.tDiffuse.value=c.texture;a.render(this.scene,this.camera,this.renderTarget)}},{key:"initialise",value:function(a,d){d||(this.renderTarget.texture.format=c.RGBFormat)}},{key:"setSize",value:function(a,c){this.resize&&(a=Math.max(1,a),c=Math.max(1,c),this.renderTarget.setSize(a,c))}}]);return a})(w);var Ob=function(c){function a(b){var c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"tDiffuse";h(this,a);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));
e.name="ShaderPass";e.needsSwap=!0;e.material=b;e.quad.material=e.material;e.textureID=c;return e}m(a,c);l(a,[{key:"render",value:function(a,c,e){void 0!==this.material.uniforms[this.textureID]&&(this.material.uniforms[this.textureID].value=c.texture);a.render(this.scene,this.camera,this.renderToScreen?null:e)}}]);return a}(w),gd=.5*Math.PI,Pb=new c.Vector3,Qb=new c.Vector3;(function(e){function a(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new c.Vector3,e=2<arguments.length&&
void 0!==arguments[2]?arguments[2]:{};h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));f.name="ShockWavePass";f.needsSwap=!0;f.mainCamera=b;f.epicenter=d;f.screenPosition=new c.Vector3;f.speed=void 0!==e.speed?e.speed:2;f.time=0;f.active=!1;f.shockWaveMaterial=new Zc(e);f.shockWaveMaterial.uniforms.center.value=f.screenPosition;f.copyMaterial=new H;return f}m(a,e);l(a,[{key:"explode",value:function(){this.time=0;this.active=!0}},{key:"render",value:function(a,c,e,f){var b=
this.epicenter,d=this.mainCamera,g=this.screenPosition,p=this.shockWaveMaterial,h=p.uniforms,k=h.center,l=h.radius,m=h.maxRadius,n=h.waveSize;this.copyMaterial.uniforms.tDiffuse.value=c.texture;this.quad.material=this.copyMaterial;this.active&&(d.getWorldDirection(Pb),Qb.copy(d.position).sub(b),Pb.angleTo(Qb)>gd&&(h.cameraDistance.value=d.position.distanceTo(b),g.copy(b).project(d),k.value.x=.5*(g.x+1),k.value.y=.5*(g.y+1),h.tDiffuse.value=c.texture,this.quad.material=p),this.time+=f,l.value=this.time*
this.speed-n.value,l.value>=2*(m.value+n.value)&&(this.active=!1));a.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(a,c){this.shockWaveMaterial.uniforms.aspect.value=a/c}}]);return a})(w);(function(e){function a(b){h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));d.name="SMAAPass";d.needsSwap=!0;d.renderTargetColorEdges=new c.WebGLRenderTarget(1,1,{minFilter:c.LinearFilter,format:c.RGBFormat,stencilBuffer:!1,depthBuffer:!1});d.renderTargetColorEdges.texture.name=
"SMAA.ColorEdges";d.renderTargetColorEdges.texture.generateMipmaps=!1;d.renderTargetWeights=d.renderTargetColorEdges.clone();d.renderTargetWeights.texture.name="SMAA.Weights";d.renderTargetWeights.texture.format=c.RGBAFormat;d.colorEdgesMaterial=new ad;d.weightsMaterial=new bd;var e=new b;e.src=d.weightsMaterial.areaImage;var f=new c.Texture;f.image=e;f.name="SMAA.Area";f.minFilter=c.LinearFilter;f.format=c.RGBFormat;f.generateMipmaps=!1;f.needsUpdate=!0;f.flipY=!1;b=new b;b.src=d.weightsMaterial.searchImage;
e=new c.Texture;e.image=b;e.name="SMAA.Search";e.magFilter=c.NearestFilter;e.minFilter=c.NearestFilter;e.generateMipmaps=!1;e.needsUpdate=!0;e.flipY=!1;d.weightsMaterial.uniforms.tDiffuse.value=d.renderTargetColorEdges.texture;d.weightsMaterial.uniforms.tArea.value=f;d.weightsMaterial.uniforms.tSearch.value=e;d.blendMaterial=new $c;d.blendMaterial.uniforms.tWeights.value=d.renderTargetWeights.texture;d.quad.material=d.blendMaterial;return d}m(a,e);l(a,[{key:"render",value:function(a,c,e){this.quad.material=
this.colorEdgesMaterial;this.colorEdgesMaterial.uniforms.tDiffuse.value=c.texture;a.render(this.scene,this.camera,this.renderTargetColorEdges,!0);this.quad.material=this.weightsMaterial;a.render(this.scene,this.camera,this.renderTargetWeights,!1);this.quad.material=this.blendMaterial;this.blendMaterial.uniforms.tDiffuse.value=c.texture;a.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"setSize",value:function(a,c){this.renderTargetColorEdges.setSize(a,c);this.renderTargetWeights.setSize(a,
c);this.colorEdgesMaterial.uniforms.texelSize.value.copy(this.weightsMaterial.uniforms.texelSize.value.copy(this.blendMaterial.uniforms.texelSize.value.set(1/a,1/c)))}}]);return a})(w);(function(e){function a(b){var d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;h(this,a);var e=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));e.name="TexturePass";e.copyMaterial=new H;e.copyMaterial.blending=c.AdditiveBlending;e.copyMaterial.transparent=!0;e.texture=b;e.opacity=d;e.quad.material=
e.copyMaterial;return e}m(a,e);l(a,[{key:"render",value:function(a,c){a.render(this.scene,this.camera,this.renderToScreen?null:c)}},{key:"texture",get:function(){return this.copyMaterial.uniforms.tDiffuse.value},set:function(a){this.copyMaterial.uniforms.tDiffuse.value=a}},{key:"opacity",get:function(){return this.copyMaterial.uniforms.opacity.value},set:function(){this.copyMaterial.uniforms.opacity.value=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1}}]);return a})(w);(function(e){function a(){var b=
0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));d.name="ToneMappingPass";d.needsSwap=!0;d.renderTargetLuminosity=new c.WebGLRenderTarget(1,1,{minFilter:c.LinearMipMapLinearFilter,magFilter:c.LinearFilter,format:c.RGBFormat,stencilBuffer:!1,depthBuffer:!1});d.renderTargetLuminosity.texture.name="ToneMapping.Luminosity";d.renderTargetAdapted=d.renderTargetLuminosity.clone();d.renderTargetAdapted.texture.name="ToneMapping.AdaptedLuminosity";
d.renderTargetAdapted.texture.generateMipmaps=!1;d.renderTargetAdapted.texture.minFilter=c.LinearFilter;d.renderTargetPrevious=d.renderTargetAdapted.clone();d.renderTargetPrevious.texture.name="ToneMapping.PreviousLuminosity";d.copyMaterial=new H;d.luminosityMaterial=new Lb;d.luminosityMaterial.uniforms.distinction.value=void 0!==b.distinction?b.distinction:1;d.adaptiveLuminosityMaterial=new Oc;d.resolution=b.resolution;d.toneMappingMaterial=new cd;d.adaptive=b.adaptive;return d}m(a,e);l(a,[{key:"render",
value:function(a,c,e,f){var b=this.quad,d=this.scene,g=this.camera,h=this.adaptiveLuminosityMaterial,p=this.luminosityMaterial,k=this.toneMappingMaterial,l=this.copyMaterial,m=this.renderTargetPrevious,n=this.renderTargetLuminosity,r=this.renderTargetAdapted;this.adaptive&&(b.material=p,p.uniforms.tDiffuse.value=c.texture,a.render(d,g,n),b.material=h,h.uniforms.delta.value=f,h.uniforms.tPreviousLum.value=m.texture,h.uniforms.tCurrentLum.value=n.texture,a.render(d,g,r),b.material=l,l.uniforms.tDiffuse.value=
r.texture,a.render(d,g,m));b.material=k;k.uniforms.tDiffuse.value=c.texture;a.render(this.scene,this.camera,this.renderToScreen?null:e)}},{key:"initialise",value:function(a){this.quad.material=new c.MeshBasicMaterial({color:8388607});a.render(this.scene,this.camera,this.renderTargetPrevious);this.quad.material.dispose()}},{key:"resolution",get:function(){return this.renderTargetLuminosity.width},set:function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:256,a=Math.pow(2,Math.max(0,
Math.ceil(Math.log2(a))));this.renderTargetLuminosity.setSize(a,a);this.renderTargetPrevious.setSize(a,a);this.renderTargetAdapted.setSize(a,a);this.adaptiveLuminosityMaterial.defines.MIP_LEVEL_1X1=(Math.round(Math.log(a))/Math.log(2)).toFixed(1);this.adaptiveLuminosityMaterial.needsUpdate=!0}},{key:"adaptive",get:function(){return void 0!==this.toneMappingMaterial.defines.ADAPTED_LUMINANCE},set:function(){(0<arguments.length&&void 0!==arguments[0]?arguments[0]:1)?(this.toneMappingMaterial.defines.ADAPTED_LUMINANCE=
"1",this.toneMappingMaterial.uniforms.luminanceMap.value=this.renderTargetAdapted.texture):(delete this.toneMappingMaterial.defines.ADAPTED_LUMINANCE,this.toneMappingMaterial.uniforms.luminanceMap.value=null);this.toneMappingMaterial.needsUpdate=!0}}]);return a})(w);var hd=function(){function e(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};h(this,e);this.renderer=a;this.writeBuffer=this.readBuffer=null;null!==this.renderer&&
(this.renderer.autoClear=!1,this.readBuffer=this.createBuffer(void 0!==b.depthBuffer?b.depthBuffer:!0,void 0!==b.stencilBuffer?b.stencilBuffer:!1,void 0!==b.depthTexture?b.depthTexture:!1),this.writeBuffer=this.readBuffer.clone());this.copyPass=new Ob(new H);this.passes=[]}l(e,[{key:"replaceRenderer",value:function(a){var b=this.renderer;if(null!==b&&b!==a){this.renderer=a;this.renderer.autoClear=!1;var c=b.domElement.parentNode;var e=b.getSize();var f=a.getSize();null!==c&&(c.removeChild(b.domElement),
c.appendChild(a.domElement));e.width===f.width&&e.height===f.height||this.setSize()}return b}},{key:"createBuffer",value:function(a,b,d){var e=this.renderer.getSize(),f=this.renderer.getPixelRatio(),g=this.renderer.context.getContextAttributes().alpha;a=new c.WebGLRenderTarget(e.width*f,e.height*f,{minFilter:c.LinearFilter,magFilter:c.LinearFilter,format:g?c.RGBAFormat:c.RGBFormat,depthBuffer:a,stencilBuffer:b,depthTexture:d?new c.DepthTexture:null});d&&b&&(a.depthTexture.format=c.DepthStencilFormat,
a.depthTexture.type=c.UnsignedInt248Type);a.texture.name="EffectComposer.Buffer";a.texture.generateMipmaps=!1;return a}},{key:"addPass",value:function(a,b){var c=this.renderer,e=c.getSize(),f=c.getPixelRatio();a.setSize(e.width*f,e.height*f);a.initialise(c,c.context.getContextAttributes().alpha);void 0!==b?this.passes.splice(b,0,a):this.passes.push(a)}},{key:"removePass",value:function(a){this.passes.splice(this.passes.indexOf(a),1)}},{key:"render",value:function(a){var b=this.passes,c=this.renderer,
e=this.copyPass,f=this.readBuffer,g=this.writeBuffer,h=!1,k;var l=0;for(k=b.length;l<k;++l){var m=b[l];if(m.enabled){m.render(c,f,g,a,h);if(m.needsSwap){if(h){var n=c.context;n.stencilFunc(n.NOTEQUAL,1,4294967295);e.render(c,f,g);n.stencilFunc(n.EQUAL,1,4294967295)}n=f;f=g;g=n}m instanceof fd?h=!0:m instanceof ed&&(h=!1)}}}},{key:"setSize",value:function(a,b){var c=this.passes,e=this.renderer.getSize(),f=this.renderer.getPixelRatio();if(void 0===a||void 0===b)a=e.width,b=e.height;this.renderer.setSize(a,
b);a*=f;b*=f;this.readBuffer.setSize(a,b);this.writeBuffer.setSize(a,b);e=0;for(f=c.length;e<f;++e)c[e].setSize(a,b)}},{key:"reset",value:function(a){var b=this.readBuffer.depthBuffer,c=this.readBuffer.stencilBuffer,e=null!==this.readBuffer.depthTexture;this.dispose(void 0===a?this.createBuffer(b,c,e):a)}},{key:"dispose",value:function(a){var b=this.passes;null!==this.readBuffer&&null!==this.writeBuffer&&(this.readBuffer.dispose(),this.writeBuffer.dispose(),this.writeBuffer=this.readBuffer=null);
for(;0<b.length;)b.pop().dispose();void 0!==a?(this.readBuffer=a,this.writeBuffer=this.readBuffer.clone()):this.copyPass.dispose()}},{key:"depthTexture",get:function(){return this.readBuffer.depthTexture},set:function(a){this.readBuffer.depthTexture=a;this.writeBuffer.depthTexture=a}}]);return e}(),Rb,Sb,Tb=function(c,a){c[a]||((2<arguments.length&&void 0!==arguments[2]?arguments[2]:1)&&console.warn("@PostProcessorModule: pass."+a+"() was not found.",c),c[a]=function(){})},id=(Sb=Rb=function(){function c(){var a=
this,b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:c.defaults;h(this,c);this.currentPass=null;this.defer=new Promise(function(b){a.resolve=b});this.debug=b.debug;this.params=b}l(c,[{key:"manager",value:function(a){var b=this;a.define("postprocessor");this.effects=a.use("rendering").effects;this.renderer=a.get("renderer");this.scene=a.get("scene");this.camera=a.get("camera");this.composer=new hd(this.renderer,this.params);a.use("rendering").stop();var c=this.composer;this.renderLoop=(new G(function(a){return c.render(a.getDelta())})).start(a.handler);
a.update({renderer:function(a){b.composer.replaceRenderer(a)},scene:function(a){b.scene=a},camera:function(a){b.camera=a}});this.resolve()}},{key:"render",value:function(){var a=this;this.defer.then(function(){var b=new ra(a.scene,a.camera.native);a.composer.addPass(b);a.currentPass=b});return this}},{key:"pass",value:function(a){var b=this;this.defer.then(function(){Tb(a,"setSize",b.debug);Tb(a,"initialise",b.debug);b.composer.addPass(a);b.currentPass=a});return this}},{key:"shader",value:function(a){var b=
this,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"readBuffer";this.defer.then(function(){a.uniforms[c]||(a.uniforms[c]={value:null});var d=new Ob(a,c);b.composer.addPass(d);b.currentPass=d});return this}},{key:"get",value:function(a){return a?this.composer.passes.filter(function(b){return b.name===a})[0]:this.currentPass}},{key:"renderToScreen",value:function(){var a=this,b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:!0;this.defer.then(function(){a.currentPass.renderToScreen=
b});return this}}]);return c}(),Rb.defaults={debug:!0},Sb),sa=function(){function c(){h(this,c)}l(c,[{key:"manager",value:function(a){a.define("events");this.element=a.get("renderer").domElement}},{key:"patchEvents",value:function(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:this;(2<arguments.length&&void 0!==arguments[2]?arguments[2]:[]).forEach(function(c){return a.addEventListener(c,function(a){return b.emit(c,a)})})}},{key:"integrate",value:function(a){var b=a.patchEvents;b(a.element,
this,"mousemove mouseup contextmenu mousedown click wheel touchstart touchend touchmove keydown keyup keypress".split(" "))}}]);return c}(),jd=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:!1;h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));d.mouse=new c.Vector2;d.raycaster=new c.Raycaster;d.world=null;d.canvas=null;d.projectionPlane=new c.Plane(new c.Vector3(0,0,1),0);d.globalMovement=b;return d}m(a,e);l(a,[{key:"update",value:function(a,
c,e){var b=this.canvas.getBoundingClientRect();e=e||a.clientY;this.mouse.x=((c||a.clientX)-b.left)/(b.right-b.left)*2-1;this.mouse.y=2*-((e-b.top)/(b.bottom-b.top))+1;this.projectionPlane.normal.copy(this.camera.getWorldDirection());this.raycaster.setFromCamera(this.mouse,this.camera);this.emit("move")}},{key:"manager",value:function(a){a.define("mouse");a.require("events",function(){return new sa});this.canvas=a.get("renderer").domElement;this.camera=a.get("camera").native}},{key:"integrate",value:function(a){var b=
this;["click","mousedown","mouseup","mousemove"].forEach(function(c){return b.on(c,function(b){return a.emit(c,b)})});a.globalX=0;a.globalY=0;this.on("mousemove",function(b){null!==document.pointerLockElement?(a.globalX+=b.movementX,a.globalY+=b.movementY,a.update(b,a.globalX,a.globalY)):a.update(b)})}},{key:"track",value:function(a){var b=this,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0,e=!1;this.on("move",function(){b.hovers(a,c)?e?a.emit("mousemove"):(a.emit("mouseover"),e=!0):
e&&(a.emit("mouseout"),e=!1)});this.on("click",function(){e?a.emit("click"):a.emit("offClick")});this.on("mousedown",function(){e&&a.emit("mousedown")});this.on("mouseup",function(){e&&a.emit("mouseup")})}},{key:"intersection",value:function(a){var b=a.native,c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0;if(0<b.children.length&&c){var e=[];b.traverse(function(a){return e.push(a)});return this.raycaster.intersectObjects(e)}return this.raycaster.intersectObject(b)}},{key:"project",value:function(){return this.raycaster.ray.intersectPlane(0<
arguments.length&&void 0!==arguments[0]?arguments[0]:this.projectionPlane,arguments[1])}},{key:"hovers",value:function(a){return 0<this.intersection(a,1<arguments.length&&void 0!==arguments[1]?arguments[1]:!0).length}},{key:"ray",get:function(){return this.raycaster.ray}},{key:"x",get:function(){return this.mouse.x}},{key:"y",get:function(){return this.mouse.y}}]);return a}(E),Ub=function(){function c(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,c);this.params=Object.assign({controls:!1,
fix:function(a){return a},update:function(a){this.controls.update(a.getDelta())}},a);this.controls=this.params.controls;this.update=this.params.update}l(c,null,[{key:"from",value:function(a){return new c({controls:a})}}]);l(c,[{key:"manager",value:function(a){a.define("controls");a.require("events",function(){return new sa})}},{key:"setControls",value:function(a){this.controls=a;return this}},{key:"setUpdate",value:function(a){this.update=a;return this}},{key:"integrate",value:function(a){a.updateLoop=
new G(a.update.bind(a));a.updateLoop.start(this)}}]);return c}(),kd=function(){function e(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},b=arguments[1];h(this,e);this.params=Object.assign({color:15716789,density:.02,near:10,far:1E3},a);b&&"exp2"!==b?"linear"===b&&(this.fog=new c.Fog(this.params.color,this.params.near,this.params.far)):this.fog=new c.FogExp2(this.params.color,this.params.density)}l(e,[{key:"manager",value:function(a){a.set("fog",this.fog);a.get("scene").fog=this.fog}}]);
return e}(),ld=function(c,a){return c===a||c&&c.equals&&c.equals(a)?!0:!1},md=function(){function c(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:ld;h(this,c);this.store=t(c.actionGenerate(a));this.configuration={};this.prevConfig=this.currentConfig="default"}l(c,null,[{key:"actionGenerate",value:function(a){return function(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[{},""],c=arguments[1],e=c.key,c=c.data;if(a(b[0][e],c))return b;b[0][e]=c;b[1]=e;return b}}}]);
l(c,[{key:"default",value:function(a){this.config({default:a});return this}},{key:"setEqualCheck",value:function(a){this.store.replaceReducer(c.actionGenerate(a))}},{key:"manager",value:function(a){a.define("state")}},{key:"config",value:function(a){for(var b in a)b&&(this.configuration[b]="default"===b?a[b]:Object.assign({},this.configuration.default,a[b]))}},{key:"update",value:function(){var a=this,b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.store.subscribe(function(){var c=
a.store.getState(),e=za(c,2),c=e[0],e=e[1],f=b[e];f&&f(c[e])})}},{key:"to",value:function(a){this.prevConfig=this.currentConfig;this.currentConfig=a;this.set(this.configuration[a]?this.configuration[a]:this.configuration.default)}},{key:"set",value:function(a){for(var b in a)b&&this.store.dispatch({type:"ADD",key:b,data:a[b]})}},{key:"get",value:function(a){return this.store.getState()[0][a]}},{key:"prev",value:function(a,b,c){return this.prevConfig===a?b:c}},{key:"current",value:function(a,b,c){return this.currentConfig===
a?b:c}}]);return c}(),od=function(e){function a(b,d,e){h(this,a);var f=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));f.object=b;f.domElement=void 0===d?document:d;f.eventHandler=e;f.enabled=!0;f.target=new c.Vector3;f.minDistance=0;f.maxDistance=Infinity;f.minZoom=0;f.maxZoom=Infinity;f.minPolarAngle=0;f.maxPolarAngle=Math.PI;f.minAzimuthAngle=-Infinity;f.maxAzimuthAngle=Infinity;f.enableDamping=!1;f.dampingFactor=.25;f.enableZoom=!0;f.zoomSpeed=1;f.enableRotate=!0;f.rotateSpeed=1;f.enablePan=
!0;f.keyPanSpeed=7;f.autoRotate=!1;f.autoRotateSpeed=2;f.enableKeys=!0;f.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40};f.mouseButtons={ORBIT:c.MOUSE.LEFT,ZOOM:c.MOUSE.MIDDLE,PAN:c.MOUSE.RIGHT};f.target0=f.target.clone();f.position0=f.object.position.clone();f.zoom0=f.object.zoom;f.getPolarAngle=function(){return q.phi};f.getAzimuthalAngle=function(){return q.theta};f.reset=function(){f.target.copy(f.target0);f.object.position.copy(f.position0);f.object.zoom=f.zoom0;f.object.updateProjectionMatrix();f.dispatchEvent(g);
f.update();n=p.NONE};f.update=function(){var a=new c.Vector3,d=(new c.Quaternion).setFromUnitVectors(b.up,new c.Vector3(0,1,0)),e=d.clone().inverse(),h=new c.Vector3,k=new c.Quaternion;var l=f.object.position;a.copy(l).sub(f.target);a.applyQuaternion(d);q.setFromVector3(a);f.autoRotate&&n===p.NONE&&(t.theta-=2*Math.PI/60/60*f.autoRotateSpeed);q.theta+=t.theta;q.phi+=t.phi;q.theta=Math.max(f.minAzimuthAngle,Math.min(f.maxAzimuthAngle,q.theta));q.phi=Math.max(f.minPolarAngle,Math.min(f.maxPolarAngle,
q.phi));q.makeSafe();q.radius*=u;q.radius=Math.max(f.minDistance,Math.min(f.maxDistance,q.radius));f.target.add(v);a.setFromSpherical(q);a.applyQuaternion(e);l.copy(f.target).add(a);f.object.lookAt(f.target);!0===f.enableDamping?(t.theta*=1-f.dampingFactor,t.phi*=1-f.dampingFactor):t.set(0,0,0);u=1;v.set(0,0,0);w||h.distanceToSquared(f.object.position)>r||8*(1-k.dot(f.object.quaternion))>r?(f.dispatchEvent(g),h.copy(f.object.position),k.copy(f.object.quaternion),w=!1,a=!0):a=!1;return a};f.dispose=
function(){f.domElement.removeEventListener("contextmenu",T,!1);f.domElement.removeEventListener("mousedown",M,!1);f.domElement.removeEventListener("wheel",O,!1);f.domElement.removeEventListener("touchstart",Q,!1);f.domElement.removeEventListener("touchend",S,!1);f.domElement.removeEventListener("touchmove",R,!1);document.removeEventListener("mousemove",L,!1);document.removeEventListener("mouseup",N,!1);window.removeEventListener("keydown",P,!1)};var g={type:"change"},l={type:"start"},m={type:"end"},
p={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},n=p.NONE,r=1E-6,q=new c.Spherical,t=new c.Spherical,u=1,v=new c.Vector3,w=!1,x=new c.Vector2,y=new c.Vector2,A=new c.Vector2,B=new c.Vector2,C=new c.Vector2,D=new c.Vector2,E=new c.Vector2,F=new c.Vector2,G=new c.Vector2,U=function(){return Math.pow(.95,f.zoomSpeed)},J=function(){var a=new c.Vector3;return function(b,c){a.setFromMatrixColumn(c,0);a.multiplyScalar(-b);v.add(a)}}(),K=function(){var a=new c.Vector3;return function(b,
c){a.setFromMatrixColumn(c,1);a.multiplyScalar(b);v.add(a)}}(),V=function(){var a=new c.Vector3;return function(b,d){var e=f.domElement===document?f.domElement.body:f.domElement;if(f.object instanceof c.PerspectiveCamera){a.copy(f.object.position).sub(f.target);var g=a.length(),g=g*Math.tan(f.object.fov/2*Math.PI/180);J(2*b*g/e.clientHeight,f.object.matrix);K(2*d*g/e.clientHeight,f.object.matrix)}else f.object instanceof c.OrthographicCamera?(J(b*(f.object.right-f.object.left)/f.object.zoom/e.clientWidth,
f.object.matrix),K(d*(f.object.top-f.object.bottom)/f.object.zoom/e.clientHeight,f.object.matrix)):(console.warn("WARNING: OrbitControlsModule.js encountered an unknown camera type - pan disabled."),f.enablePan=!1)}}(),H=function(a){f.object instanceof c.PerspectiveCamera?u/=a:f.object instanceof c.OrthographicCamera?(f.object.zoom=Math.max(f.minZoom,Math.min(f.maxZoom,f.object.zoom*a)),f.object.updateProjectionMatrix(),w=!0):(console.warn("WARNING: OrbitControlsModule.js encountered an unknown camera type - dolly/zoom disabled."),
f.enableZoom=!1)},I=function(a){f.object instanceof c.PerspectiveCamera?u*=a:f.object instanceof c.OrthographicCamera?(f.object.zoom=Math.max(f.minZoom,Math.min(f.maxZoom,f.object.zoom/a)),f.object.updateProjectionMatrix(),w=!0):(console.warn("WARNING: OrbitControlsModule.js encountered an unknown camera type - dolly/zoom disabled."),f.enableZoom=!1)},M=function(a){if(!1!==f.enabled){a.preventDefault();if(a.button===f.mouseButtons.ORBIT){if(!1===f.enableRotate)return;x.set(a.clientX,a.clientY);n=
p.ROTATE}else if(a.button===f.mouseButtons.ZOOM){if(!1===f.enableZoom)return;E.set(a.clientX,a.clientY);n=p.DOLLY}else if(a.button===f.mouseButtons.PAN){if(!1===f.enablePan)return;B.set(a.clientX,a.clientY);n=p.PAN}n!==p.NONE&&(f.eventHandler.on("mousemove",L,!1),f.eventHandler.on("mouseup",N,!1),f.dispatchEvent(l))}},L=function(a){!1!==f.enabled&&(a.preventDefault(),n===p.ROTATE?!1!==f.enableRotate&&(y.set(a.clientX,a.clientY),A.subVectors(y,x),a=f.domElement===document?f.domElement.body:f.domElement,
t.theta-=2*Math.PI*A.x/a.clientWidth*f.rotateSpeed,t.phi-=2*Math.PI*A.y/a.clientHeight*f.rotateSpeed,x.copy(y),f.update()):n===p.DOLLY?!1!==f.enableZoom&&(F.set(a.clientX,a.clientY),G.subVectors(F,E),0<G.y?H(U()):0>G.y&&I(U()),E.copy(F),f.update()):n===p.PAN&&!1!==f.enablePan&&(C.set(a.clientX,a.clientY),D.subVectors(C,B),V(D.x,D.y),B.copy(C),f.update()))},N=function nd(a){!1!==f.enabled&&(document.removeEventListener("mousemove",L,!1),document.removeEventListener("mouseup",nd,!1),f.dispatchEvent(m),
n=p.NONE)},O=function(a){!1===f.enabled||!1===f.enableZoom||n!==p.NONE&&n!==p.ROTATE||(a.preventDefault(),a.stopPropagation(),0>a.deltaY?I(U()):0<a.deltaY&&H(U()),f.update(),f.dispatchEvent(l),f.dispatchEvent(m))},P=function(a){if(!1!==f.enabled&&!1!==f.enableKeys&&!1!==f.enablePan)switch(a.keyCode){case f.keys.UP:V(0,f.keyPanSpeed);f.update();break;case f.keys.BOTTOM:V(0,-f.keyPanSpeed);f.update();break;case f.keys.LEFT:V(f.keyPanSpeed,0);f.update();break;case f.keys.RIGHT:V(-f.keyPanSpeed,0),f.update()}},
Q=function(a){if(!1!==f.enabled){switch(a.touches.length){case 1:if(!1===f.enableRotate)return;x.set(a.touches[0].pageX,a.touches[0].pageY);n=p.TOUCH_ROTATE;break;case 2:if(!1===f.enableZoom)return;var b=a.touches[0].pageX-a.touches[1].pageX;a=a.touches[0].pageY-a.touches[1].pageY;E.set(0,Math.sqrt(b*b+a*a));n=p.TOUCH_DOLLY;break;case 3:if(!1===f.enablePan)return;B.set(a.touches[0].pageX,a.touches[0].pageY);n=p.TOUCH_PAN;break;default:n=p.NONE}n!==p.NONE&&f.dispatchEvent(l)}},R=function(a){if(!1!==
f.enabled)switch(a.preventDefault(),a.stopPropagation(),a.touches.length){case 1:if(!1===f.enableRotate)break;if(n!==p.TOUCH_ROTATE)break;y.set(a.touches[0].pageX,a.touches[0].pageY);A.subVectors(y,x);var b=f.domElement===document?f.domElement.body:f.domElement;t.theta-=2*Math.PI*A.x/b.clientWidth*f.rotateSpeed;t.phi-=2*Math.PI*A.y/b.clientHeight*f.rotateSpeed;x.copy(y);f.update();break;case 2:if(!1===f.enableZoom)break;if(n!==p.TOUCH_DOLLY)break;b=a.touches[0].pageX-a.touches[1].pageX;a=a.touches[0].pageY-
a.touches[1].pageY;F.set(0,Math.sqrt(b*b+a*a));G.subVectors(F,E);0<G.y?I(U()):0>G.y&&H(U());E.copy(F);f.update();break;case 3:if(!1===f.enablePan)break;if(n!==p.TOUCH_PAN)break;C.set(a.touches[0].pageX,a.touches[0].pageY);D.subVectors(C,B);V(D.x,D.y);B.copy(C);f.update();break;default:n=p.NONE}},S=function(a){!1!==f.enabled&&(f.dispatchEvent(m),n=p.NONE)},T=function(a){a.preventDefault()};f.eventHandler.on("contextmenu",T,!1);f.eventHandler.on("mousedown",M,!1);f.eventHandler.on("wheel",O,!1);f.eventHandler.on("touchstart",
Q,!1);f.eventHandler.on("touchend",S,!1);f.eventHandler.on("touchmove",R,!1);f.eventHandler.on("keydown",P,!1);f.update();return f}m(a,e);l(a,[{key:"center",get:function(){console.warn("OrbitControls: .center has been renamed to .target");return this.target}},{key:"noZoom",get:function(){console.warn("OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.");return!this.enableZoom},set:function(a){console.warn("OrbitControls: .noZoom has been deprecated. Use .enableZoom instead.");this.enableZoom=
!a}},{key:"noRotate",get:function(){console.warn("OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.");return!this.enableRotate},set:function(a){console.warn("OrbitControls: .noRotate has been deprecated. Use .enableRotate instead.");this.enableRotate=!a}},{key:"noPan",get:function(){console.warn("OrbitControls: .noPan has been deprecated. Use .enablePan instead.");return!this.enablePan},set:function(a){console.warn("OrbitControls: .noPan has been deprecated. Use .enablePan instead.");
this.enablePan=!a}},{key:"noKeys",get:function(){console.warn("OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.");return!this.enableKeys},set:function(a){console.warn("OrbitControls: .noKeys has been deprecated. Use .enableKeys instead.");this.enableKeys=!a}},{key:"staticMoving",get:function(){console.warn("OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.");return!this.enableDamping},set:function(a){console.warn("OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead.");
this.enableDamping=!a}},{key:"dynamicDampingFactor",get:function(){console.warn("OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.");return this.dampingFactor},set:function(a){console.warn("OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead.");this.dampingFactor=a}}]);return a}(c.EventDispatcher),pd=function(e){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,a);var d=k(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,
b));d.params=Object.assign({follow:!1,object:null,target:new c.Vector3},b);return d}m(a,e);l(a,[{key:"manager",value:function(b){v(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"manager",this).call(this,b);var c=this.params,e=c.object,f=c.follow,g=c.target,c=e?e.native:b.get("camera").native,h=new od(c,b.get("element"),b.handler),f=f?function(a){h.update(a.getDelta());h.target.copy(g)}:function(a){h.update(a.getDelta())};this.setControls(h);this.setUpdate(f);b.update({camera:function(a){e||
(h.object=a.native)},element:function(a){h.domElement=a}});h.target.copy(g)}}]);return a}(Ub),qd=function(){function c(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,c);this.params=Object.assign({attributes:!1},a)}l(c,[{key:"integrate",value:function(a){var b=this;a=a.params;this.g_=function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.buildGeometry&&(this.native.geometry=this.buildGeometry(this.updateParams({geometry:a})))};if(a.attributes){a=function(a){a&&
Object.defineProperty(b,"g_"+a,{get:function(){return this.native.geometry.parameters[a]},set:function(b){this.native.geometry=this.buildGeometry(this.updateParams({geometry:Vb({},a,b)}))},configurable:!0,enumerable:!0})};for(var c in this.params.geometry)a(c)}}}]);return c}(),rd=new c.TextureLoader,sd=function(){function e(){var a=this;h(this,e);this.textures=[];this.bridge={material:function(a,b){b.textures.forEach(function(b){a[b[0]]=b[1]});return a}};for(var b=arguments.length,d=Array(b),g=0;g<
b;g++)d[g]=arguments[g];d.forEach(function(b){var d=b.url,e=b.type,e=void 0===e?"map":e,f=b.offset,f=void 0===f?new c.Vector2(0,0):f,g=b.repeat,g=void 0===g?new c.Vector2(1,1):g,h=b.wrap,h=void 0===h?c.RepeatWrapping:h,k=b.mapping,k=void 0===k?c.UVMapping:k;b=b.fix;b=void 0===b?function(a){return a}:b;d=rd.load(d);0<h.length?(d.wrapS=h[0],d.wrapT=h[1]):d.wrapS=d.wrapT=h;d.mapping=k;d.offset.copy(f);d.repeat.copy(g);d.magFilter=c.NearestFilter;d.minFilter=c.LinearMipMapLinearFilter;a.textures.push([e,
b(d)])})}l(e,null,[{key:"load",value:function(a){return(new e({url:a})).textures[0][1]}}]);return e}(),td=function(){function e(a,b){var d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};h(this,e);this.bridge={mesh:function(a,b){a.geometry.skeleton=a.skeleton;b.mixer=new c.AnimationMixer(a.geometry);b.clips=a.geometry.animations;return a}};this.params=Object.assign({speed:1},d);this.clock=new c.Clock;this.app=a;this.isDeferred=b}l(e,[{key:"play",value:function(a){a=c.AnimationClip.findByName(this.clips,
a);this.mixer.clipAction(a).play()}},{key:"update",value:function(){this.mixer&&this.mixer.update(this.clock.getDelta()*this.params.speed)}},{key:"integrate",value:function(a){a.loop=new G(function(){a.update()});a.isDeferred||a.loop.start(a.app)}},{key:"manager",value:function(a){a.define("animation")}}]);return e}(),ud=function(){function c(a,b){h(this,c);this.name=a;this.data=b}l(c,[{key:"manager",value:function(a){a.set(this.name,this.data)}}]);return c}(),vd=function(c){function a(b){var c;h(this,
a);console.warn("Model is deprecated. Use Importer instead.");b.geometry&&(b.url=b.geometry.path,b.loader=b.geometry.loader);for(var e=arguments.length,f=Array(1<e?e-1:0),g=1;g<e;g++)f[g-1]=arguments[g];return k(this,(c=a.__proto__||Object.getPrototypeOf(a)).call.apply(c,[this,b].concat(f)))}m(a,c);return a}(qb),wd=function(){function c(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};h(this,c);console.warn("CameraModule is deprecated. Use DefineModule instead.");this.camera=new fb(a)}
l(c,[{key:"integrate",value:function(a){this.add(a.camera)}},{key:"manager",value:function(a){a.set("camera",this.camera)}}]);return c}();g.Component=B;g.MeshComponent=n;g.LightComponent=y;g.CameraComponent=C;g.App=fc;g.Loop=G;g.ModuleManager=O;g.AmbientLight=gc;g.DirectionalLight=hc;g.HemisphereLight=ic;g.PointLight=jc;g.SpotLight=kc;g.AreaLight=lc;g.CubeCamera=mc;g.OrthographicCamera=nc;g.PerspectiveCamera=fb;g.Box=oc;g.Circle=pc;g.Cone=qc;g.Cylinder=rc;g.Dodecahedron=sc;g.Extrude=tc;g.Icosahedron=
uc;g.Lathe=vc;g.Line=wc;g.Importer=qb;g.Octahedron=xc;g.Parametric=yc;g.Plane=zc;g.Polyhedron=Ac;g.Ring=Bc;g.Shape=Cc;g.Sphere=Dc;g.Tetrahedron=Ec;g.Text=Fc;g.Torus=Gc;g.Torusknot=Hc;g.Tube=Ic;g.Group=Jc;g.extend=I;g.instruct=ta;g.transformData=D;g.toArray=function(c,a){for(var b=[],d=0,e=a.length;d<e;d++)b[d]=c[a[d]];return b};g.ElementModule=Kc;g.RenderingModule=Lc;g.SceneModule=Mc;g.ResizeModule=Nc;g.PostProcessorModule=id;g.VirtualMouseModule=jd;g.EventsPatchModule=sa;g.ControlsModule=Ub;g.FogModule=
kd;g.StateModule=md;g.OrbitControlsModule=pd;g.DynamicGeometryModule=qd;g.TextureModule=sd;g.AnimationModule=td;g.DefineModule=ud;g.Model=vd;g.CameraModule=wd;Object.defineProperty(g,"__esModule",{value:!0})});