(this.ray.origin.copy(c.position),this.ray.direction.set(b.x,b.y,.5).unproject(c).sub(c.position).normalize()):cinstanceofa.OrthographicCamera?(this.ray.origin.set(b.x,b.y,-1).unproject(c),this.ray.direction.set(0,0,-1).transformDirection(c.matrixWorld)):a.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(a,e){varf=[];c(a,this,f,e);f.sort(b);returnf},intersectObjects:function(d,e){varf=[];if(!1===dinstanceofArray)returna.warn("THREE.Raycaster.intersectObjects: objects is not an Array."),
(this.ray.origin.copy(c.position),this.ray.direction.set(b.x,b.y,.5).unproject(c).sub(c.position).normalize()):cinstanceofa.OrthographicCamera?(this.ray.origin.set(b.x,b.y,-1).unproject(c),this.ray.direction.set(0,0,-1).transformDirection(c.matrixWorld)):a.error("THREE.Raycaster: Unsupported camera type.")},intersectObject:function(a,e){varf=[];c(a,this,f,e);f.sort(b);returnf},intersectObjects:function(d,e){varf=[];if(!1===dinstanceofArray)returna.warn("THREE.Raycaster.intersectObjects: objects is not an Array."),
THREE.Object3D.prototype={constructor:THREE.Object3D,geteulerOrder(){THREE.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");returnthis.rotation.order},seteulerOrder(a){THREE.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");this.rotation.order=a},getuseQuaternion(){THREE.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},setuseQuaternion(a){THREE.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},
THREE.Object3D.prototype={constructor:THREE.Object3D,geteulerOrder(){THREE.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");returnthis.rotation.order},seteulerOrder(a){THREE.warn("THREE.Object3D: .eulerOrder has been moved to .rotation.order.");this.rotation.order=a},getuseQuaternion(){THREE.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},setuseQuaternion(a){THREE.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},
k.updateRange||-1===k.updateRange.count?l.bufferSubData(m,0,k.array):0===k.updateRange.count?console.error("THREE.WebGLRenderer.updateObject: using updateRange for THREE.DynamicBufferAttribute and marked as needsUpdate but count is 0, ensure you are using set methods or updating manually."):(l.bufferSubData(m,k.updateRange.offset*k.array.BYTES_PER_ELEMENT,k.array.subarray(k.updateRange.offset,k.updateRange.offset+k.updateRange.count)),k.updateRange.count=0),k.needsUpdate=!1)}elseif(ainstanceofTHREE.Mesh){!0===
k.buffer),l.bufferData(m,k.array,kinstanceofTHREE.DynamicBufferAttribute?l.DYNAMIC_DRAW:l.STATIC_DRAW),k.needsUpdate=!1):!0===k.needsUpdate&&(l.bindBuffer(m,k.buffer),void0===k.updateRange||-1===k.updateRange.count?l.bufferSubData(m,0,k.array):0===k.updateRange.count?console.error("THREE.WebGLRenderer.updateObject: using updateRange for THREE.DynamicBufferAttribute and marked as needsUpdate but count is 0, ensure you are using set methods or updating manually."):(l.bufferSubData(m,k.updateRange.offset*
r++,vinstanceofTHREE.HemisphereLight&&t++)}f=n;g=q;h=r;k=t;for(varx,C=0,A=0,G=b.length;A<G;A++){varE=b[A];E.castShadow&&(EinstanceofTHREE.SpotLight&&C++,EinstanceofTHREE.DirectionalLight&&!E.shadowCascade&&C++)}x=C;varJ;if(Ob&&e&&e.skeleton&&e.skeleton.useVertexTexture)J=1024;else{varI=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),N=Math.floor((I-20)/4);void0!==e&&einstanceofTHREE.SkinnedMesh&&(N=Math.min(e.skeleton.bones.length,N),N<e.skeleton.bones.length&&THREE.warn("WebGLRenderer: too many bones - "+
e.skeleton.bones.length+", this GPU supports just "+N+" (try OpenGL instead of ANGLE)"));J=N}varP={precision:V,supportsVertexTextures:Zb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:cinstanceofTHREE.FogExp2,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:pa,skinning:d.skinning,
1024;else{varI=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),N=Math.floor((I-20)/4);void0!==e&&einstanceofTHREE.SkinnedMesh&&(N=Math.min(e.skeleton.bones.length,N),N<e.skeleton.bones.length&&THREE.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+N+" (try OpenGL instead of ANGLE)"));J=N}varP={precision:V,supportsVertexTextures:Zb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,
varSb=kb[0],Tb=THREE.Math.isPowerOfTwo(Sb.width)&&THREE.Math.isPowerOfTwo(Sb.height),bb=S(W.format),wb=S(W.type);z(l.TEXTURE_CUBE_MAP,W,Tb);for(wa=0;6>wa;wa++)if(Vb)for(varlb,Ub=kb[wa].mipmaps,Eb=0,Wb=Ub.length;Eb<Wb;Eb++)lb=Ub[Eb],W.format!==THREE.RGBAFormat&&W.format!==THREE.RGBFormat?-1<rc().indexOf(bb)?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+wa,Eb,bb,lb.width,lb.height,0,lb.data):THREE.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):
W.format!==THREE.RGBAFormat&&W.format!==THREE.RGBFormat?-1<rc().indexOf(bb)?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+wa,Eb,bb,lb.width,lb.height,0,lb.data):THREE.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+wa,Eb,bb,lb.width,lb.height,0,bb,wb,lb.data);elseJb?l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+wa,0,bb,kb[wa].width,kb[wa].height,0,bb,wb,kb[wa].data):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+
b;a.spotLightAngleCos.needsUpdate=b;a.spotLightExponent.needsUpdate=b;a.spotLightDecay.needsUpdate=b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}functiony(){vara=Nb;a>=sc&&THREE.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+sc);Nb+=1;returna}functionA(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}
b}functiony(){vara=Nb;a>=sc&&THREE.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+sc);Nb+=1;returna}functionA(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}functionF(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}functionG(a){a*=P;a!==tc&&(l.lineWidth(a),tc=a)}functionE(a,b,c){uc!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),uc=a);!a||vc===b&&wc===
l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||THREE.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),l.texParameteri(a,l.TEXTURE_MAG_FILTER,K(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,K(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&THREE.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+
c||(l.polygonOffset(b,c),vc=b,wc=c)}functionz(a,b,c){c?(l.texParameteri(a,l.TEXTURE_WRAP_S,S(b.wrapS)),l.texParameteri(a,l.TEXTURE_WRAP_T,S(b.wrapT)),l.texParameteri(a,l.TEXTURE_MAG_FILTER,S(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,S(b.minFilter))):(l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||THREE.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+
b.sourceFile+" )"),l.texParameteri(a,l.TEXTURE_MAG_FILTER,K(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,K(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&THREE.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=aa.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&
a.height,0,0,d.width,d.height);THREE.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);returnd}returna}functionJ(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),
(l.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,B.getMaxAnisotropy())),b.__oldAnisotropy=b.anisotropy)}functionL(a,b){if(a.width>b||a.height>b){varc=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);THREE.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);returnd}returna}
function(){vara;returnfunction(){if(void0!==a)returna;a=[];if(aa.get("WEBGL_compressed_texture_pvrtc")||aa.get("WEBGL_compressed_texture_s3tc"))for(varb=l.getParameter(l.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);returna}}(),Oc=0<Kc.precision&&0<Mc.precision,Cc=0<Lc.precision&&0<Nc.precision;"highp"!==V||Oc||(Cc?(V="mediump",THREE.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(V="lowp",THREE.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));
"mediump"!==V||Cc||(V="lowp",THREE.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));varPc=newTHREE.ShadowMapPlugin(this,xa,ya,Ma),Qc=newTHREE.SpritePlugin(this,Da),Rc=newTHREE.LensFlarePlugin(this,pb);this.getContext=function(){returnl};this.forceContextLoss=function(){aa.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){returnZb};this.supportsFloatTextures=function(){returnaa.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){returnaa.get("OES_texture_half_float")};
c=0;c<b.length;c++)a.push(b[c]);returna}}(),Oc=0<Kc.precision&&0<Mc.precision,Cc=0<Lc.precision&&0<Nc.precision;"highp"!==V||Oc||(Cc?(V="mediump",THREE.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(V="lowp",THREE.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==V||Cc||(V="lowp",THREE.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));varPc=newTHREE.ShadowMapPlugin(this,xa,ya,Ma),Qc=newTHREE.SpritePlugin(this,Da),Rc=newTHREE.LensFlarePlugin(this,
q=k.morphTargetInfluences,s;m<d.numSupportedMorphTargets&&m<n.length;)s=c["morphTarget"+m],0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),s=c["morphNormal"+m],0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphNormalsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),k.__webglMorphTargetInfluences[m]=q[n[m]],m++;else{n=[];q=k.morphTargetInfluences;m=k.geometry.morphTargets;q.length>m.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),
h.__webglMorphNormalsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),k.__webglMorphTargetInfluences[m]=q[n[m]],m++;else{n=[];q=k.morphTargetInfluences;m=k.geometry.morphTargets;q.length>m.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),q.length=m.length);m=0;for(s=q.length;m<s;m++)n.push([q[m],m]);n.length>d.numSupportedMorphTargets?(n.sort(p),n.length=d.numSupportedMorphTargets):n.length>d.numSupportedMorphNormals?n.sort(p):0===n.length&&
G(d.linewidth),l.drawArrays(k,0,h.__webglLineCount),B.info.render.calls++):kinstanceofTHREE.PointCloud&&(l.drawArrays(l.POINTS,0,h.__webglParticleCount),B.info.render.calls++,B.info.render.points+=h.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===binstanceofTHREE.Camera)THREE.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{vare=a.fog;La="";xb=-1;Fb=null;Gb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){ainstanceof
h.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===binstanceofTHREE.Camera)THREE.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{vare=a.fog;La="";xb=-1;Fb=null;Gb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){ainstanceofTHREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);ub.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);hb.setFromMatrix(ub);
a.format!==THREE.RGBFormat?-1<rc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):THREE.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);elseif(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}elsel.texImage2D(l.TEXTURE_2D,0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);a.needsUpdate=
a,c);varf=a.mipmaps;if(ainstanceofTHREE.DataTexture)if(0<f.length&&c){for(varg=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}elsel.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);elseif(ainstanceofTHREE.CompressedTexture)for(g=0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<rc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):THREE.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Wa,a=eb,d=mb,e=nb);b!==yb&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),yb=b);xc=c;yc=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(ainstanceofTHREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");elseif(a.__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");
else{varg=!1;a.__webglFramebuffer!==yb&&(l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),g=!0);l.checkFramebufferStatus(l.FRAMEBUFFER)===l.FRAMEBUFFER_COMPLETE?l.readPixels(b,c,d,e,l.RGBA,l.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&l.bindFramebuffer(l.FRAMEBUFFER,yb)}};this.initMaterial=function(){THREE.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){THREE.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};
function(a,b,c,d,e,f){if(!(ainstanceofTHREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");elseif(a.__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{varg=!1;a.__webglFramebuffer!==yb&&(l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),g=!0);l.checkFramebufferStatus(l.FRAMEBUFFER)===
this.addPostPlugin=function(){THREE.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){THREE.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}};
l.FRAMEBUFFER_COMPLETE?l.readPixels(b,c,d,e,l.RGBA,l.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&l.bindFramebuffer(l.FRAMEBUFFER,yb)}};this.initMaterial=function(){THREE.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){THREE.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=function(){THREE.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};
this.updateShadowMap=function(){THREE.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}};