|
@@ -147,48 +147,48 @@ r.matrixWorldInverse.fromArray(f.leftViewMatrix);t.matrixWorldInverse.fromArray(
|
|
a=e.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&r.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&t.bounds.fromArray(a.rightBounds));return q};this.getStandingMatrix=function(){return h};this.isPresenting=b;this.requestAnimationFrame=function(a){e.requestAnimationFrame(a)};this.submitFrame=function(){b()&&e.submitFrame()};this.dispose=function(){"undefined"!==typeof window&&window.removeEventListener("vrdisplaypresentchange",c)}}function Jg(a){function b(){return null!==
|
|
a=e.getLayers();a.length&&(a=a[0],null!==a.leftBounds&&4===a.leftBounds.length&&r.bounds.fromArray(a.leftBounds),null!==a.rightBounds&&4===a.rightBounds.length&&t.bounds.fromArray(a.rightBounds));return q};this.getStandingMatrix=function(){return h};this.isPresenting=b;this.requestAnimationFrame=function(a){e.requestAnimationFrame(a)};this.submitFrame=function(){b()&&e.submitFrame()};this.dispose=function(){"undefined"!==typeof window&&window.removeEventListener("vrdisplaypresentchange",c)}}function Jg(a){function b(){return null!==
|
|
d&&null!==e}var c=null,d=null,e=null,f=null,g=new da;g.layers.enable(1);g.viewport=new ba;var h=new da;h.layers.enable(2);h.viewport=new ba;var k=new Fc([g,h]);k.layers.enable(1);k.layers.enable(2);this.enabled=!1;this.getDevice=function(){return c};this.setDevice=function(b){void 0!==b&&(c=b);a.setCompatibleXRDevice(b)};this.setSession=function(b){d=b;null!==d&&(d.baseLayer=new XRWebGLLayer(d,a),d.requestFrameOfReference("stage").then(function(a){e=a}))};this.getCamera=function(a){return b()?k:a};
|
|
d&&null!==e}var c=null,d=null,e=null,f=null,g=new da;g.layers.enable(1);g.viewport=new ba;var h=new da;h.layers.enable(2);h.viewport=new ba;var k=new Fc([g,h]);k.layers.enable(1);k.layers.enable(2);this.enabled=!1;this.getDevice=function(){return c};this.setDevice=function(b){void 0!==b&&(c=b);a.setCompatibleXRDevice(b)};this.setSession=function(b){d=b;null!==d&&(d.baseLayer=new XRWebGLLayer(d,a),d.requestFrameOfReference("stage").then(function(a){e=a}))};this.getCamera=function(a){return b()?k:a};
|
|
this.isPresenting=b;this.requestAnimationFrame=function(b){d.requestAnimationFrame(function(c,g){f=g.getDevicePose(e);c=d.baseLayer;g=g.views;for(var h=0;h<g.length;h++){var m=g[h],n=c.getViewport(m),u=f.getViewMatrix(m),l=k.cameras[h];l.projectionMatrix.fromArray(m.projectionMatrix);l.matrixWorldInverse.fromArray(u);l.matrixWorld.getInverse(l.matrixWorldInverse);l.viewport.set(n.x,n.y,n.width,n.height);0===h&&(k.matrixWorld.copy(l.matrixWorld),k.matrixWorldInverse.copy(l.matrixWorldInverse),k.projectionMatrix.copy(l.projectionMatrix))}a.bindFramebuffer(a.FRAMEBUFFER,
|
|
this.isPresenting=b;this.requestAnimationFrame=function(b){d.requestAnimationFrame(function(c,g){f=g.getDevicePose(e);c=d.baseLayer;g=g.views;for(var h=0;h<g.length;h++){var m=g[h],n=c.getViewport(m),u=f.getViewMatrix(m),l=k.cameras[h];l.projectionMatrix.fromArray(m.projectionMatrix);l.matrixWorldInverse.fromArray(u);l.matrixWorld.getInverse(l.matrixWorldInverse);l.viewport.set(n.x,n.y,n.width,n.height);0===h&&(k.matrixWorld.copy(l.matrixWorld),k.matrixWorldInverse.copy(l.matrixWorldInverse),k.projectionMatrix.copy(l.projectionMatrix))}a.bindFramebuffer(a.FRAMEBUFFER,
|
|
-d.baseLayer.framebuffer);b()})};this.submitFrame=function(){}}function Zd(a){function b(){la=new Kf(D);la.get("WEBGL_depth_texture");la.get("OES_texture_float");la.get("OES_texture_float_linear");la.get("OES_texture_half_float");la.get("OES_texture_half_float_linear");la.get("OES_standard_derivatives");la.get("OES_element_index_uint");la.get("ANGLE_instanced_arrays");ja=new Ye(D,la);Ta=new If(D,la,a);Z=new Hg(D,la,ja);Z.scissor(S.copy(aa).multiplyScalar(U));Z.viewport(V.copy(N).multiplyScalar(U));
|
|
|
|
-hb=new Nf(D);Ba=new wg;ea=new Ig(D,la,Z,Ba,Ta,ja,hb);ra=new Bf(D);sa=new Lf(D,ra,hb);qa=new Qf(sa,hb);va=new Pf(D);oa=new vg(T,la,Ta);ta=new Ag;pa=new Fg;ma=new Gf(T,Z,qa,R);wa=new Hf(D,la,hb);xa=new Mf(D,la,hb);ya=new Gg(T,D,Z,ea,Ta);hb.programs=oa.programs;T.context=D;T.capabilities=Ta;T.extensions=la;T.properties=Ba;T.renderLists=ta;T.state=Z;T.info=hb}function c(a){a.preventDefault();console.log("THREE.WebGLRenderer: Context Lost.");I=!0}function d(){console.log("THREE.WebGLRenderer: Context Restored.");
|
|
|
|
-I=!1;b()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);Ba.remove(a)}function f(a){var b=Ba.get(a).program;a.program=void 0;void 0!==b&&oa.releaseProgram(b)}function g(a,b,c){a.render(function(a){T.renderBufferImmediate(a,b,c)})}function h(){na.isPresenting()?na.requestAnimationFrame(k):window.requestAnimationFrame(k)}function k(a){!1!==ua&&(za(a),h())}function m(a,b,c){if(!1!==a.visible){if(a.layers.test(b.layers))if(a.isLight)B.pushLight(a),a.castShadow&&B.pushShadow(a);else if(a.isSprite)a.frustumCulled&&
|
|
|
|
-!da.intersectsSprite(a)||B.pushSprite(a);else if(a.isImmediateRenderObject)c&&Sb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(sd),z.push(a,null,a.material,Sb.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.update(),!a.frustumCulled||da.intersectsObject(a)){c&&Sb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(sd);var d=qa.update(a),e=a.material;if(Array.isArray(e))for(var f=d.groups,g=0,h=f.length;g<h;g++){var k=f[g],n=e[k.materialIndex];n&&n.visible&&z.push(a,
|
|
|
|
-d,n,Sb.z,k)}else e.visible&&z.push(a,d,e,Sb.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)m(a[g],b,c)}}function u(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,m=void 0===d?g.material:d;g=g.group;if(c.isArrayCamera){Ob=c;for(var u=c.cameras,r=0,l=u.length;r<l;r++){var t=u[r];if(h.layers.test(t.layers)){if("viewport"in t)Z.viewport(V.copy(t.viewport));else{var q=t.bounds;Z.viewport(V.set(q.x*X,q.y*ca,q.z*X,q.w*ca).multiplyScalar(U))}n(h,b,t,k,m,g)}}}else Ob=null,n(h,
|
|
|
|
-b,c,k,m,g)}}function n(a,b,c,d,e,f){a.onBeforeRender(T,b,c,d,e,f);B=pa.get(b,Ob||c);a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){var h=a.isMesh&&0>a.matrixWorld.determinant();Z.setMaterial(e,h);h=l(c,b.fog,e,a);O="";g(a,h,e)}else T.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(T,b,c,d,e,f);B=pa.get(b,Ob||c)}function r(a,b,c){var d=Ba.get(a),g=B.state.lights;c=oa.getParameters(a,g.state,
|
|
|
|
-B.state.shadowsArray,b,Y.numPlanes,Y.numIntersection,c);var h=oa.getProgramCode(a,c),k=d.program,m=!0;if(void 0===k)a.addEventListener("dispose",e);else if(k.code!==h)f(a);else{if(d.lightsHash!==g.state.hash)Ba.update(a,"lightsHash",g.state.hash);else if(void 0!==c.shaderID)return;m=!1}m&&(c.shaderID?(k=tb[c.shaderID],d.shader={name:a.type,uniforms:Ca.clone(k.uniforms),vertexShader:k.vertexShader,fragmentShader:k.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,
|
|
|
|
-fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader,T),k=oa.acquireProgram(a,d.shader,c,h),d.program=k,a.program=k);c=k.getAttributes();if(a.morphTargets)for(h=a.numSupportedMorphTargets=0;h<T.maxMorphTargets;h++)0<=c["morphTarget"+h]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(h=a.numSupportedMorphNormals=0;h<T.maxMorphNormals;h++)0<=c["morphNormal"+h]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=
|
|
|
|
-Y.numPlanes,d.numIntersection=Y.numIntersection,c.clippingPlanes=Y.uniform;d.fog=b;d.lightsHash=g.state.hash;a.lights&&(c.ambientLightColor.value=g.state.ambient,c.directionalLights.value=g.state.directional,c.spotLights.value=g.state.spot,c.rectAreaLights.value=g.state.rectArea,c.pointLights.value=g.state.point,c.hemisphereLights.value=g.state.hemi,c.directionalShadowMap.value=g.state.directionalShadowMap,c.directionalShadowMatrix.value=g.state.directionalShadowMatrix,c.spotShadowMap.value=g.state.spotShadowMap,
|
|
|
|
-c.spotShadowMatrix.value=g.state.spotShadowMatrix,c.pointShadowMap.value=g.state.pointShadowMap,c.pointShadowMatrix.value=g.state.pointShadowMatrix);a=d.program.getUniforms();a=eb.seqWithValue(a.seq,c);d.uniformsList=a}function l(a,b,c,d){Yd=0;var e=Ba.get(c),f=B.state.lights;ka&&(fa||a!==H)&&Y.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===H&&c.id===M);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==f.state.hash?
|
|
|
|
-c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Y.numPlanes&&e.numIntersection===Y.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(r(c,b,d),c.needsUpdate=!1);var g=!1,h=!1,k=!1;f=e.program;var m=f.getUniforms(),n=e.shader.uniforms;Z.useProgram(f.program)&&(k=h=g=!0);c.id!==M&&(M=c.id,h=!0);if(g||a!==H){m.setValue(D,"projectionMatrix",a.projectionMatrix);Ta.logarithmicDepthBuffer&&m.setValue(D,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));H!==(Ob||a)&&(H=Ob||a,k=h=!0);if(c.isShaderMaterial||
|
|
|
|
-c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)g=m.map.cameraPosition,void 0!==g&&g.setValue(D,Sb.setFromMatrixPosition(a.matrixWorld));(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&m.setValue(D,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(m.setOptional(D,d,"bindMatrix"),m.setOptional(D,d,"bindMatrixInverse"),a=d.skeleton))if(g=a.bones,Ta.floatVertexTextures){if(void 0===a.boneTexture){g=Math.sqrt(4*
|
|
|
|
-g.length);g=P.ceilPowerOfTwo(g);g=Math.max(g,4);var u=new Float32Array(g*g*4);u.set(a.boneMatrices);var l=new lb(u,g,g,1023,1015);l.needsUpdate=!0;a.boneMatrices=u;a.boneTexture=l;a.boneTextureSize=g}m.setValue(D,"boneTexture",a.boneTexture);m.setValue(D,"boneTextureSize",a.boneTextureSize)}else m.setOptional(D,a,"boneMatrices");h&&(m.setValue(D,"toneMappingExposure",T.toneMappingExposure),m.setValue(D,"toneMappingWhitePoint",T.toneMappingWhitePoint),c.lights&&(h=k,n.ambientLightColor.needsUpdate=
|
|
|
|
-h,n.directionalLights.needsUpdate=h,n.pointLights.needsUpdate=h,n.spotLights.needsUpdate=h,n.rectAreaLights.needsUpdate=h,n.hemisphereLights.needsUpdate=h),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)),c.isMeshBasicMaterial?q(n,c):c.isMeshLambertMaterial?(q(n,c),c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap)):c.isMeshPhongMaterial?(q(n,c),c.isMeshToonMaterial?(w(n,c),c.gradientMap&&(n.gradientMap.value=c.gradientMap)):
|
|
|
|
-w(n,c)):c.isMeshStandardMaterial?(q(n,c),c.isMeshPhysicalMaterial&&(n.clearCoat.value=c.clearCoat,n.clearCoatRoughness.value=c.clearCoatRoughness),n.roughness.value=c.roughness,n.metalness.value=c.metalness,c.roughnessMap&&(n.roughnessMap.value=c.roughnessMap),c.metalnessMap&&(n.metalnessMap.value=c.metalnessMap),c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap),c.bumpMap&&(n.bumpMap.value=c.bumpMap,n.bumpScale.value=c.bumpScale,1===c.side&&(n.bumpScale.value*=-1)),c.normalMap&&(n.normalMap.value=
|
|
|
|
-c.normalMap,n.normalScale.value.copy(c.normalScale),1===c.side&&n.normalScale.value.negate()),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias),c.envMap&&(n.envMapIntensity.value=c.envMapIntensity)):c.isMeshDepthMaterial?(q(n,c),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias)):c.isMeshDistanceMaterial?
|
|
|
|
-(q(n,c),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias),n.referencePosition.value.copy(c.referencePosition),n.nearDistance.value=c.nearDistance,n.farDistance.value=c.farDistance):c.isMeshNormalMaterial?(q(n,c),c.bumpMap&&(n.bumpMap.value=c.bumpMap,n.bumpScale.value=c.bumpScale,1===c.side&&(n.bumpScale.value*=-1)),c.normalMap&&(n.normalMap.value=c.normalMap,n.normalScale.value.copy(c.normalScale),
|
|
|
|
-1===c.side&&n.normalScale.value.negate()),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias)):c.isLineBasicMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,c.isLineDashedMaterial&&(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*U,n.scale.value=.5*ca,n.map.value=
|
|
|
|
-c.map,null!==c.map&&(!0===c.map.matrixAutoUpdate&&c.map.updateMatrix(),n.uvTransform.value.copy(c.map.matrix))):c.isShadowMaterial&&(n.color.value=c.color,n.opacity.value=c.opacity),void 0!==n.ltc_1&&(n.ltc_1.value=E.LTC_1),void 0!==n.ltc_2&&(n.ltc_2.value=E.LTC_2),eb.upload(D,e.uniformsList,n,T));c.isShaderMaterial&&!0===c.uniformsNeedUpdate&&(eb.upload(D,e.uniformsList,n,T),c.uniformsNeedUpdate=!1);m.setValue(D,"modelViewMatrix",d.modelViewMatrix);m.setValue(D,"normalMatrix",d.normalMatrix);m.setValue(D,
|
|
|
|
-"modelMatrix",d.matrixWorld);return f}function q(a,b){a.opacity.value=b.opacity;b.color&&(a.diffuse.value=b.color);b.emissive&&a.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity);b.map&&(a.map.value=b.map);b.alphaMap&&(a.alphaMap.value=b.alphaMap);b.specularMap&&(a.specularMap.value=b.specularMap);b.envMap&&(a.envMap.value=b.envMap,a.flipEnvMap.value=b.envMap&&b.envMap.isCubeTexture?-1:1,a.reflectivity.value=b.reflectivity,a.refractionRatio.value=b.refractionRatio,a.maxMipLevel.value=
|
|
|
|
-Ba.get(b.envMap).__maxMipLevel);b.lightMap&&(a.lightMap.value=b.lightMap,a.lightMapIntensity.value=b.lightMapIntensity);b.aoMap&&(a.aoMap.value=b.aoMap,a.aoMapIntensity.value=b.aoMapIntensity);if(b.map)var c=b.map;else b.specularMap?c=b.specularMap:b.displacementMap?c=b.displacementMap:b.normalMap?c=b.normalMap:b.bumpMap?c=b.bumpMap:b.roughnessMap?c=b.roughnessMap:b.metalnessMap?c=b.metalnessMap:b.alphaMap?c=b.alphaMap:b.emissiveMap&&(c=b.emissiveMap);void 0!==c&&(c.isWebGLRenderTarget&&(c=c.texture),
|
|
|
|
-!0===c.matrixAutoUpdate&&c.updateMatrix(),a.uvTransform.value.copy(c.matrix))}function w(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,1===b.side&&(a.bumpScale.value*=-1));b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale),1===b.side&&a.normalScale.value.negate());b.displacementMap&&(a.displacementMap.value=b.displacementMap,
|
|
|
|
-a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}console.log("THREE.WebGLRenderer","93dev");a=a||{};var x=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),y=void 0!==a.context?a.context:null,v=void 0!==a.alpha?a.alpha:!1,C=void 0!==a.depth?a.depth:!0,F=void 0!==a.stencil?a.stencil:!0,Q=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,G=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:
|
|
|
|
-!1,A=void 0!==a.powerPreference?a.powerPreference:"default",z=null,B=null;this.domElement=x;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 T=this,I=!1,L=null,J=null,M=-1,O="",H=
|
|
|
|
-null,Ob=null,V=new ba,S=new ba,W=null,Yd=0,X=x.width,ca=x.height,U=1,N=new ba(0,0,X,ca),aa=new ba(0,0,X,ca),ia=!1,da=new rd,Y=new Jf,ka=!1,fa=!1,sd=new K,Sb=new p;try{v={alpha:v,depth:C,stencil:F,antialias:Q,premultipliedAlpha:R,preserveDrawingBuffer:G,powerPreference:A};x.addEventListener("webglcontextlost",c,!1);x.addEventListener("webglcontextrestored",d,!1);var D=y||x.getContext("webgl",v)||x.getContext("experimental-webgl",v);if(null===D){if(null!==x.getContext("webgl"))throw Error("Error creating WebGL context with your selected attributes.");
|
|
|
|
-throw Error("Error creating WebGL context.");}void 0===D.getShaderPrecisionFormat&&(D.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(Kg){console.error("THREE.WebGLRenderer: "+Kg.message)}var la,Ta,Z,hb,Ba,ea,ra,sa,qa,oa,ta,pa,ma,va,wa,xa,ya,ja;b();var na="xr"in navigator?new Jg(D):new Ze(T);this.vr=na;var Aa=new Xe(T,qa,Ta.maxTextureSize);this.shadowMap=Aa;this.getContext=function(){return D};this.getContextAttributes=function(){return D.getContextAttributes()};
|
|
|
|
-this.forceContextLoss=function(){var a=la.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=la.get("WEBGL_lose_context");a&&a.restoreContext()};this.getPixelRatio=function(){return U};this.setPixelRatio=function(a){void 0!==a&&(U=a,this.setSize(X,ca,!1))};this.getSize=function(){return{width:X,height:ca}};this.setSize=function(a,b,c){na.isPresenting()?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(X=a,ca=b,x.width=a*U,x.height=
|
|
|
|
-b*U,!1!==c&&(x.style.width=a+"px",x.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(){return{width:X*U,height:ca*U}};this.setDrawingBufferSize=function(a,b,c){X=a;ca=b;U=c;x.width=a*c;x.height=b*c;this.setViewport(0,0,a,b)};this.getCurrentViewport=function(){return V};this.setViewport=function(a,b,c,d){N.set(a,ca-b-d,c,d);Z.viewport(V.copy(N).multiplyScalar(U))};this.setScissor=function(a,b,c,d){aa.set(a,ca-b-d,c,d);Z.scissor(S.copy(aa).multiplyScalar(U))};this.setScissorTest=
|
|
|
|
-function(a){Z.setScissorTest(ia=a)};this.getClearColor=function(){return ma.getClearColor()};this.setClearColor=function(){ma.setClearColor.apply(ma,arguments)};this.getClearAlpha=function(){return ma.getClearAlpha()};this.setClearAlpha=function(){ma.setClearAlpha.apply(ma,arguments)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=D.COLOR_BUFFER_BIT;if(void 0===b||b)d|=D.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=D.STENCIL_BUFFER_BIT;D.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(){x.removeEventListener("webglcontextlost",c,!1);x.removeEventListener("webglcontextrestored",d,!1);ta.dispose();pa.dispose();Ba.dispose();qa.dispose();na.dispose();ua=!1};this.renderBufferImmediate=function(a,b,c){Z.initAttributes();var d=Ba.get(a);a.hasPositions&&!d.position&&(d.position=D.createBuffer());
|
|
|
|
-a.hasNormals&&!d.normal&&(d.normal=D.createBuffer());a.hasUvs&&!d.uv&&(d.uv=D.createBuffer());a.hasColors&&!d.color&&(d.color=D.createBuffer());b=b.getAttributes();a.hasPositions&&(D.bindBuffer(D.ARRAY_BUFFER,d.position),D.bufferData(D.ARRAY_BUFFER,a.positionArray,D.DYNAMIC_DRAW),Z.enableAttribute(b.position),D.vertexAttribPointer(b.position,3,D.FLOAT,!1,0,0));if(a.hasNormals){D.bindBuffer(D.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,k=(g[e+1]+g[e+4]+g[e+7])/3,m=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=k;g[e+2]=m;g[e+3]=h;g[e+4]=k;g[e+5]=m;g[e+6]=h;g[e+7]=k;g[e+8]=m}D.bufferData(D.ARRAY_BUFFER,a.normalArray,D.DYNAMIC_DRAW);Z.enableAttribute(b.normal);D.vertexAttribPointer(b.normal,3,D.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(D.bindBuffer(D.ARRAY_BUFFER,d.uv),D.bufferData(D.ARRAY_BUFFER,a.uvArray,D.DYNAMIC_DRAW),Z.enableAttribute(b.uv),D.vertexAttribPointer(b.uv,
|
|
|
|
-2,D.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&(D.bindBuffer(D.ARRAY_BUFFER,d.color),D.bufferData(D.ARRAY_BUFFER,a.colorArray,D.DYNAMIC_DRAW),Z.enableAttribute(b.color),D.vertexAttribPointer(b.color,3,D.FLOAT,!1,0,0));Z.disableUnusedAttributes();D.drawArrays(D.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){var g=e.isMesh&&0>e.matrixWorld.determinant();Z.setMaterial(d,g);var h=l(a,b,d,e);a=c.id+"_"+h.id+"_"+(!0===d.wireframe);var k=!1;a!==O&&(O=a,k=!0);e.morphTargetInfluences&&
|
|
|
|
-(va.update(e,c,d,h),k=!0);g=c.index;var m=c.attributes.position;b=1;!0===d.wireframe&&(g=sa.getWireframeAttribute(c),b=2);a=wa;if(null!==g){var n=ra.get(g);a=xa;a.setIndex(n)}if(k){if(c&&c.isInstancedBufferGeometry&&null===la.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{Z.initAttributes();k=c.attributes;h=h.getAttributes();var u=d.defaultAttributeValues;
|
|
|
|
-for(F in h){var r=h[F];if(0<=r){var t=k[F];if(void 0!==t){var q=t.normalized,p=t.itemSize,w=ra.get(t);if(void 0!==w){var x=w.buffer,v=w.type;w=w.bytesPerElement;if(t.isInterleavedBufferAttribute){var y=t.data,C=y.stride;t=t.offset;y&&y.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(r,y.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=y.meshPerAttribute*y.count)):Z.enableAttribute(r);D.bindBuffer(D.ARRAY_BUFFER,x);D.vertexAttribPointer(r,p,v,q,C*w,t*w)}else t.isInstancedBufferAttribute?
|
|
|
|
-(Z.enableAttributeAndDivisor(r,t.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=t.meshPerAttribute*t.count)):Z.enableAttribute(r),D.bindBuffer(D.ARRAY_BUFFER,x),D.vertexAttribPointer(r,p,v,q,0,0)}}else if(void 0!==u&&(q=u[F],void 0!==q))switch(q.length){case 2:D.vertexAttrib2fv(r,q);break;case 3:D.vertexAttrib3fv(r,q);break;case 4:D.vertexAttrib4fv(r,q);break;default:D.vertexAttrib1fv(r,q)}}}Z.disableUnusedAttributes()}null!==g&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,n.buffer)}n=
|
|
|
|
-Infinity;null!==g?n=g.count:void 0!==m&&(n=m.count);g=c.drawRange.start*b;m=null!==f?f.start*b:0;var F=Math.max(g,m);f=Math.max(0,Math.min(n,g+c.drawRange.count*b,m+(null!==f?f.count*b:Infinity))-1-F+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)Z.setLineWidth(d.wireframeLinewidth*(null===L?U:1)),a.setMode(D.LINES);else switch(e.drawMode){case 0:a.setMode(D.TRIANGLES);break;case 1:a.setMode(D.TRIANGLE_STRIP);break;case 2:a.setMode(D.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&(d=1),Z.setLineWidth(d*
|
|
|
|
-(null===L?U:1)),e.isLineSegments?a.setMode(D.LINES):e.isLineLoop?a.setMode(D.LINE_LOOP):a.setMode(D.LINE_STRIP)):e.isPoints&&a.setMode(D.POINTS);c&&c.isInstancedBufferGeometry?0<c.maxInstancedCount&&a.renderInstances(c,F,f):a.render(F,f)}};this.compile=function(a,b){B=pa.get(a,b);B.init();a.traverse(function(a){a.isLight&&(B.pushLight(a),a.castShadow&&B.pushShadow(a))});B.setupLights(b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c=0;c<b.material.length;c++)r(b.material[c],
|
|
|
|
-a.fog,b);else r(b.material,a.fog,b)})};var ua=!1,za=null;this.animate=function(a){za=a;null!==za?ua||(h(),ua=!0):ua=!1};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(!I){O="";M=-1;H=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();na.enabled&&(b=na.getCamera(b));B=pa.get(a,b);B.init();a.onBeforeRender(T,a,b,c);sd.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);
|
|
|
|
-da.setFromMatrix(sd);fa=this.localClippingEnabled;ka=Y.init(this.clippingPlanes,fa,b);z=ta.get(a,b);z.init();m(a,b,T.sortObjects);!0===T.sortObjects&&z.sort();ka&&Y.beginShadows();Aa.render(B.state.shadowsArray,a,b);B.setupLights(b);ka&&Y.endShadows();this.info.autoReset&&this.info.reset();void 0===c&&(c=null);this.setRenderTarget(c);ma.render(z,a,b,d);d=z.opaque;var e=z.transparent;if(a.overrideMaterial){var f=a.overrideMaterial;d.length&&u(d,a,b,f);e.length&&u(e,a,b,f)}else d.length&&u(d,a,b),e.length&&
|
|
|
|
-u(e,a,b);ya.render(B.state.spritesArray,a,b);c&&ea.updateRenderTargetMipmap(c);Z.buffers.depth.setTest(!0);Z.buffers.depth.setMask(!0);Z.buffers.color.setMask(!0);Z.setPolygonOffset(!1);a.onAfterRender(T,a,b);na.enabled&&na.submitFrame();B=z=null}};this.allocTextureUnit=function(){var a=Yd;a>=Ta.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+Ta.maxTextures);Yd+=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);ea.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);ea.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."),
|
|
|
|
|
|
+d.baseLayer.framebuffer);b()})};this.getStandingMatrix=function(){console.warn("THREE.WebXRManager: getStandingMatrix() is no longer needed.");return new THREE.Matrix4};this.submitFrame=function(){}}function Zd(a){function b(){la=new Kf(D);la.get("WEBGL_depth_texture");la.get("OES_texture_float");la.get("OES_texture_float_linear");la.get("OES_texture_half_float");la.get("OES_texture_half_float_linear");la.get("OES_standard_derivatives");la.get("OES_element_index_uint");la.get("ANGLE_instanced_arrays");
|
|
|
|
+ja=new Ye(D,la);Ta=new If(D,la,a);Z=new Hg(D,la,ja);Z.scissor(S.copy(aa).multiplyScalar(U));Z.viewport(V.copy(N).multiplyScalar(U));hb=new Nf(D);Ba=new wg;ea=new Ig(D,la,Z,Ba,Ta,ja,hb);ra=new Bf(D);sa=new Lf(D,ra,hb);qa=new Qf(sa,hb);va=new Pf(D);oa=new vg(T,la,Ta);ta=new Ag;pa=new Fg;ma=new Gf(T,Z,qa,R);wa=new Hf(D,la,hb);xa=new Mf(D,la,hb);ya=new Gg(T,D,Z,ea,Ta);hb.programs=oa.programs;T.context=D;T.capabilities=Ta;T.extensions=la;T.properties=Ba;T.renderLists=ta;T.state=Z;T.info=hb}function c(a){a.preventDefault();
|
|
|
|
+console.log("THREE.WebGLRenderer: Context Lost.");I=!0}function d(){console.log("THREE.WebGLRenderer: Context Restored.");I=!1;b()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);Ba.remove(a)}function f(a){var b=Ba.get(a).program;a.program=void 0;void 0!==b&&oa.releaseProgram(b)}function g(a,b,c){a.render(function(a){T.renderBufferImmediate(a,b,c)})}function h(){na.isPresenting()?na.requestAnimationFrame(k):window.requestAnimationFrame(k)}function k(a){!1!==ua&&(za(a),h())}function m(a,
|
|
|
|
+b,c){if(!1!==a.visible){if(a.layers.test(b.layers))if(a.isLight)B.pushLight(a),a.castShadow&&B.pushShadow(a);else if(a.isSprite)a.frustumCulled&&!da.intersectsSprite(a)||B.pushSprite(a);else if(a.isImmediateRenderObject)c&&Sb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(sd),z.push(a,null,a.material,Sb.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.update(),!a.frustumCulled||da.intersectsObject(a)){c&&Sb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(sd);var d=
|
|
|
|
+qa.update(a),e=a.material;if(Array.isArray(e))for(var f=d.groups,g=0,h=f.length;g<h;g++){var k=f[g],n=e[k.materialIndex];n&&n.visible&&z.push(a,d,n,Sb.z,k)}else e.visible&&z.push(a,d,e,Sb.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)m(a[g],b,c)}}function u(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,m=void 0===d?g.material:d;g=g.group;if(c.isArrayCamera){Ob=c;for(var u=c.cameras,r=0,l=u.length;r<l;r++){var t=u[r];if(h.layers.test(t.layers)){if("viewport"in t)Z.viewport(V.copy(t.viewport));
|
|
|
|
+else{var q=t.bounds;Z.viewport(V.set(q.x*X,q.y*ca,q.z*X,q.w*ca).multiplyScalar(U))}n(h,b,t,k,m,g)}}}else Ob=null,n(h,b,c,k,m,g)}}function n(a,b,c,d,e,f){a.onBeforeRender(T,b,c,d,e,f);B=pa.get(b,Ob||c);a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){var h=a.isMesh&&0>a.matrixWorld.determinant();Z.setMaterial(e,h);h=l(c,b.fog,e,a);O="";g(a,h,e)}else T.renderBufferDirect(c,b.fog,d,e,a,f);a.onAfterRender(T,
|
|
|
|
+b,c,d,e,f);B=pa.get(b,Ob||c)}function r(a,b,c){var d=Ba.get(a),g=B.state.lights;c=oa.getParameters(a,g.state,B.state.shadowsArray,b,Y.numPlanes,Y.numIntersection,c);var h=oa.getProgramCode(a,c),k=d.program,m=!0;if(void 0===k)a.addEventListener("dispose",e);else if(k.code!==h)f(a);else{if(d.lightsHash!==g.state.hash)Ba.update(a,"lightsHash",g.state.hash);else if(void 0!==c.shaderID)return;m=!1}m&&(c.shaderID?(k=tb[c.shaderID],d.shader={name:a.type,uniforms:Ca.clone(k.uniforms),vertexShader:k.vertexShader,
|
|
|
|
+fragmentShader:k.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader,T),k=oa.acquireProgram(a,d.shader,c,h),d.program=k,a.program=k);c=k.getAttributes();if(a.morphTargets)for(h=a.numSupportedMorphTargets=0;h<T.maxMorphTargets;h++)0<=c["morphTarget"+h]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(h=a.numSupportedMorphNormals=0;h<T.maxMorphNormals;h++)0<=c["morphNormal"+h]&&a.numSupportedMorphNormals++;
|
|
|
|
+c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Y.numPlanes,d.numIntersection=Y.numIntersection,c.clippingPlanes=Y.uniform;d.fog=b;d.lightsHash=g.state.hash;a.lights&&(c.ambientLightColor.value=g.state.ambient,c.directionalLights.value=g.state.directional,c.spotLights.value=g.state.spot,c.rectAreaLights.value=g.state.rectArea,c.pointLights.value=g.state.point,c.hemisphereLights.value=g.state.hemi,c.directionalShadowMap.value=g.state.directionalShadowMap,
|
|
|
|
+c.directionalShadowMatrix.value=g.state.directionalShadowMatrix,c.spotShadowMap.value=g.state.spotShadowMap,c.spotShadowMatrix.value=g.state.spotShadowMatrix,c.pointShadowMap.value=g.state.pointShadowMap,c.pointShadowMatrix.value=g.state.pointShadowMatrix);a=d.program.getUniforms();a=eb.seqWithValue(a.seq,c);d.uniformsList=a}function l(a,b,c,d){Yd=0;var e=Ba.get(c),f=B.state.lights;ka&&(fa||a!==H)&&Y.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===H&&c.id===M);!1===c.needsUpdate&&
|
|
|
|
+(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==f.state.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Y.numPlanes&&e.numIntersection===Y.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(r(c,b,d),c.needsUpdate=!1);var g=!1,h=!1,k=!1;f=e.program;var m=f.getUniforms(),n=e.shader.uniforms;Z.useProgram(f.program)&&(k=h=g=!0);c.id!==M&&(M=c.id,h=!0);if(g||a!==H){m.setValue(D,"projectionMatrix",a.projectionMatrix);Ta.logarithmicDepthBuffer&&
|
|
|
|
+m.setValue(D,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));H!==(Ob||a)&&(H=Ob||a,k=h=!0);if(c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)g=m.map.cameraPosition,void 0!==g&&g.setValue(D,Sb.setFromMatrixPosition(a.matrixWorld));(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&m.setValue(D,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(m.setOptional(D,d,"bindMatrix"),m.setOptional(D,
|
|
|
|
+d,"bindMatrixInverse"),a=d.skeleton))if(g=a.bones,Ta.floatVertexTextures){if(void 0===a.boneTexture){g=Math.sqrt(4*g.length);g=P.ceilPowerOfTwo(g);g=Math.max(g,4);var u=new Float32Array(g*g*4);u.set(a.boneMatrices);var l=new lb(u,g,g,1023,1015);l.needsUpdate=!0;a.boneMatrices=u;a.boneTexture=l;a.boneTextureSize=g}m.setValue(D,"boneTexture",a.boneTexture);m.setValue(D,"boneTextureSize",a.boneTextureSize)}else m.setOptional(D,a,"boneMatrices");h&&(m.setValue(D,"toneMappingExposure",T.toneMappingExposure),
|
|
|
|
+m.setValue(D,"toneMappingWhitePoint",T.toneMappingWhitePoint),c.lights&&(h=k,n.ambientLightColor.needsUpdate=h,n.directionalLights.needsUpdate=h,n.pointLights.needsUpdate=h,n.spotLights.needsUpdate=h,n.rectAreaLights.needsUpdate=h,n.hemisphereLights.needsUpdate=h),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)),c.isMeshBasicMaterial?q(n,c):c.isMeshLambertMaterial?(q(n,c),c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap)):
|
|
|
|
+c.isMeshPhongMaterial?(q(n,c),c.isMeshToonMaterial?(w(n,c),c.gradientMap&&(n.gradientMap.value=c.gradientMap)):w(n,c)):c.isMeshStandardMaterial?(q(n,c),c.isMeshPhysicalMaterial&&(n.clearCoat.value=c.clearCoat,n.clearCoatRoughness.value=c.clearCoatRoughness),n.roughness.value=c.roughness,n.metalness.value=c.metalness,c.roughnessMap&&(n.roughnessMap.value=c.roughnessMap),c.metalnessMap&&(n.metalnessMap.value=c.metalnessMap),c.emissiveMap&&(n.emissiveMap.value=c.emissiveMap),c.bumpMap&&(n.bumpMap.value=
|
|
|
|
+c.bumpMap,n.bumpScale.value=c.bumpScale,1===c.side&&(n.bumpScale.value*=-1)),c.normalMap&&(n.normalMap.value=c.normalMap,n.normalScale.value.copy(c.normalScale),1===c.side&&n.normalScale.value.negate()),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias),c.envMap&&(n.envMapIntensity.value=c.envMapIntensity)):c.isMeshDepthMaterial?(q(n,c),c.displacementMap&&(n.displacementMap.value=c.displacementMap,
|
|
|
|
+n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias)):c.isMeshDistanceMaterial?(q(n,c),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias),n.referencePosition.value.copy(c.referencePosition),n.nearDistance.value=c.nearDistance,n.farDistance.value=c.farDistance):c.isMeshNormalMaterial?(q(n,c),c.bumpMap&&(n.bumpMap.value=c.bumpMap,n.bumpScale.value=c.bumpScale,1===
|
|
|
|
+c.side&&(n.bumpScale.value*=-1)),c.normalMap&&(n.normalMap.value=c.normalMap,n.normalScale.value.copy(c.normalScale),1===c.side&&n.normalScale.value.negate()),c.displacementMap&&(n.displacementMap.value=c.displacementMap,n.displacementScale.value=c.displacementScale,n.displacementBias.value=c.displacementBias)):c.isLineBasicMaterial?(n.diffuse.value=c.color,n.opacity.value=c.opacity,c.isLineDashedMaterial&&(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*U,n.scale.value=.5*ca,n.map.value=c.map,null!==c.map&&(!0===c.map.matrixAutoUpdate&&c.map.updateMatrix(),n.uvTransform.value.copy(c.map.matrix))):c.isShadowMaterial&&(n.color.value=c.color,n.opacity.value=c.opacity),void 0!==n.ltc_1&&(n.ltc_1.value=E.LTC_1),void 0!==n.ltc_2&&(n.ltc_2.value=E.LTC_2),eb.upload(D,e.uniformsList,n,T));c.isShaderMaterial&&!0===c.uniformsNeedUpdate&&(eb.upload(D,e.uniformsList,n,T),
|
|
|
|
+c.uniformsNeedUpdate=!1);m.setValue(D,"modelViewMatrix",d.modelViewMatrix);m.setValue(D,"normalMatrix",d.normalMatrix);m.setValue(D,"modelMatrix",d.matrixWorld);return f}function q(a,b){a.opacity.value=b.opacity;b.color&&(a.diffuse.value=b.color);b.emissive&&a.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity);b.map&&(a.map.value=b.map);b.alphaMap&&(a.alphaMap.value=b.alphaMap);b.specularMap&&(a.specularMap.value=b.specularMap);b.envMap&&(a.envMap.value=b.envMap,a.flipEnvMap.value=
|
|
|
|
+b.envMap&&b.envMap.isCubeTexture?-1:1,a.reflectivity.value=b.reflectivity,a.refractionRatio.value=b.refractionRatio,a.maxMipLevel.value=Ba.get(b.envMap).__maxMipLevel);b.lightMap&&(a.lightMap.value=b.lightMap,a.lightMapIntensity.value=b.lightMapIntensity);b.aoMap&&(a.aoMap.value=b.aoMap,a.aoMapIntensity.value=b.aoMapIntensity);if(b.map)var c=b.map;else b.specularMap?c=b.specularMap:b.displacementMap?c=b.displacementMap:b.normalMap?c=b.normalMap:b.bumpMap?c=b.bumpMap:b.roughnessMap?c=b.roughnessMap:
|
|
|
|
+b.metalnessMap?c=b.metalnessMap:b.alphaMap?c=b.alphaMap:b.emissiveMap&&(c=b.emissiveMap);void 0!==c&&(c.isWebGLRenderTarget&&(c=c.texture),!0===c.matrixAutoUpdate&&c.updateMatrix(),a.uvTransform.value.copy(c.matrix))}function w(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,1===b.side&&(a.bumpScale.value*=-1));b.normalMap&&(a.normalMap.value=b.normalMap,
|
|
|
|
+a.normalScale.value.copy(b.normalScale),1===b.side&&a.normalScale.value.negate());b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}console.log("THREE.WebGLRenderer","93dev");a=a||{};var x=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),y=void 0!==a.context?a.context:null,v=void 0!==a.alpha?a.alpha:!1,C=void 0!==a.depth?a.depth:!0,F=void 0!==a.stencil?
|
|
|
|
+a.stencil:!0,Q=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,G=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,A=void 0!==a.powerPreference?a.powerPreference:"default",z=null,B=null;this.domElement=x;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 T=this,I=!1,L=null,J=null,M=-1,O="",H=null,Ob=null,V=new ba,S=new ba,W=null,Yd=0,X=x.width,ca=x.height,U=1,N=new ba(0,0,X,ca),aa=new ba(0,0,X,ca),ia=!1,da=new rd,Y=new Jf,ka=!1,fa=!1,sd=new K,Sb=new p;try{v={alpha:v,depth:C,stencil:F,antialias:Q,premultipliedAlpha:R,preserveDrawingBuffer:G,powerPreference:A};x.addEventListener("webglcontextlost",c,!1);x.addEventListener("webglcontextrestored",
|
|
|
|
+d,!1);var D=y||x.getContext("webgl",v)||x.getContext("experimental-webgl",v);if(null===D){if(null!==x.getContext("webgl"))throw Error("Error creating WebGL context with your selected attributes.");throw Error("Error creating WebGL context.");}void 0===D.getShaderPrecisionFormat&&(D.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(Kg){console.error("THREE.WebGLRenderer: "+Kg.message)}var la,Ta,Z,hb,Ba,ea,ra,sa,qa,oa,ta,pa,ma,va,wa,xa,ya,ja;b();var na="xr"in navigator?
|
|
|
|
+new Jg(D):new Ze(T);this.vr=na;var Aa=new Xe(T,qa,Ta.maxTextureSize);this.shadowMap=Aa;this.getContext=function(){return D};this.getContextAttributes=function(){return D.getContextAttributes()};this.forceContextLoss=function(){var a=la.get("WEBGL_lose_context");a&&a.loseContext()};this.forceContextRestore=function(){var a=la.get("WEBGL_lose_context");a&&a.restoreContext()};this.getPixelRatio=function(){return U};this.setPixelRatio=function(a){void 0!==a&&(U=a,this.setSize(X,ca,!1))};this.getSize=
|
|
|
|
+function(){return{width:X,height:ca}};this.setSize=function(a,b,c){na.isPresenting()?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(X=a,ca=b,x.width=a*U,x.height=b*U,!1!==c&&(x.style.width=a+"px",x.style.height=b+"px"),this.setViewport(0,0,a,b))};this.getDrawingBufferSize=function(){return{width:X*U,height:ca*U}};this.setDrawingBufferSize=function(a,b,c){X=a;ca=b;U=c;x.width=a*c;x.height=b*c;this.setViewport(0,0,a,b)};this.getCurrentViewport=function(){return V};
|
|
|
|
+this.setViewport=function(a,b,c,d){N.set(a,ca-b-d,c,d);Z.viewport(V.copy(N).multiplyScalar(U))};this.setScissor=function(a,b,c,d){aa.set(a,ca-b-d,c,d);Z.scissor(S.copy(aa).multiplyScalar(U))};this.setScissorTest=function(a){Z.setScissorTest(ia=a)};this.getClearColor=function(){return ma.getClearColor()};this.setClearColor=function(){ma.setClearColor.apply(ma,arguments)};this.getClearAlpha=function(){return ma.getClearAlpha()};this.setClearAlpha=function(){ma.setClearAlpha.apply(ma,arguments)};this.clear=
|
|
|
|
+function(a,b,c){var d=0;if(void 0===a||a)d|=D.COLOR_BUFFER_BIT;if(void 0===b||b)d|=D.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=D.STENCIL_BUFFER_BIT;D.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(){x.removeEventListener("webglcontextlost",c,!1);x.removeEventListener("webglcontextrestored",d,!1);
|
|
|
|
+ta.dispose();pa.dispose();Ba.dispose();qa.dispose();na.dispose();ua=!1};this.renderBufferImmediate=function(a,b,c){Z.initAttributes();var d=Ba.get(a);a.hasPositions&&!d.position&&(d.position=D.createBuffer());a.hasNormals&&!d.normal&&(d.normal=D.createBuffer());a.hasUvs&&!d.uv&&(d.uv=D.createBuffer());a.hasColors&&!d.color&&(d.color=D.createBuffer());b=b.getAttributes();a.hasPositions&&(D.bindBuffer(D.ARRAY_BUFFER,d.position),D.bufferData(D.ARRAY_BUFFER,a.positionArray,D.DYNAMIC_DRAW),Z.enableAttribute(b.position),
|
|
|
|
+D.vertexAttribPointer(b.position,3,D.FLOAT,!1,0,0));if(a.hasNormals){D.bindBuffer(D.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,k=(g[e+1]+g[e+4]+g[e+7])/3,m=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=k;g[e+2]=m;g[e+3]=h;g[e+4]=k;g[e+5]=m;g[e+6]=h;g[e+7]=k;g[e+8]=m}D.bufferData(D.ARRAY_BUFFER,a.normalArray,D.DYNAMIC_DRAW);Z.enableAttribute(b.normal);
|
|
|
|
+D.vertexAttribPointer(b.normal,3,D.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(D.bindBuffer(D.ARRAY_BUFFER,d.uv),D.bufferData(D.ARRAY_BUFFER,a.uvArray,D.DYNAMIC_DRAW),Z.enableAttribute(b.uv),D.vertexAttribPointer(b.uv,2,D.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&(D.bindBuffer(D.ARRAY_BUFFER,d.color),D.bufferData(D.ARRAY_BUFFER,a.colorArray,D.DYNAMIC_DRAW),Z.enableAttribute(b.color),D.vertexAttribPointer(b.color,3,D.FLOAT,!1,0,0));Z.disableUnusedAttributes();D.drawArrays(D.TRIANGLES,0,a.count);a.count=
|
|
|
|
+0};this.renderBufferDirect=function(a,b,c,d,e,f){var g=e.isMesh&&0>e.matrixWorld.determinant();Z.setMaterial(d,g);var h=l(a,b,d,e);a=c.id+"_"+h.id+"_"+(!0===d.wireframe);var k=!1;a!==O&&(O=a,k=!0);e.morphTargetInfluences&&(va.update(e,c,d,h),k=!0);g=c.index;var m=c.attributes.position;b=1;!0===d.wireframe&&(g=sa.getWireframeAttribute(c),b=2);a=wa;if(null!==g){var n=ra.get(g);a=xa;a.setIndex(n)}if(k){if(c&&c.isInstancedBufferGeometry&&null===la.get("ANGLE_instanced_arrays"))console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
|
|
|
+else{Z.initAttributes();k=c.attributes;h=h.getAttributes();var u=d.defaultAttributeValues;for(F in h){var r=h[F];if(0<=r){var t=k[F];if(void 0!==t){var q=t.normalized,p=t.itemSize,w=ra.get(t);if(void 0!==w){var x=w.buffer,v=w.type;w=w.bytesPerElement;if(t.isInterleavedBufferAttribute){var y=t.data,C=y.stride;t=t.offset;y&&y.isInstancedInterleavedBuffer?(Z.enableAttributeAndDivisor(r,y.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=y.meshPerAttribute*y.count)):Z.enableAttribute(r);
|
|
|
|
+D.bindBuffer(D.ARRAY_BUFFER,x);D.vertexAttribPointer(r,p,v,q,C*w,t*w)}else t.isInstancedBufferAttribute?(Z.enableAttributeAndDivisor(r,t.meshPerAttribute),void 0===c.maxInstancedCount&&(c.maxInstancedCount=t.meshPerAttribute*t.count)):Z.enableAttribute(r),D.bindBuffer(D.ARRAY_BUFFER,x),D.vertexAttribPointer(r,p,v,q,0,0)}}else if(void 0!==u&&(q=u[F],void 0!==q))switch(q.length){case 2:D.vertexAttrib2fv(r,q);break;case 3:D.vertexAttrib3fv(r,q);break;case 4:D.vertexAttrib4fv(r,q);break;default:D.vertexAttrib1fv(r,
|
|
|
|
+q)}}}Z.disableUnusedAttributes()}null!==g&&D.bindBuffer(D.ELEMENT_ARRAY_BUFFER,n.buffer)}n=Infinity;null!==g?n=g.count:void 0!==m&&(n=m.count);g=c.drawRange.start*b;m=null!==f?f.start*b:0;var F=Math.max(g,m);f=Math.max(0,Math.min(n,g+c.drawRange.count*b,m+(null!==f?f.count*b:Infinity))-1-F+1);if(0!==f){if(e.isMesh)if(!0===d.wireframe)Z.setLineWidth(d.wireframeLinewidth*(null===L?U:1)),a.setMode(D.LINES);else switch(e.drawMode){case 0:a.setMode(D.TRIANGLES);break;case 1:a.setMode(D.TRIANGLE_STRIP);
|
|
|
|
+break;case 2:a.setMode(D.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&(d=1),Z.setLineWidth(d*(null===L?U:1)),e.isLineSegments?a.setMode(D.LINES):e.isLineLoop?a.setMode(D.LINE_LOOP):a.setMode(D.LINE_STRIP)):e.isPoints&&a.setMode(D.POINTS);c&&c.isInstancedBufferGeometry?0<c.maxInstancedCount&&a.renderInstances(c,F,f):a.render(F,f)}};this.compile=function(a,b){B=pa.get(a,b);B.init();a.traverse(function(a){a.isLight&&(B.pushLight(a),a.castShadow&&B.pushShadow(a))});B.setupLights(b);a.traverse(function(b){if(b.material)if(Array.isArray(b.material))for(var c=
|
|
|
|
+0;c<b.material.length;c++)r(b.material[c],a.fog,b);else r(b.material,a.fog,b)})};var ua=!1,za=null;this.animate=function(a){za=a;null!==za?ua||(h(),ua=!0):ua=!1};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(!I){O="";M=-1;H=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();na.enabled&&(b=na.getCamera(b));B=pa.get(a,b);B.init();a.onBeforeRender(T,a,b,c);sd.multiplyMatrices(b.projectionMatrix,
|
|
|
|
+b.matrixWorldInverse);da.setFromMatrix(sd);fa=this.localClippingEnabled;ka=Y.init(this.clippingPlanes,fa,b);z=ta.get(a,b);z.init();m(a,b,T.sortObjects);!0===T.sortObjects&&z.sort();ka&&Y.beginShadows();Aa.render(B.state.shadowsArray,a,b);B.setupLights(b);ka&&Y.endShadows();this.info.autoReset&&this.info.reset();void 0===c&&(c=null);this.setRenderTarget(c);ma.render(z,a,b,d);d=z.opaque;var e=z.transparent;if(a.overrideMaterial){var f=a.overrideMaterial;d.length&&u(d,a,b,f);e.length&&u(e,a,b,f)}else d.length&&
|
|
|
|
+u(d,a,b),e.length&&u(e,a,b);ya.render(B.state.spritesArray,a,b);c&&ea.updateRenderTargetMipmap(c);Z.buffers.depth.setTest(!0);Z.buffers.depth.setMask(!0);Z.buffers.color.setMask(!0);Z.setPolygonOffset(!1);a.onAfterRender(T,a,b);na.enabled&&na.submitFrame();B=z=null}};this.allocTextureUnit=function(){var a=Yd;a>=Ta.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+Ta.maxTextures);Yd+=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);ea.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);ea.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?ea.setTextureCube(b,c):ea.setTextureCubeDynamic(b,c)}}();this.getRenderTarget=function(){return L};this.setRenderTarget=function(a){(L=a)&&void 0===Ba.get(a).__webglFramebuffer&&ea.setupRenderTarget(a);var b=null,c=!1;a?(b=Ba.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),V.copy(a.viewport),S.copy(a.scissor),W=a.scissorTest):(V.copy(N).multiplyScalar(U),S.copy(aa).multiplyScalar(U),
|
|
a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?ea.setTextureCube(b,c):ea.setTextureCubeDynamic(b,c)}}();this.getRenderTarget=function(){return L};this.setRenderTarget=function(a){(L=a)&&void 0===Ba.get(a).__webglFramebuffer&&ea.setupRenderTarget(a);var b=null,c=!1;a?(b=Ba.get(a).__webglFramebuffer,a.isWebGLRenderTargetCube&&(b=b[a.activeCubeFace],c=!0),V.copy(a.viewport),S.copy(a.scissor),W=a.scissorTest):(V.copy(N).multiplyScalar(U),S.copy(aa).multiplyScalar(U),
|
|
W=ia);J!==b&&(D.bindFramebuffer(D.FRAMEBUFFER,b),J=b);Z.viewport(V);Z.scissor(S);Z.setScissorTest(W);c&&(c=Ba.get(a.texture),D.framebufferTexture2D(D.FRAMEBUFFER,D.COLOR_ATTACHMENT0,D.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=Ba.get(a).__webglFramebuffer;if(g){var h=!1;g!==J&&(D.bindFramebuffer(D.FRAMEBUFFER,g),h=!0);try{var k=a.texture,m=k.format,n=k.type;1023!==m&&ja.convert(m)!==
|
|
W=ia);J!==b&&(D.bindFramebuffer(D.FRAMEBUFFER,b),J=b);Z.viewport(V);Z.scissor(S);Z.setScissorTest(W);c&&(c=Ba.get(a.texture),D.framebufferTexture2D(D.FRAMEBUFFER,D.COLOR_ATTACHMENT0,D.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=Ba.get(a).__webglFramebuffer;if(g){var h=!1;g!==J&&(D.bindFramebuffer(D.FRAMEBUFFER,g),h=!0);try{var k=a.texture,m=k.format,n=k.type;1023!==m&&ja.convert(m)!==
|
|
D.getParameter(D.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===n||ja.convert(n)===D.getParameter(D.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(la.get("OES_texture_float")||la.get("WEBGL_color_buffer_float"))||1016===n&&la.get("EXT_color_buffer_half_float")?D.checkFramebufferStatus(D.FRAMEBUFFER)===D.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&D.readPixels(b,c,d,e,
|
|
D.getParameter(D.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===n||ja.convert(n)===D.getParameter(D.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n&&(la.get("OES_texture_float")||la.get("WEBGL_color_buffer_float"))||1016===n&&la.get("EXT_color_buffer_half_float")?D.checkFramebufferStatus(D.FRAMEBUFFER)===D.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&D.readPixels(b,c,d,e,
|