|
@@ -114,84 +114,84 @@ f.__webglTexture),m(a.TEXTURE_2D,b.texture,p),v(e.__webglFramebuffer,b,a.COLOR_A
|
|
|
!b.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate=!0);r(b.depthTexture,0);e=d.get(b.depthTexture).__webglTexture;if(1026===b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.TEXTURE_2D,e,0);else if(1027===
|
|
|
b.depthTexture.format)a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_STENCIL_ATTACHMENT,a.TEXTURE_2D,e,0);else throw Error("Unknown depthTexture format");}else if(f)for(e.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer[f]),e.__webglDepthbuffer[f]=a.createRenderbuffer(),u(e.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=a.createRenderbuffer(),u(e.__webglDepthbuffer,b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};
|
|
|
this.updateRenderTargetMipmap=function(b){var e=b.texture,f=k(b);l(e,f)&&(b=b.isWebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,e=d.get(e).__webglTexture,c.bindTexture(b,e),a.generateMipmap(b),c.bindTexture(b,null))}}function jg(){var a={};return{get:function(b){b=b.uuid;var c=a[b];void 0===c&&(c={},a[b]=c);return c},remove:function(b){delete a[b.uuid]},clear:function(){a={}}}}function kg(a,b,c){function d(b,c,d){var e=new Uint8Array(4),f=a.createTexture();a.bindTexture(b,f);a.texParameteri(b,
|
|
|
-a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b<d;b++)a.texImage2D(c+b,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,e);return f}function e(b){!0!==B[b]&&(a.enable(b),B[b]=!0)}function f(b){!1!==B[b]&&(a.disable(b),B[b]=!1)}function g(b,d,g,h,l,k,n,p){0!==b?e(a.BLEND):f(a.BLEND);5===b||b===H&&p===ma||(2===b?p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE,a.ONE,a.ONE)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,a.ONE)):
|
|
|
-3===b?p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.ZERO,a.ONE_MINUS_SRC_COLOR,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR)):4===b?p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.SRC_COLOR,a.ZERO,a.SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR)):p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA)):
|
|
|
-(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA)));if(5===b){l=l||d;k=k||g;n=n||h;if(d!==S||l!==E)a.blendEquationSeparate(c(d),c(l)),S=d,E=l;if(g!==x||h!==z||k!==ha||n!==ca)a.blendFuncSeparate(c(g),c(h),c(k),c(n)),x=g,z=h,ha=k,ca=n}else ca=ha=E=z=x=S=null;H=b;ma=p}function h(b){D!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),D=b)}function k(b){0!==b?(e(a.CULL_FACE),b!==U&&(1===b?a.cullFace(a.BACK):2===b?a.cullFace(a.FRONT):
|
|
|
-a.cullFace(a.FRONT_AND_BACK))):f(a.CULL_FACE);U=b}function l(b,c,d){if(b){if(e(a.POLYGON_OFFSET_FILL),R!==c||P!==d)a.polygonOffset(c,d),R=c,P=d}else f(a.POLYGON_OFFSET_FILL)}function t(b){void 0===b&&(b=a.TEXTURE0+M-1);L!==b&&(a.activeTexture(b),L=b)}var p=new function(){var b=!1,c=new V,d=null,e=new V(0,0,0,0);return{setMask:function(c){d===c||b||(a.colorMask(c,c,c,c),d=c)},setLocked:function(a){b=a},setClear:function(b,d,f,g,h){!0===h&&(b*=g,d*=g,f*=g);c.set(b,d,f,g);!1===e.equals(c)&&(a.clearColor(b,
|
|
|
-d,f,g),e.copy(c))},reset:function(){b=!1;d=null;e.set(-1,0,0,0)}}},n=new function(){var b=!1,c=null,d=null,g=null;return{setTest:function(b){b?e(a.DEPTH_TEST):f(a.DEPTH_TEST)},setMask:function(d){c===d||b||(a.depthMask(d),c=d)},setFunc:function(b){if(d!==b){if(b)switch(b){case 0:a.depthFunc(a.NEVER);break;case 1:a.depthFunc(a.ALWAYS);break;case 2:a.depthFunc(a.LESS);break;case 3:a.depthFunc(a.LEQUAL);break;case 4:a.depthFunc(a.EQUAL);break;case 5:a.depthFunc(a.GEQUAL);break;case 6:a.depthFunc(a.GREATER);
|
|
|
-break;case 7:a.depthFunc(a.NOTEQUAL);break;default:a.depthFunc(a.LEQUAL)}else a.depthFunc(a.LEQUAL);d=b}},setLocked:function(a){b=a},setClear:function(b){g!==b&&(a.clearDepth(b),g=b)},reset:function(){b=!1;g=d=c=null}}},r=new function(){var b=!1,c=null,d=null,g=null,h=null,l=null,k=null,n=null,p=null;return{setTest:function(b){b?e(a.STENCIL_TEST):f(a.STENCIL_TEST)},setMask:function(d){c===d||b||(a.stencilMask(d),c=d)},setFunc:function(b,c,e){if(d!==b||g!==c||h!==e)a.stencilFunc(b,c,e),d=b,g=c,h=e},
|
|
|
-setOp:function(b,c,d){if(l!==b||k!==c||n!==d)a.stencilOp(b,c,d),l=b,k=c,n=d},setLocked:function(a){b=a},setClear:function(b){p!==b&&(a.clearStencil(b),p=b)},reset:function(){b=!1;p=n=k=l=h=g=d=c=null}}},m=a.getParameter(a.MAX_VERTEX_ATTRIBS),v=new Uint8Array(m),u=new Uint8Array(m),q=new Uint8Array(m),B={},G=null,y=null,H=null,S=null,x=null,z=null,E=null,ha=null,ca=null,ma=!1,D=null,U=null,J=null,R=null,P=null,F=null,M=a.getParameter(a.MAX_COMBINED_TEXTURE_IMAGE_UNITS),m=parseFloat(/^WebGL\ ([0-9])/.exec(a.getParameter(a.VERSION))[1]),
|
|
|
-I=1<=parseFloat(m),L=null,N={},K=new V,O=new V,Q={};Q[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);Q[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);p.setClear(0,0,0,1);n.setClear(1);r.setClear(0);e(a.DEPTH_TEST);n.setFunc(3);h(!1);k(1);e(a.CULL_FACE);e(a.BLEND);g(1);return{buffers:{color:p,depth:n,stencil:r},initAttributes:function(){for(var a=0,b=v.length;a<b;a++)v[a]=0},enableAttribute:function(c){v[c]=1;0===u[c]&&(a.enableVertexAttribArray(c),u[c]=1);0!==q[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,
|
|
|
-0),q[c]=0)},enableAttributeAndDivisor:function(c,d){v[c]=1;0===u[c]&&(a.enableVertexAttribArray(c),u[c]=1);q[c]!==d&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,d),q[c]=d)},disableUnusedAttributes:function(){for(var b=0,c=u.length;b!==c;++b)u[b]!==v[b]&&(a.disableVertexAttribArray(b),u[b]=0)},enable:e,disable:f,getCompressedTextureFormats:function(){if(null===G&&(G=[],b.get("WEBGL_compressed_texture_pvrtc")||b.get("WEBGL_compressed_texture_s3tc")||b.get("WEBGL_compressed_texture_etc1")))for(var c=
|
|
|
-a.getParameter(a.COMPRESSED_TEXTURE_FORMATS),d=0;d<c.length;d++)G.push(c[d]);return G},useProgram:function(b){return y!==b?(a.useProgram(b),y=b,!0):!1},setBlending:g,setMaterial:function(b){2===b.side?f(a.CULL_FACE):e(a.CULL_FACE);h(1===b.side);!0===b.transparent?g(b.blending,b.blendEquation,b.blendSrc,b.blendDst,b.blendEquationAlpha,b.blendSrcAlpha,b.blendDstAlpha,b.premultipliedAlpha):g(0);n.setFunc(b.depthFunc);n.setTest(b.depthTest);n.setMask(b.depthWrite);p.setMask(b.colorWrite);l(b.polygonOffset,
|
|
|
-b.polygonOffsetFactor,b.polygonOffsetUnits)},setFlipSided:h,setCullFace:k,setLineWidth:function(b){b!==J&&(I&&a.lineWidth(b),J=b)},setPolygonOffset:l,getScissorTest:function(){return F},setScissorTest:function(b){(F=b)?e(a.SCISSOR_TEST):f(a.SCISSOR_TEST)},activeTexture:t,bindTexture:function(b,c){null===L&&t();var d=N[L];void 0===d&&(d={type:void 0,texture:void 0},N[L]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||Q[b]),d.type=b,d.texture=c},compressedTexImage2D:function(){try{a.compressedTexImage2D.apply(a,
|
|
|
-arguments)}catch(Yd){console.error("THREE.WebGLState:",Yd)}},texImage2D:function(){try{a.texImage2D.apply(a,arguments)}catch(Yd){console.error("THREE.WebGLState:",Yd)}},scissor:function(b){!1===K.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),K.copy(b))},viewport:function(b){!1===O.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),O.copy(b))},reset:function(){for(var b=0;b<u.length;b++)1===u[b]&&(a.disableVertexAttribArray(b),u[b]=0);B={};L=G=null;N={};U=D=H=y=null;p.reset();n.reset();r.reset()}}}function lg(a,b,c){function d(b){if("highp"===
|
|
|
-b){if(0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.HIGH_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.HIGH_FLOAT).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.MEDIUM_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT).precision?"mediump":"lowp"}var e,f=void 0!==c.precision?c.precision:"highp",g=d(f);g!==f&&(console.warn("THREE.WebGLRenderer:",f,"not supported, using",g,"instead."),f=g);c=
|
|
|
-!0===c.logarithmicDepthBuffer&&!!b.get("EXT_frag_depth");var g=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),h=a.getParameter(a.MAX_VERTEX_TEXTURE_IMAGE_UNITS),k=a.getParameter(a.MAX_TEXTURE_SIZE),l=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),t=a.getParameter(a.MAX_VERTEX_ATTRIBS),p=a.getParameter(a.MAX_VERTEX_UNIFORM_VECTORS),n=a.getParameter(a.MAX_VARYING_VECTORS),r=a.getParameter(a.MAX_FRAGMENT_UNIFORM_VECTORS),m=0<h,v=!!b.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==e)return e;
|
|
|
-var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d,precision:f,logarithmicDepthBuffer:c,maxTextures:g,maxVertexTextures:h,maxTextureSize:k,maxCubemapSize:l,maxAttributes:t,maxVertexUniforms:p,maxVaryings:n,maxFragmentUniforms:r,vertexTextures:m,floatFragmentTextures:v,floatVertexTextures:m&&v}}function nd(a){na.call(this);this.cameras=a||[]}function mg(a){var b=this,c=null,d=null;"VRFrameData"in window&&(d=new window.VRFrameData);
|
|
|
-var e=new M,f=new M,g=new M,h=new na;h.bounds=new V(0,0,.5,1);h.layers.enable(1);var k=new na;k.bounds=new V(.5,0,.5,1);k.layers.enable(2);var l=new nd([h,k]);l.layers.enable(1);l.layers.enable(2);var t,p;window.addEventListener("vrdisplaypresentchange",function(){if(c.isPresenting){var d=c.getEyeParameters("left"),e=d.renderWidth,d=d.renderHeight;p=a.getPixelRatio();t=a.getSize();a.setDrawingBufferSize(2*e,d,1)}else b.enabled&&a.setDrawingBufferSize(t.width,t.height,p)},!1);this.standing=this.enabled=
|
|
|
-!1;this.getDevice=function(){return c};this.setDevice=function(a){void 0!==a&&(c=a)};this.getCamera=function(a){if(null===c)return a;c.depthNear=a.near;c.depthFar=a.far;c.getFrameData(d);var b=d.pose;null!==b.position?a.position.fromArray(b.position):a.position.set(0,0,0);null!==b.orientation&&a.quaternion.fromArray(b.orientation);a.updateMatrixWorld();b=c.stageParameters;this.standing&&b&&(f.fromArray(b.sittingToStandingTransform),g.getInverse(f),a.matrixWorld.multiply(f),a.matrixWorldInverse.multiply(g));
|
|
|
-if(!1===c.isPresenting)return a;l.matrixWorld.copy(a.matrixWorld);l.matrixWorldInverse.copy(a.matrixWorldInverse);h.matrixWorldInverse.fromArray(d.leftViewMatrix);k.matrixWorldInverse.fromArray(d.rightViewMatrix);this.standing&&b&&(h.matrixWorldInverse.multiply(g),k.matrixWorldInverse.multiply(g));a=a.parent;null!==a&&(e.getInverse(a.matrixWorld),h.matrixWorldInverse.multiply(e),k.matrixWorldInverse.multiply(e));h.matrixWorld.getInverse(h.matrixWorldInverse);k.matrixWorld.getInverse(k.matrixWorldInverse);
|
|
|
-h.projectionMatrix.fromArray(d.leftProjectionMatrix);k.projectionMatrix.fromArray(d.rightProjectionMatrix);l.projectionMatrix.copy(h.projectionMatrix);a=c.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&h.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&k.bounds.fromArray(a.rightBounds));return l};this.getStandingMatrix=function(){return f};this.submitFrame=function(){c&&c.isPresenting&&c.submitFrame()}}function ng(a){var b={};return{get:function(c){if(void 0!==
|
|
|
-b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||
|
|
|
-a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case "WEBGL_compressed_texture_etc1":d=a.getExtension("WEBGL_compressed_texture_etc1");break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}}function og(){function a(){l.value!==d&&(l.value=d,l.needsUpdate=0<e);c.numPlanes=
|
|
|
-e;c.numIntersection=0}function b(a,b,d,e){var f=null!==a?a.length:0,g=null;if(0!==f){g=l.value;if(!0!==e||null===g){e=d+4*f;b=b.matrixWorldInverse;k.getNormalMatrix(b);if(null===g||g.length<e)g=new Float32Array(e);for(e=0;e!==f;++e,d+=4)h.copy(a[e]).applyMatrix4(b,k),h.normal.toArray(g,d),g[d+3]=h.constant}l.value=g;l.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,e=0,f=!1,g=!1,h=new wa,k=new sa,l={value:null,needsUpdate:!1};this.uniform=l;this.numIntersection=this.numPlanes=0;this.init=
|
|
|
-function(a,c,g){var h=0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState=function(c,h,k,r,m,q){if(!f||null===c||0===c.length||g&&!k)g?b(null):a();else{k=g?0:e;var n=4*k,p=m.clippingState||null;l.value=p;p=b(c,r,n,q);for(c=0;c!==n;++c)p[c]=d[c];m.clippingState=p;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=k}}}function $d(a){function b(){ka=new ng(A);ka.get("WEBGL_depth_texture");ka.get("OES_texture_float");
|
|
|
-ka.get("OES_texture_float_linear");ka.get("OES_texture_half_float");ka.get("OES_texture_half_float_linear");ka.get("OES_standard_derivatives");ka.get("ANGLE_instanced_arrays");ka.get("OES_element_index_uint")&&(D.MaxIndex=4294967296);ga=new lg(A,ka,a);ba=new kg(A,ka,u);ba.scissor(K.copy(kd).multiplyScalar(la));ba.viewport(Y.copy(ja).multiplyScalar(la));W=new jg;pa=new ig(A,ka,ba,W,ga,u,ra);ua=new Pf(A);ya=new Yf(A,ua,ra);xa=new $f(A,ya,ea);ta=new hg(U,ga);va=new Zf;za=new Vf;wa=new Rf(U,ba,xa,x);
|
|
|
-Ba=new Xf(A,ka,ea);Ca=new Wf(A,ka,ea);U.info.programs=ta.programs}function c(a){a.preventDefault();console.log("THREE.WebGLRenderer: Context Lost.");J=!0}function d(a){console.log("THREE.WebGLRenderer: Context Restored.");J=!1;b()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);W.remove(a)}function f(a){var b=W.get(a).program;a.program=void 0;void 0!==b&&ta.releaseProgram(b)}function g(a,b,c){a.render(function(a){U.renderBufferImmediate(a,b,c)})}function h(a,b){return Math.abs(b[0])-
|
|
|
-Math.abs(a[0])}function k(a,b,c){if(a.visible){if(a.layers.test(b.layers))if(a.isLight)E.push(a);else if(a.isSprite)a.frustumCulled&&!na.intersectsSprite(a)||ma.push(a);else if(a.isLensFlare)F.push(a);else if(a.isImmediateRenderObject)c&&Oa.setFromMatrixPosition(a.matrixWorld).applyMatrix4(md),ha.push(a,null,a.material,Oa.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.update(),!a.frustumCulled||na.intersectsObject(a)){c&&Oa.setFromMatrixPosition(a.matrixWorld).applyMatrix4(md);
|
|
|
-var d=xa.update(a),e=a.material;if(Array.isArray(e))for(var f=d.groups,g=0,h=f.length;g<h;g++){var l=f[g],n=e[l.materialIndex];n&&n.visible&&ha.push(a,d,n,Oa.z,l)}else e.visible&&ha.push(a,d,e,Oa.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)k(a[g],b,c)}}function l(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,l=void 0===d?g.material:d,g=g.group;if(c.isArrayCamera){Z=c;for(var n=c.cameras,p=0,r=n.length;p<r;p++){var m=n[p];if(h.layers.test(m.layers)){var C=m.bounds,
|
|
|
-u=C.x*T,q=C.y*X,od=C.z*T,C=C.w*X;ba.viewport(Y.set(u,q,od,C).multiplyScalar(la));ba.scissor(K.set(u,q,od,C).multiplyScalar(la));ba.setScissorTest(!0);t(h,b,m,k,l,g)}}}else Z=null,t(h,b,c,k,l,g)}}function t(a,b,c,d,e,f){a.onBeforeRender(U,b,c,d,e,f);a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){ba.setMaterial(e);var h=n(c,b.fog,e,a);O="";g(a,h,e)}else U.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(U,
|
|
|
-b,c,d,e,f)}function p(a,b,c){var d=W.get(a);c=ta.getParameters(a,aa,b,Ia.numPlanes,Ia.numIntersection,c);var g=ta.getProgramCode(a,c),h=d.program,k=!0;if(void 0===h)a.addEventListener("dispose",e);else if(h.code!==g)f(a);else{if(void 0!==c.shaderID)return;k=!1}k&&(c.shaderID?(h=Za[c.shaderID],d.shader={name:a.type,uniforms:Aa.clone(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},
|
|
|
-a.onBeforeCompile(d.shader),h=ta.acquireProgram(a,d.shader,c,g),d.program=h,a.program=h);c=h.getAttributes();if(a.morphTargets)for(g=a.numSupportedMorphTargets=0;g<U.maxMorphTargets;g++)0<=c["morphTarget"+g]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(g=a.numSupportedMorphNormals=0;g<U.maxMorphNormals;g++)0<=c["morphNormal"+g]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Ia.numPlanes,d.numIntersection=
|
|
|
-Ia.numIntersection,c.clippingPlanes=Ia.uniform;d.fog=b;d.lightsHash=aa.hash;a.lights&&(c.ambientLightColor.value=aa.ambient,c.directionalLights.value=aa.directional,c.spotLights.value=aa.spot,c.rectAreaLights.value=aa.rectArea,c.pointLights.value=aa.point,c.hemisphereLights.value=aa.hemi,c.directionalShadowMap.value=aa.directionalShadowMap,c.directionalShadowMatrix.value=aa.directionalShadowMatrix,c.spotShadowMap.value=aa.spotShadowMap,c.spotShadowMatrix.value=aa.spotShadowMatrix,c.pointShadowMap.value=
|
|
|
-aa.pointShadowMap,c.pointShadowMatrix.value=aa.pointShadowMatrix);a=d.program.getUniforms();a=eb.seqWithValue(a.seq,c);d.uniformsList=a}function n(a,b,c,d){fa=0;var e=W.get(c);ld&&(Zd||a!==Q)&&Ia.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===Q&&c.id===I);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==aa.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Ia.numPlanes&&e.numIntersection===
|
|
|
-Ia.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(p(c,b,d),c.needsUpdate=!1);var f=!1,g=!1,h=!1,k=e.program,l=k.getUniforms(),n=e.shader.uniforms;ba.useProgram(k.program)&&(h=g=f=!0);c.id!==I&&(I=c.id,g=!0);if(f||a!==Q){l.setValue(A,"projectionMatrix",a.projectionMatrix);ga.logarithmicDepthBuffer&&l.setValue(A,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));Q!==(Z||a)&&(Q=Z||a,h=g=!0);if(c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)f=l.map.cameraPosition,void 0!==
|
|
|
-f&&f.setValue(A,Oa.setFromMatrixPosition(a.matrixWorld));(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&l.setValue(A,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(l.setOptional(A,d,"bindMatrix"),l.setOptional(A,d,"bindMatrixInverse"),a=d.skeleton))if(f=a.bones,ga.floatVertexTextures){if(void 0===a.boneTexture){var f=Math.sqrt(4*f.length),f=N.nextPowerOfTwo(Math.ceil(f)),f=Math.max(f,4),t=new Float32Array(f*f*
|
|
|
-4);t.set(a.boneMatrices);var C=new db(t,f,f,1023,1015);a.boneMatrices=t;a.boneTexture=C;a.boneTextureSize=f}l.setValue(A,"boneTexture",a.boneTexture);l.setValue(A,"boneTextureSize",a.boneTextureSize)}else l.setOptional(A,a,"boneMatrices");if(g){l.setValue(A,"toneMappingExposure",U.toneMappingExposure);l.setValue(A,"toneMappingWhitePoint",U.toneMappingWhitePoint);c.lights&&(g=h,n.ambientLightColor.needsUpdate=g,n.directionalLights.needsUpdate=g,n.pointLights.needsUpdate=g,n.spotLights.needsUpdate=
|
|
|
-g,n.rectAreaLights.needsUpdate=g,n.hemisphereLights.needsUpdate=g);b&&c.fog&&(n.fogColor.value=b.color,b.isFog?(n.fogNear.value=b.near,n.fogFar.value=b.far):b.isFogExp2&&(n.fogDensity.value=b.density));if(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial){n.opacity.value=c.opacity;n.diffuse.value=c.color;c.emissive&&n.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);n.map.value=c.map;n.specularMap.value=
|
|
|
-c.specularMap;n.alphaMap.value=c.alphaMap;c.lightMap&&(n.lightMap.value=c.lightMap,n.lightMapIntensity.value=c.lightMapIntensity);c.aoMap&&(n.aoMap.value=c.aoMap,n.aoMapIntensity.value=c.aoMapIntensity);if(c.map)var u=c.map;else c.specularMap?u=c.specularMap:c.displacementMap?u=c.displacementMap:c.normalMap?u=c.normalMap:c.bumpMap?u=c.bumpMap:c.roughnessMap?u=c.roughnessMap:c.metalnessMap?u=c.metalnessMap:c.alphaMap?u=c.alphaMap:c.emissiveMap&&(u=c.emissiveMap);void 0!==u&&(u.isWebGLRenderTarget&&
|
|
|
-(u=u.texture),b=u.offset,u=u.repeat,n.offsetRepeat.value.set(b.x,b.y,u.x,u.y));n.envMap.value=c.envMap;n.flipEnvMap.value=c.envMap&&c.envMap.isCubeTexture?-1:1;n.reflectivity.value=c.reflectivity;n.refractionRatio.value=c.refractionRatio}c.isLineBasicMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity):c.isLineDashedMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,n.dashSize.value=c.dashSize,n.totalSize.value=c.dashSize+c.gapSize,n.scale.value=c.scale):c.isPointsMaterial?(n.diffuse.value=
|
|
|
-c.color,n.opacity.value=c.opacity,n.size.value=c.size*la,n.scale.value=.5*X,n.map.value=c.map,null!==c.map&&(u=c.map.offset,c=c.map.repeat,n.offsetRepeat.value.set(u.x,u.y,c.x,c.y))):c.isMeshLambertMaterial?c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap):c.isMeshToonMaterial?(r(n,c),c.gradientMap&&(n.gradientMap.value=c.gradientMap)):c.isMeshPhongMaterial?r(n,c):c.isMeshPhysicalMaterial?(n.clearCoat.value=c.clearCoat,n.clearCoatRoughness.value=c.clearCoatRoughness,m(n,c)):c.isMeshStandardMaterial?
|
|
|
-m(n,c):c.isMeshDepthMaterial?c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias):c.isMeshNormalMaterial&&(c.bumpMap&&(n.bumpMap.value=c.bumpMap,n.bumpScale.value=c.bumpScale),c.normalMap&&(n.normalMap.value=c.normalMap,n.normalScale.value.copy(c.normalScale)),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias));
|
|
|
-void 0!==n.ltcMat&&(n.ltcMat.value=L.LTC_MAT_TEXTURE);void 0!==n.ltcMag&&(n.ltcMag.value=L.LTC_MAG_TEXTURE);eb.upload(A,e.uniformsList,n,U)}l.setValue(A,"modelViewMatrix",d.modelViewMatrix);l.setValue(A,"normalMatrix",d.normalMatrix);l.setValue(A,"modelMatrix",d.matrixWorld);return k}function r(a,b){a.specular.value=b.specular;a.shininess.value=Math.max(b.shininess,1E-4);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&
|
|
|
-(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function m(a,b){a.roughness.value=b.roughness;a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value=b.roughnessMap);b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=
|
|
|
-b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias);b.envMap&&(a.envMapIntensity.value=b.envMapIntensity)}function v(a,b){var c,d=0,e=0,f=0,g=b.matrixWorldInverse,h=0,l=0,k=0,n=0,p=0;var t=0;for(c=a.length;t<c;t++){var r=a[t];var m=r.color;var u=r.intensity;var C=r.distance;var q=r.shadow&&r.shadow.map?
|
|
|
-r.shadow.map.texture:null;if(r.isAmbientLight)d+=m.r*u,e+=m.g*u,f+=m.b*u;else if(r.isDirectionalLight){b=va.get(r);b.color.copy(r.color).multiplyScalar(r.intensity);b.direction.setFromMatrixPosition(r.matrixWorld);Oa.setFromMatrixPosition(r.target.matrixWorld);b.direction.sub(Oa);b.direction.transformDirection(g);if(b.shadow=r.castShadow)m=r.shadow,b.shadowBias=m.bias,b.shadowRadius=m.radius,b.shadowMapSize=m.mapSize;aa.directionalShadowMap[h]=q;aa.directionalShadowMatrix[h]=r.shadow.matrix;aa.directional[h]=
|
|
|
-b;h++}else if(r.isSpotLight){b=va.get(r);b.position.setFromMatrixPosition(r.matrixWorld);b.position.applyMatrix4(g);b.color.copy(m).multiplyScalar(u);b.distance=C;b.direction.setFromMatrixPosition(r.matrixWorld);Oa.setFromMatrixPosition(r.target.matrixWorld);b.direction.sub(Oa);b.direction.transformDirection(g);b.coneCos=Math.cos(r.angle);b.penumbraCos=Math.cos(r.angle*(1-r.penumbra));b.decay=0===r.distance?0:r.decay;if(b.shadow=r.castShadow)m=r.shadow,b.shadowBias=m.bias,b.shadowRadius=m.radius,
|
|
|
-b.shadowMapSize=m.mapSize;aa.spotShadowMap[k]=q;aa.spotShadowMatrix[k]=r.shadow.matrix;aa.spot[k]=b;k++}else if(r.isRectAreaLight)b=va.get(r),b.color.copy(m).multiplyScalar(u/(r.width*r.height)),b.position.setFromMatrixPosition(r.matrixWorld),b.position.applyMatrix4(g),qa.identity(),oa.copy(r.matrixWorld),oa.premultiply(g),qa.extractRotation(oa),b.halfWidth.set(.5*r.width,0,0),b.halfHeight.set(0,.5*r.height,0),b.halfWidth.applyMatrix4(qa),b.halfHeight.applyMatrix4(qa),aa.rectArea[n]=b,n++;else if(r.isPointLight){b=
|
|
|
-va.get(r);b.position.setFromMatrixPosition(r.matrixWorld);b.position.applyMatrix4(g);b.color.copy(r.color).multiplyScalar(r.intensity);b.distance=r.distance;b.decay=0===r.distance?0:r.decay;if(b.shadow=r.castShadow)m=r.shadow,b.shadowBias=m.bias,b.shadowRadius=m.radius,b.shadowMapSize=m.mapSize,b.shadowCameraNear=m.camera.near,b.shadowCameraFar=m.camera.far;aa.pointShadowMap[l]=q;aa.pointShadowMatrix[l]=r.shadow.matrix;aa.point[l]=b;l++}else r.isHemisphereLight&&(b=va.get(r),b.direction.setFromMatrixPosition(r.matrixWorld),
|
|
|
-b.direction.transformDirection(g),b.direction.normalize(),b.skyColor.copy(r.color).multiplyScalar(u),b.groundColor.copy(r.groundColor).multiplyScalar(u),aa.hemi[p]=b,p++)}aa.ambient[0]=d;aa.ambient[1]=e;aa.ambient[2]=f;aa.directional.length=h;aa.spot.length=k;aa.rectArea.length=n;aa.point.length=l;aa.hemi.length=p;aa.hash=h+","+l+","+k+","+n+","+p+","+aa.shadows.length}function u(a){if(1E3===a)return A.REPEAT;if(1001===a)return A.CLAMP_TO_EDGE;if(1002===a)return A.MIRRORED_REPEAT;if(1003===a)return A.NEAREST;
|
|
|
-if(1004===a)return A.NEAREST_MIPMAP_NEAREST;if(1005===a)return A.NEAREST_MIPMAP_LINEAR;if(1006===a)return A.LINEAR;if(1007===a)return A.LINEAR_MIPMAP_NEAREST;if(1008===a)return A.LINEAR_MIPMAP_LINEAR;if(1009===a)return A.UNSIGNED_BYTE;if(1017===a)return A.UNSIGNED_SHORT_4_4_4_4;if(1018===a)return A.UNSIGNED_SHORT_5_5_5_1;if(1019===a)return A.UNSIGNED_SHORT_5_6_5;if(1010===a)return A.BYTE;if(1011===a)return A.SHORT;if(1012===a)return A.UNSIGNED_SHORT;if(1013===a)return A.INT;if(1014===a)return A.UNSIGNED_INT;
|
|
|
-if(1015===a)return A.FLOAT;if(1016===a){var b=ka.get("OES_texture_half_float");if(null!==b)return b.HALF_FLOAT_OES}if(1021===a)return A.ALPHA;if(1022===a)return A.RGB;if(1023===a)return A.RGBA;if(1024===a)return A.LUMINANCE;if(1025===a)return A.LUMINANCE_ALPHA;if(1026===a)return A.DEPTH_COMPONENT;if(1027===a)return A.DEPTH_STENCIL;if(100===a)return A.FUNC_ADD;if(101===a)return A.FUNC_SUBTRACT;if(102===a)return A.FUNC_REVERSE_SUBTRACT;if(200===a)return A.ZERO;if(201===a)return A.ONE;if(202===a)return A.SRC_COLOR;
|
|
|
-if(203===a)return A.ONE_MINUS_SRC_COLOR;if(204===a)return A.SRC_ALPHA;if(205===a)return A.ONE_MINUS_SRC_ALPHA;if(206===a)return A.DST_ALPHA;if(207===a)return A.ONE_MINUS_DST_ALPHA;if(208===a)return A.DST_COLOR;if(209===a)return A.ONE_MINUS_DST_COLOR;if(210===a)return A.SRC_ALPHA_SATURATE;if(2001===a||2002===a||2003===a||2004===a)if(b=ka.get("WEBGL_compressed_texture_s3tc"),null!==b){if(2001===a)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(2002===a)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(2003===a)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
|
-if(2004===a)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(2100===a||2101===a||2102===a||2103===a)if(b=ka.get("WEBGL_compressed_texture_pvrtc"),null!==b){if(2100===a)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(2101===a)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(2102===a)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(2103===a)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(2151===a&&(b=ka.get("WEBGL_compressed_texture_etc1"),null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if(103===a||104===a)if(b=ka.get("EXT_blend_minmax"),
|
|
|
-null!==b){if(103===a)return b.MIN_EXT;if(104===a)return b.MAX_EXT}return 1020===a&&(b=ka.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer","87dev");a=a||{};var w=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),B=void 0!==a.context?a.context:null,G=void 0!==a.alpha?a.alpha:!1,y=void 0!==a.depth?a.depth:!0,H=void 0!==a.stencil?a.stencil:!0,S=void 0!==a.antialias?a.antialias:!1,x=void 0!==a.premultipliedAlpha?
|
|
|
-a.premultipliedAlpha:!0,z=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,E=[],ha=null,ca=new Float32Array(8),ma=[],F=[];this.domElement=w;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=
|
|
|
-4;var U=this,J=!1,R=null,P=null,I=-1,O="",Q=null,Z=null,Y=new V,K=new V,da=null,fa=0,T=w.width,X=w.height,la=1,ja=new V(0,0,T,X),kd=new V(0,0,T,X),Re=!1,na=new jd,Ia=new og,ld=!1,Zd=!1,md=new M,Oa=new q,oa=new M,qa=new M,aa={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],shadows:[]},ra={geometries:0,textures:0},ea={frame:0,calls:0,vertices:0,faces:0,
|
|
|
-points:0};this.info={render:ea,memory:ra,programs:null};try{G={alpha:G,depth:y,stencil:H,antialias:S,premultipliedAlpha:x,preserveDrawingBuffer:z};var A=B||w.getContext("webgl",G)||w.getContext("experimental-webgl",G);if(null===A){if(null!==w.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}void 0===A.getShaderPrecisionFormat&&(A.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});w.addEventListener("webglcontextlost",
|
|
|
-c,!1);w.addEventListener("webglcontextrestored",d,!1)}catch(od){console.error("THREE.WebGLRenderer: "+od)}var ka,ga,ba,W,pa,ua,ya,xa,ta,va,za,wa,Ba,Ca;b();var sa=new mg(U);this.context=A;this.capabilities=ga;this.extensions=ka;this.properties=W;this.renderLists=za;this.state=ba;this.vr=sa;var Da=new Le(this,aa,xa,ga);this.shadowMap=Da;var Fa=new Nf(this,ma),Ga=new Lf(this,F);this.getContext=function(){return A};this.getContextAttributes=function(){return A.getContextAttributes()};this.forceContextLoss=
|
|
|
-function(){var a=ka.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=ka.get("WEBGL_lose_context");a&&a.restoreContext()};this.getMaxAnisotropy=function(){return ga.getMaxAnisotropy()};this.getPrecision=function(){return ga.precision};this.getPixelRatio=function(){return la};this.setPixelRatio=function(a){void 0!==a&&(la=a,this.setSize(T,X,!1))};this.getSize=function(){return{width:T,height:X}};this.setSize=function(a,b,c){var d=sa.getDevice();d&&d.isPresenting?
|
|
|
-console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(T=a,X=b,w.width=a*la,w.height=b*la,!1!==c&&(w.style.width=a+"px",w.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(){return{width:T*la,height:X*la}};this.setDrawingBufferSize=function(a,b,c){T=a;X=b;la=c;w.width=a*c;w.height=b*c;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){ja.set(a,X-b-d,c,d);ba.viewport(Y.copy(ja).multiplyScalar(la))};this.setScissor=function(a,
|
|
|
-b,c,d){kd.set(a,X-b-d,c,d);ba.scissor(K.copy(kd).multiplyScalar(la))};this.setScissorTest=function(a){ba.setScissorTest(Re=a)};this.getClearColor=wa.getClearColor;this.setClearColor=wa.setClearColor;this.getClearAlpha=wa.getClearAlpha;this.setClearAlpha=wa.setClearAlpha;this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=A.COLOR_BUFFER_BIT;if(void 0===b||b)d|=A.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=A.STENCIL_BUFFER_BIT;A.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=
|
|
|
-function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.dispose=function(){w.removeEventListener("webglcontextlost",c,!1);w.removeEventListener("webglcontextrestored",d,!1);za.dispose()};this.renderBufferImmediate=function(a,b,c){ba.initAttributes();var d=W.get(a);a.hasPositions&&!d.position&&(d.position=A.createBuffer());a.hasNormals&&!d.normal&&(d.normal=A.createBuffer());a.hasUvs&&!d.uv&&
|
|
|
-(d.uv=A.createBuffer());a.hasColors&&!d.color&&(d.color=A.createBuffer());b=b.getAttributes();a.hasPositions&&(A.bindBuffer(A.ARRAY_BUFFER,d.position),A.bufferData(A.ARRAY_BUFFER,a.positionArray,A.DYNAMIC_DRAW),ba.enableAttribute(b.position),A.vertexAttribPointer(b.position,3,A.FLOAT,!1,0,0));if(a.hasNormals){A.bindBuffer(A.ARRAY_BUFFER,d.normal);if(!c.isMeshPhongMaterial&&!c.isMeshStandardMaterial&&!c.isMeshNormalMaterial&&!0===c.flatShading)for(var e=0,f=3*a.count;e<f;e+=9){var g=a.normalArray,
|
|
|
-h=(g[e+0]+g[e+3]+g[e+6])/3,l=(g[e+1]+g[e+4]+g[e+7])/3,k=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=l;g[e+2]=k;g[e+3]=h;g[e+4]=l;g[e+5]=k;g[e+6]=h;g[e+7]=l;g[e+8]=k}A.bufferData(A.ARRAY_BUFFER,a.normalArray,A.DYNAMIC_DRAW);ba.enableAttribute(b.normal);A.vertexAttribPointer(b.normal,3,A.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(A.bindBuffer(A.ARRAY_BUFFER,d.uv),A.bufferData(A.ARRAY_BUFFER,a.uvArray,A.DYNAMIC_DRAW),ba.enableAttribute(b.uv),A.vertexAttribPointer(ua.uv,2,A.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&
|
|
|
-(A.bindBuffer(A.ARRAY_BUFFER,d.color),A.bufferData(A.ARRAY_BUFFER,a.colorArray,A.DYNAMIC_DRAW),ba.enableAttribute(b.color),A.vertexAttribPointer(b.color,3,A.FLOAT,!1,0,0));ba.disableUnusedAttributes();A.drawArrays(A.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){ba.setMaterial(d);var g=n(a,b,d,e);a=c.id+"_"+g.id+"_"+(!0===d.wireframe);var l=!1;a!==O&&(O=a,l=!0);var k=e.morphTargetInfluences;if(void 0!==k){var p=[];a=0;for(var t=k.length;a<t;a++)b=k[a],p.push([b,a]);
|
|
|
-p.sort(h);8<p.length&&(p.length=8);l=c.morphAttributes;a=0;for(t=p.length;a<t;a++)b=p[a],ca[a]=b[0],0!==b[0]?(b=b[1],!0===d.morphTargets&&l.position&&c.addAttribute("morphTarget"+a,l.position[b]),!0===d.morphNormals&&l.normal&&c.addAttribute("morphNormal"+a,l.normal[b])):(!0===d.morphTargets&&c.removeAttribute("morphTarget"+a),!0===d.morphNormals&&c.removeAttribute("morphNormal"+a));a=p.length;for(b=ca.length;a<b;a++)ca[a]=0;g.getUniforms().setValue(A,"morphTargetInfluences",ca);l=!0}b=c.index;t=
|
|
|
-c.attributes.position;p=1;!0===d.wireframe&&(b=ya.getWireframeAttribute(c),p=2);a=Ba;if(null!==b){var r=ua.get(b);a=Ca;a.setIndex(r)}if(l){l=void 0;if(c&&c.isInstancedBufferGeometry&&null===ka.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{void 0===l&&(l=0);ba.initAttributes();var k=c.attributes,g=g.getAttributes(),m=d.defaultAttributeValues;for(S in g){var u=
|
|
|
-g[S];if(0<=u){var C=k[S];if(void 0!==C){var q=C.normalized,v=C.itemSize,y=ua.get(C);if(void 0!==y){var w=y.buffer,B=y.type,y=y.bytesPerElement;if(C.isInterleavedBufferAttribute){var G=C.data,H=G.stride,C=C.offset;G&&G.isInstancedInterleavedBuffer?(ba.enableAttributeAndDivisor(u,G.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=G.meshPerAttribute*G.count)):ba.enableAttribute(u);A.bindBuffer(A.ARRAY_BUFFER,w);A.vertexAttribPointer(u,v,B,q,H*y,(l*H+C)*y)}else C.isInstancedBufferAttribute?
|
|
|
-(ba.enableAttributeAndDivisor(u,C.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=C.meshPerAttribute*C.count)):ba.enableAttribute(u),A.bindBuffer(A.ARRAY_BUFFER,w),A.vertexAttribPointer(u,v,B,q,0,l*v*y)}}else if(void 0!==m&&(q=m[S],void 0!==q))switch(q.length){case 2:A.vertexAttrib2fv(u,q);break;case 3:A.vertexAttrib3fv(u,q);break;case 4:A.vertexAttrib4fv(u,q);break;default:A.vertexAttrib1fv(u,q)}}}ba.disableUnusedAttributes()}null!==b&&A.bindBuffer(A.ELEMENT_ARRAY_BUFFER,r.buffer)}r=
|
|
|
-0;null!==b?r=b.count:void 0!==t&&(r=t.count);b=c.drawRange.start*p;t=null!==f?f.start*p:0;var S=Math.max(b,t);f=Math.max(0,Math.min(r,b+c.drawRange.count*p,t+(null!==f?f.count*p:Infinity))-1-S+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)ba.setLineWidth(d.wireframeLinewidth*(null===R?la:1)),a.setMode(A.LINES);else switch(e.drawMode){case 0:a.setMode(A.TRIANGLES);break;case 1:a.setMode(A.TRIANGLE_STRIP);break;case 2:a.setMode(A.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&(d=1),ba.setLineWidth(d*
|
|
|
-(null===R?la:1)),e.isLineSegments?a.setMode(A.LINES):e.isLineLoop?a.setMode(A.LINE_LOOP):a.setMode(A.LINE_STRIP)):e.isPoints&&a.setMode(A.POINTS);c&&c.isInstancedBufferGeometry?0<c.maxInstancedCount&&a.renderInstances(c,S,f):a.render(S,f)}};this.compile=function(a,b){E=[];a.traverse(function(a){a.isLight&&E.push(a)});v(E,b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c=0;c<b.material.length;c++)p(b.material[c],a.fog,b);else p(b.material,a.fog,b)})};this.animate=function(a){function b(){a();
|
|
|
-(sa.getDevice()||window).requestAnimationFrame(b)}(sa.getDevice()||window).requestAnimationFrame(b)};this.render=function(a,b,c,d){if(!b||!b.isCamera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else if(!J){O="";I=-1;Q=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();sa.enabled&&(b=sa.getCamera(b));md.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);na.setFromMatrix(md);E.length=0;ma.length=0;F.length=0;Zd=this.localClippingEnabled;
|
|
|
-ld=Ia.init(this.clippingPlanes,Zd,b);ha=za.get(a,b);ha.init();k(a,b,U.sortObjects);ha.finish();!0===U.sortObjects&&ha.sort();ld&&Ia.beginShadows();for(var e=E,f=0,g=0,h=e.length;g<h;g++){var n=e[g];n.castShadow&&(aa.shadows[f]=n,f++)}aa.shadows.length=f;Da.render(a,b);v(E,b);ld&&Ia.endShadows();ea.frame++;ea.calls=0;ea.vertices=0;ea.faces=0;ea.points=0;void 0===c&&(c=null);this.setRenderTarget(c);wa.render(a,b,d);d=ha.opaque;e=ha.transparent;a.overrideMaterial?(f=a.overrideMaterial,d.length&&l(d,
|
|
|
-a,b,f),e.length&&l(e,a,b,f)):(d.length&&l(d,a,b),e.length&&l(e,a,b));Fa.render(a,b);Ga.render(a,b,Y);c&&pa.updateRenderTargetMipmap(c);ba.buffers.depth.setTest(!0);ba.buffers.depth.setMask(!0);ba.buffers.color.setMask(!0);sa.enabled&&sa.submitFrame()}};this.setFaceCulling=function(a,b){ba.setCullFace(a);ba.setFlipSided(0===b)};this.allocTextureUnit=function(){var a=fa;a>=ga.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+ga.maxTextures);
|
|
|
-fa+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);pa.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);pa.setTexture2D(b,c)}}();this.setTextureCube=function(){var a=!1;return function(b,
|
|
|
-c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?pa.setTextureCube(b,c):pa.setTextureCubeDynamic(b,c)}}();this.getRenderTarget=function(){return R};this.setRenderTarget=function(a){(R=a)&&void 0===W.get(a).__webglFramebuffer&&pa.setupRenderTarget(a);var b=null,c=!1;a?(b=W.get(a).__webglFramebuffer,
|
|
|
-a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),Y.copy(a.viewport),K.copy(a.scissor),da=a.scissorTest):(Y.copy(ja).multiplyScalar(la),K.copy(kd).multiplyScalar(la),da=Re);P!==b&&(A.bindFramebuffer(A.FRAMEBUFFER,b),P=b);ba.viewport(Y);ba.scissor(K);ba.setScissorTest(da);c&&(c=W.get(a.texture),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,c.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(a&&
|
|
|
-a.isWebGLRenderTarget){var g=W.get(a).__webglFramebuffer;if(g){var h=!1;g!==P&&(A.bindFramebuffer(A.FRAMEBUFFER,g),h=!0);try{var l=a.texture,k=l.format,n=l.type;1023!==k&&u(k)!==A.getParameter(A.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===n||u(n)===A.getParameter(A.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(ka.get("OES_texture_float")||ka.get("WEBGL_color_buffer_float"))||1016===
|
|
|
-n&&ka.get("EXT_color_buffer_half_float")?A.checkFramebufferStatus(A.FRAMEBUFFER)===A.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&A.readPixels(b,c,d,e,u(k),u(n),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&A.bindFramebuffer(A.FRAMEBUFFER,P)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}
|
|
|
+a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b<d;b++)a.texImage2D(c+b,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,e);return f}function e(b){!0!==B[b]&&(a.enable(b),B[b]=!0)}function f(b){!1!==B[b]&&(a.disable(b),B[b]=!1)}function g(b,d,g,h,l,k,n,p){0!==b?e(a.BLEND):f(a.BLEND);if(5!==b){if(b!==H||p!==ma)switch(b){case 2:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE,a.ONE,a.ONE)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.SRC_ALPHA,
|
|
|
+a.ONE));break;case 3:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.ZERO,a.ONE_MINUS_SRC_COLOR,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.ONE_MINUS_SRC_COLOR));break;case 4:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ZERO,a.SRC_COLOR,a.ZERO,a.SRC_ALPHA)):(a.blendEquation(a.FUNC_ADD),a.blendFunc(a.ZERO,a.SRC_COLOR));break;default:p?(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.ONE,a.ONE_MINUS_SRC_ALPHA,
|
|
|
+a.ONE,a.ONE_MINUS_SRC_ALPHA)):(a.blendEquationSeparate(a.FUNC_ADD,a.FUNC_ADD),a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA))}ca=ha=E=z=x=S=null}else{l=l||d;k=k||g;n=n||h;if(d!==S||l!==E)a.blendEquationSeparate(c(d),c(l)),S=d,E=l;if(g!==x||h!==z||k!==ha||n!==ca)a.blendFuncSeparate(c(g),c(h),c(k),c(n)),x=g,z=h,ha=k,ca=n}H=b;ma=p}function h(b){D!==b&&(b?a.frontFace(a.CW):a.frontFace(a.CCW),D=b)}function k(b){0!==b?(e(a.CULL_FACE),b!==U&&(1===b?a.cullFace(a.BACK):
|
|
|
+2===b?a.cullFace(a.FRONT):a.cullFace(a.FRONT_AND_BACK))):f(a.CULL_FACE);U=b}function l(b,c,d){if(b){if(e(a.POLYGON_OFFSET_FILL),R!==c||P!==d)a.polygonOffset(c,d),R=c,P=d}else f(a.POLYGON_OFFSET_FILL)}function t(b){void 0===b&&(b=a.TEXTURE0+M-1);L!==b&&(a.activeTexture(b),L=b)}var p=new function(){var b=!1,c=new V,d=null,e=new V(0,0,0,0);return{setMask:function(c){d===c||b||(a.colorMask(c,c,c,c),d=c)},setLocked:function(a){b=a},setClear:function(b,d,f,g,h){!0===h&&(b*=g,d*=g,f*=g);c.set(b,d,f,g);!1===
|
|
|
+e.equals(c)&&(a.clearColor(b,d,f,g),e.copy(c))},reset:function(){b=!1;d=null;e.set(-1,0,0,0)}}},n=new function(){var b=!1,c=null,d=null,g=null;return{setTest:function(b){b?e(a.DEPTH_TEST):f(a.DEPTH_TEST)},setMask:function(d){c===d||b||(a.depthMask(d),c=d)},setFunc:function(b){if(d!==b){if(b)switch(b){case 0:a.depthFunc(a.NEVER);break;case 1:a.depthFunc(a.ALWAYS);break;case 2:a.depthFunc(a.LESS);break;case 3:a.depthFunc(a.LEQUAL);break;case 4:a.depthFunc(a.EQUAL);break;case 5:a.depthFunc(a.GEQUAL);
|
|
|
+break;case 6:a.depthFunc(a.GREATER);break;case 7:a.depthFunc(a.NOTEQUAL);break;default:a.depthFunc(a.LEQUAL)}else a.depthFunc(a.LEQUAL);d=b}},setLocked:function(a){b=a},setClear:function(b){g!==b&&(a.clearDepth(b),g=b)},reset:function(){b=!1;g=d=c=null}}},r=new function(){var b=!1,c=null,d=null,g=null,h=null,l=null,k=null,n=null,p=null;return{setTest:function(b){b?e(a.STENCIL_TEST):f(a.STENCIL_TEST)},setMask:function(d){c===d||b||(a.stencilMask(d),c=d)},setFunc:function(b,c,e){if(d!==b||g!==c||h!==
|
|
|
+e)a.stencilFunc(b,c,e),d=b,g=c,h=e},setOp:function(b,c,d){if(l!==b||k!==c||n!==d)a.stencilOp(b,c,d),l=b,k=c,n=d},setLocked:function(a){b=a},setClear:function(b){p!==b&&(a.clearStencil(b),p=b)},reset:function(){b=!1;p=n=k=l=h=g=d=c=null}}},m=a.getParameter(a.MAX_VERTEX_ATTRIBS),v=new Uint8Array(m),u=new Uint8Array(m),q=new Uint8Array(m),B={},G=null,y=null,H=null,S=null,x=null,z=null,E=null,ha=null,ca=null,ma=!1,D=null,U=null,J=null,R=null,P=null,F=null,M=a.getParameter(a.MAX_COMBINED_TEXTURE_IMAGE_UNITS),
|
|
|
+m=parseFloat(/^WebGL\ ([0-9])/.exec(a.getParameter(a.VERSION))[1]),I=1<=parseFloat(m),L=null,N={},K=new V,O=new V,Q={};Q[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);Q[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);p.setClear(0,0,0,1);n.setClear(1);r.setClear(0);e(a.DEPTH_TEST);n.setFunc(3);h(!1);k(1);e(a.CULL_FACE);e(a.BLEND);g(1);return{buffers:{color:p,depth:n,stencil:r},initAttributes:function(){for(var a=0,b=v.length;a<b;a++)v[a]=0},enableAttribute:function(c){v[c]=
|
|
|
+1;0===u[c]&&(a.enableVertexAttribArray(c),u[c]=1);0!==q[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,0),q[c]=0)},enableAttributeAndDivisor:function(c,d){v[c]=1;0===u[c]&&(a.enableVertexAttribArray(c),u[c]=1);q[c]!==d&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,d),q[c]=d)},disableUnusedAttributes:function(){for(var b=0,c=u.length;b!==c;++b)u[b]!==v[b]&&(a.disableVertexAttribArray(b),u[b]=0)},enable:e,disable:f,getCompressedTextureFormats:function(){if(null===G&&
|
|
|
+(G=[],b.get("WEBGL_compressed_texture_pvrtc")||b.get("WEBGL_compressed_texture_s3tc")||b.get("WEBGL_compressed_texture_etc1")))for(var c=a.getParameter(a.COMPRESSED_TEXTURE_FORMATS),d=0;d<c.length;d++)G.push(c[d]);return G},useProgram:function(b){return y!==b?(a.useProgram(b),y=b,!0):!1},setBlending:g,setMaterial:function(b){2===b.side?f(a.CULL_FACE):e(a.CULL_FACE);h(1===b.side);!0===b.transparent?g(b.blending,b.blendEquation,b.blendSrc,b.blendDst,b.blendEquationAlpha,b.blendSrcAlpha,b.blendDstAlpha,
|
|
|
+b.premultipliedAlpha):g(0);n.setFunc(b.depthFunc);n.setTest(b.depthTest);n.setMask(b.depthWrite);p.setMask(b.colorWrite);l(b.polygonOffset,b.polygonOffsetFactor,b.polygonOffsetUnits)},setFlipSided:h,setCullFace:k,setLineWidth:function(b){b!==J&&(I&&a.lineWidth(b),J=b)},setPolygonOffset:l,getScissorTest:function(){return F},setScissorTest:function(b){(F=b)?e(a.SCISSOR_TEST):f(a.SCISSOR_TEST)},activeTexture:t,bindTexture:function(b,c){null===L&&t();var d=N[L];void 0===d&&(d={type:void 0,texture:void 0},
|
|
|
+N[L]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||Q[b]),d.type=b,d.texture=c},compressedTexImage2D:function(){try{a.compressedTexImage2D.apply(a,arguments)}catch(Yd){console.error("THREE.WebGLState:",Yd)}},texImage2D:function(){try{a.texImage2D.apply(a,arguments)}catch(Yd){console.error("THREE.WebGLState:",Yd)}},scissor:function(b){!1===K.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),K.copy(b))},viewport:function(b){!1===O.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),O.copy(b))},reset:function(){for(var b=
|
|
|
+0;b<u.length;b++)1===u[b]&&(a.disableVertexAttribArray(b),u[b]=0);B={};L=G=null;N={};U=D=H=y=null;p.reset();n.reset();r.reset()}}}function lg(a,b,c){function d(b){if("highp"===b){if(0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.HIGH_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.HIGH_FLOAT).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(a.VERTEX_SHADER,a.MEDIUM_FLOAT).precision&&0<a.getShaderPrecisionFormat(a.FRAGMENT_SHADER,a.MEDIUM_FLOAT).precision?
|
|
|
+"mediump":"lowp"}var e,f=void 0!==c.precision?c.precision:"highp",g=d(f);g!==f&&(console.warn("THREE.WebGLRenderer:",f,"not supported, using",g,"instead."),f=g);c=!0===c.logarithmicDepthBuffer&&!!b.get("EXT_frag_depth");var g=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),h=a.getParameter(a.MAX_VERTEX_TEXTURE_IMAGE_UNITS),k=a.getParameter(a.MAX_TEXTURE_SIZE),l=a.getParameter(a.MAX_CUBE_MAP_TEXTURE_SIZE),t=a.getParameter(a.MAX_VERTEX_ATTRIBS),p=a.getParameter(a.MAX_VERTEX_UNIFORM_VECTORS),n=a.getParameter(a.MAX_VARYING_VECTORS),
|
|
|
+r=a.getParameter(a.MAX_FRAGMENT_UNIFORM_VECTORS),m=0<h,v=!!b.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==e)return e;var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d,precision:f,logarithmicDepthBuffer:c,maxTextures:g,maxVertexTextures:h,maxTextureSize:k,maxCubemapSize:l,maxAttributes:t,maxVertexUniforms:p,maxVaryings:n,maxFragmentUniforms:r,vertexTextures:m,floatFragmentTextures:v,floatVertexTextures:m&&
|
|
|
+v}}function nd(a){na.call(this);this.cameras=a||[]}function mg(a){var b=this,c=null,d=null;"VRFrameData"in window&&(d=new window.VRFrameData);var e=new M,f=new M,g=new M,h=new na;h.bounds=new V(0,0,.5,1);h.layers.enable(1);var k=new na;k.bounds=new V(.5,0,.5,1);k.layers.enable(2);var l=new nd([h,k]);l.layers.enable(1);l.layers.enable(2);var t,p;window.addEventListener("vrdisplaypresentchange",function(){if(c.isPresenting){var d=c.getEyeParameters("left"),e=d.renderWidth,d=d.renderHeight;p=a.getPixelRatio();
|
|
|
+t=a.getSize();a.setDrawingBufferSize(2*e,d,1)}else b.enabled&&a.setDrawingBufferSize(t.width,t.height,p)},!1);this.standing=this.enabled=!1;this.getDevice=function(){return c};this.setDevice=function(a){void 0!==a&&(c=a)};this.getCamera=function(a){if(null===c)return a;c.depthNear=a.near;c.depthFar=a.far;c.getFrameData(d);var b=d.pose;null!==b.position?a.position.fromArray(b.position):a.position.set(0,0,0);null!==b.orientation&&a.quaternion.fromArray(b.orientation);a.updateMatrixWorld();b=c.stageParameters;
|
|
|
+this.standing&&b&&(f.fromArray(b.sittingToStandingTransform),g.getInverse(f),a.matrixWorld.multiply(f),a.matrixWorldInverse.multiply(g));if(!1===c.isPresenting)return a;l.matrixWorld.copy(a.matrixWorld);l.matrixWorldInverse.copy(a.matrixWorldInverse);h.matrixWorldInverse.fromArray(d.leftViewMatrix);k.matrixWorldInverse.fromArray(d.rightViewMatrix);this.standing&&b&&(h.matrixWorldInverse.multiply(g),k.matrixWorldInverse.multiply(g));a=a.parent;null!==a&&(e.getInverse(a.matrixWorld),h.matrixWorldInverse.multiply(e),
|
|
|
+k.matrixWorldInverse.multiply(e));h.matrixWorld.getInverse(h.matrixWorldInverse);k.matrixWorld.getInverse(k.matrixWorldInverse);h.projectionMatrix.fromArray(d.leftProjectionMatrix);k.projectionMatrix.fromArray(d.rightProjectionMatrix);l.projectionMatrix.copy(h.projectionMatrix);a=c.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&h.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&k.bounds.fromArray(a.rightBounds));return l};this.getStandingMatrix=
|
|
|
+function(){return f};this.submitFrame=function(){c&&c.isPresenting&&c.submitFrame()}}function ng(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
|
|
|
+break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case "WEBGL_compressed_texture_etc1":d=a.getExtension("WEBGL_compressed_texture_etc1");break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+
|
|
|
+c+" extension not supported.");return b[c]=d}}}function og(){function a(){l.value!==d&&(l.value=d,l.needsUpdate=0<e);c.numPlanes=e;c.numIntersection=0}function b(a,b,d,e){var f=null!==a?a.length:0,g=null;if(0!==f){g=l.value;if(!0!==e||null===g){e=d+4*f;b=b.matrixWorldInverse;k.getNormalMatrix(b);if(null===g||g.length<e)g=new Float32Array(e);for(e=0;e!==f;++e,d+=4)h.copy(a[e]).applyMatrix4(b,k),h.normal.toArray(g,d),g[d+3]=h.constant}l.value=g;l.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,
|
|
|
+e=0,f=!1,g=!1,h=new wa,k=new sa,l={value:null,needsUpdate:!1};this.uniform=l;this.numIntersection=this.numPlanes=0;this.init=function(a,c,g){var h=0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState=function(c,h,k,r,m,q){if(!f||null===c||0===c.length||g&&!k)g?b(null):a();else{k=g?0:e;var n=4*k,p=m.clippingState||null;l.value=p;p=b(c,r,n,q);for(c=0;c!==n;++c)p[c]=d[c];m.clippingState=p;this.numIntersection=
|
|
|
+h?this.numPlanes:0;this.numPlanes+=k}}}function $d(a){function b(){ka=new ng(A);ka.get("WEBGL_depth_texture");ka.get("OES_texture_float");ka.get("OES_texture_float_linear");ka.get("OES_texture_half_float");ka.get("OES_texture_half_float_linear");ka.get("OES_standard_derivatives");ka.get("ANGLE_instanced_arrays");ka.get("OES_element_index_uint")&&(D.MaxIndex=4294967296);ga=new lg(A,ka,a);ba=new kg(A,ka,u);ba.scissor(K.copy(kd).multiplyScalar(la));ba.viewport(Y.copy(ja).multiplyScalar(la));W=new jg;
|
|
|
+pa=new ig(A,ka,ba,W,ga,u,ra);ua=new Pf(A);ya=new Yf(A,ua,ra);xa=new $f(A,ya,ea);ta=new hg(U,ga);va=new Zf;za=new Vf;wa=new Rf(U,ba,xa,x);Ba=new Xf(A,ka,ea);Ca=new Wf(A,ka,ea);U.info.programs=ta.programs}function c(a){a.preventDefault();console.log("THREE.WebGLRenderer: Context Lost.");J=!0}function d(a){console.log("THREE.WebGLRenderer: Context Restored.");J=!1;b()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);W.remove(a)}function f(a){var b=W.get(a).program;a.program=void 0;void 0!==
|
|
|
+b&&ta.releaseProgram(b)}function g(a,b,c){a.render(function(a){U.renderBufferImmediate(a,b,c)})}function h(a,b){return Math.abs(b[0])-Math.abs(a[0])}function k(a,b,c){if(a.visible){if(a.layers.test(b.layers))if(a.isLight)E.push(a);else if(a.isSprite)a.frustumCulled&&!na.intersectsSprite(a)||ma.push(a);else if(a.isLensFlare)F.push(a);else if(a.isImmediateRenderObject)c&&Oa.setFromMatrixPosition(a.matrixWorld).applyMatrix4(md),ha.push(a,null,a.material,Oa.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&
|
|
|
+a.skeleton.update(),!a.frustumCulled||na.intersectsObject(a)){c&&Oa.setFromMatrixPosition(a.matrixWorld).applyMatrix4(md);var d=xa.update(a),e=a.material;if(Array.isArray(e))for(var f=d.groups,g=0,h=f.length;g<h;g++){var l=f[g],n=e[l.materialIndex];n&&n.visible&&ha.push(a,d,n,Oa.z,l)}else e.visible&&ha.push(a,d,e,Oa.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)k(a[g],b,c)}}function l(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,l=void 0===d?g.material:d,g=g.group;
|
|
|
+if(c.isArrayCamera){Z=c;for(var n=c.cameras,p=0,r=n.length;p<r;p++){var m=n[p];if(h.layers.test(m.layers)){var C=m.bounds,u=C.x*T,q=C.y*X,od=C.z*T,C=C.w*X;ba.viewport(Y.set(u,q,od,C).multiplyScalar(la));ba.scissor(K.set(u,q,od,C).multiplyScalar(la));ba.setScissorTest(!0);t(h,b,m,k,l,g)}}}else Z=null,t(h,b,c,k,l,g)}}function t(a,b,c,d,e,f){a.onBeforeRender(U,b,c,d,e,f);a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){ba.setMaterial(e);
|
|
|
+var h=n(c,b.fog,e,a);O="";g(a,h,e)}else U.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(U,b,c,d,e,f)}function p(a,b,c){var d=W.get(a);c=ta.getParameters(a,aa,b,Ia.numPlanes,Ia.numIntersection,c);var g=ta.getProgramCode(a,c),h=d.program,k=!0;if(void 0===h)a.addEventListener("dispose",e);else if(h.code!==g)f(a);else{if(void 0!==c.shaderID)return;k=!1}k&&(c.shaderID?(h=Za[c.shaderID],d.shader={name:a.type,uniforms:Aa.clone(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader}):
|
|
|
+d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader),h=ta.acquireProgram(a,d.shader,c,g),d.program=h,a.program=h);c=h.getAttributes();if(a.morphTargets)for(g=a.numSupportedMorphTargets=0;g<U.maxMorphTargets;g++)0<=c["morphTarget"+g]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(g=a.numSupportedMorphNormals=0;g<U.maxMorphNormals;g++)0<=c["morphNormal"+g]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&
|
|
|
+!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Ia.numPlanes,d.numIntersection=Ia.numIntersection,c.clippingPlanes=Ia.uniform;d.fog=b;d.lightsHash=aa.hash;a.lights&&(c.ambientLightColor.value=aa.ambient,c.directionalLights.value=aa.directional,c.spotLights.value=aa.spot,c.rectAreaLights.value=aa.rectArea,c.pointLights.value=aa.point,c.hemisphereLights.value=aa.hemi,c.directionalShadowMap.value=aa.directionalShadowMap,c.directionalShadowMatrix.value=aa.directionalShadowMatrix,c.spotShadowMap.value=
|
|
|
+aa.spotShadowMap,c.spotShadowMatrix.value=aa.spotShadowMatrix,c.pointShadowMap.value=aa.pointShadowMap,c.pointShadowMatrix.value=aa.pointShadowMatrix);a=d.program.getUniforms();a=eb.seqWithValue(a.seq,c);d.uniformsList=a}function n(a,b,c,d){fa=0;var e=W.get(c);ld&&(Zd||a!==Q)&&Ia.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===Q&&c.id===I);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==aa.hash?c.needsUpdate=!0:
|
|
|
+void 0===e.numClippingPlanes||e.numClippingPlanes===Ia.numPlanes&&e.numIntersection===Ia.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(p(c,b,d),c.needsUpdate=!1);var f=!1,g=!1,h=!1,k=e.program,l=k.getUniforms(),n=e.shader.uniforms;ba.useProgram(k.program)&&(h=g=f=!0);c.id!==I&&(I=c.id,g=!0);if(f||a!==Q){l.setValue(A,"projectionMatrix",a.projectionMatrix);ga.logarithmicDepthBuffer&&l.setValue(A,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));Q!==(Z||a)&&(Q=Z||a,h=g=!0);if(c.isShaderMaterial||
|
|
|
+c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)f=l.map.cameraPosition,void 0!==f&&f.setValue(A,Oa.setFromMatrixPosition(a.matrixWorld));(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&l.setValue(A,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(l.setOptional(A,d,"bindMatrix"),l.setOptional(A,d,"bindMatrixInverse"),a=d.skeleton))if(f=a.bones,ga.floatVertexTextures){if(void 0===a.boneTexture){var f=Math.sqrt(4*
|
|
|
+f.length),f=N.nextPowerOfTwo(Math.ceil(f)),f=Math.max(f,4),t=new Float32Array(f*f*4);t.set(a.boneMatrices);var C=new db(t,f,f,1023,1015);a.boneMatrices=t;a.boneTexture=C;a.boneTextureSize=f}l.setValue(A,"boneTexture",a.boneTexture);l.setValue(A,"boneTextureSize",a.boneTextureSize)}else l.setOptional(A,a,"boneMatrices");if(g){l.setValue(A,"toneMappingExposure",U.toneMappingExposure);l.setValue(A,"toneMappingWhitePoint",U.toneMappingWhitePoint);c.lights&&(g=h,n.ambientLightColor.needsUpdate=g,n.directionalLights.needsUpdate=
|
|
|
+g,n.pointLights.needsUpdate=g,n.spotLights.needsUpdate=g,n.rectAreaLights.needsUpdate=g,n.hemisphereLights.needsUpdate=g);b&&c.fog&&(n.fogColor.value=b.color,b.isFog?(n.fogNear.value=b.near,n.fogFar.value=b.far):b.isFogExp2&&(n.fogDensity.value=b.density));if(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial){n.opacity.value=c.opacity;n.diffuse.value=c.color;c.emissive&&n.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);
|
|
|
+n.map.value=c.map;n.specularMap.value=c.specularMap;n.alphaMap.value=c.alphaMap;c.lightMap&&(n.lightMap.value=c.lightMap,n.lightMapIntensity.value=c.lightMapIntensity);c.aoMap&&(n.aoMap.value=c.aoMap,n.aoMapIntensity.value=c.aoMapIntensity);if(c.map)var u=c.map;else c.specularMap?u=c.specularMap:c.displacementMap?u=c.displacementMap:c.normalMap?u=c.normalMap:c.bumpMap?u=c.bumpMap:c.roughnessMap?u=c.roughnessMap:c.metalnessMap?u=c.metalnessMap:c.alphaMap?u=c.alphaMap:c.emissiveMap&&(u=c.emissiveMap);
|
|
|
+void 0!==u&&(u.isWebGLRenderTarget&&(u=u.texture),b=u.offset,u=u.repeat,n.offsetRepeat.value.set(b.x,b.y,u.x,u.y));n.envMap.value=c.envMap;n.flipEnvMap.value=c.envMap&&c.envMap.isCubeTexture?-1:1;n.reflectivity.value=c.reflectivity;n.refractionRatio.value=c.refractionRatio}c.isLineBasicMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity):c.isLineDashedMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,n.dashSize.value=c.dashSize,n.totalSize.value=c.dashSize+c.gapSize,n.scale.value=
|
|
|
+c.scale):c.isPointsMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,n.size.value=c.size*la,n.scale.value=.5*X,n.map.value=c.map,null!==c.map&&(u=c.map.offset,c=c.map.repeat,n.offsetRepeat.value.set(u.x,u.y,c.x,c.y))):c.isMeshLambertMaterial?c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap):c.isMeshToonMaterial?(r(n,c),c.gradientMap&&(n.gradientMap.value=c.gradientMap)):c.isMeshPhongMaterial?r(n,c):c.isMeshPhysicalMaterial?(n.clearCoat.value=c.clearCoat,n.clearCoatRoughness.value=c.clearCoatRoughness,
|
|
|
+m(n,c)):c.isMeshStandardMaterial?m(n,c):c.isMeshDepthMaterial?c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias):c.isMeshNormalMaterial&&(c.bumpMap&&(n.bumpMap.value=c.bumpMap,n.bumpScale.value=c.bumpScale),c.normalMap&&(n.normalMap.value=c.normalMap,n.normalScale.value.copy(c.normalScale)),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,
|
|
|
+n.displacementBias.value=c.displacementBias));void 0!==n.ltcMat&&(n.ltcMat.value=L.LTC_MAT_TEXTURE);void 0!==n.ltcMag&&(n.ltcMag.value=L.LTC_MAG_TEXTURE);eb.upload(A,e.uniformsList,n,U)}l.setValue(A,"modelViewMatrix",d.modelViewMatrix);l.setValue(A,"normalMatrix",d.normalMatrix);l.setValue(A,"modelMatrix",d.matrixWorld);return k}function r(a,b){a.specular.value=b.specular;a.shininess.value=Math.max(b.shininess,1E-4);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,
|
|
|
+a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function m(a,b){a.roughness.value=b.roughness;a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value=b.roughnessMap);b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);
|
|
|
+b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias);b.envMap&&(a.envMapIntensity.value=b.envMapIntensity)}function v(a,b){var c,d=0,e=0,f=0,g=b.matrixWorldInverse,h=0,l=0,k=0,n=0,p=0;var t=0;for(c=a.length;t<c;t++){var r=a[t];var m=r.color;var u=
|
|
|
+r.intensity;var C=r.distance;var q=r.shadow&&r.shadow.map?r.shadow.map.texture:null;if(r.isAmbientLight)d+=m.r*u,e+=m.g*u,f+=m.b*u;else if(r.isDirectionalLight){b=va.get(r);b.color.copy(r.color).multiplyScalar(r.intensity);b.direction.setFromMatrixPosition(r.matrixWorld);Oa.setFromMatrixPosition(r.target.matrixWorld);b.direction.sub(Oa);b.direction.transformDirection(g);if(b.shadow=r.castShadow)m=r.shadow,b.shadowBias=m.bias,b.shadowRadius=m.radius,b.shadowMapSize=m.mapSize;aa.directionalShadowMap[h]=
|
|
|
+q;aa.directionalShadowMatrix[h]=r.shadow.matrix;aa.directional[h]=b;h++}else if(r.isSpotLight){b=va.get(r);b.position.setFromMatrixPosition(r.matrixWorld);b.position.applyMatrix4(g);b.color.copy(m).multiplyScalar(u);b.distance=C;b.direction.setFromMatrixPosition(r.matrixWorld);Oa.setFromMatrixPosition(r.target.matrixWorld);b.direction.sub(Oa);b.direction.transformDirection(g);b.coneCos=Math.cos(r.angle);b.penumbraCos=Math.cos(r.angle*(1-r.penumbra));b.decay=0===r.distance?0:r.decay;if(b.shadow=r.castShadow)m=
|
|
|
+r.shadow,b.shadowBias=m.bias,b.shadowRadius=m.radius,b.shadowMapSize=m.mapSize;aa.spotShadowMap[k]=q;aa.spotShadowMatrix[k]=r.shadow.matrix;aa.spot[k]=b;k++}else if(r.isRectAreaLight)b=va.get(r),b.color.copy(m).multiplyScalar(u/(r.width*r.height)),b.position.setFromMatrixPosition(r.matrixWorld),b.position.applyMatrix4(g),qa.identity(),oa.copy(r.matrixWorld),oa.premultiply(g),qa.extractRotation(oa),b.halfWidth.set(.5*r.width,0,0),b.halfHeight.set(0,.5*r.height,0),b.halfWidth.applyMatrix4(qa),b.halfHeight.applyMatrix4(qa),
|
|
|
+aa.rectArea[n]=b,n++;else if(r.isPointLight){b=va.get(r);b.position.setFromMatrixPosition(r.matrixWorld);b.position.applyMatrix4(g);b.color.copy(r.color).multiplyScalar(r.intensity);b.distance=r.distance;b.decay=0===r.distance?0:r.decay;if(b.shadow=r.castShadow)m=r.shadow,b.shadowBias=m.bias,b.shadowRadius=m.radius,b.shadowMapSize=m.mapSize,b.shadowCameraNear=m.camera.near,b.shadowCameraFar=m.camera.far;aa.pointShadowMap[l]=q;aa.pointShadowMatrix[l]=r.shadow.matrix;aa.point[l]=b;l++}else r.isHemisphereLight&&
|
|
|
+(b=va.get(r),b.direction.setFromMatrixPosition(r.matrixWorld),b.direction.transformDirection(g),b.direction.normalize(),b.skyColor.copy(r.color).multiplyScalar(u),b.groundColor.copy(r.groundColor).multiplyScalar(u),aa.hemi[p]=b,p++)}aa.ambient[0]=d;aa.ambient[1]=e;aa.ambient[2]=f;aa.directional.length=h;aa.spot.length=k;aa.rectArea.length=n;aa.point.length=l;aa.hemi.length=p;aa.hash=h+","+l+","+k+","+n+","+p+","+aa.shadows.length}function u(a){if(1E3===a)return A.REPEAT;if(1001===a)return A.CLAMP_TO_EDGE;
|
|
|
+if(1002===a)return A.MIRRORED_REPEAT;if(1003===a)return A.NEAREST;if(1004===a)return A.NEAREST_MIPMAP_NEAREST;if(1005===a)return A.NEAREST_MIPMAP_LINEAR;if(1006===a)return A.LINEAR;if(1007===a)return A.LINEAR_MIPMAP_NEAREST;if(1008===a)return A.LINEAR_MIPMAP_LINEAR;if(1009===a)return A.UNSIGNED_BYTE;if(1017===a)return A.UNSIGNED_SHORT_4_4_4_4;if(1018===a)return A.UNSIGNED_SHORT_5_5_5_1;if(1019===a)return A.UNSIGNED_SHORT_5_6_5;if(1010===a)return A.BYTE;if(1011===a)return A.SHORT;if(1012===a)return A.UNSIGNED_SHORT;
|
|
|
+if(1013===a)return A.INT;if(1014===a)return A.UNSIGNED_INT;if(1015===a)return A.FLOAT;if(1016===a){var b=ka.get("OES_texture_half_float");if(null!==b)return b.HALF_FLOAT_OES}if(1021===a)return A.ALPHA;if(1022===a)return A.RGB;if(1023===a)return A.RGBA;if(1024===a)return A.LUMINANCE;if(1025===a)return A.LUMINANCE_ALPHA;if(1026===a)return A.DEPTH_COMPONENT;if(1027===a)return A.DEPTH_STENCIL;if(100===a)return A.FUNC_ADD;if(101===a)return A.FUNC_SUBTRACT;if(102===a)return A.FUNC_REVERSE_SUBTRACT;if(200===
|
|
|
+a)return A.ZERO;if(201===a)return A.ONE;if(202===a)return A.SRC_COLOR;if(203===a)return A.ONE_MINUS_SRC_COLOR;if(204===a)return A.SRC_ALPHA;if(205===a)return A.ONE_MINUS_SRC_ALPHA;if(206===a)return A.DST_ALPHA;if(207===a)return A.ONE_MINUS_DST_ALPHA;if(208===a)return A.DST_COLOR;if(209===a)return A.ONE_MINUS_DST_COLOR;if(210===a)return A.SRC_ALPHA_SATURATE;if(2001===a||2002===a||2003===a||2004===a)if(b=ka.get("WEBGL_compressed_texture_s3tc"),null!==b){if(2001===a)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;
|
|
|
+if(2002===a)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(2003===a)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(2004===a)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(2100===a||2101===a||2102===a||2103===a)if(b=ka.get("WEBGL_compressed_texture_pvrtc"),null!==b){if(2100===a)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(2101===a)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(2102===a)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(2103===a)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(2151===a&&(b=ka.get("WEBGL_compressed_texture_etc1"),
|
|
|
+null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if(103===a||104===a)if(b=ka.get("EXT_blend_minmax"),null!==b){if(103===a)return b.MIN_EXT;if(104===a)return b.MAX_EXT}return 1020===a&&(b=ka.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer","87dev");a=a||{};var w=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),B=void 0!==a.context?a.context:null,G=void 0!==a.alpha?a.alpha:!1,y=void 0!==a.depth?a.depth:!0,H=void 0!==
|
|
|
+a.stencil?a.stencil:!0,S=void 0!==a.antialias?a.antialias:!1,x=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,z=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,E=[],ha=null,ca=new Float32Array(8),ma=[],F=[];this.domElement=w;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=
|
|
|
+this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var U=this,J=!1,R=null,P=null,I=-1,O="",Q=null,Z=null,Y=new V,K=new V,da=null,fa=0,T=w.width,X=w.height,la=1,ja=new V(0,0,T,X),kd=new V(0,0,T,X),Re=!1,na=new jd,Ia=new og,ld=!1,Zd=!1,md=new M,Oa=new q,oa=new M,qa=new M,aa={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],
|
|
|
+hemi:[],shadows:[]},ra={geometries:0,textures:0},ea={frame:0,calls:0,vertices:0,faces:0,points:0};this.info={render:ea,memory:ra,programs:null};try{G={alpha:G,depth:y,stencil:H,antialias:S,premultipliedAlpha:x,preserveDrawingBuffer:z};var A=B||w.getContext("webgl",G)||w.getContext("experimental-webgl",G);if(null===A){if(null!==w.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}void 0===A.getShaderPrecisionFormat&&(A.getShaderPrecisionFormat=
|
|
|
+function(){return{rangeMin:1,rangeMax:1,precision:1}});w.addEventListener("webglcontextlost",c,!1);w.addEventListener("webglcontextrestored",d,!1)}catch(od){console.error("THREE.WebGLRenderer: "+od)}var ka,ga,ba,W,pa,ua,ya,xa,ta,va,za,wa,Ba,Ca;b();var sa=new mg(U);this.context=A;this.capabilities=ga;this.extensions=ka;this.properties=W;this.renderLists=za;this.state=ba;this.vr=sa;var Da=new Le(this,aa,xa,ga);this.shadowMap=Da;var Fa=new Nf(this,ma),Ga=new Lf(this,F);this.getContext=function(){return A};
|
|
|
+this.getContextAttributes=function(){return A.getContextAttributes()};this.forceContextLoss=function(){var a=ka.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=ka.get("WEBGL_lose_context");a&&a.restoreContext()};this.getMaxAnisotropy=function(){return ga.getMaxAnisotropy()};this.getPrecision=function(){return ga.precision};this.getPixelRatio=function(){return la};this.setPixelRatio=function(a){void 0!==a&&(la=a,this.setSize(T,X,!1))};this.getSize=function(){return{width:T,
|
|
|
+height:X}};this.setSize=function(a,b,c){var d=sa.getDevice();d&&d.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(T=a,X=b,w.width=a*la,w.height=b*la,!1!==c&&(w.style.width=a+"px",w.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(){return{width:T*la,height:X*la}};this.setDrawingBufferSize=function(a,b,c){T=a;X=b;la=c;w.width=a*c;w.height=b*c;this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){ja.set(a,
|
|
|
+X-b-d,c,d);ba.viewport(Y.copy(ja).multiplyScalar(la))};this.setScissor=function(a,b,c,d){kd.set(a,X-b-d,c,d);ba.scissor(K.copy(kd).multiplyScalar(la))};this.setScissorTest=function(a){ba.setScissorTest(Re=a)};this.getClearColor=wa.getClearColor;this.setClearColor=wa.setClearColor;this.getClearAlpha=wa.getClearAlpha;this.setClearAlpha=wa.setClearAlpha;this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=A.COLOR_BUFFER_BIT;if(void 0===b||b)d|=A.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=A.STENCIL_BUFFER_BIT;
|
|
|
+A.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.dispose=function(){w.removeEventListener("webglcontextlost",c,!1);w.removeEventListener("webglcontextrestored",d,!1);za.dispose()};this.renderBufferImmediate=function(a,b,c){ba.initAttributes();var d=W.get(a);a.hasPositions&&!d.position&&(d.position=A.createBuffer());
|
|
|
+a.hasNormals&&!d.normal&&(d.normal=A.createBuffer());a.hasUvs&&!d.uv&&(d.uv=A.createBuffer());a.hasColors&&!d.color&&(d.color=A.createBuffer());b=b.getAttributes();a.hasPositions&&(A.bindBuffer(A.ARRAY_BUFFER,d.position),A.bufferData(A.ARRAY_BUFFER,a.positionArray,A.DYNAMIC_DRAW),ba.enableAttribute(b.position),A.vertexAttribPointer(b.position,3,A.FLOAT,!1,0,0));if(a.hasNormals){A.bindBuffer(A.ARRAY_BUFFER,d.normal);if(!c.isMeshPhongMaterial&&!c.isMeshStandardMaterial&&!c.isMeshNormalMaterial&&!0===
|
|
|
+c.flatShading)for(var e=0,f=3*a.count;e<f;e+=9){var g=a.normalArray,h=(g[e+0]+g[e+3]+g[e+6])/3,l=(g[e+1]+g[e+4]+g[e+7])/3,k=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=l;g[e+2]=k;g[e+3]=h;g[e+4]=l;g[e+5]=k;g[e+6]=h;g[e+7]=l;g[e+8]=k}A.bufferData(A.ARRAY_BUFFER,a.normalArray,A.DYNAMIC_DRAW);ba.enableAttribute(b.normal);A.vertexAttribPointer(b.normal,3,A.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(A.bindBuffer(A.ARRAY_BUFFER,d.uv),A.bufferData(A.ARRAY_BUFFER,a.uvArray,A.DYNAMIC_DRAW),ba.enableAttribute(b.uv),A.vertexAttribPointer(ua.uv,
|
|
|
+2,A.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&(A.bindBuffer(A.ARRAY_BUFFER,d.color),A.bufferData(A.ARRAY_BUFFER,a.colorArray,A.DYNAMIC_DRAW),ba.enableAttribute(b.color),A.vertexAttribPointer(b.color,3,A.FLOAT,!1,0,0));ba.disableUnusedAttributes();A.drawArrays(A.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){ba.setMaterial(d);var g=n(a,b,d,e);a=c.id+"_"+g.id+"_"+(!0===d.wireframe);var l=!1;a!==O&&(O=a,l=!0);var k=e.morphTargetInfluences;if(void 0!==k){var p=[];
|
|
|
+a=0;for(var t=k.length;a<t;a++)b=k[a],p.push([b,a]);p.sort(h);8<p.length&&(p.length=8);l=c.morphAttributes;a=0;for(t=p.length;a<t;a++)b=p[a],ca[a]=b[0],0!==b[0]?(b=b[1],!0===d.morphTargets&&l.position&&c.addAttribute("morphTarget"+a,l.position[b]),!0===d.morphNormals&&l.normal&&c.addAttribute("morphNormal"+a,l.normal[b])):(!0===d.morphTargets&&c.removeAttribute("morphTarget"+a),!0===d.morphNormals&&c.removeAttribute("morphNormal"+a));a=p.length;for(b=ca.length;a<b;a++)ca[a]=0;g.getUniforms().setValue(A,
|
|
|
+"morphTargetInfluences",ca);l=!0}b=c.index;t=c.attributes.position;p=1;!0===d.wireframe&&(b=ya.getWireframeAttribute(c),p=2);a=Ba;if(null!==b){var r=ua.get(b);a=Ca;a.setIndex(r)}if(l){l=void 0;if(c&&c.isInstancedBufferGeometry&&null===ka.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{void 0===l&&(l=0);ba.initAttributes();var k=c.attributes,g=g.getAttributes(),
|
|
|
+m=d.defaultAttributeValues;for(S in g){var u=g[S];if(0<=u){var C=k[S];if(void 0!==C){var q=C.normalized,v=C.itemSize,y=ua.get(C);if(void 0!==y){var w=y.buffer,B=y.type,y=y.bytesPerElement;if(C.isInterleavedBufferAttribute){var G=C.data,H=G.stride,C=C.offset;G&&G.isInstancedInterleavedBuffer?(ba.enableAttributeAndDivisor(u,G.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=G.meshPerAttribute*G.count)):ba.enableAttribute(u);A.bindBuffer(A.ARRAY_BUFFER,w);A.vertexAttribPointer(u,
|
|
|
+v,B,q,H*y,(l*H+C)*y)}else C.isInstancedBufferAttribute?(ba.enableAttributeAndDivisor(u,C.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=C.meshPerAttribute*C.count)):ba.enableAttribute(u),A.bindBuffer(A.ARRAY_BUFFER,w),A.vertexAttribPointer(u,v,B,q,0,l*v*y)}}else if(void 0!==m&&(q=m[S],void 0!==q))switch(q.length){case 2:A.vertexAttrib2fv(u,q);break;case 3:A.vertexAttrib3fv(u,q);break;case 4:A.vertexAttrib4fv(u,q);break;default:A.vertexAttrib1fv(u,q)}}}ba.disableUnusedAttributes()}null!==
|
|
|
+b&&A.bindBuffer(A.ELEMENT_ARRAY_BUFFER,r.buffer)}r=0;null!==b?r=b.count:void 0!==t&&(r=t.count);b=c.drawRange.start*p;t=null!==f?f.start*p:0;var S=Math.max(b,t);f=Math.max(0,Math.min(r,b+c.drawRange.count*p,t+(null!==f?f.count*p:Infinity))-1-S+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)ba.setLineWidth(d.wireframeLinewidth*(null===R?la:1)),a.setMode(A.LINES);else switch(e.drawMode){case 0:a.setMode(A.TRIANGLES);break;case 1:a.setMode(A.TRIANGLE_STRIP);break;case 2:a.setMode(A.TRIANGLE_FAN)}else e.isLine?
|
|
|
+(d=d.linewidth,void 0===d&&(d=1),ba.setLineWidth(d*(null===R?la:1)),e.isLineSegments?a.setMode(A.LINES):e.isLineLoop?a.setMode(A.LINE_LOOP):a.setMode(A.LINE_STRIP)):e.isPoints&&a.setMode(A.POINTS);c&&c.isInstancedBufferGeometry?0<c.maxInstancedCount&&a.renderInstances(c,S,f):a.render(S,f)}};this.compile=function(a,b){E=[];a.traverse(function(a){a.isLight&&E.push(a)});v(E,b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c=0;c<b.material.length;c++)p(b.material[c],a.fog,
|
|
|
+b);else p(b.material,a.fog,b)})};this.animate=function(a){function b(){a();(sa.getDevice()||window).requestAnimationFrame(b)}(sa.getDevice()||window).requestAnimationFrame(b)};this.render=function(a,b,c,d){if(!b||!b.isCamera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else if(!J){O="";I=-1;Q=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();sa.enabled&&(b=sa.getCamera(b));md.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);
|
|
|
+na.setFromMatrix(md);E.length=0;ma.length=0;F.length=0;Zd=this.localClippingEnabled;ld=Ia.init(this.clippingPlanes,Zd,b);ha=za.get(a,b);ha.init();k(a,b,U.sortObjects);ha.finish();!0===U.sortObjects&&ha.sort();ld&&Ia.beginShadows();for(var e=E,f=0,g=0,h=e.length;g<h;g++){var n=e[g];n.castShadow&&(aa.shadows[f]=n,f++)}aa.shadows.length=f;Da.render(a,b);v(E,b);ld&&Ia.endShadows();ea.frame++;ea.calls=0;ea.vertices=0;ea.faces=0;ea.points=0;void 0===c&&(c=null);this.setRenderTarget(c);wa.render(a,b,d);
|
|
|
+d=ha.opaque;e=ha.transparent;a.overrideMaterial?(f=a.overrideMaterial,d.length&&l(d,a,b,f),e.length&&l(e,a,b,f)):(d.length&&l(d,a,b),e.length&&l(e,a,b));Fa.render(a,b);Ga.render(a,b,Y);c&&pa.updateRenderTargetMipmap(c);ba.buffers.depth.setTest(!0);ba.buffers.depth.setMask(!0);ba.buffers.color.setMask(!0);sa.enabled&&sa.submitFrame()}};this.setFaceCulling=function(a,b){ba.setCullFace(a);ba.setFlipSided(0===b)};this.allocTextureUnit=function(){var a=fa;a>=ga.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+
|
|
|
+a+" texture units while this GPU supports only "+ga.maxTextures);fa+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);pa.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);pa.setTexture2D(b,
|
|
|
+c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?pa.setTextureCube(b,c):pa.setTextureCubeDynamic(b,c)}}();this.getRenderTarget=function(){return R};this.setRenderTarget=function(a){(R=a)&&void 0===W.get(a).__webglFramebuffer&&pa.setupRenderTarget(a);
|
|
|
+var b=null,c=!1;a?(b=W.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),Y.copy(a.viewport),K.copy(a.scissor),da=a.scissorTest):(Y.copy(ja).multiplyScalar(la),K.copy(kd).multiplyScalar(la),da=Re);P!==b&&(A.bindFramebuffer(A.FRAMEBUFFER,b),P=b);ba.viewport(Y);ba.scissor(K);ba.setScissorTest(da);c&&(c=W.get(a.texture),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,c.__webglTexture,a.activeMipMapLevel))};this.readRenderTargetPixels=
|
|
|
+function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=W.get(a).__webglFramebuffer;if(g){var h=!1;g!==P&&(A.bindFramebuffer(A.FRAMEBUFFER,g),h=!0);try{var l=a.texture,k=l.format,n=l.type;1023!==k&&u(k)!==A.getParameter(A.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===n||u(n)===A.getParameter(A.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(ka.get("OES_texture_float")||ka.get("WEBGL_color_buffer_float"))||
|
|
|
+1016===n&&ka.get("EXT_color_buffer_half_float")?A.checkFramebufferStatus(A.FRAMEBUFFER)===A.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&A.readPixels(b,c,d,e,u(k),u(n),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&A.bindFramebuffer(A.FRAMEBUFFER,P)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}
|
|
|
function Ib(a,b){this.name="";this.color=new F(a);this.density=void 0!==b?b:2.5E-4}function Jb(a,b,c){this.name="";this.color=new F(a);this.near=void 0!==b?b:1;this.far=void 0!==c?c:1E3}function pd(){z.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0}function ae(a,b,c,d,e){z.call(this);this.lensFlares=[];this.positionScreen=new q;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,c,d,e)}function ab(a){Q.call(this);this.type="SpriteMaterial";
|
|
|
this.color=new F(16777215);this.map=null;this.rotation=0;this.lights=this.fog=!1;this.setValues(a)}function yc(a){z.call(this);this.type="Sprite";this.material=void 0!==a?a:new ab}function zc(){z.call(this);this.type="LOD";Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Ac(a,b){a=a||[];this.bones=a.slice(0);this.boneMatrices=new Float32Array(16*this.bones.length);if(void 0===b)this.calculateInverses();else if(this.bones.length===b.length)this.boneInverses=b.slice(0);else for(console.warn("THREE.Skeleton boneInverses is the wrong length."),
|
|
|
this.boneInverses=[],a=0,b=this.bones.length;a<b;a++)this.boneInverses.push(new M)}function qd(){z.call(this);this.type="Bone"}function rd(a,b){qa.call(this,a,b);this.type="SkinnedMesh";this.bindMode="attached";this.bindMatrix=new M;this.bindMatrixInverse=new M;a=this.initBones();a=new Ac(a);this.bind(a,this.matrixWorld);this.normalizeSkinWeights()}function T(a){Q.call(this);this.type="LineBasicMaterial";this.color=new F(16777215);this.linewidth=1;this.linejoin=this.linecap="round";this.lights=!1;
|