|
@@ -305,8 +305,8 @@ THREE.MeshNormalMaterial=function(a){THREE.Material.call(this,a);this.shading=TH
|
|
|
THREE.MeshFaceMaterial=function(a){this.materials=a instanceof Array?a:[]};THREE.MeshFaceMaterial.prototype.clone=function(){for(var a=new THREE.MeshFaceMaterial,b=0;b<this.materials.length;b++)a.materials.push(this.materials[b].clone());return a};THREE.PointCloudMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.map=null;this.size=1;this.sizeAttenuation=!0;this.vertexColors=THREE.NoColors;this.fog=!0;this.setValues(a)};THREE.PointCloudMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
THREE.PointCloudMaterial.prototype.clone=function(){var a=new THREE.PointCloudMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.size=this.size;a.sizeAttenuation=this.sizeAttenuation;a.vertexColors=this.vertexColors;a.fog=this.fog;return a};THREE.ParticleBasicMaterial=function(a){console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointCloudMaterial.");return new THREE.PointCloudMaterial(a)};
|
|
|
THREE.ParticleSystemMaterial=function(a){console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointCloudMaterial.");return new THREE.PointCloudMaterial(a)};
|
|
|
-THREE.ShaderMaterial=function(a){THREE.Material.call(this);this.vertexShader=this.fragmentShader="void main() {}";this.uniforms={};this.defines={};this.attributes=null;this.shading=THREE.SmoothShading;this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=!1;this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;this.setValues(a)};
|
|
|
-THREE.ShaderMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
+THREE.ShaderMaterial=function(a){THREE.Material.call(this);this.defines={};this.uniforms={};this.attributes=null;this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";this.shading=THREE.SmoothShading;this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.lights=this.fog=!1;this.vertexColors=THREE.NoColors;this.morphNormals=this.morphTargets=this.skinning=
|
|
|
+!1;this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;this.setValues(a)};THREE.ShaderMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
|
THREE.ShaderMaterial.prototype.clone=function(){var a=new THREE.ShaderMaterial;THREE.Material.prototype.clone.call(this,a);a.fragmentShader=this.fragmentShader;a.vertexShader=this.vertexShader;a.uniforms=THREE.UniformsUtils.clone(this.uniforms);a.attributes=this.attributes;a.defines=this.defines;a.shading=this.shading;a.wireframe=this.wireframe;a.wireframeLinewidth=this.wireframeLinewidth;a.fog=this.fog;a.lights=this.lights;a.vertexColors=this.vertexColors;a.skinning=this.skinning;a.morphTargets=
|
|
|
this.morphTargets;a.morphNormals=this.morphNormals;return a};THREE.RawShaderMaterial=function(a){THREE.ShaderMaterial.call(this,a)};THREE.RawShaderMaterial.prototype=Object.create(THREE.ShaderMaterial.prototype);THREE.RawShaderMaterial.prototype.clone=function(){var a=new THREE.RawShaderMaterial;THREE.ShaderMaterial.prototype.clone.call(this,a);return a};THREE.SpriteMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.map=null;this.rotation=0;this.fog=!1;this.setValues(a)};
|
|
|
THREE.SpriteMaterial.prototype=Object.create(THREE.Material.prototype);THREE.SpriteMaterial.prototype.clone=function(){var a=new THREE.SpriteMaterial;THREE.Material.prototype.clone.call(this,a);a.color.copy(this.color);a.map=this.map;a.rotation=this.rotation;a.fog=this.fog;return a};THREE.SpriteCanvasMaterial=function(a){THREE.Material.call(this);this.color=new THREE.Color(16777215);this.program=function(a,c){};this.setValues(a)};THREE.SpriteCanvasMaterial.prototype=Object.create(THREE.Material.prototype);
|
|
@@ -479,41 +479,41 @@ l,m=0,k=a.length;m<k;m++)if(h=a[m],l=h.object,l.visible){if(g)h=g;else{h=h[b];if
|
|
|
d.groupsNeedUpdate=!1;for(var g=0,h=d.geometryGroupsList.length;g<h;g++){e=d.geometryGroupsList[g];if(e.__webglVertexBuffer)f=!1;else{f=e;f.__webglVertexBuffer=m.createBuffer();f.__webglNormalBuffer=m.createBuffer();f.__webglTangentBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();f.__webglUVBuffer=m.createBuffer();f.__webglUV2Buffer=m.createBuffer();f.__webglSkinIndicesBuffer=m.createBuffer();f.__webglSkinWeightsBuffer=m.createBuffer();f.__webglFaceBuffer=m.createBuffer();f.__webglLineBuffer=
|
|
|
m.createBuffer();var l=void 0,k=void 0;if(f.numMorphTargets)for(f.__webglMorphTargetsBuffers=[],l=0,k=f.numMorphTargets;l<k;l++)f.__webglMorphTargetsBuffers.push(m.createBuffer());if(f.numMorphNormals)for(f.__webglMorphNormalsBuffers=[],l=0,k=f.numMorphNormals;l<k;l++)f.__webglMorphNormalsBuffers.push(m.createBuffer());P.info.memory.geometries++;c(e,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;f=d.colorsNeedUpdate=
|
|
|
!0}(f||void 0===b.__webglActive)&&F(a.__webglObjects,e,b)}b.__webglActive=!0}function F(a,b,c){var d=c.id;a[d]=a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function C(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function E(a,b){if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete b.__webglObjects[a.id];else if(a instanceof THREE.ImmediateRenderObject||
|
|
|
-a.immediateRenderCallback)for(var c=b.__webglObjectsImmediate,d=c.length-1;0<=d;d--)c[d].object===a&&c.splice(d,1);delete a.__webglActive}function A(a,b,c,d,e){qa=0;d.needsUpdate&&(d.program&&Ib(d),P.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(P.maxMorphTargets));var f=!1,g=!1,h=d.program,l=h.uniforms,k=d.uniforms;h.id!==Ja&&(m.useProgram(h.program),Ja=h.id,g=f=!0);d.id!==Da&&(Da=d.id,g=!0);if(f||a!==Aa)m.uniformMatrix4fv(l.projectionMatrix,
|
|
|
-!1,a.projectionMatrix.elements),ga&&m.uniform1f(l.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Aa&&(Aa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==l.cameraPosition&&(xa.setFromMatrixPosition(a.matrixWorld),m.uniform3f(l.cameraPosition,xa.x,xa.y,xa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==l.viewMatrix&&m.uniformMatrix4fv(l.viewMatrix,!1,a.matrixWorldInverse.elements);
|
|
|
-d.skinning&&(Jb&&e.skeleton.useVertexTexture?(null!==l.boneTexture&&(f=z(),m.uniform1i(l.boneTexture,f),P.setTexture(e.skeleton.boneTexture,f)),null!==l.boneTextureWidth&&m.uniform1i(l.boneTextureWidth,e.skeleton.boneTextureWidth),null!==l.boneTextureHeight&&m.uniform1i(l.boneTextureHeight,e.skeleton.boneTextureHeight)):null!==l.boneGlobalMatrices&&m.uniformMatrix4fv(l.boneGlobalMatrices,!1,e.skeleton.boneMatrices));if(g){c&&d.fog&&(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=
|
|
|
-c.near,k.fogFar.value=c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Ya){var n,p=f=0,r=0,q,s,t,u=Tb,w=u.directional.colors,v=u.directional.positions,x=u.point.colors,F=u.point.positions,C=u.point.distances,A=u.spot.colors,D=u.spot.positions,E=u.spot.distances,H=u.spot.directions,K=u.spot.anglesCos,L=u.spot.exponents,Q=u.hemi.skyColors,O=u.hemi.groundColors,ta=u.hemi.positions,X=0,R=0,
|
|
|
-W=0,$=0,Y=0,ya=0,wa=0,Z=0,U=n=0;c=t=U=0;for(g=b.length;c<g;c++)n=b[c],n.onlyShadow||(q=n.color,s=n.intensity,t=n.distance,n instanceof THREE.AmbientLight?n.visible&&(P.gammaInput?(f+=q.r*q.r,p+=q.g*q.g,r+=q.b*q.b):(f+=q.r,p+=q.g,r+=q.b)):n instanceof THREE.DirectionalLight?(Y+=1,n.visible&&(Ba.setFromMatrixPosition(n.matrixWorld),xa.setFromMatrixPosition(n.target.matrixWorld),Ba.sub(xa),Ba.normalize(),n=3*X,v[n]=Ba.x,v[n+1]=Ba.y,v[n+2]=Ba.z,P.gammaInput?B(w,n,q,s*s):y(w,n,q,s),X+=1)):n instanceof
|
|
|
-THREE.PointLight?(ya+=1,n.visible&&(U=3*R,P.gammaInput?B(x,U,q,s*s):y(x,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),F[U]=xa.x,F[U+1]=xa.y,F[U+2]=xa.z,C[R]=t,R+=1)):n instanceof THREE.SpotLight?(wa+=1,n.visible&&(U=3*W,P.gammaInput?B(A,U,q,s*s):y(A,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),D[U]=xa.x,D[U+1]=xa.y,D[U+2]=xa.z,E[W]=t,Ba.copy(xa),xa.setFromMatrixPosition(n.target.matrixWorld),Ba.sub(xa),Ba.normalize(),H[U]=Ba.x,H[U+1]=Ba.y,H[U+2]=Ba.z,K[W]=Math.cos(n.angle),L[W]=n.exponent,W+=1)):
|
|
|
-n instanceof THREE.HemisphereLight&&(Z+=1,n.visible&&(Ba.setFromMatrixPosition(n.matrixWorld),Ba.normalize(),t=3*$,ta[t]=Ba.x,ta[t+1]=Ba.y,ta[t+2]=Ba.z,q=n.color,n=n.groundColor,P.gammaInput?(s*=s,B(Q,t,q,s),B(O,t,n,s)):(y(Q,t,q,s),y(O,t,n,s)),$+=1)));c=3*X;for(g=Math.max(w.length,3*Y);c<g;c++)w[c]=0;c=3*R;for(g=Math.max(x.length,3*ya);c<g;c++)x[c]=0;c=3*W;for(g=Math.max(A.length,3*wa);c<g;c++)A[c]=0;c=3*$;for(g=Math.max(Q.length,3*Z);c<g;c++)Q[c]=0;c=3*$;for(g=Math.max(O.length,3*Z);c<g;c++)O[c]=
|
|
|
-0;u.directional.length=X;u.point.length=R;u.spot.length=W;u.hemi.length=$;u.ambient[0]=f;u.ambient[1]=p;u.ambient[2]=r;Ya=!1}c=Tb;k.ambientLightColor.value=c.ambient;k.directionalLightColor.value=c.directional.colors;k.directionalLightDirection.value=c.directional.positions;k.pointLightColor.value=c.point.colors;k.pointLightPosition.value=c.point.positions;k.pointLightDistance.value=c.point.distances;k.spotLightColor.value=c.spot.colors;k.spotLightPosition.value=c.spot.positions;k.spotLightDistance.value=
|
|
|
-c.spot.distances;k.spotLightDirection.value=c.spot.directions;k.spotLightAngleCos.value=c.spot.anglesCos;k.spotLightExponent.value=c.spot.exponents;k.hemisphereLightSkyColor.value=c.hemi.skyColors;k.hemisphereLightGroundColor.value=c.hemi.groundColors;k.hemisphereLightDirection.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){k.opacity.value=d.opacity;P.gammaInput?k.diffuse.value.copyGammaToLinear(d.color):
|
|
|
-k.diffuse.value=d.color;k.map.value=d.map;k.lightMap.value=d.lightMap;k.specularMap.value=d.specularMap;k.alphaMap.value=d.alphaMap;d.bumpMap&&(k.bumpMap.value=d.bumpMap,k.bumpScale.value=d.bumpScale);d.normalMap&&(k.normalMap.value=d.normalMap,k.normalScale.value.copy(d.normalScale));var S;d.map?S=d.map:d.specularMap?S=d.specularMap:d.normalMap?S=d.normalMap:d.bumpMap?S=d.bumpMap:d.alphaMap&&(S=d.alphaMap);void 0!==S&&(c=S.offset,S=S.repeat,k.offsetRepeat.value.set(c.x,c.y,S.x,S.y));k.envMap.value=
|
|
|
-d.envMap;k.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;k.reflectivity.value=d.reflectivity;k.refractionRatio.value=d.refractionRatio;k.combine.value=d.combine;k.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof THREE.LineBasicMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity,k.dashSize.value=d.dashSize,k.totalSize.value=d.dashSize+
|
|
|
-d.gapSize,k.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(k.psColor.value=d.color,k.opacity.value=d.opacity,k.size.value=d.size,k.scale.value=J.height/2,k.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(k.shininess.value=d.shininess,P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive),k.specular.value.copyGammaToLinear(d.specular)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive,k.specular.value=d.specular),d.wrapAround&&
|
|
|
-k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(k.mNear.value=a.near,k.mFar.value=a.far,k.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(k.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&k.shadowMatrix)for(S=
|
|
|
-a=0,c=b.length;S<c;S++)g=b[S],g.castShadow&&(g instanceof THREE.SpotLight||g instanceof THREE.DirectionalLight&&!g.shadowCascade)&&(k.shadowMap.value[a]=g.shadowMap,k.shadowMapSize.value[a]=g.shadowMapSize,k.shadowMatrix.value[a]=g.shadowMatrix,k.shadowDarkness.value[a]=g.shadowDarkness,k.shadowBias.value[a]=g.shadowBias,a++);b=d.uniformsList;d=0;for(k=b.length;d<k;d++)if(a=h.uniforms[b[d][1]])if(S=b[d][0],g=S.type,c=S.value,"i"===g)m.uniform1i(a,c);else if("f"===g)m.uniform1f(a,c);else if("v2"===
|
|
|
-g)m.uniform2f(a,c.x,c.y);else if("v3"===g)m.uniform3f(a,c.x,c.y,c.z);else if("v4"===g)m.uniform4f(a,c.x,c.y,c.z,c.w);else if("c"===g)m.uniform3f(a,c.r,c.g,c.b);else if("iv1"===g)m.uniform1iv(a,c);else if("iv"===g)m.uniform3iv(a,c);else if("fv1"===g)m.uniform1fv(a,c);else if("fv"===g)m.uniform3fv(a,c);else if("v2v"===g){void 0===S._array&&(S._array=new Float32Array(2*c.length));g=0;for(f=c.length;g<f;g++)p=2*g,S._array[p]=c[g].x,S._array[p+1]=c[g].y;m.uniform2fv(a,S._array)}else if("v3v"===g){void 0===
|
|
|
-S._array&&(S._array=new Float32Array(3*c.length));g=0;for(f=c.length;g<f;g++)p=3*g,S._array[p]=c[g].x,S._array[p+1]=c[g].y,S._array[p+2]=c[g].z;m.uniform3fv(a,S._array)}else if("v4v"===g){void 0===S._array&&(S._array=new Float32Array(4*c.length));g=0;for(f=c.length;g<f;g++)p=4*g,S._array[p]=c[g].x,S._array[p+1]=c[g].y,S._array[p+2]=c[g].z,S._array[p+3]=c[g].w;m.uniform4fv(a,S._array)}else if("m3"===g)m.uniformMatrix3fv(a,!1,c.elements);else if("m3v"===g){void 0===S._array&&(S._array=new Float32Array(9*
|
|
|
-c.length));g=0;for(f=c.length;g<f;g++)c[g].flattenToArrayOffset(S._array,9*g);m.uniformMatrix3fv(a,!1,S._array)}else if("m4"===g)m.uniformMatrix4fv(a,!1,c.elements);else if("m4v"===g){void 0===S._array&&(S._array=new Float32Array(16*c.length));g=0;for(f=c.length;g<f;g++)c[g].flattenToArrayOffset(S._array,16*g);m.uniformMatrix4fv(a,!1,S._array)}else if("t"===g){if(p=c,c=z(),m.uniform1i(a,c),p)if(p instanceof THREE.CubeTexture||p.image instanceof Array&&6===p.image.length){if(a=p,S=c,6===a.image.length)if(a.needsUpdate){a.image.__webglTextureCube||
|
|
|
-(a.addEventListener("dispose",Eb),a.image.__webglTextureCube=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+S);m.bindTexture(m.TEXTURE_CUBE_MAP,a.image.__webglTextureCube);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);S=a instanceof THREE.CompressedTexture;c=[];for(g=0;6>g;g++)P.autoScaleCubemaps&&!S?(f=c,p=g,r=a.image[g],w=pc,r.width<=w&&r.height<=w||(v=Math.max(r.width,r.height),u=Math.floor(r.width*w/v),w=Math.floor(r.height*w/v),v=document.createElement("canvas"),v.width=
|
|
|
-u,v.height=w,v.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,u,w),r=v),f[p]=r):c[g]=a.image[g];g=c[0];f=THREE.Math.isPowerOfTwo(g.width)&&THREE.Math.isPowerOfTwo(g.height);p=G(a.format);r=G(a.type);M(m.TEXTURE_CUBE_MAP,a,f);for(g=0;6>g;g++)if(S)for(w=c[g].mipmaps,v=0,x=w.length;v<x;v++)u=w[v],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+g,v,p,u.width,u.height,0,u.data):m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+g,v,p,u.width,u.height,0,p,r,u.data);else m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
-g,0,p,p,r,c[g]);a.generateMipmaps&&f&&m.generateMipmap(m.TEXTURE_CUBE_MAP);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+S),m.bindTexture(m.TEXTURE_CUBE_MAP,a.image.__webglTextureCube)}else p instanceof THREE.WebGLRenderTargetCube?(a=p,m.activeTexture(m.TEXTURE0+c),m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture)):P.setTexture(p,c)}else if("tv"===g){void 0===S._array&&(S._array=[]);g=0;for(f=S.value.length;g<f;g++)S._array[g]=z();m.uniform1iv(a,S._array);g=0;for(f=
|
|
|
-S.value.length;g<f;g++)p=S.value[g],c=S._array[g],p&&P.setTexture(p,c)}else console.warn("THREE.WebGLRenderer: Unknown uniform type: "+g)}m.uniformMatrix4fv(l.modelViewMatrix,!1,e._modelViewMatrix.elements);l.normalMatrix&&m.uniformMatrix3fv(l.normalMatrix,!1,e._normalMatrix.elements);null!==l.modelMatrix&&m.uniformMatrix4fv(l.modelMatrix,!1,e.matrixWorld.elements);return h}function z(){var a=qa;a>=Kb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Kb);
|
|
|
-qa+=1;return a}function B(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function y(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function Q(a){a!==ha&&(m.lineWidth(a),ha=a)}function D(a,b,c){Na!==a&&(a?m.enable(m.POLYGON_OFFSET_FILL):m.disable(m.POLYGON_OFFSET_FILL),Na=a);!a||Oa===b&&La===c||(m.polygonOffset(b,c),Oa=b,La=c)}function M(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,G(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,G(b.wrapT)),m.texParameteri(a,m.TEXTURE_MAG_FILTER,G(b.magFilter)),
|
|
|
-m.texParameteri(a,m.TEXTURE_MIN_FILTER,G(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_MAG_FILTER,H(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,H(b.minFilter)));bb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(m.texParameterf(a,bb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Lb)),b.__oldAnisotropy=b.anisotropy)}function W(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&
|
|
|
-!b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function H(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||
|
|
|
-a===THREE.NearestMipMapLinearFilter?m.NEAREST:m.LINEAR}function G(a){if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;
|
|
|
-if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return m.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return m.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return m.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return m.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return m.BYTE;if(a===THREE.ShortType)return m.SHORT;if(a===THREE.UnsignedShortType)return m.UNSIGNED_SHORT;if(a===THREE.IntType)return m.INT;if(a===THREE.UnsignedIntType)return m.UNSIGNED_INT;
|
|
|
-if(a===THREE.FloatType)return m.FLOAT;if(a===THREE.AlphaFormat)return m.ALPHA;if(a===THREE.RGBFormat)return m.RGB;if(a===THREE.RGBAFormat)return m.RGBA;if(a===THREE.LuminanceFormat)return m.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return m.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return m.FUNC_ADD;if(a===THREE.SubtractEquation)return m.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return m.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return m.ZERO;if(a===THREE.OneFactor)return m.ONE;if(a===
|
|
|
-THREE.SrcColorFactor)return m.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return m.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return m.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return m.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return m.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return m.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return m.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return m.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return m.SRC_ALPHA_SATURATE;
|
|
|
-if(void 0!==Ta){if(a===THREE.RGB_S3TC_DXT1_Format)return Ta.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var J=void 0!==a.canvas?a.canvas:document.createElement("canvas"),K=void 0!==a.context?a.context:null,X=void 0!==a.precision?
|
|
|
-a.precision:"highp",L=void 0!==a.alpha?a.alpha:!1,ia=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,Z=void 0!==a.antialias?a.antialias:!1,O=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ja=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ga=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Y=new THREE.Color(0),ta=0,wa=[],ya=[],za=!0;this.domElement=J;this.context=null;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?
|
|
|
-self.devicePixelRatio:1;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=[];this.info={memory:{programs:0,geometries:0,textures:0},
|
|
|
-render:{calls:0,vertices:0,faces:0,points:0}};var P=this,Ca=[],Ja=null,Ma=null,Da=-1,Ga=null,Aa=null,qa=0,ea=-1,ka=-1,Ka=-1,da=-1,U=-1,na=-1,ra=-1,oa=-1,Na=null,Oa=null,La=null,ha=null,Ha=0,Ia=0,va=J.width,wb=J.height,Qb=0,Rb=0,sb=new Uint8Array(16),nb=new Uint8Array(16),gc=new THREE.Frustum,Sb=new THREE.Matrix4,hc=new THREE.Matrix4,xa=new THREE.Vector3,Ba=new THREE.Vector3,Ya=!0,Tb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},
|
|
|
-spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m,ob,tb,bb,Ta,pb;(function(){try{var a={alpha:L,depth:ia,stencil:R,antialias:Z,premultipliedAlpha:O,preserveDrawingBuffer:ja};m=K||J.getContext("webgl",a)||J.getContext("experimental-webgl",a);if(null===m)throw"Error creating WebGL context.";}catch(b){console.error(b)}ob=m.getExtension("OES_texture_float");m.getExtension("OES_texture_float_linear");
|
|
|
-tb=m.getExtension("OES_standard_derivatives");bb=m.getExtension("EXT_texture_filter_anisotropic")||m.getExtension("MOZ_EXT_texture_filter_anisotropic")||m.getExtension("WEBKIT_EXT_texture_filter_anisotropic");Ta=m.getExtension("WEBGL_compressed_texture_s3tc")||m.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||m.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");pb=m.getExtension("OES_element_index_uint");null===ob&&console.log("THREE.WebGLRenderer: Float textures not supported.");null===tb&&
|
|
|
-console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===bb&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");null===Ta&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===pb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void 0===m.getShaderPrecisionFormat&&(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});ga&&m.getExtension("EXT_frag_depth")})();
|
|
|
+a.immediateRenderCallback)for(var c=b.__webglObjectsImmediate,d=c.length-1;0<=d;d--)c[d].object===a&&c.splice(d,1);delete a.__webglActive}function A(a,b,c,d,e){qa=0;d.needsUpdate&&(d.program&&Ib(d),P.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(P.maxMorphTargets));var f=!1,g=!1,h=d.program,l=h.uniforms,k=d.__webglShader.uniforms;h.id!==Ja&&(m.useProgram(h.program),Ja=h.id,g=f=!0);d.id!==Da&&(Da=d.id,g=!0);
|
|
|
+if(f||a!==Aa)m.uniformMatrix4fv(l.projectionMatrix,!1,a.projectionMatrix.elements),ga&&m.uniform1f(l.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Aa&&(Aa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==l.cameraPosition&&(xa.setFromMatrixPosition(a.matrixWorld),m.uniform3f(l.cameraPosition,xa.x,xa.y,xa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==l.viewMatrix&&
|
|
|
+m.uniformMatrix4fv(l.viewMatrix,!1,a.matrixWorldInverse.elements);d.skinning&&(Jb&&e.skeleton.useVertexTexture?(null!==l.boneTexture&&(f=z(),m.uniform1i(l.boneTexture,f),P.setTexture(e.skeleton.boneTexture,f)),null!==l.boneTextureWidth&&m.uniform1i(l.boneTextureWidth,e.skeleton.boneTextureWidth),null!==l.boneTextureHeight&&m.uniform1i(l.boneTextureHeight,e.skeleton.boneTextureHeight)):null!==l.boneGlobalMatrices&&m.uniformMatrix4fv(l.boneGlobalMatrices,!1,e.skeleton.boneMatrices));if(g){c&&d.fog&&
|
|
|
+(k.fogColor.value=c.color,c instanceof THREE.Fog?(k.fogNear.value=c.near,k.fogFar.value=c.far):c instanceof THREE.FogExp2&&(k.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Ya){var n,p=f=0,r=0,q,s,t,u=Tb,w=u.directional.colors,v=u.directional.positions,x=u.point.colors,F=u.point.positions,C=u.point.distances,A=u.spot.colors,D=u.spot.positions,E=u.spot.distances,H=u.spot.directions,K=u.spot.anglesCos,L=u.spot.exponents,Q=u.hemi.skyColors,
|
|
|
+O=u.hemi.groundColors,ta=u.hemi.positions,X=0,R=0,W=0,$=0,Y=0,ya=0,wa=0,Z=0,U=n=0;c=t=U=0;for(g=b.length;c<g;c++)n=b[c],n.onlyShadow||(q=n.color,s=n.intensity,t=n.distance,n instanceof THREE.AmbientLight?n.visible&&(P.gammaInput?(f+=q.r*q.r,p+=q.g*q.g,r+=q.b*q.b):(f+=q.r,p+=q.g,r+=q.b)):n instanceof THREE.DirectionalLight?(Y+=1,n.visible&&(Ba.setFromMatrixPosition(n.matrixWorld),xa.setFromMatrixPosition(n.target.matrixWorld),Ba.sub(xa),Ba.normalize(),n=3*X,v[n]=Ba.x,v[n+1]=Ba.y,v[n+2]=Ba.z,P.gammaInput?
|
|
|
+B(w,n,q,s*s):y(w,n,q,s),X+=1)):n instanceof THREE.PointLight?(ya+=1,n.visible&&(U=3*R,P.gammaInput?B(x,U,q,s*s):y(x,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),F[U]=xa.x,F[U+1]=xa.y,F[U+2]=xa.z,C[R]=t,R+=1)):n instanceof THREE.SpotLight?(wa+=1,n.visible&&(U=3*W,P.gammaInput?B(A,U,q,s*s):y(A,U,q,s),xa.setFromMatrixPosition(n.matrixWorld),D[U]=xa.x,D[U+1]=xa.y,D[U+2]=xa.z,E[W]=t,Ba.copy(xa),xa.setFromMatrixPosition(n.target.matrixWorld),Ba.sub(xa),Ba.normalize(),H[U]=Ba.x,H[U+1]=Ba.y,H[U+2]=Ba.z,
|
|
|
+K[W]=Math.cos(n.angle),L[W]=n.exponent,W+=1)):n instanceof THREE.HemisphereLight&&(Z+=1,n.visible&&(Ba.setFromMatrixPosition(n.matrixWorld),Ba.normalize(),t=3*$,ta[t]=Ba.x,ta[t+1]=Ba.y,ta[t+2]=Ba.z,q=n.color,n=n.groundColor,P.gammaInput?(s*=s,B(Q,t,q,s),B(O,t,n,s)):(y(Q,t,q,s),y(O,t,n,s)),$+=1)));c=3*X;for(g=Math.max(w.length,3*Y);c<g;c++)w[c]=0;c=3*R;for(g=Math.max(x.length,3*ya);c<g;c++)x[c]=0;c=3*W;for(g=Math.max(A.length,3*wa);c<g;c++)A[c]=0;c=3*$;for(g=Math.max(Q.length,3*Z);c<g;c++)Q[c]=0;c=
|
|
|
+3*$;for(g=Math.max(O.length,3*Z);c<g;c++)O[c]=0;u.directional.length=X;u.point.length=R;u.spot.length=W;u.hemi.length=$;u.ambient[0]=f;u.ambient[1]=p;u.ambient[2]=r;Ya=!1}c=Tb;k.ambientLightColor.value=c.ambient;k.directionalLightColor.value=c.directional.colors;k.directionalLightDirection.value=c.directional.positions;k.pointLightColor.value=c.point.colors;k.pointLightPosition.value=c.point.positions;k.pointLightDistance.value=c.point.distances;k.spotLightColor.value=c.spot.colors;k.spotLightPosition.value=
|
|
|
+c.spot.positions;k.spotLightDistance.value=c.spot.distances;k.spotLightDirection.value=c.spot.directions;k.spotLightAngleCos.value=c.spot.anglesCos;k.spotLightExponent.value=c.spot.exponents;k.hemisphereLightSkyColor.value=c.hemi.skyColors;k.hemisphereLightGroundColor.value=c.hemi.groundColors;k.hemisphereLightDirection.value=c.hemi.positions}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){k.opacity.value=d.opacity;P.gammaInput?
|
|
|
+k.diffuse.value.copyGammaToLinear(d.color):k.diffuse.value=d.color;k.map.value=d.map;k.lightMap.value=d.lightMap;k.specularMap.value=d.specularMap;k.alphaMap.value=d.alphaMap;d.bumpMap&&(k.bumpMap.value=d.bumpMap,k.bumpScale.value=d.bumpScale);d.normalMap&&(k.normalMap.value=d.normalMap,k.normalScale.value.copy(d.normalScale));var S;d.map?S=d.map:d.specularMap?S=d.specularMap:d.normalMap?S=d.normalMap:d.bumpMap?S=d.bumpMap:d.alphaMap&&(S=d.alphaMap);void 0!==S&&(c=S.offset,S=S.repeat,k.offsetRepeat.value.set(c.x,
|
|
|
+c.y,S.x,S.y));k.envMap.value=d.envMap;k.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;k.reflectivity.value=d.reflectivity;k.refractionRatio.value=d.refractionRatio;k.combine.value=d.combine;k.useRefract.value=d.envMap&&d.envMap.mapping instanceof THREE.CubeRefractionMapping}d instanceof THREE.LineBasicMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(k.diffuse.value=d.color,k.opacity.value=d.opacity,k.dashSize.value=d.dashSize,
|
|
|
+k.totalSize.value=d.dashSize+d.gapSize,k.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(k.psColor.value=d.color,k.opacity.value=d.opacity,k.size.value=d.size,k.scale.value=J.height/2,k.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(k.shininess.value=d.shininess,P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive),k.specular.value.copyGammaToLinear(d.specular)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive,k.specular.value=
|
|
|
+d.specular),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(P.gammaInput?(k.ambient.value.copyGammaToLinear(d.ambient),k.emissive.value.copyGammaToLinear(d.emissive)):(k.ambient.value=d.ambient,k.emissive.value=d.emissive),d.wrapAround&&k.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(k.mNear.value=a.near,k.mFar.value=a.far,k.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(k.opacity.value=d.opacity);if(e.receiveShadow&&
|
|
|
+!d._shadowPass&&k.shadowMatrix)for(S=a=0,c=b.length;S<c;S++)g=b[S],g.castShadow&&(g instanceof THREE.SpotLight||g instanceof THREE.DirectionalLight&&!g.shadowCascade)&&(k.shadowMap.value[a]=g.shadowMap,k.shadowMapSize.value[a]=g.shadowMapSize,k.shadowMatrix.value[a]=g.shadowMatrix,k.shadowDarkness.value[a]=g.shadowDarkness,k.shadowBias.value[a]=g.shadowBias,a++);b=d.uniformsList;d=0;for(k=b.length;d<k;d++)if(a=h.uniforms[b[d][1]])if(S=b[d][0],g=S.type,c=S.value,"i"===g)m.uniform1i(a,c);else if("f"===
|
|
|
+g)m.uniform1f(a,c);else if("v2"===g)m.uniform2f(a,c.x,c.y);else if("v3"===g)m.uniform3f(a,c.x,c.y,c.z);else if("v4"===g)m.uniform4f(a,c.x,c.y,c.z,c.w);else if("c"===g)m.uniform3f(a,c.r,c.g,c.b);else if("iv1"===g)m.uniform1iv(a,c);else if("iv"===g)m.uniform3iv(a,c);else if("fv1"===g)m.uniform1fv(a,c);else if("fv"===g)m.uniform3fv(a,c);else if("v2v"===g){void 0===S._array&&(S._array=new Float32Array(2*c.length));g=0;for(f=c.length;g<f;g++)p=2*g,S._array[p]=c[g].x,S._array[p+1]=c[g].y;m.uniform2fv(a,
|
|
|
+S._array)}else if("v3v"===g){void 0===S._array&&(S._array=new Float32Array(3*c.length));g=0;for(f=c.length;g<f;g++)p=3*g,S._array[p]=c[g].x,S._array[p+1]=c[g].y,S._array[p+2]=c[g].z;m.uniform3fv(a,S._array)}else if("v4v"===g){void 0===S._array&&(S._array=new Float32Array(4*c.length));g=0;for(f=c.length;g<f;g++)p=4*g,S._array[p]=c[g].x,S._array[p+1]=c[g].y,S._array[p+2]=c[g].z,S._array[p+3]=c[g].w;m.uniform4fv(a,S._array)}else if("m3"===g)m.uniformMatrix3fv(a,!1,c.elements);else if("m3v"===g){void 0===
|
|
|
+S._array&&(S._array=new Float32Array(9*c.length));g=0;for(f=c.length;g<f;g++)c[g].flattenToArrayOffset(S._array,9*g);m.uniformMatrix3fv(a,!1,S._array)}else if("m4"===g)m.uniformMatrix4fv(a,!1,c.elements);else if("m4v"===g){void 0===S._array&&(S._array=new Float32Array(16*c.length));g=0;for(f=c.length;g<f;g++)c[g].flattenToArrayOffset(S._array,16*g);m.uniformMatrix4fv(a,!1,S._array)}else if("t"===g){if(p=c,c=z(),m.uniform1i(a,c),p)if(p instanceof THREE.CubeTexture||p.image instanceof Array&&6===p.image.length){if(a=
|
|
|
+p,S=c,6===a.image.length)if(a.needsUpdate){a.image.__webglTextureCube||(a.addEventListener("dispose",Eb),a.image.__webglTextureCube=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+S);m.bindTexture(m.TEXTURE_CUBE_MAP,a.image.__webglTextureCube);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);S=a instanceof THREE.CompressedTexture;c=[];for(g=0;6>g;g++)P.autoScaleCubemaps&&!S?(f=c,p=g,r=a.image[g],w=pc,r.width<=w&&r.height<=w||(v=Math.max(r.width,r.height),u=Math.floor(r.width*w/
|
|
|
+v),w=Math.floor(r.height*w/v),v=document.createElement("canvas"),v.width=u,v.height=w,v.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,u,w),r=v),f[p]=r):c[g]=a.image[g];g=c[0];f=THREE.Math.isPowerOfTwo(g.width)&&THREE.Math.isPowerOfTwo(g.height);p=G(a.format);r=G(a.type);M(m.TEXTURE_CUBE_MAP,a,f);for(g=0;6>g;g++)if(S)for(w=c[g].mipmaps,v=0,x=w.length;v<x;v++)u=w[v],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+g,v,p,u.width,u.height,0,u.data):m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
+g,v,p,u.width,u.height,0,p,r,u.data);else m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,p,p,r,c[g]);a.generateMipmaps&&f&&m.generateMipmap(m.TEXTURE_CUBE_MAP);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+S),m.bindTexture(m.TEXTURE_CUBE_MAP,a.image.__webglTextureCube)}else p instanceof THREE.WebGLRenderTargetCube?(a=p,m.activeTexture(m.TEXTURE0+c),m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture)):P.setTexture(p,c)}else if("tv"===g){void 0===S._array&&(S._array=[]);
|
|
|
+g=0;for(f=S.value.length;g<f;g++)S._array[g]=z();m.uniform1iv(a,S._array);g=0;for(f=S.value.length;g<f;g++)p=S.value[g],c=S._array[g],p&&P.setTexture(p,c)}else console.warn("THREE.WebGLRenderer: Unknown uniform type: "+g)}m.uniformMatrix4fv(l.modelViewMatrix,!1,e._modelViewMatrix.elements);l.normalMatrix&&m.uniformMatrix3fv(l.normalMatrix,!1,e._normalMatrix.elements);null!==l.modelMatrix&&m.uniformMatrix4fv(l.modelMatrix,!1,e.matrixWorld.elements);return h}function z(){var a=qa;a>=Kb&&console.warn("WebGLRenderer: trying to use "+
|
|
|
+a+" texture units while this GPU supports only "+Kb);qa+=1;return a}function B(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function y(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function Q(a){a!==ha&&(m.lineWidth(a),ha=a)}function D(a,b,c){Na!==a&&(a?m.enable(m.POLYGON_OFFSET_FILL):m.disable(m.POLYGON_OFFSET_FILL),Na=a);!a||Oa===b&&La===c||(m.polygonOffset(b,c),Oa=b,La=c)}function M(a,b,c){c?(m.texParameteri(a,m.TEXTURE_WRAP_S,G(b.wrapS)),m.texParameteri(a,m.TEXTURE_WRAP_T,G(b.wrapT)),
|
|
|
+m.texParameteri(a,m.TEXTURE_MAG_FILTER,G(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,G(b.minFilter))):(m.texParameteri(a,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(a,m.TEXTURE_MAG_FILTER,H(b.magFilter)),m.texParameteri(a,m.TEXTURE_MIN_FILTER,H(b.minFilter)));bb&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(m.texParameterf(a,bb.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Lb)),b.__oldAnisotropy=b.anisotropy)}
|
|
|
+function W(a,b){m.bindRenderbuffer(m.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_COMPONENT16,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(m.renderbufferStorage(m.RENDERBUFFER,m.DEPTH_STENCIL,b.width,b.height),m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a)):m.renderbufferStorage(m.RENDERBUFFER,m.RGBA4,b.width,b.height)}function H(a){return a===
|
|
|
+THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?m.NEAREST:m.LINEAR}function G(a){if(a===THREE.RepeatWrapping)return m.REPEAT;if(a===THREE.ClampToEdgeWrapping)return m.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return m.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return m.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return m.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return m.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return m.LINEAR;
|
|
|
+if(a===THREE.LinearMipMapNearestFilter)return m.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return m.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return m.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return m.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return m.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return m.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return m.BYTE;if(a===THREE.ShortType)return m.SHORT;if(a===THREE.UnsignedShortType)return m.UNSIGNED_SHORT;
|
|
|
+if(a===THREE.IntType)return m.INT;if(a===THREE.UnsignedIntType)return m.UNSIGNED_INT;if(a===THREE.FloatType)return m.FLOAT;if(a===THREE.AlphaFormat)return m.ALPHA;if(a===THREE.RGBFormat)return m.RGB;if(a===THREE.RGBAFormat)return m.RGBA;if(a===THREE.LuminanceFormat)return m.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return m.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return m.FUNC_ADD;if(a===THREE.SubtractEquation)return m.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return m.FUNC_REVERSE_SUBTRACT;
|
|
|
+if(a===THREE.ZeroFactor)return m.ZERO;if(a===THREE.OneFactor)return m.ONE;if(a===THREE.SrcColorFactor)return m.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return m.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return m.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return m.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return m.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return m.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return m.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return m.ONE_MINUS_DST_COLOR;
|
|
|
+if(a===THREE.SrcAlphaSaturateFactor)return m.SRC_ALPHA_SATURATE;if(void 0!==Ta){if(a===THREE.RGB_S3TC_DXT1_Format)return Ta.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return Ta.COMPRESSED_RGBA_S3TC_DXT5_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var J=void 0!==a.canvas?a.canvas:document.createElement("canvas"),
|
|
|
+K=void 0!==a.context?a.context:null,X=void 0!==a.precision?a.precision:"highp",L=void 0!==a.alpha?a.alpha:!1,ia=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,Z=void 0!==a.antialias?a.antialias:!1,O=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,ja=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ga=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Y=new THREE.Color(0),ta=0,wa=[],ya=[],za=!0;this.domElement=J;this.context=null;this.devicePixelRatio=void 0!==
|
|
|
+a.devicePixelRatio?a.devicePixelRatio:void 0!==self.devicePixelRatio?self.devicePixelRatio:1;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapAutoUpdate=!0;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.renderPluginsPre=[];this.renderPluginsPost=
|
|
|
+[];this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var P=this,Ca=[],Ja=null,Ma=null,Da=-1,Ga=null,Aa=null,qa=0,ea=-1,ka=-1,Ka=-1,da=-1,U=-1,na=-1,ra=-1,oa=-1,Na=null,Oa=null,La=null,ha=null,Ha=0,Ia=0,va=J.width,wb=J.height,Qb=0,Rb=0,sb=new Uint8Array(16),nb=new Uint8Array(16),gc=new THREE.Frustum,Sb=new THREE.Matrix4,hc=new THREE.Matrix4,xa=new THREE.Vector3,Ba=new THREE.Vector3,Ya=!0,Tb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},
|
|
|
+point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},m,ob,tb,bb,Ta,pb;(function(){try{var a={alpha:L,depth:ia,stencil:R,antialias:Z,premultipliedAlpha:O,preserveDrawingBuffer:ja};m=K||J.getContext("webgl",a)||J.getContext("experimental-webgl",a);if(null===m)throw"Error creating WebGL context.";}catch(b){console.error(b)}ob=m.getExtension("OES_texture_float");
|
|
|
+m.getExtension("OES_texture_float_linear");tb=m.getExtension("OES_standard_derivatives");bb=m.getExtension("EXT_texture_filter_anisotropic")||m.getExtension("MOZ_EXT_texture_filter_anisotropic")||m.getExtension("WEBKIT_EXT_texture_filter_anisotropic");Ta=m.getExtension("WEBGL_compressed_texture_s3tc")||m.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||m.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");pb=m.getExtension("OES_element_index_uint");null===ob&&console.log("THREE.WebGLRenderer: Float textures not supported.");
|
|
|
+null===tb&&console.log("THREE.WebGLRenderer: Standard derivatives not supported.");null===bb&&console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supported.");null===Ta&&console.log("THREE.WebGLRenderer: S3TC compressed textures not supported.");null===pb&&console.log("THREE.WebGLRenderer: elementindex as unsigned integer not supported.");void 0===m.getShaderPrecisionFormat&&(m.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});ga&&m.getExtension("EXT_frag_depth")})();
|
|
|
m.clearColor(0,0,0,1);m.clearDepth(1);m.clearStencil(0);m.enable(m.DEPTH_TEST);m.depthFunc(m.LEQUAL);m.frontFace(m.CCW);m.cullFace(m.BACK);m.enable(m.CULL_FACE);m.enable(m.BLEND);m.blendEquation(m.FUNC_ADD);m.blendFunc(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA);m.viewport(Ha,Ia,va,wb);m.clearColor(Y.r,Y.g,Y.b,ta);this.context=m;var Kb=m.getParameter(m.MAX_TEXTURE_IMAGE_UNITS),qc=m.getParameter(m.MAX_VERTEX_TEXTURE_IMAGE_UNITS);m.getParameter(m.MAX_TEXTURE_SIZE);var pc=m.getParameter(m.MAX_CUBE_MAP_TEXTURE_SIZE),
|
|
|
Lb=bb?m.getParameter(bb.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,Mb=0<qc,Jb=Mb&&ob;Ta&&m.getParameter(m.COMPRESSED_TEXTURE_FORMATS);var rc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.HIGH_FLOAT),sc=m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.VERTEX_SHADER,m.LOW_FLOAT);var zc=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.HIGH_FLOAT),Ac=m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.MEDIUM_FLOAT);m.getShaderPrecisionFormat(m.FRAGMENT_SHADER,m.LOW_FLOAT);var Bc=
|
|
|
0<rc.precision&&0<zc.precision,Nb=0<sc.precision&&0<Ac.precision;"highp"!==X||Bc||(Nb?(X="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(X="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==X||Nb||(X="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));this.getContext=function(){return m};this.supportsVertexTextures=function(){return Mb};this.supportsFloatTextures=function(){return ob};
|
|
@@ -549,37 +549,37 @@ m.bindTexture(m.TEXTURE_CUBE_MAP,null)):(m.bindTexture(m.TEXTURE_2D,c.__webglTex
|
|
|
a.__objectsAdded[0],d=a,e=void 0,f=void 0;void 0===c.__webglInit&&(c.__webglInit=!0,c._modelViewMatrix=new THREE.Matrix4,c._normalMatrix=new THREE.Matrix3);e=c.geometry;if(void 0!==e&&void 0===e.__webglInit)if(e.__webglInit=!0,e.addEventListener("dispose",Pb),e instanceof THREE.BufferGeometry)g(e);else if(c instanceof THREE.Mesh)void 0!==c.__webglActive&&E(c,d),w(d,c,e);else if(c instanceof THREE.Line){if(!e.__webglVertexBuffer){f=e;f.__webglVertexBuffer=m.createBuffer();f.__webglColorBuffer=m.createBuffer();
|
|
|
f.__webglLineDistanceBuffer=m.createBuffer();P.info.memory.geometries++;var f=e,h=c,k=f.vertices.length;f.__vertexArray=new Float32Array(3*k);f.__colorArray=new Float32Array(3*k);f.__lineDistanceArray=new Float32Array(1*k);f.__webglLineCount=k;b(f,h);e.verticesNeedUpdate=!0;e.colorsNeedUpdate=!0;e.lineDistancesNeedUpdate=!0}}else c instanceof THREE.PointCloud&&!e.__webglVertexBuffer&&(f=e,f.__webglVertexBuffer=m.createBuffer(),f.__webglColorBuffer=m.createBuffer(),P.info.memory.geometries++,f=e,h=
|
|
|
c,k=f.vertices.length,f.__vertexArray=new Float32Array(3*k),f.__colorArray=new Float32Array(3*k),f.__sortArray=[],f.__webglParticleCount=k,b(f,h),e.verticesNeedUpdate=!0,e.colorsNeedUpdate=!0);if(void 0===c.__webglActive){if(c instanceof THREE.Mesh)if(e=c.geometry,e instanceof THREE.BufferGeometry)F(d.__webglObjects,e,c);else{if(e instanceof THREE.Geometry)for(h=0,k=e.geometryGroupsList.length;h<k;h++)f=e.geometryGroupsList[h],F(d.__webglObjects,f,c)}else c instanceof THREE.Line||c instanceof THREE.PointCloud?
|
|
|
-(e=c.geometry,F(d.__webglObjects,e,c)):(c instanceof THREE.ImmediateRenderObject||c.immediateRenderCallback)&&d.__webglObjectsImmediate.push({id:null,object:c,opaque:null,transparent:null,z:0});c.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;)E(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1)};this.initMaterial=function(a,b,c,d){var e,f,g,h;a.addEventListener("dispose",fc);var k,l,n,p;a instanceof THREE.MeshDepthMaterial?p="depth":a instanceof THREE.MeshNormalMaterial?
|
|
|
-p="normal":a instanceof THREE.MeshBasicMaterial?p="basic":a instanceof THREE.MeshLambertMaterial?p="lambert":a instanceof THREE.MeshPhongMaterial?p="phong":a instanceof THREE.LineBasicMaterial?p="basic":a instanceof THREE.LineDashedMaterial?p="dashed":a instanceof THREE.PointCloudMaterial&&(p="particle_basic");p&&(e=THREE.ShaderLib[p],a.uniforms=THREE.UniformsUtils.clone(e.uniforms),a.vertexShader=e.vertexShader,a.fragmentShader=e.fragmentShader);n=h=g=f=e=0;for(var r=b.length;n<r;n++){var q=b[n];
|
|
|
-q.onlyShadow||!1===q.visible||(q instanceof THREE.DirectionalLight&&e++,q instanceof THREE.PointLight&&f++,q instanceof THREE.SpotLight&&g++,q instanceof THREE.HemisphereLight&&h++)}r=n=0;for(q=b.length;r<q;r++){var s=b[r];s.castShadow&&(s instanceof THREE.SpotLight&&n++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&n++)}b=n;Jb&&d&&d.skeleton&&d.skeleton.useVertexTexture?n=1024:(n=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),n=Math.floor((n-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&
|
|
|
-(n=Math.min(d.skeleton.bones.length,n),n<d.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));c={precision:X,supportsVertexTextures:Mb,map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,alphaMap:!!a.alphaMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,
|
|
|
-logarithmicDepthBuffer:ga,skinning:a.skinning,maxBones:n,useVertexTexture:Jb&&d&&d.skeleton&&d.skeleton.useVertexTexture,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:h,maxShadows:b,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow&&0<b,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,
|
|
|
-metal:a.metal,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide};d=[];p?d.push(p):(d.push(a.fragmentShader),d.push(a.vertexShader));for(var t in a.defines)d.push(t),d.push(a.defines[t]);for(l in c)d.push(l),d.push(c[l]);p=d.join();var u;l=0;for(t=Ca.length;l<t;l++)if(d=Ca[l],d.code===p){u=d;u.usedTimes++;break}void 0===u&&(u=new THREE.WebGLProgram(this,p,a,c),Ca.push(u),P.info.memory.programs=Ca.length);a.program=u;u=a.program.attributes;if(a.morphTargets)for(a.numSupportedMorphTargets=
|
|
|
-0,t="morphTarget",l=0;l<this.maxMorphTargets;l++)p=t+l,0<=u[p]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(a.numSupportedMorphNormals=0,t="morphNormal",l=0;l<this.maxMorphNormals;l++)p=t+l,0<=u[p]&&a.numSupportedMorphNormals++;a.uniformsList=[];for(k in a.uniforms)a.uniformsList.push([a.uniforms[k],k])};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?m.disable(m.CULL_FACE):(b===THREE.FrontFaceDirectionCW?m.frontFace(m.CW):m.frontFace(m.CCW),a===THREE.CullFaceBack?m.cullFace(m.BACK):
|
|
|
-a===THREE.CullFaceFront?m.cullFace(m.FRONT):m.cullFace(m.FRONT_AND_BACK),m.enable(m.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;ea!==b&&(b?m.disable(m.CULL_FACE):m.enable(m.CULL_FACE),ea=b);ka!==a&&(a?m.frontFace(m.CW):m.frontFace(m.CCW),ka=a)};this.setDepthTest=function(a){ra!==a&&(a?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST),ra=a)};this.setDepthWrite=function(a){oa!==a&&(m.depthMask(a),oa=a)};this.setBlending=function(a,b,c,d){a!==
|
|
|
-Ka&&(a===THREE.NoBlending?m.disable(m.BLEND):a===THREE.AdditiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.SRC_ALPHA,m.ONE)):a===THREE.SubtractiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.SRC_COLOR)):a===THREE.CustomBlending?m.enable(m.BLEND):(m.enable(m.BLEND),m.blendEquationSeparate(m.FUNC_ADD,m.FUNC_ADD),m.blendFuncSeparate(m.SRC_ALPHA,
|
|
|
-m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA)),Ka=a);if(a===THREE.CustomBlending){if(b!==da&&(m.blendEquation(G(b)),da=b),c!==U||d!==na)m.blendFunc(G(c),G(d)),U=c,na=d}else na=U=da=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",Eb),a.__webglTexture=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+b);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,
|
|
|
-a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);var c=a.image,d=THREE.Math.isPowerOfTwo(c.width)&&THREE.Math.isPowerOfTwo(c.height),e=G(a.format),f=G(a.type);M(m.TEXTURE_2D,a,d);var g=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<g.length&&d){for(var h=0,k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,c.width,c.height,0,e,f,c.data);else if(a instanceof THREE.CompressedTexture)for(h=
|
|
|
-0,k=g.length;h<k;h++)c=g[h],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,c.data):m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,f,c.data);else if(0<g.length&&d){h=0;for(k=g.length;h<k;h++)c=g[h],m.texImage2D(m.TEXTURE_2D,h,e,e,f,c);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,e,f,a.image);a.generateMipmaps&&d&&m.generateMipmap(m.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+b),m.bindTexture(m.TEXTURE_2D,
|
|
|
-a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",ec);a.__webglTexture=m.createTexture();P.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=G(a.format),e=G(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);
|
|
|
-M(m.TEXTURE_CUBE_MAP,a,c);for(var g=0;6>g;g++){a.__webglFramebuffer[g]=m.createFramebuffer();a.__webglRenderbuffer[g]=m.createRenderbuffer();m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,d,a.width,a.height,0,d,e,null);var f=a,h=m.TEXTURE_CUBE_MAP_POSITIVE_X+g;m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer[g]);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,h,f.__webglTexture,0);W(a.__webglRenderbuffer[g],a)}c&&m.generateMipmap(m.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=m.createFramebuffer(),
|
|
|
-a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:m.createRenderbuffer(),m.bindTexture(m.TEXTURE_2D,a.__webglTexture),M(m.TEXTURE_2D,a,c),m.texImage2D(m.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=m.TEXTURE_2D,m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):
|
|
|
-a.depthBuffer&&a.stencilBuffer&&m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):W(a.__webglRenderbuffer,a),c&&m.generateMipmap(m.TEXTURE_2D);b?m.bindTexture(m.TEXTURE_CUBE_MAP,null):m.bindTexture(m.TEXTURE_2D,null);m.bindRenderbuffer(m.RENDERBUFFER,null);m.bindFramebuffer(m.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=va,a=wb,d=Ha,e=Ia);b!==Ma&&(m.bindFramebuffer(m.FRAMEBUFFER,
|
|
|
-b),m.viewport(d,e,c,a),Ma=b);Qb=c;Rb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
|
|
|
+(e=c.geometry,F(d.__webglObjects,e,c)):(c instanceof THREE.ImmediateRenderObject||c.immediateRenderCallback)&&d.__webglObjectsImmediate.push({id:null,object:c,opaque:null,transparent:null,z:0});c.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;)E(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1)};this.initMaterial=function(a,b,c,d){var e,g,f,h;a.addEventListener("dispose",fc);var k,l,n,p;a instanceof THREE.MeshDepthMaterial?p="depth":a instanceof THREE.MeshNormalMaterial?
|
|
|
+p="normal":a instanceof THREE.MeshBasicMaterial?p="basic":a instanceof THREE.MeshLambertMaterial?p="lambert":a instanceof THREE.MeshPhongMaterial?p="phong":a instanceof THREE.LineBasicMaterial?p="basic":a instanceof THREE.LineDashedMaterial?p="dashed":a instanceof THREE.PointCloudMaterial&&(p="particle_basic");p?(e=THREE.ShaderLib[p],a.__webglShader={uniforms:THREE.UniformsUtils.clone(e.uniforms),vertexShader:e.vertexShader,fragmentShader:e.fragmentShader}):a.__webglShader={uniforms:a.uniforms,vertexShader:a.vertexShader,
|
|
|
+fragmentShader:a.fragmentShader};n=h=f=g=e=0;for(var r=b.length;n<r;n++){var q=b[n];q.onlyShadow||!1===q.visible||(q instanceof THREE.DirectionalLight&&e++,q instanceof THREE.PointLight&&g++,q instanceof THREE.SpotLight&&f++,q instanceof THREE.HemisphereLight&&h++)}r=n=0;for(q=b.length;r<q;r++){var s=b[r];s.castShadow&&(s instanceof THREE.SpotLight&&n++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&n++)}b=n;Jb&&d&&d.skeleton&&d.skeleton.useVertexTexture?n=1024:(n=m.getParameter(m.MAX_VERTEX_UNIFORM_VECTORS),
|
|
|
+n=Math.floor((n-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(n=Math.min(d.skeleton.bones.length,n),n<d.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.skeleton.bones.length+", this GPU supports just "+n+" (try OpenGL instead of ANGLE)")));c={precision:X,supportsVertexTextures:Mb,map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,alphaMap:!!a.alphaMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,
|
|
|
+fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,logarithmicDepthBuffer:ga,skinning:a.skinning,maxBones:n,useVertexTexture:Jb&&d&&d.skeleton&&d.skeleton.useVertexTexture,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:g,maxSpotLights:f,maxHemiLights:h,maxShadows:b,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow&&0<b,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,
|
|
|
+shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide};d=[];p?d.push(p):(d.push(a.fragmentShader),d.push(a.vertexShader));for(var t in a.defines)d.push(t),d.push(a.defines[t]);for(l in c)d.push(l),d.push(c[l]);p=d.join();var u;l=0;for(t=Ca.length;l<t;l++)if(d=Ca[l],d.code===p){u=d;u.usedTimes++;break}void 0===u&&(u=new THREE.WebGLProgram(this,p,a,c),Ca.push(u),P.info.memory.programs=
|
|
|
+Ca.length);a.program=u;u=a.program.attributes;if(a.morphTargets)for(a.numSupportedMorphTargets=0,t="morphTarget",l=0;l<this.maxMorphTargets;l++)p=t+l,0<=u[p]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(a.numSupportedMorphNormals=0,t="morphNormal",l=0;l<this.maxMorphNormals;l++)p=t+l,0<=u[p]&&a.numSupportedMorphNormals++;a.uniformsList=[];for(k in a.__webglShader.uniforms)a.uniformsList.push([a.__webglShader.uniforms[k],k])};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?m.disable(m.CULL_FACE):
|
|
|
+(b===THREE.FrontFaceDirectionCW?m.frontFace(m.CW):m.frontFace(m.CCW),a===THREE.CullFaceBack?m.cullFace(m.BACK):a===THREE.CullFaceFront?m.cullFace(m.FRONT):m.cullFace(m.FRONT_AND_BACK),m.enable(m.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;ea!==b&&(b?m.disable(m.CULL_FACE):m.enable(m.CULL_FACE),ea=b);ka!==a&&(a?m.frontFace(m.CW):m.frontFace(m.CCW),ka=a)};this.setDepthTest=function(a){ra!==a&&(a?m.enable(m.DEPTH_TEST):m.disable(m.DEPTH_TEST),
|
|
|
+ra=a)};this.setDepthWrite=function(a){oa!==a&&(m.depthMask(a),oa=a)};this.setBlending=function(a,b,c,d){a!==Ka&&(a===THREE.NoBlending?m.disable(m.BLEND):a===THREE.AdditiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.SRC_ALPHA,m.ONE)):a===THREE.SubtractiveBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(m.enable(m.BLEND),m.blendEquation(m.FUNC_ADD),m.blendFunc(m.ZERO,m.SRC_COLOR)):a===THREE.CustomBlending?
|
|
|
+m.enable(m.BLEND):(m.enable(m.BLEND),m.blendEquationSeparate(m.FUNC_ADD,m.FUNC_ADD),m.blendFuncSeparate(m.SRC_ALPHA,m.ONE_MINUS_SRC_ALPHA,m.ONE,m.ONE_MINUS_SRC_ALPHA)),Ka=a);if(a===THREE.CustomBlending){if(b!==da&&(m.blendEquation(G(b)),da=b),c!==U||d!==na)m.blendFunc(G(c),G(d)),U=c,na=d}else na=U=da=null};this.setTexture=function(a,b){if(a.needsUpdate){a.__webglInit||(a.__webglInit=!0,a.addEventListener("dispose",Eb),a.__webglTexture=m.createTexture(),P.info.memory.textures++);m.activeTexture(m.TEXTURE0+
|
|
|
+b);m.bindTexture(m.TEXTURE_2D,a.__webglTexture);m.pixelStorei(m.UNPACK_FLIP_Y_WEBGL,a.flipY);m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);m.pixelStorei(m.UNPACK_ALIGNMENT,a.unpackAlignment);var c=a.image,d=THREE.Math.isPowerOfTwo(c.width)&&THREE.Math.isPowerOfTwo(c.height),e=G(a.format),g=G(a.type);M(m.TEXTURE_2D,a,d);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&d){for(var h=0,k=f.length;h<k;h++)c=f[h],m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,g,
|
|
|
+c.data);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,c.width,c.height,0,e,g,c.data);else if(a instanceof THREE.CompressedTexture)for(h=0,k=f.length;h<k;h++)c=f[h],a.format!==THREE.RGBAFormat?m.compressedTexImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,c.data):m.texImage2D(m.TEXTURE_2D,h,e,c.width,c.height,0,e,g,c.data);else if(0<f.length&&d){h=0;for(k=f.length;h<k;h++)c=f[h],m.texImage2D(m.TEXTURE_2D,h,e,e,g,c);a.generateMipmaps=!1}else m.texImage2D(m.TEXTURE_2D,0,e,e,g,a.image);a.generateMipmaps&&
|
|
|
+d&&m.generateMipmap(m.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()}else m.activeTexture(m.TEXTURE0+b),m.bindTexture(m.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&!a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",ec);a.__webglTexture=m.createTexture();P.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),
|
|
|
+d=G(a.format),e=G(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];m.bindTexture(m.TEXTURE_CUBE_MAP,a.__webglTexture);M(m.TEXTURE_CUBE_MAP,a,c);for(var g=0;6>g;g++){a.__webglFramebuffer[g]=m.createFramebuffer();a.__webglRenderbuffer[g]=m.createRenderbuffer();m.texImage2D(m.TEXTURE_CUBE_MAP_POSITIVE_X+g,0,d,a.width,a.height,0,d,e,null);var f=a,h=m.TEXTURE_CUBE_MAP_POSITIVE_X+g;m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer[g]);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,
|
|
|
+h,f.__webglTexture,0);W(a.__webglRenderbuffer[g],a)}c&&m.generateMipmap(m.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=m.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:m.createRenderbuffer(),m.bindTexture(m.TEXTURE_2D,a.__webglTexture),M(m.TEXTURE_2D,a,c),m.texImage2D(m.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=m.TEXTURE_2D,m.bindFramebuffer(m.FRAMEBUFFER,a.__webglFramebuffer),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,d,a.__webglTexture,
|
|
|
+0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&m.framebufferRenderbuffer(m.FRAMEBUFFER,m.DEPTH_STENCIL_ATTACHMENT,m.RENDERBUFFER,a.__webglRenderbuffer):W(a.__webglRenderbuffer,a),c&&m.generateMipmap(m.TEXTURE_2D);b?m.bindTexture(m.TEXTURE_CUBE_MAP,null):m.bindTexture(m.TEXTURE_2D,null);m.bindRenderbuffer(m.RENDERBUFFER,null);m.bindFramebuffer(m.FRAMEBUFFER,null)}a?
|
|
|
+(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=va,a=wb,d=Ha,e=Ia);b!==Ma&&(m.bindFramebuffer(m.FRAMEBUFFER,b),m.viewport(d,e,c,a),Ma=b);Qb=c;Rb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};
|
|
|
THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:
|
|
|
THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=null};
|
|
|
THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){this.width=a;this.height=b},clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;
|
|
|
a.shareDepthFrom=this.shareDepthFrom;return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);
|
|
|
-THREE.WebGLProgram=function(){var a=0;return function(b,c,d,e){var f=b.context,g=d.fragmentShader,h=d.vertexShader,l=d.uniforms,k=d.attributes,n=d.defines,q=d.index0AttributeName;void 0===q&&!0===e.morphTargets&&(q="position");var r="SHADOWMAP_TYPE_BASIC";e.shadowMapType===THREE.PCFShadowMap?r="SHADOWMAP_TYPE_PCF":e.shadowMapType===THREE.PCFSoftShadowMap&&(r="SHADOWMAP_TYPE_PCF_SOFT");var t,s;t=[];for(var p in n)s=n[p],!1!==s&&(s="#define "+p+" "+s,t.push(s));t=t.join("\n");n=f.createProgram();d instanceof
|
|
|
-THREE.RawShaderMaterial?b=d="":(d=["precision "+e.precision+" float;","precision "+e.precision+" int;",t,e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+e.maxBones,e.map?"#define USE_MAP":
|
|
|
-"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR":"",e.skinning?"#define USE_SKINNING":"",e.useVertexTexture?"#define BONE_TEXTURE":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals?"#define USE_MORPHNORMALS":"",e.wrapAround?"#define WRAP_AROUND":"",e.doubleSided?"#define DOUBLE_SIDED":
|
|
|
-"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+r:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\n\tattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\n\tattribute vec3 morphTarget0;\n\tattribute vec3 morphTarget1;\n\tattribute vec3 morphTarget2;\n\tattribute vec3 morphTarget3;\n\t#ifdef USE_MORPHNORMALS\n\t\tattribute vec3 morphNormal0;\n\t\tattribute vec3 morphNormal1;\n\t\tattribute vec3 morphNormal2;\n\t\tattribute vec3 morphNormal3;\n\t#else\n\t\tattribute vec3 morphTarget4;\n\t\tattribute vec3 morphTarget5;\n\t\tattribute vec3 morphTarget6;\n\t\tattribute vec3 morphTarget7;\n\t#endif\n#endif\n#ifdef USE_SKINNING\n\tattribute vec4 skinIndex;\n\tattribute vec4 skinWeight;\n#endif\n"].join("\n"),
|
|
|
+THREE.WebGLProgram=function(){var a=0;return function(b,c,d,e){var f=b.context,g=d.defines,h=d.__webglShader.uniforms,l=d.attributes,k=d.__webglShader.vertexShader,n=d.__webglShader.fragmentShader,q=d.index0AttributeName;void 0===q&&!0===e.morphTargets&&(q="position");var r="SHADOWMAP_TYPE_BASIC";e.shadowMapType===THREE.PCFShadowMap?r="SHADOWMAP_TYPE_PCF":e.shadowMapType===THREE.PCFSoftShadowMap&&(r="SHADOWMAP_TYPE_PCF_SOFT");var t,s;t=[];for(var p in g)s=g[p],!1!==s&&(s="#define "+p+" "+s,t.push(s));
|
|
|
+t=t.join("\n");g=f.createProgram();d instanceof THREE.RawShaderMaterial?b=d="":(d=["precision "+e.precision+" float;","precision "+e.precision+" int;",t,e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT":"","#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,"#define MAX_BONES "+
|
|
|
+e.maxBones,e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR":"",e.skinning?"#define USE_SKINNING":"",e.useVertexTexture?"#define BONE_TEXTURE":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals?"#define USE_MORPHNORMALS":"",e.wrapAround?"#define WRAP_AROUND":
|
|
|
+"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+r:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\n\tattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\n\tattribute vec3 morphTarget0;\n\tattribute vec3 morphTarget1;\n\tattribute vec3 morphTarget2;\n\tattribute vec3 morphTarget3;\n\t#ifdef USE_MORPHNORMALS\n\t\tattribute vec3 morphNormal0;\n\t\tattribute vec3 morphNormal1;\n\t\tattribute vec3 morphNormal2;\n\t\tattribute vec3 morphNormal3;\n\t#else\n\t\tattribute vec3 morphTarget4;\n\t\tattribute vec3 morphTarget5;\n\t\tattribute vec3 morphTarget6;\n\t\tattribute vec3 morphTarget7;\n\t#endif\n#endif\n#ifdef USE_SKINNING\n\tattribute vec4 skinIndex;\n\tattribute vec4 skinWeight;\n#endif\n"].join("\n"),
|
|
|
b=["precision "+e.precision+" float;","precision "+e.precision+" int;",e.bumpMap||e.normalMap?"#extension GL_OES_standard_derivatives : enable":"",t,"#define MAX_DIR_LIGHTS "+e.maxDirLights,"#define MAX_POINT_LIGHTS "+e.maxPointLights,"#define MAX_SPOT_LIGHTS "+e.maxSpotLights,"#define MAX_HEMI_LIGHTS "+e.maxHemiLights,"#define MAX_SHADOWS "+e.maxShadows,e.alphaTest?"#define ALPHATEST "+e.alphaTest:"",b.gammaInput?"#define GAMMA_INPUT":"",b.gammaOutput?"#define GAMMA_OUTPUT":"",e.useFog&&e.fog?"#define USE_FOG":
|
|
|
"",e.useFog&&e.fogExp?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.lightMap?"#define USE_LIGHTMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.vertexColors?"#define USE_COLOR":"",e.metal?"#define METAL":"",e.wrapAround?"#define WRAP_AROUND":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":
|
|
|
-"",e.shadowMapEnabled?"#define "+r:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n"));h=new THREE.WebGLShader(f,f.VERTEX_SHADER,d+h);g=new THREE.WebGLShader(f,f.FRAGMENT_SHADER,b+g);f.attachShader(n,h);f.attachShader(n,g);void 0!==q&&f.bindAttribLocation(n,0,q);f.linkProgram(n);!1===f.getProgramParameter(n,f.LINK_STATUS)&&(console.error("THREE.WebGLProgram: Could not initialise shader."),
|
|
|
-console.error("gl.VALIDATE_STATUS",f.getProgramParameter(n,f.VALIDATE_STATUS)),console.error("gl.getError()",f.getError()));""!==f.getProgramInfoLog(n)&&console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",f.getProgramInfoLog(n));f.deleteShader(h);f.deleteShader(g);q="viewMatrix modelViewMatrix projectionMatrix normalMatrix modelMatrix cameraPosition morphTargetInfluences".split(" ");e.useVertexTexture?(q.push("boneTexture"),q.push("boneTextureWidth"),q.push("boneTextureHeight")):q.push("boneGlobalMatrices");
|
|
|
-e.logarithmicDepthBuffer&&q.push("logDepthBufFC");for(var v in l)q.push(v);l=q;v={};q=0;for(b=l.length;q<b;q++)r=l[q],v[r]=f.getUniformLocation(n,r);this.uniforms=v;q="position normal uv uv2 tangent color skinIndex skinWeight lineDistance".split(" ");for(l=0;l<e.maxMorphTargets;l++)q.push("morphTarget"+l);for(l=0;l<e.maxMorphNormals;l++)q.push("morphNormal"+l);for(var u in k)q.push(u);e=q;k={};u=0;for(l=e.length;u<l;u++)v=e[u],k[v]=f.getAttribLocation(n,v);this.attributes=k;this.id=a++;this.code=
|
|
|
-c;this.usedTimes=1;this.program=n;this.vertexShader=h;this.fragmentShader=g;return this}}();
|
|
|
+"",e.shadowMapEnabled?"#define "+r:"",e.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",e.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n"));k=new THREE.WebGLShader(f,f.VERTEX_SHADER,d+k);n=new THREE.WebGLShader(f,f.FRAGMENT_SHADER,b+n);f.attachShader(g,k);f.attachShader(g,n);void 0!==q&&f.bindAttribLocation(g,0,q);f.linkProgram(g);!1===f.getProgramParameter(g,f.LINK_STATUS)&&(console.error("THREE.WebGLProgram: Could not initialise shader."),
|
|
|
+console.error("gl.VALIDATE_STATUS",f.getProgramParameter(g,f.VALIDATE_STATUS)),console.error("gl.getError()",f.getError()));""!==f.getProgramInfoLog(g)&&console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",f.getProgramInfoLog(g));f.deleteShader(k);f.deleteShader(n);q="viewMatrix modelViewMatrix projectionMatrix normalMatrix modelMatrix cameraPosition morphTargetInfluences".split(" ");e.useVertexTexture?(q.push("boneTexture"),q.push("boneTextureWidth"),q.push("boneTextureHeight")):q.push("boneGlobalMatrices");
|
|
|
+e.logarithmicDepthBuffer&&q.push("logDepthBufFC");for(var v in h)q.push(v);h=q;v={};q=0;for(b=h.length;q<b;q++)r=h[q],v[r]=f.getUniformLocation(g,r);this.uniforms=v;q="position normal uv uv2 tangent color skinIndex skinWeight lineDistance".split(" ");for(h=0;h<e.maxMorphTargets;h++)q.push("morphTarget"+h);for(h=0;h<e.maxMorphNormals;h++)q.push("morphNormal"+h);for(var u in l)q.push(u);e=q;l={};u=0;for(h=e.length;u<h;u++)v=e[u],l[v]=f.getAttribLocation(g,v);this.attributes=l;this.id=a++;this.code=
|
|
|
+c;this.usedTimes=1;this.program=g;this.vertexShader=k;this.fragmentShader=n;return this}}();
|
|
|
THREE.WebGLShader=function(){var a=function(a){a=a.split("\n");for(var c=0;c<a.length;c++)a[c]=c+1+": "+a[c];return a.join("\n")};return function(b,c,d){c=b.createShader(c);b.shaderSource(c,d);b.compileShader(c);!1===b.getShaderParameter(c,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(c)&&(console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",b.getShaderInfoLog(c)),console.warn(a(d)));return c}}();
|
|
|
THREE.RenderableVertex=function(){this.position=new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.visible=!0};THREE.RenderableVertex.prototype.copy=function(a){this.positionWorld.copy(a.positionWorld);this.positionScreen.copy(a.positionScreen)};
|
|
|
THREE.RenderableFace=function(){this.id=0;this.v1=new THREE.RenderableVertex;this.v2=new THREE.RenderableVertex;this.v3=new THREE.RenderableVertex;this.normalModel=new THREE.Vector3;this.vertexNormalsModel=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];this.vertexNormalsLength=0;this.color=new THREE.Color;this.material=null;this.uvs=[new THREE.Vector2,new THREE.Vector2,new THREE.Vector2];this.z=0};THREE.RenderableObject=function(){this.id=0;this.object=null;this.z=0};
|
|
@@ -630,11 +630,11 @@ h=[];var n=[],q=[],r=0,t;n[r]=void 0;q[r]=[];var s,p;s=0;for(p=e.length;s<p;s++)
|
|
|
hole:k}),t?(t=!1,h[v].push(r)):s=!0);t&&h[g].push(r)}0<p.length&&(s||(q=h))}s=0;for(p=n.length;s<p;s++)for(h=n[s].s,l.push(h),g=q[s],e=0,f=g.length;e<f;e++)h.holes.push(g[e].h);return l};THREE.Shape=function(){THREE.Path.apply(this,arguments);this.holes=[]};THREE.Shape.prototype=Object.create(THREE.Path.prototype);THREE.Shape.prototype.extrude=function(a){return new THREE.ExtrudeGeometry(this,a)};THREE.Shape.prototype.makeGeometry=function(a){return new THREE.ShapeGeometry(this,a)};
|
|
|
THREE.Shape.prototype.getPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedPoints(a,this.bends);return d};THREE.Shape.prototype.getSpacedPointsHoles=function(a){var b,c=this.holes.length,d=[];for(b=0;b<c;b++)d[b]=this.holes[b].getTransformedSpacedPoints(a,this.bends);return d};THREE.Shape.prototype.extractAllPoints=function(a){return{shape:this.getTransformedPoints(a),holes:this.getPointsHoles(a)}};
|
|
|
THREE.Shape.prototype.extractPoints=function(a){return this.useSpacedPoints?this.extractAllSpacedPoints(a):this.extractAllPoints(a)};THREE.Shape.prototype.extractAllSpacedPoints=function(a){return{shape:this.getTransformedSpacedPoints(a),holes:this.getSpacedPointsHoles(a)}};
|
|
|
-THREE.Shape.Utils={triangulateShape:function(a,b){function c(a,b,c){return a.x!=b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function d(a,b,d,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-d.x,l=e.y-d.y,n=a.x-d.x,q=a.y-d.y,A=h*k-g*l,z=h*n-g*q;if(1E-10<Math.abs(A)){if(0<A){if(0>z||z>A)return[];k=l*n-k*q;if(0>k||k>A)return[]}else{if(0<z||z<A)return[];k=l*n-k*q;if(0<k||k<A)return[]}if(0==k)return!f||0!=z&&z!=A?[a]:[];if(k==A)return!f||0!=z&&z!=A?[b]:[];if(0==z)return[d];
|
|
|
-if(z==A)return[e];f=k/A;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!=z||l*n!=k*q)return[];h=0==g&&0==h;k=0==k&&0==l;if(h&&k)return a.x!=d.x||a.y!=d.y?[]:[a];if(h)return c(d,e,a)?[a]:[];if(k)return c(a,b,d)?[d]:[];0!=g?(a.x<b.x?(g=a,k=a.x,h=b,a=b.x):(g=b,k=b.x,h=a,a=a.x),d.x<e.x?(b=d,A=d.x,l=e,d=e.x):(b=e,A=e.x,l=d,d=d.x)):(a.y<b.y?(g=a,k=a.y,h=b,a=b.y):(g=b,k=b.y,h=a,a=a.y),d.y<e.y?(b=d,A=d.y,l=e,d=e.y):(b=e,A=e.y,l=d,d=d.y));return k<=A?a<A?[]:a==A?f?[]:[b]:a<=d?[b,h]:[b,l]:k>d?[]:k==d?f?[]:[g]:a<=d?[g,h]:
|
|
|
-[g,l]}function e(a,b,c,d){var e=b.x-a.x,g=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var f=d.x-a.x;d=d.y-a.y;a=e*c-g*b;e=e*d-g*f;return 1E-10<Math.abs(a)?(b=f*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}var f,g,h,l,k,n={};h=a.concat();f=0;for(g=b.length;f<g;f++)Array.prototype.push.apply(h,b[f]);f=0;for(g=h.length;f<g;f++)k=h[f].x+":"+h[f].y,void 0!==n[k]&&console.log("Duplicate point",k),n[k]=f;f=function(a,b){function c(a,b){var d=h.length-1,g=a-1;0>g&&(g=d);var f=a+1;f>d&&(f=0);d=e(h[a],h[g],h[f],k[b]);if(!d)return!1;
|
|
|
-d=k.length-1;g=b-1;0>g&&(g=d);f=b+1;f>d&&(f=0);return(d=e(k[b],k[g],k[f],h[a]))?!0:!1}function g(a,b){var c,e;for(c=0;c<h.length;c++)if(e=c+1,e%=h.length,e=d(a,b,h[c],h[e],!0),0<e.length)return!0;return!1}function f(a,c){var e,g,h,k;for(e=0;e<l.length;e++)for(g=b[l[e]],h=0;h<g.length;h++)if(k=h+1,k%=g.length,k=d(a,c,g[h],g[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],n,q,E,A,z,B=[],y,Q,D,M=0;for(n=b.length;M<n;M++)l.push(M);y=0;for(var W=2*l.length;0<l.length;){W--;if(0>W){console.log("Infinite Loop! Holes left:"+
|
|
|
-l.length+", Probably Hole outside Shape!");break}for(q=y;q<h.length;q++){E=h[q];n=-1;for(M=0;M<l.length;M++)if(A=l[M],z=E.x+":"+E.y+":"+A,void 0===B[z]){k=b[A];for(Q=0;Q<k.length;Q++)if(A=k[Q],c(q,Q)&&!g(E,A)&&!f(E,A)){n=Q;l.splice(M,1);y=h.slice(0,q+1);A=h.slice(q);Q=k.slice(n);D=k.slice(0,n+1);h=y.concat(Q).concat(D).concat(A);y=q;break}if(0<=n)break;B[z]=!0}if(0<=n)break}}return h}(a,b);var q=THREE.FontUtils.Triangulate(f,!1);f=0;for(g=q.length;f<g;f++)for(l=q[f],h=0;3>h;h++)k=l[h].x+":"+l[h].y,
|
|
|
+THREE.Shape.Utils={triangulateShape:function(a,b){function c(a,b,c){return a.x!=b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function d(a,b,d,e,g){var f=b.x-a.x,h=b.y-a.y,k=e.x-d.x,l=e.y-d.y,n=a.x-d.x,q=a.y-d.y,A=h*k-f*l,z=h*n-f*q;if(1E-10<Math.abs(A)){if(0<A){if(0>z||z>A)return[];k=l*n-k*q;if(0>k||k>A)return[]}else{if(0<z||z<A)return[];k=l*n-k*q;if(0<k||k<A)return[]}if(0==k)return!g||0!=z&&z!=A?[a]:[];if(k==A)return!g||0!=z&&z!=A?[b]:[];if(0==z)return[d];
|
|
|
+if(z==A)return[e];g=k/A;return[{x:a.x+g*f,y:a.y+g*h}]}if(0!=z||l*n!=k*q)return[];h=0==f&&0==h;k=0==k&&0==l;if(h&&k)return a.x!=d.x||a.y!=d.y?[]:[a];if(h)return c(d,e,a)?[a]:[];if(k)return c(a,b,d)?[d]:[];0!=f?(a.x<b.x?(f=a,k=a.x,h=b,a=b.x):(f=b,k=b.x,h=a,a=a.x),d.x<e.x?(b=d,A=d.x,l=e,d=e.x):(b=e,A=e.x,l=d,d=d.x)):(a.y<b.y?(f=a,k=a.y,h=b,a=b.y):(f=b,k=b.y,h=a,a=a.y),d.y<e.y?(b=d,A=d.y,l=e,d=e.y):(b=e,A=e.y,l=d,d=d.y));return k<=A?a<A?[]:a==A?g?[]:[b]:a<=d?[b,h]:[b,l]:k>d?[]:k==d?g?[]:[f]:a<=d?[f,h]:
|
|
|
+[f,l]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return 1E-10<Math.abs(a)?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}var f,g,h,l,k,n={};h=a.concat();f=0;for(g=b.length;f<g;f++)Array.prototype.push.apply(h,b[f]);f=0;for(g=h.length;f<g;f++)k=h[f].x+":"+h[f].y,void 0!==n[k]&&console.log("Duplicate point",k),n[k]=f;f=function(a,b){function c(a,b){var d=h.length-1,f=a-1;0>f&&(f=d);var g=a+1;g>d&&(g=0);d=e(h[a],h[f],h[g],k[b]);if(!d)return!1;
|
|
|
+d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;c<h.length;c++)if(e=c+1,e%=h.length,e=d(a,b,h[c],h[e],!0),0<e.length)return!0;return!1}function g(a,c){var e,f,h,k;for(e=0;e<l.length;e++)for(f=b[l[e]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=d(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,l=[],n,q,E,A,z,B=[],y,Q,D,M=0;for(n=b.length;M<n;M++)l.push(M);y=0;for(var W=2*l.length;0<l.length;){W--;if(0>W){console.log("Infinite Loop! Holes left:"+
|
|
|
+l.length+", Probably Hole outside Shape!");break}for(q=y;q<h.length;q++){E=h[q];n=-1;for(M=0;M<l.length;M++)if(A=l[M],z=E.x+":"+E.y+":"+A,void 0===B[z]){k=b[A];for(Q=0;Q<k.length;Q++)if(A=k[Q],c(q,Q)&&!f(E,A)&&!g(E,A)){n=Q;l.splice(M,1);y=h.slice(0,q+1);A=h.slice(q);Q=k.slice(n);D=k.slice(0,n+1);h=y.concat(Q).concat(D).concat(A);y=q;break}if(0<=n)break;B[z]=!0}if(0<=n)break}}return h}(a,b);var q=THREE.FontUtils.Triangulate(f,!1);f=0;for(g=q.length;f<g;f++)for(l=q[f],h=0;3>h;h++)k=l[h].x+":"+l[h].y,
|
|
|
k=n[k],void 0!==k&&(l[h]=k);return q.concat()},isClockWise:function(a){return 0>THREE.FontUtils.Triangulate.area(a)},b2p0:function(a,b){var c=1-a;return c*c*b},b2p1:function(a,b){return 2*(1-a)*a*b},b2p2:function(a,b){return a*a*b},b2:function(a,b,c,d){return this.b2p0(a,b)+this.b2p1(a,c)+this.b2p2(a,d)},b3p0:function(a,b){var c=1-a;return c*c*c*b},b3p1:function(a,b){var c=1-a;return 3*c*c*a*b},b3p2:function(a,b){return 3*(1-a)*a*a*b},b3p3:function(a,b){return a*a*a*b},b3:function(a,b,c,d,e){return this.b3p0(a,
|
|
|
b)+this.b3p1(a,c)+this.b3p2(a,d)+this.b3p3(a,e)}};THREE.LineCurve=function(a,b){this.v1=a;this.v2=b};THREE.LineCurve.prototype=Object.create(THREE.Curve.prototype);THREE.LineCurve.prototype.getPoint=function(a){var b=this.v2.clone().sub(this.v1);b.multiplyScalar(a).add(this.v1);return b};THREE.LineCurve.prototype.getPointAt=function(a){return this.getPoint(a)};THREE.LineCurve.prototype.getTangent=function(a){return this.v2.clone().sub(this.v1).normalize()};
|
|
|
THREE.QuadraticBezierCurve=function(a,b,c){this.v0=a;this.v1=b;this.v2=c};THREE.QuadraticBezierCurve.prototype=Object.create(THREE.Curve.prototype);THREE.QuadraticBezierCurve.prototype.getPoint=function(a){var b;b=THREE.Shape.Utils.b2(a,this.v0.x,this.v1.x,this.v2.x);a=THREE.Shape.Utils.b2(a,this.v0.y,this.v1.y,this.v2.y);return new THREE.Vector2(b,a)};
|