|
@@ -219,13 +219,12 @@ a.y);return q[b]}var e={metadata:{version:4.4,type:"Geometry",generator:"Geometr
|
|
|
v=1!==s.color.r||1!==s.color.g||1!==s.color.b,z=0<s.vertexColors.length,x=0,x=a(x,0,0),x=a(x,1,!1),x=a(x,2,!1),x=a(x,3,t),x=a(x,4,u),x=a(x,5,w),x=a(x,6,v),x=a(x,7,z);h.push(x);h.push(s.a,s.b,s.c);t&&(t=this.faceVertexUvs[0][f],h.push(d(t[0]),d(t[1]),d(t[2])));u&&h.push(b(s.normal));w&&(u=s.vertexNormals,h.push(b(u[0]),b(u[1]),b(u[2])));v&&h.push(c(s.color));z&&(s=s.vertexColors,h.push(c(s[0]),c(s[1]),c(s[2])))}e.data={};e.data.vertices=g;e.data.normals=k;0<n.length&&(e.data.colors=n);0<m.length&&
|
|
|
(e.data.uvs=[m]);e.data.faces=h;return e},clone:function(){return(new THREE.Geometry).copy(this)},copy:function(a){this.vertices=[];this.faces=[];this.faceVertexUvs=[[]];for(var b=a.vertices,c=0,d=b.length;c<d;c++)this.vertices.push(b[c].clone());b=a.faces;c=0;for(d=b.length;c<d;c++)this.faces.push(b[c].clone());c=0;for(d=a.faceVertexUvs.length;c<d;c++){b=a.faceVertexUvs[c];void 0===this.faceVertexUvs[c]&&(this.faceVertexUvs[c]=[]);for(var e=0,g=b.length;e<g;e++){for(var f=b[e],h=[],k=0,l=f.length;k<
|
|
|
l;k++)h.push(f[k].clone());this.faceVertexUvs[c].push(h)}}return this},dispose:function(){this.dispatchEvent({type:"dispose"})},set groupsNeedUpdate(a){!0===a&&this.dispose()}};THREE.EventDispatcher.prototype.apply(THREE.Geometry.prototype);THREE.GeometryIdCount=0;
|
|
|
-THREE.DirectGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="DirectGeometry";this.indices=[];this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.tangents=[];this.morphTargets={position:[],normal:[]};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.tangentsNeedUpdate=this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=
|
|
|
-!1};
|
|
|
-THREE.DirectGeometry.prototype={constructor:THREE.DirectGeometry,computeBoundingBox:THREE.Geometry.prototype.computeBoundingBox,computeBoundingSphere:THREE.Geometry.prototype.computeBoundingSphere,computeFaceNormals:function(){console.warn("THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.");return this},computeVertexNormals:function(){console.warn("THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.");return this},computeTangents:function(){console.warn("THREE.DirectGeometry: computeTangents() is not a method of this type of geometry.");return this},
|
|
|
-fromGeometry:function(a){for(var b=a.faces,c=a.vertices,d=a.faceVertexUvs,e=d[0]&&0<d[0].length,g=d[1]&&0<d[1].length,f=a.hasTangents,h=a.morphTargets,k=h.length,l=this.morphTargets.position,n=0;n<k;n++)l[n]=[];for(var p=a.morphNormals,m=p.length,q=this.morphTargets.normal,n=0;n<m;n++)q[n]=[];for(var s=a.skinIndices,t=a.skinWeights,u=s.length===c.length,w=t.length===c.length,n=0;n<b.length;n++){var v=b[n];this.vertices.push(c[v.a],c[v.b],c[v.c]);var z=v.vertexNormals;3===z.length?this.normals.push(z[0],
|
|
|
-z[1],z[2]):(z=v.normal,this.normals.push(z,z,z));z=v.vertexColors;3===z.length?this.colors.push(z[0],z[1],z[2]):(z=v.color,this.colors.push(z,z,z));!0===e&&(z=d[0][n],void 0!==z?this.uvs.push(z[0],z[1],z[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",n),this.uvs.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));!0===g&&(z=d[1][n],void 0!==z?this.uvs2.push(z[0],z[1],z[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",n),this.uvs2.push(new THREE.Vector2,
|
|
|
-new THREE.Vector2,new THREE.Vector2)));!0===f&&(z=v.vertexTangents,3===z.length?this.tangents.push(z[0],z[1],z[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined tangents ",n),this.tangents.push(new THREE.Vector4,new THREE.Vector4,new THREE.Vector4)));for(z=0;z<k;z++){var x=h[z].vertices;l[z].push(x[v.a],x[v.b],x[v.c])}for(z=0;z<m;z++)x=p[z].vertexNormals[n],q[z].push(x.a,x.b,x.c);u&&this.skinIndices.push(s[v.a],s[v.b],s[v.c]);w&&this.skinWeights.push(t[v.a],t[v.b],t[v.c])}this.verticesNeedUpdate=
|
|
|
-a.verticesNeedUpdate;this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.tangentsNeedUpdate=a.tangentsNeedUpdate;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.DirectGeometry.prototype);
|
|
|
+THREE.DirectGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="DirectGeometry";this.indices=[];this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.tangents=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.tangentsNeedUpdate=this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=!1};
|
|
|
+THREE.DirectGeometry.prototype={constructor:THREE.DirectGeometry,computeBoundingBox:THREE.Geometry.prototype.computeBoundingBox,computeBoundingSphere:THREE.Geometry.prototype.computeBoundingSphere,computeFaceNormals:function(){console.warn("THREE.DirectGeometry: computeFaceNormals() is not a method of this type of geometry.");return this},computeVertexNormals:function(){console.warn("THREE.DirectGeometry: computeVertexNormals() is not a method of this type of geometry.");return this},computeTangents:function(){console.warn("THREE.DirectGeometry: computeTangents() is not a method of this type of geometry.");
|
|
|
+return this},fromGeometry:function(a){var b=a.faces,c=a.vertices,d=a.faceVertexUvs,e=d[0]&&0<d[0].length,g=d[1]&&0<d[1].length,f=a.hasTangents,h=a.morphTargets,k=h.length;if(0<k){for(var l=[],n=0;n<k;n++)l[n]=[];this.morphTargets.position=l}var p=a.morphNormals,m=p.length;if(0<m){for(var q=[],n=0;n<m;n++)q[n]=[];this.morphTargets.normal=q}for(var s=a.skinIndices,t=a.skinWeights,u=s.length===c.length,w=t.length===c.length,n=0;n<b.length;n++){var v=b[n];this.vertices.push(c[v.a],c[v.b],c[v.c]);var z=
|
|
|
+v.vertexNormals;3===z.length?this.normals.push(z[0],z[1],z[2]):(z=v.normal,this.normals.push(z,z,z));z=v.vertexColors;3===z.length?this.colors.push(z[0],z[1],z[2]):(z=v.color,this.colors.push(z,z,z));!0===e&&(z=d[0][n],void 0!==z?this.uvs.push(z[0],z[1],z[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",n),this.uvs.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));!0===g&&(z=d[1][n],void 0!==z?this.uvs2.push(z[0],z[1],z[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",
|
|
|
+n),this.uvs2.push(new THREE.Vector2,new THREE.Vector2,new THREE.Vector2)));!0===f&&(z=v.vertexTangents,3===z.length?this.tangents.push(z[0],z[1],z[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined tangents ",n),this.tangents.push(new THREE.Vector4,new THREE.Vector4,new THREE.Vector4)));for(z=0;z<k;z++){var x=h[z].vertices;l[z].push(x[v.a],x[v.b],x[v.c])}for(z=0;z<m;z++)x=p[z].vertexNormals[n],q[z].push(x.a,x.b,x.c);u&&this.skinIndices.push(s[v.a],s[v.b],s[v.c]);w&&this.skinWeights.push(t[v.a],
|
|
|
+t[v.b],t[v.c])}this.verticesNeedUpdate=a.verticesNeedUpdate;this.normalsNeedUpdate=a.normalsNeedUpdate;this.colorsNeedUpdate=a.colorsNeedUpdate;this.uvsNeedUpdate=a.uvsNeedUpdate;this.tangentsNeedUpdate=a.tangentsNeedUpdate;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.DirectGeometry.prototype);
|
|
|
THREE.BufferGeometry=function(){Object.defineProperty(this,"id",{value:THREE.GeometryIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="BufferGeometry";this.attributes={};this.morphAttributes={};this.drawcalls=[];this.boundingSphere=this.boundingBox=null};
|
|
|
THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,addAttribute:function(a,b,c){!1===b instanceof THREE.BufferAttribute&&!1===b instanceof THREE.InterleavedBufferAttribute?(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.attributes[a]={array:b,itemSize:c}):this.attributes[a]=b},getAttribute:function(a){return this.attributes[a]},removeAttribute:function(a){delete this.attributes[a]},get offsets(){console.warn("THREE.BufferGeometry: .offsets has been renamed to .drawcalls.");
|
|
|
return this.drawcalls},addDrawCall:function(a,b,c){this.drawcalls.push({start:a,count:b,index:void 0!==c?c:0})},clearDrawCalls:function(){this.drawcalls=[]},applyMatrix:function(a){var b=this.attributes.position;void 0!==b&&(a.applyToVector3Array(b.array),b.needsUpdate=!0);b=this.attributes.normal;void 0!==b&&((new THREE.Matrix3).getNormalMatrix(a).applyToVector3Array(b.array),b.needsUpdate=!0);null!==this.boundingBox&&this.computeBoundingBox();null!==this.boundingSphere&&this.computeBoundingSphere()},
|
|
@@ -501,89 +500,89 @@ return}e.vertexAttribDivisorANGLE(h,n.meshPerAttribute);void 0===c.maxInstancedC
|
|
|
c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[g],void 0!==l))switch(l.length){case 2:r.vertexAttrib2fv(h,l);break;case 3:r.vertexAttrib3fv(h,l);break;case 4:r.vertexAttrib4fv(h,l);break;default:r.vertexAttrib1fv(h,l)}}}N.disableUnusedAttributes()}function l(a,b){return b[0]-a[0]}function n(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.object.material.id!==b.object.material.id?a.object.material.id-
|
|
|
b.object.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function m(a){if(!0===a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),pa.init(a),a instanceof THREE.Light)fa.push(a);else if(a instanceof THREE.Sprite)ua.push(a);else if(a instanceof THREE.LensFlare)Ja.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b=
|
|
|
a.material;b.transparent?Ga.push(a):Ba.push(a)}else{var c=pa.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Za.intersectsObject(a)||(b=a.material,aa.get(b)&&(b.program=aa.get(b).program),b.transparent?oa.push(c):ma.push(c),!0===ka.sortObjects&&(na.setFromMatrixPosition(a.matrixWorld),na.applyProjection(Ka),c.z=na.z))}b=0;for(c=a.children.length;b<c;b++)m(a.children[b])}}function q(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g].object,l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,
|
|
|
-l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(f=k.material);if(f instanceof THREE.MeshFaceMaterial)for(var l=f.materials,m=0,n=l.length;m<n;m++)ka.renderBufferDirect(b,c,d,l[m],k);else ka.renderBufferDirect(b,c,d,f,k)}}function s(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g],l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);!0===k.visible&&(null===e&&(f=k.material),ka.renderImmediateObject(b,
|
|
|
-c,d,f,k))}}function t(a){a.side!==THREE.DoubleSide?N.enable(r.CULL_FACE):N.disable(r.CULL_FACE);N.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?N.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):N.setBlending(THREE.NoBlending);N.setDepthFunc(a.depthFunc);N.setDepthTest(a.depthTest);N.setDepthWrite(a.depthWrite);N.setColorWrite(a.colorWrite);N.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function u(a,
|
|
|
-b,c,d,g){var k,l,m,n;gb=0;var p=aa.get(d);if(d.needsUpdate||!p.program){a:{for(var q=aa.get(d),s=Zb[d.type],t=0,y=0,u=0,B=0,A=0,F=b.length;A<F;A++){var C=b[A];C.onlyShadow||!1===C.visible||(C instanceof THREE.DirectionalLight&&t++,C instanceof THREE.PointLight&&y++,C instanceof THREE.SpotLight&&u++,C instanceof THREE.HemisphereLight&&B++)}k=t;l=y;m=u;n=B;for(var G,I=0,M=0,S=b.length;M<S;M++){var P=b[M];P.castShadow&&(P instanceof THREE.SpotLight&&I++,P instanceof THREE.DirectionalLight&&!P.shadowCascade&&
|
|
|
-I++)}G=I;var ma;if(mb&&g&&g.skeleton&&g.skeleton.useVertexTexture)ma=1024;else{var R=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),U=Math.floor((R-20)/4);void 0!==g&&g instanceof THREE.SkinnedMesh&&(U=Math.min(g.skeleton.bones.length,U),U<g.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+g.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));ma=U}var Q={precision:E,supportsVertexTextures:nb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&
|
|
|
-d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:L,skinning:d.skinning,maxBones:ma,useVertexTexture:mb&&g&&g.skeleton&&g.skeleton.useVertexTexture,morphTargets:d.morphTargets,
|
|
|
-morphNormals:d.morphNormals,maxMorphTargets:ka.maxMorphTargets,maxMorphNormals:ka.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:m,maxHemiLights:n,maxShadows:G,shadowMapEnabled:la.enabled&&g.receiveShadow&&0<G,shadowMapType:la.type,shadowMapDebug:la.debug,shadowMapCascade:la.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];s?T.push(s):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),
|
|
|
-T.push(d.defines[V]);for(V in Q)T.push(V),T.push(Q[V]);var oa=T.join(),Ga=!0;if(q.program)if(q.program.code!==oa)h(d);else if(void 0!==s)break a;else Ga=!1;else d.addEventListener("dispose",f);if(s){var Ba=THREE.ShaderLib[s];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ba.uniforms),vertexShader:Ba.vertexShader,fragmentShader:Ba.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var $,Ja=0,fa=va.length;Ja<
|
|
|
-fa;Ja++){var Wa=va[Ja];if(Wa.code===oa){$=Wa;Ga&&$.usedTimes++;break}}void 0===$&&(d.__webglShader=q.__webglShader,$=new THREE.WebGLProgram(ka,oa,d,Q),va.push($),Da.programs=va.length);q.program=$;var ea=$.getAttributes();if(d.morphTargets)for(var ua=d.numSupportedMorphTargets=0;ua<ka.maxMorphTargets;ua++)0<=ea["morphTarget"+ua]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ua=d.numSupportedMorphNormals=0;ua<ka.maxMorphNormals;ua++)0<=ea["morphNormal"+ua]&&d.numSupportedMorphNormals++;q.uniformsList=
|
|
|
-[];var pa=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ha=pa[xa];Ha&&q.uniformsList.push([q.__webglShader.uniforms[xa],Ha])}}d.needsUpdate=!1}var Ia=!1,Ca=!1,wa=!1,$a=p.program,ca=$a.getUniforms(),K=p.__webglShader.uniforms;$a.id!==lb&&(r.useProgram($a.program),lb=$a.id,wa=Ca=Ia=!0);d.id!==Ya&&(-1===Ya&&(wa=!0),Ya=d.id,Ca=!0);if(Ia||a!==Xa)r.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&r.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==
|
|
|
-Xa&&(Xa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ca.cameraPosition&&(na.setFromMatrixPosition(a.matrixWorld),r.uniform3f(ca.cameraPosition,na.x,na.y,na.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&void 0!==ca.viewMatrix&&r.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(g.bindMatrix&&void 0!==
|
|
|
-ca.bindMatrix&&r.uniformMatrix4fv(ca.bindMatrix,!1,g.bindMatrix.elements),g.bindMatrixInverse&&void 0!==ca.bindMatrixInverse&&r.uniformMatrix4fv(ca.bindMatrixInverse,!1,g.bindMatrixInverse.elements),mb&&g.skeleton&&g.skeleton.useVertexTexture){if(void 0!==ca.boneTexture){var Qa=v();r.uniform1i(ca.boneTexture,Qa);ka.setTexture(g.skeleton.boneTexture,Qa)}void 0!==ca.boneTextureWidth&&r.uniform1i(ca.boneTextureWidth,g.skeleton.boneTextureWidth);void 0!==ca.boneTextureHeight&&r.uniform1i(ca.boneTextureHeight,
|
|
|
-g.skeleton.boneTextureHeight)}else g.skeleton&&g.skeleton.boneMatrices&&void 0!==ca.boneGlobalMatrices&&r.uniformMatrix4fv(ca.boneGlobalMatrices,!1,g.skeleton.boneMatrices);if(Ca){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(fb){var wa=!0,ba,ra,Z,Ka=0,ob=0,pb=0,La,Za,eb,Ra,qb,da=Nb,rb=da.directional.colors,
|
|
|
-sb=da.directional.positions,tb=da.point.colors,ub=da.point.positions,jb=da.point.distances,kb=da.point.decays,vb=da.spot.colors,wb=da.spot.positions,Ib=da.spot.distances,xb=da.spot.directions,Jb=da.spot.anglesCos,Kb=da.spot.exponents,Lb=da.spot.decays,yb=da.hemi.skyColors,zb=da.hemi.groundColors,Ab=da.hemi.positions,ab=0,Ma=0,ya=0,Sa=0,Bb=0,Cb=0,Db=0,hb=0,bb=0,cb=0,Ea=0,Ta=0;ba=0;for(ra=b.length;ba<ra;ba++)Z=b[ba],Z.onlyShadow||(La=Z.color,Ra=Z.intensity,qb=Z.distance,Z instanceof THREE.AmbientLight?
|
|
|
-Z.visible&&(Ka+=La.r,ob+=La.g,pb+=La.b):Z instanceof THREE.DirectionalLight?(Bb+=1,Z.visible&&(ha.setFromMatrixPosition(Z.matrixWorld),na.setFromMatrixPosition(Z.target.matrixWorld),ha.sub(na),ha.normalize(),bb=3*ab,sb[bb+0]=ha.x,sb[bb+1]=ha.y,sb[bb+2]=ha.z,z(rb,bb,La,Ra),ab+=1)):Z instanceof THREE.PointLight?(Cb+=1,Z.visible&&(cb=3*Ma,z(tb,cb,La,Ra),na.setFromMatrixPosition(Z.matrixWorld),ub[cb+0]=na.x,ub[cb+1]=na.y,ub[cb+2]=na.z,jb[Ma]=qb,kb[Ma]=0===Z.distance?0:Z.decay,Ma+=1)):Z instanceof THREE.SpotLight?
|
|
|
-(Db+=1,Z.visible&&(Ea=3*ya,z(vb,Ea,La,Ra),ha.setFromMatrixPosition(Z.matrixWorld),wb[Ea+0]=ha.x,wb[Ea+1]=ha.y,wb[Ea+2]=ha.z,Ib[ya]=qb,na.setFromMatrixPosition(Z.target.matrixWorld),ha.sub(na),ha.normalize(),xb[Ea+0]=ha.x,xb[Ea+1]=ha.y,xb[Ea+2]=ha.z,Jb[ya]=Math.cos(Z.angle),Kb[ya]=Z.exponent,Lb[ya]=0===Z.distance?0:Z.decay,ya+=1)):Z instanceof THREE.HemisphereLight&&(hb+=1,Z.visible&&(ha.setFromMatrixPosition(Z.matrixWorld),ha.normalize(),Ta=3*Sa,Ab[Ta+0]=ha.x,Ab[Ta+1]=ha.y,Ab[Ta+2]=ha.z,Za=Z.color,
|
|
|
-eb=Z.groundColor,z(yb,Ta,Za,Ra),z(zb,Ta,eb,Ra),Sa+=1)));ba=3*ab;for(ra=Math.max(rb.length,3*Bb);ba<ra;ba++)rb[ba]=0;ba=3*Ma;for(ra=Math.max(tb.length,3*Cb);ba<ra;ba++)tb[ba]=0;ba=3*ya;for(ra=Math.max(vb.length,3*Db);ba<ra;ba++)vb[ba]=0;ba=3*Sa;for(ra=Math.max(yb.length,3*hb);ba<ra;ba++)yb[ba]=0;ba=3*Sa;for(ra=Math.max(zb.length,3*hb);ba<ra;ba++)zb[ba]=0;da.directional.length=ab;da.point.length=Ma;da.spot.length=ya;da.hemi.length=Sa;da.ambient[0]=Ka;da.ambient[1]=ob;da.ambient[2]=pb;fb=!1}if(wa){var ja=
|
|
|
-Nb;K.ambientLightColor.value=ja.ambient;K.directionalLightColor.value=ja.directional.colors;K.directionalLightDirection.value=ja.directional.positions;K.pointLightColor.value=ja.point.colors;K.pointLightPosition.value=ja.point.positions;K.pointLightDistance.value=ja.point.distances;K.pointLightDecay.value=ja.point.decays;K.spotLightColor.value=ja.spot.colors;K.spotLightPosition.value=ja.spot.positions;K.spotLightDistance.value=ja.spot.distances;K.spotLightDirection.value=ja.spot.directions;K.spotLightAngleCos.value=
|
|
|
-ja.spot.anglesCos;K.spotLightExponent.value=ja.spot.exponents;K.spotLightDecay.value=ja.spot.decays;K.hemisphereLightSkyColor.value=ja.hemi.skyColors;K.hemisphereLightGroundColor.value=ja.hemi.groundColors;K.hemisphereLightDirection.value=ja.hemi.positions;w(K,!0)}else w(K,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){K.opacity.value=d.opacity;K.diffuse.value=d.color;K.map.value=d.map;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 za;d.map?za=d.map:d.specularMap?za=d.specularMap:d.normalMap?za=d.normalMap:d.bumpMap?za=d.bumpMap:d.alphaMap?za=d.alphaMap:d.emissiveMap&&(za=d.emissiveMap);if(void 0!==za){var Ob=za.offset,Pb=za.repeat;K.offsetRepeat.value.set(Ob.x,Ob.y,Pb.x,Pb.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}if(d instanceof THREE.LineBasicMaterial)K.diffuse.value=d.color,K.opacity.value=d.opacity;else if(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;else if(d instanceof THREE.PointCloudMaterial){if(K.psColor.value=d.color,K.opacity.value=d.opacity,K.size.value=d.size,K.scale.value=D.height/
|
|
|
-2,K.map.value=d.map,null!==d.map){var Qb=d.map.offset,Rb=d.map.repeat;K.offsetRepeat.value.set(Qb.x,Qb.y,Rb.x,Rb.y)}}else d instanceof THREE.MeshPhongMaterial?(K.shininess.value=d.shininess,K.emissive.value=d.emissive,K.specular.value=d.specular,K.lightMap.value=d.lightMap,K.lightMapIntensity.value=d.lightMapIntensity,K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity,K.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?K.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?
|
|
|
-(K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity):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(g.receiveShadow&&!d._shadowPass&&K.shadowMatrix)for(var Ua=0,Eb=0,Mb=b.length;Eb<Mb;Eb++){var Aa=b[Eb];Aa.castShadow&&(Aa instanceof THREE.SpotLight||Aa instanceof THREE.DirectionalLight&&!Aa.shadowCascade)&&(K.shadowMap.value[Ua]=Aa.shadowMap,K.shadowMapSize.value[Ua]=
|
|
|
-Aa.shadowMapSize,K.shadowMatrix.value[Ua]=Aa.shadowMatrix,K.shadowDarkness.value[Ua]=Aa.shadowDarkness,K.shadowBias.value[Ua]=Aa.shadowBias,Ua++)}for(var Fb=p.uniformsList,sa,Na,ta,ib=0,$b=Fb.length;ib<$b;ib++){var X=Fb[ib][0];if(!1!==X.needsUpdate){var Sb=X.type,O=X.value,Y=Fb[ib][1];switch(Sb){case "1i":r.uniform1i(Y,O);break;case "1f":r.uniform1f(Y,O);break;case "2f":r.uniform2f(Y,O[0],O[1]);break;case "3f":r.uniform3f(Y,O[0],O[1],O[2]);break;case "4f":r.uniform4f(Y,O[0],O[1],O[2],O[3]);break;
|
|
|
-case "1iv":r.uniform1iv(Y,O);break;case "3iv":r.uniform3iv(Y,O);break;case "1fv":r.uniform1fv(Y,O);break;case "2fv":r.uniform2fv(Y,O);break;case "3fv":r.uniform3fv(Y,O);break;case "4fv":r.uniform4fv(Y,O);break;case "Matrix3fv":r.uniformMatrix3fv(Y,!1,O);break;case "Matrix4fv":r.uniformMatrix4fv(Y,!1,O);break;case "i":r.uniform1i(Y,O);break;case "f":r.uniform1f(Y,O);break;case "v2":r.uniform2f(Y,O.x,O.y);break;case "v3":r.uniform3f(Y,O.x,O.y,O.z);break;case "v4":r.uniform4f(Y,O.x,O.y,O.z,O.w);break;
|
|
|
-case "c":r.uniform3f(Y,O.r,O.g,O.b);break;case "iv1":r.uniform1iv(Y,O);break;case "iv":r.uniform3iv(Y,O);break;case "fv1":r.uniform1fv(Y,O);break;case "fv":r.uniform3fv(Y,O);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*O.length));for(var W=0,qa=O.length;W<qa;W++)ta=2*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y;r.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*O.length));W=0;for(qa=O.length;W<qa;W++)ta=3*W,X._array[ta+0]=O[W].x,X._array[ta+
|
|
|
-1]=O[W].y,X._array[ta+2]=O[W].z;r.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*O.length));W=0;for(qa=O.length;W<qa;W++)ta=4*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y,X._array[ta+2]=O[W].z,X._array[ta+3]=O[W].w;r.uniform4fv(Y,X._array);break;case "m3":r.uniformMatrix3fv(Y,!1,O.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,9*W);r.uniformMatrix3fv(Y,!1,
|
|
|
-X._array);break;case "m4":r.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,16*W);r.uniformMatrix4fv(Y,!1,X._array);break;case "t":sa=O;Na=v();r.uniform1i(Y,Na);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var ga=sa,Tb=Na,Va=aa.get(ga);if(6===ga.image.length)if(0<ga.version&&Va.__version!==ga.version){Va.__image__webglTextureCube||
|
|
|
-(ga.addEventListener("dispose",e),Va.__image__webglTextureCube=r.createTexture(),Da.textures++);N.activeTexture(r.TEXTURE0+Tb);N.bindTexture(r.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,ga.flipY);for(var Ub=ga instanceof THREE.CompressedTexture,Gb=ga.image[0]instanceof THREE.DataTexture,Oa=[],ia=0;6>ia;ia++)Oa[ia]=!ka.autoScaleCubemaps||Ub||Gb?Gb?ga.image[ia].image:ga.image[ia]:H(ga.image[ia],ac);var Vb=Oa[0],Wb=THREE.Math.isPowerOfTwo(Vb.width)&&THREE.Math.isPowerOfTwo(Vb.height),
|
|
|
-Fa=J(ga.format),Hb=J(ga.type);x(r.TEXTURE_CUBE_MAP,ga,Wb);for(ia=0;6>ia;ia++)if(Ub)for(var Pa,Xb=Oa[ia].mipmaps,db=0,bc=Xb.length;db<bc;db++)Pa=Xb[db],ga.format!==THREE.RGBAFormat&&ga.format!==THREE.RGBFormat?-1<Yb().indexOf(Fa)?N.compressedTexImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,db,Fa,Pa.width,Pa.height,0,Pa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,db,Fa,Pa.width,Pa.height,
|
|
|
-0,Fa,Hb,Pa.data);else Gb?N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Oa[ia].width,Oa[ia].height,0,Fa,Hb,Oa[ia].data):N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Fa,Hb,Oa[ia]);ga.generateMipmaps&&Wb&&r.generateMipmap(r.TEXTURE_CUBE_MAP);Va.__version=ga.version;if(ga.onUpdate)ga.onUpdate(ga)}else N.activeTexture(r.TEXTURE0+Tb),N.bindTexture(r.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube)}else if(sa instanceof THREE.WebGLRenderTargetCube){var cc=sa;N.activeTexture(r.TEXTURE0+Na);N.bindTexture(r.TEXTURE_CUBE_MAP,
|
|
|
-aa.get(cc).__webglTexture)}else ka.setTexture(sa,Na);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(qa=X.value.length;W<qa;W++)X._array[W]=v();r.uniform1iv(Y,X._array);W=0;for(qa=X.value.length;W<qa;W++)sa=X.value[W],Na=X._array[W],sa&&ka.setTexture(sa,Na);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Sb)}}}}r.uniformMatrix4fv(ca.modelViewMatrix,!1,g._modelViewMatrix.elements);ca.normalMatrix&&r.uniformMatrix3fv(ca.normalMatrix,!1,g._normalMatrix.elements);void 0!==
|
|
|
-ca.modelMatrix&&r.uniformMatrix4fv(ca.modelMatrix,!1,g.matrixWorld.elements);return $a}function w(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=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}function v(){var a=gb;a>=eb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+eb);gb+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function x(a,b,c){c?(r.texParameteri(a,r.TEXTURE_WRAP_S,J(b.wrapS)),r.texParameteri(a,r.TEXTURE_WRAP_T,J(b.wrapT)),
|
|
|
-r.texParameteri(a,r.TEXTURE_MAG_FILTER,J(b.magFilter)),r.texParameteri(a,r.TEXTURE_MIN_FILTER,J(b.minFilter))):(r.texParameteri(a,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(a,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),r.texParameteri(a,r.TEXTURE_MAG_FILTER,B(b.magFilter)),
|
|
|
-r.texParameteri(a,r.TEXTURE_MIN_FILTER,B(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||aa.get(b).__currentAnisotropy)&&(r.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
|
|
|
-ka.getMaxAnisotropy())),aa.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=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);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function F(a,b,c){r.bindFramebuffer(r.FRAMEBUFFER,
|
|
|
-a);r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,c,aa.get(b).__webglTexture,0)}function y(a,b){r.bindRenderbuffer(r.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_COMPONENT16,b.width,b.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,b.width,b.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,
|
|
|
-a)):r.renderbufferStorage(r.RENDERBUFFER,r.RGBA4,b.width,b.height)}function B(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?r.NEAREST:r.LINEAR}function J(a){var b;if(a===THREE.RepeatWrapping)return r.REPEAT;if(a===THREE.ClampToEdgeWrapping)return r.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return r.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return r.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return r.NEAREST_MIPMAP_NEAREST;
|
|
|
-if(a===THREE.NearestMipMapLinearFilter)return r.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return r.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return r.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return r.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return r.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return r.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return r.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return r.UNSIGNED_SHORT_5_6_5;
|
|
|
-if(a===THREE.ByteType)return r.BYTE;if(a===THREE.ShortType)return r.SHORT;if(a===THREE.UnsignedShortType)return r.UNSIGNED_SHORT;if(a===THREE.IntType)return r.INT;if(a===THREE.UnsignedIntType)return r.UNSIGNED_INT;if(a===THREE.FloatType)return r.FLOAT;b=V.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return r.ALPHA;if(a===THREE.RGBFormat)return r.RGB;if(a===THREE.RGBAFormat)return r.RGBA;if(a===THREE.LuminanceFormat)return r.LUMINANCE;
|
|
|
-if(a===THREE.LuminanceAlphaFormat)return r.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return r.FUNC_ADD;if(a===THREE.SubtractEquation)return r.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return r.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return r.ZERO;if(a===THREE.OneFactor)return r.ONE;if(a===THREE.SrcColorFactor)return r.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return r.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return r.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return r.ONE_MINUS_SRC_ALPHA;
|
|
|
-if(a===THREE.DstAlphaFactor)return r.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return r.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return r.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return r.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return r.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
|
-if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;
|
|
|
-if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var D=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=void 0!==a.context?a.context:null,P=D.width,G=D.height,C=1,E=void 0!==a.precision?a.precision:"highp",I=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0,S=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?
|
|
|
-a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,$=new THREE.Color(0),ea=0,fa=[],ma=[],oa=[],Ba=[],Ga=[],Wa=new Float32Array(8),ua=[],Ja=[];this.domElement=D;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=this.gammaInput=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ka=this,va=[],lb=null,Qa=null,Ya=-1,xa="",Xa=null,gb=0,
|
|
|
-Ha=0,Ia=0,Ca=D.width,wa=D.height,jb=0,kb=0,Za=new THREE.Frustum,Ka=new THREE.Matrix4,na=new THREE.Vector3,ha=new THREE.Vector3,fb=!0,Nb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},Da={programs:0,geometries:0,textures:0},Q={calls:0,vertices:0,faces:0,points:0};
|
|
|
-this.info={render:Q,memory:Da,programs:va};var r;try{a={alpha:I,depth:M,stencil:S,antialias:U,premultipliedAlpha:R,preserveDrawingBuffer:T};r=A||D.getContext("webgl",a)||D.getContext("experimental-webgl",a);if(null===r){if(null!==D.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}D.addEventListener("webglcontextlost",function(a){a.preventDefault();d();c();pa.clear();aa.clear()},!1)}catch(Ib){console.error("THREE.WebGLRenderer: "+
|
|
|
-Ib)}var N=new THREE.WebGLState(r,J);void 0===r.getShaderPrecisionFormat&&(r.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var aa=new THREE.WebGLProperties,pa=new THREE.WebGLObjects(r,aa,this.info),V=new THREE.WebGLExtensions(r);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=
|
|
|
-4294967296);L&&V.get("EXT_frag_depth");c();this.context=r;this.extensions=V;this.state=N;var la=new THREE.WebGLShadowMap(this,fa,pa);this.shadowMap=la;var eb=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),A=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Jb=r.getParameter(r.MAX_TEXTURE_SIZE),ac=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),nb=0<A,mb=nb&&V.get("OES_texture_float"),Kb=V.get("ANGLE_instanced_arrays"),I=r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.HIGH_FLOAT),A=r.getShaderPrecisionFormat(r.VERTEX_SHADER,
|
|
|
-r.MEDIUM_FLOAT),M=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT);a=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT);var Yb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=r.getParameter(r.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),I=0<I.precision&&0<M.precision,A=0<A.precision&&0<a.precision;"highp"!==E||I||(A?(E="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):
|
|
|
-(E="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==E||A||(E="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Lb=new THREE.SpritePlugin(this,ua),Mb=new THREE.LensFlarePlugin(this,Ja);this.getContext=function(){return r};this.getContextAttributes=function(){return r.getContextAttributes()};this.forceContextLoss=function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return nb};
|
|
|
-this.supportsInstancedArrays=function(){return Kb};this.supportsFloatTextures=function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=
|
|
|
-function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?r.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return E};this.getPixelRatio=function(){return C};this.setPixelRatio=function(a){void 0!==a&&(C=a)};this.getSize=function(){return{width:P,height:G}};this.setSize=function(a,b,c){P=a;G=b;D.width=a*C;D.height=b*C;!1!==c&&(D.style.width=
|
|
|
-a+"px",D.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Ha=a*C;Ia=b*C;Ca=c*C;wa=d*C;r.viewport(Ha,Ia,Ca,wa)};this.setScissor=function(a,b,c,d){r.scissor(a*C,b*C,c*C,d*C)};this.enableScissorTest=function(a){N.setScissorTest(a)};this.getClearColor=function(){return $};this.setClearColor=function(a,c){$.set(a);ea=void 0!==c?c:1;b($.r,$.g,$.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b($.r,$.g,$.b,ea)};this.clear=function(a,b,
|
|
|
-c){var d=0;if(void 0===a||a)d|=r.COLOR_BUFFER_BIT;if(void 0===b||b)d|=r.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=r.STENCIL_BUFFER_BIT;r.clear(d)};this.clearColor=function(){r.clear(r.COLOR_BUFFER_BIT)};this.clearDepth=function(){r.clear(r.DEPTH_BUFFER_BIT)};this.clearStencil=function(){r.clear(r.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.renderBufferImmediate=function(a,b,c){N.initAttributes();var d=aa.get(a);a.hasPositions&&
|
|
|
-!d.__webglVertexBuffer&&(d.__webglVertexBuffer=r.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&(d.__webglNormalBuffer=r.createBuffer());a.hasUvs&&!d.__webglUvBuffer&&(d.__webglUvBuffer=r.createBuffer());a.hasColors&&!d.__webglColorBuffer&&(d.__webglColorBuffer=r.createBuffer());b=b.getAttributes();a.hasPositions&&(r.bindBuffer(r.ARRAY_BUFFER,d.__webglVertexBuffer),r.bufferData(r.ARRAY_BUFFER,a.positionArray,r.DYNAMIC_DRAW),N.enableAttribute(b.position),r.vertexAttribPointer(b.position,3,r.FLOAT,
|
|
|
-!1,0,0));if(a.hasNormals){r.bindBuffer(r.ARRAY_BUFFER,d.__webglNormalBuffer);if(!1===c instanceof THREE.MeshPhongMaterial&&c.shading===THREE.FlatShading){var e,f,g,h,k,l,m,n,p,q,s,t=3*a.count;for(s=0;s<t;s+=9)q=a.normalArray,e=q[s],f=q[s+1],g=q[s+2],h=q[s+3],l=q[s+4],n=q[s+5],k=q[s+6],m=q[s+7],p=q[s+8],e=(e+h+k)/3,f=(f+l+m)/3,g=(g+n+p)/3,q[s]=e,q[s+1]=f,q[s+2]=g,q[s+3]=e,q[s+4]=f,q[s+5]=g,q[s+6]=e,q[s+7]=f,q[s+8]=g}r.bufferData(r.ARRAY_BUFFER,a.normalArray,r.DYNAMIC_DRAW);N.enableAttribute(b.normal);
|
|
|
-r.vertexAttribPointer(b.normal,3,r.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(r.bindBuffer(r.ARRAY_BUFFER,d.__webglUvBuffer),r.bufferData(r.ARRAY_BUFFER,a.uvArray,r.DYNAMIC_DRAW),N.enableAttribute(b.uv),r.vertexAttribPointer(b.uv,2,r.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(r.bindBuffer(r.ARRAY_BUFFER,d.__webglColorBuffer),r.bufferData(r.ARRAY_BUFFER,a.colorArray,r.DYNAMIC_DRAW),N.enableAttribute(b.color),r.vertexAttribPointer(b.color,3,r.FLOAT,!1,0,0));N.disableUnusedAttributes();r.drawArrays(r.TRIANGLES,
|
|
|
-0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e){if(!1!==d.visible){t(d);var f=pa.geometries.get(e);a=u(a,b,c,d,e);b=!1;c=f.id+"_"+a.id+"_"+(d.wireframe?1:0);c!==xa&&(xa=c,b=!0);var g=e.morphTargetInfluences;if(void 0!==g){b=[];c=0;for(var h=g.length;c<h;c++){var m=g[c];b.push([m,c])}b.sort(l);8<b.length&&(b.length=8);g=f.morphAttributes;c=0;for(h=b.length;c<h;c++)m=b[c],Wa[c]=m[0],0!==m[0]?(m=m[1],!0===d.morphTargets&&f.addAttribute("morphTarget"+c,g.position[m]),!0===d.morphNormals&&
|
|
|
-f.addAttribute("morphNormal"+c,g.normal[m])):(!0===d.morphTargets&&f.removeAttribute("morphTarget"+c),!0===d.morphNormals&&f.removeAttribute("morphNormal"+c));b=a.getUniforms();null!==b.morphTargetInfluences&&r.uniform1fv(b.morphTargetInfluences,Wa);b=!0}if(e instanceof THREE.Mesh)a:{e=r.TRIANGLES;!0===d.wireframe&&(e=r.LINES,N.setLineWidth(d.wireframeLinewidth*C));var n=f.attributes.index;if(n)if(g=pa.getAttributeBuffer(n),n.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(c=r.UNSIGNED_INT,
|
|
|
-h=4):(c=r.UNSIGNED_SHORT,h=2),m=f.drawcalls,0===m.length){b&&(k(d,a,f,0),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,g));if(f instanceof THREE.InstancedBufferGeometry&&0<f.maxInstancedCount){var p=V.get("ANGLE_instanced_arrays");if(null===p){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}p.drawElementsInstancedANGLE(e,n.array.length,c,0,f.maxInstancedCount)}else r.drawElements(e,n.array.length,c,
|
|
|
-0);Q.calls++;Q.vertices+=n.array.length;Q.faces+=n.array.length/3}else{b=!0;for(var n=0,q=m.length;n<q;n++){p=m[n].index;b&&(k(d,a,f,p),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,g));if(f instanceof THREE.InstancedBufferGeometry&&0<m[n].instances){p=V.get("ANGLE_instanced_arrays");if(null===p){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}p.drawElementsInstancedANGLE(e,m[n].count,c,m[n].start*h,
|
|
|
-m[n].count,c,m[n].instances)}else r.drawElements(e,m[n].count,c,m[n].start*h);Q.calls++;Q.vertices+=m[n].count;Q.faces+=m[n].count/3}}else if(m=f.drawcalls,0===m.length){b&&k(d,a,f,0);d=f.attributes.position;if(f instanceof THREE.InstancedBufferGeometry&&0<f.maxInstancedCount){p=V.get("ANGLE_instanced_arrays");if(null===p){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}d instanceof THREE.InterleavedBufferAttribute?
|
|
|
-p.drawArraysInstancedANGLE(e,0,d.data.count,f.maxInstancedCount):p.drawArraysInstancedANGLE(e,0,d.count,f.maxInstancedCount)}else d instanceof THREE.InterleavedBufferAttribute?r.drawArrays(e,0,d.data.count):r.drawArrays(e,0,d.count);Q.calls++;Q.vertices+=d.count;Q.faces+=d.array.length/3}else for(b&&k(d,a,f,0),n=0,q=m.length;n<q;n++){if(f instanceof THREE.InstancedBufferGeometry){console.error("THREE.WebGLRenderer.renderMesh: cannot use drawCalls with THREE.InstancedBufferGeometry.");break a}else r.drawArrays(e,
|
|
|
-m[n].start,m[n].count);Q.calls++;Q.vertices+=m[n].count;Q.faces+=m[n].count/3}}else if(e instanceof THREE.Line)if(e=e instanceof THREE.LineSegments?r.LINES:r.LINE_STRIP,N.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*C),p=f.attributes.index)if(m=pa.getAttributeBuffer(p),p.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=r.UNSIGNED_INT,g=4):(h=r.UNSIGNED_SHORT,g=2),c=f.drawcalls,0===c.length)b&&(k(d,a,f,0),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,p.array.length,
|
|
|
-h,0),Q.calls++,Q.vertices+=p.array.length;else for(1<c.length&&(b=!0),p=0,n=c.length;p<n;p++)q=c[p].index,b&&(k(d,a,f,q),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,c[p].count,h,c[p].start*g),Q.calls++,Q.vertices+=c[p].count;else if(b&&k(d,a,f,0),d=f.attributes.position,c=f.drawcalls,0===c.length)r.drawArrays(e,0,d.array.length/3),Q.calls++,Q.vertices+=d.array.length/3;else for(p=0,n=c.length;p<n;p++)r.drawArrays(e,c[p].index,c[p].count),Q.calls++,Q.vertices+=c[p].count;else if(e instanceof
|
|
|
-THREE.PointCloud)if(c=b,e=r.POINTS,p=f.attributes.index)if(m=pa.getAttributeBuffer(p),p.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(h=r.UNSIGNED_INT,g=4):(h=r.UNSIGNED_SHORT,g=2),b=f.drawcalls,0===b.length)c&&(k(d,a,f,0),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,p.array.length,h,0),Q.calls++,Q.points+=p.array.length;else for(1<b.length&&(c=!0),p=0,n=b.length;p<n;p++)q=b[p].index,c&&(k(d,a,f,q),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,b[p].count,h,
|
|
|
-b[p].start*g),Q.calls++,Q.points+=b[p].count;else if(c&&k(d,a,f,0),d=f.attributes.position,b=f.drawcalls,0===b.length)r.drawArrays(e,0,d.array.length/3),Q.calls++,Q.points+=d.array.length/3;else for(p=0,n=b.length;p<n;p++)r.drawArrays(e,b[p].index,b[p].count),Q.calls++,Q.points+=b[p].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;xa="";Ya=-1;Xa=null;fb=!0;!0===a.autoUpdate&&
|
|
|
-a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ka.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Za.setFromMatrix(Ka);fa.length=0;ma.length=0;oa.length=0;Ba.length=0;Ga.length=0;ua.length=0;Ja.length=0;m(a);!0===ka.sortObjects&&(ma.sort(n),oa.sort(p));pa.update(ma);pa.update(oa);la.render(a,b);Q.calls=0;Q.vertices=0;Q.faces=0;Q.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,
|
|
|
-this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,q(ma,b,fa,e,d),q(oa,b,fa,e,d),s(Ba,b,fa,e,d),s(Ga,b,fa,e,d)):(N.setBlending(THREE.NoBlending),q(ma,b,fa,e,null),s(Ba,b,fa,e,null),q(oa,b,fa,e,null),s(Ga,b,fa,e,null));Lb.render(a,b);Mb.render(a,b,jb,kb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(N.bindTexture(r.TEXTURE_CUBE_MAP,aa.get(c).__webglTexture),r.generateMipmap(r.TEXTURE_CUBE_MAP),N.bindTexture(r.TEXTURE_CUBE_MAP,
|
|
|
-null)):(N.bindTexture(r.TEXTURE_2D,aa.get(c).__webglTexture),r.generateMipmap(r.TEXTURE_2D),N.bindTexture(r.TEXTURE_2D,null)));N.setDepthTest(!0);N.setDepthWrite(!0);N.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){t(d);var f=u(a,b,c,d,e);xa="";e.render(function(a){ka.renderBufferImmediate(a,f,d)})};var Zb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",
|
|
|
-PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?N.disable(r.CULL_FACE):(b===THREE.FrontFaceDirectionCW?r.frontFace(r.CW):r.frontFace(r.CCW),a===THREE.CullFaceBack?r.cullFace(r.BACK):a===THREE.CullFaceFront?r.cullFace(r.FRONT):r.cullFace(r.FRONT_AND_BACK),N.enable(r.CULL_FACE))};this.setTexture=function(a,b){var c=aa.get(a);if(0<a.version&&c.__version!==a.version){var d=a.image;if(void 0===d)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",
|
|
|
-a);else if(!1===d.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a);else{void 0===c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=r.createTexture(),Da.textures++);N.activeTexture(r.TEXTURE0+b);N.bindTexture(r.TEXTURE_2D,c.__webglTexture);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,a.flipY);r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);r.pixelStorei(r.UNPACK_ALIGNMENT,a.unpackAlignment);
|
|
|
-a.image=H(a.image,Jb);var f=a.image,d=THREE.Math.isPowerOfTwo(f.width)&&THREE.Math.isPowerOfTwo(f.height),g=J(a.format),h=J(a.type);x(r.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var m=0,l=k.length;m<l;m++)f=k[m],N.texImage2D(r.TEXTURE_2D,m,g,f.width,f.height,0,g,h,f.data);a.generateMipmaps=!1}else N.texImage2D(r.TEXTURE_2D,0,g,f.width,f.height,0,g,h,f.data);else if(a instanceof THREE.CompressedTexture)for(m=0,l=k.length;m<l;m++)f=k[m],a.format!==THREE.RGBAFormat&&
|
|
|
-a.format!==THREE.RGBFormat?-1<Yb().indexOf(g)?N.compressedTexImage2D(r.TEXTURE_2D,m,g,f.width,f.height,0,f.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):N.texImage2D(r.TEXTURE_2D,m,g,f.width,f.height,0,g,h,f.data);else if(0<k.length&&d){m=0;for(l=k.length;m<l;m++)f=k[m],N.texImage2D(r.TEXTURE_2D,m,g,g,h,f);a.generateMipmaps=!1}else N.texImage2D(r.TEXTURE_2D,0,g,g,h,a.image);a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_2D);
|
|
|
-c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else N.activeTexture(r.TEXTURE0+b),N.bindTexture(r.TEXTURE_2D,c.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===aa.get(a).__webglFramebuffer){var c=aa.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",g);c.__webglTexture=r.createTexture();Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),
|
|
|
-e=J(a.format),f=J(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];N.bindTexture(r.TEXTURE_CUBE_MAP,c.__webglTexture);x(r.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=r.createFramebuffer(),c.__webglRenderbuffer[h]=r.createRenderbuffer(),N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,f,null),F(c.__webglFramebuffer[h],a,r.TEXTURE_CUBE_MAP_POSITIVE_X+h),y(c.__webglRenderbuffer[h],a);a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=
|
|
|
-r.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:r.createRenderbuffer(),N.bindTexture(r.TEXTURE_2D,c.__webglTexture),x(r.TEXTURE_2D,a,d),N.texImage2D(r.TEXTURE_2D,0,e,a.width,a.height,0,e,f,null),F(c.__webglFramebuffer,a,r.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,c.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&r.framebufferRenderbuffer(r.FRAMEBUFFER,
|
|
|
-r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,c.__webglRenderbuffer):y(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_2D);b?N.bindTexture(r.TEXTURE_CUBE_MAP,null):N.bindTexture(r.TEXTURE_2D,null);r.bindRenderbuffer(r.RENDERBUFFER,null);r.bindFramebuffer(r.FRAMEBUFFER,null)}a?(c=aa.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ca,a=wa,d=Ha,e=Ia);b!==Qa&&(r.bindFramebuffer(r.FRAMEBUFFER,b),r.viewport(d,e,c,a),Qa=b);
|
|
|
-jb=c;kb=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(aa.get(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{var g=!1;aa.get(a).__webglFramebuffer!==Qa&&(r.bindFramebuffer(r.FRAMEBUFFER,aa.get(a).__webglFramebuffer),
|
|
|
-g=!0);r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE?r.readPixels(b,c,d,e,r.RGBA,r.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&r.bindFramebuffer(r.FRAMEBUFFER,Qa)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=
|
|
|
-function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return la.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");la.enabled=a}},shadowMapType:{get:function(){return la.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
|
|
|
-la.type=a}},shadowMapCullFace:{get:function(){return la.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");la.cullFace=a}},shadowMapDebug:{get:function(){return la.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");la.debug=a}},shadowMapCascade:{get:function(){return la.cascade},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCascade is now .shadowMap.cascade.");la.cascade=a}}})};
|
|
|
+l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);null===e&&(f=k.material);ka.renderBufferDirect(b,c,d,f,k)}}function s(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g],l=k;l._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,l.matrixWorld);l._normalMatrix.getNormalMatrix(l._modelViewMatrix);!0===k.visible&&(null===e&&(f=k.material),ka.renderImmediateObject(b,c,d,f,k))}}function t(a){a.side!==THREE.DoubleSide?N.enable(r.CULL_FACE):N.disable(r.CULL_FACE);N.setFlipSided(a.side===
|
|
|
+THREE.BackSide);!0===a.transparent?N.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):N.setBlending(THREE.NoBlending);N.setDepthFunc(a.depthFunc);N.setDepthTest(a.depthTest);N.setDepthWrite(a.depthWrite);N.setColorWrite(a.colorWrite);N.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function u(a,b,c,d,g){var k,l,m,n;gb=0;var p=aa.get(d);if(d.needsUpdate||!p.program){a:{for(var q=aa.get(d),s=Zb[d.type],t=
|
|
|
+0,y=0,u=0,B=0,A=0,F=b.length;A<F;A++){var C=b[A];C.onlyShadow||!1===C.visible||(C instanceof THREE.DirectionalLight&&t++,C instanceof THREE.PointLight&&y++,C instanceof THREE.SpotLight&&u++,C instanceof THREE.HemisphereLight&&B++)}k=t;l=y;m=u;n=B;for(var G,I=0,M=0,S=b.length;M<S;M++){var P=b[M];P.castShadow&&(P instanceof THREE.SpotLight&&I++,P instanceof THREE.DirectionalLight&&!P.shadowCascade&&I++)}G=I;var ma;if(mb&&g&&g.skeleton&&g.skeleton.useVertexTexture)ma=1024;else{var R=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),
|
|
|
+U=Math.floor((R-20)/4);void 0!==g&&g instanceof THREE.SkinnedMesh&&(U=Math.min(g.skeleton.bones.length,U),U<g.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+g.skeleton.bones.length+", this GPU supports just "+U+" (try OpenGL instead of ANGLE)"));ma=U}var Q={precision:E,supportsVertexTextures:nb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,aoMap:!!d.aoMap,emissiveMap:!!d.emissiveMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,
|
|
|
+alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,flatShading:d.shading===THREE.FlatShading,sizeAttenuation:d.sizeAttenuation,logarithmicDepthBuffer:L,skinning:d.skinning,maxBones:ma,useVertexTexture:mb&&g&&g.skeleton&&g.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:ka.maxMorphTargets,maxMorphNormals:ka.maxMorphNormals,maxDirLights:k,maxPointLights:l,maxSpotLights:m,maxHemiLights:n,
|
|
|
+maxShadows:G,shadowMapEnabled:la.enabled&&g.receiveShadow&&0<G,shadowMapType:la.type,shadowMapDebug:la.debug,shadowMapCascade:la.cascade,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];s?T.push(s):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var V in d.defines)T.push(V),T.push(d.defines[V]);for(V in Q)T.push(V),T.push(Q[V]);var oa=T.join(),Ga=!0;if(q.program)if(q.program.code!==oa)h(d);else if(void 0!==
|
|
|
+s)break a;else Ga=!1;else d.addEventListener("dispose",f);if(s){var Ba=THREE.ShaderLib[s];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ba.uniforms),vertexShader:Ba.vertexShader,fragmentShader:Ba.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var $,Ja=0,fa=va.length;Ja<fa;Ja++){var Wa=va[Ja];if(Wa.code===oa){$=Wa;Ga&&$.usedTimes++;break}}void 0===$&&(d.__webglShader=q.__webglShader,$=new THREE.WebGLProgram(ka,
|
|
|
+oa,d,Q),va.push($),Da.programs=va.length);q.program=$;var ea=$.getAttributes();if(d.morphTargets)for(var ua=d.numSupportedMorphTargets=0;ua<ka.maxMorphTargets;ua++)0<=ea["morphTarget"+ua]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ua=d.numSupportedMorphNormals=0;ua<ka.maxMorphNormals;ua++)0<=ea["morphNormal"+ua]&&d.numSupportedMorphNormals++;q.uniformsList=[];var pa=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ha=pa[xa];Ha&&q.uniformsList.push([q.__webglShader.uniforms[xa],
|
|
|
+Ha])}}d.needsUpdate=!1}var Ia=!1,Ca=!1,wa=!1,$a=p.program,ca=$a.getUniforms(),K=p.__webglShader.uniforms;$a.id!==lb&&(r.useProgram($a.program),lb=$a.id,wa=Ca=Ia=!0);d.id!==Ya&&(-1===Ya&&(wa=!0),Ya=d.id,Ca=!0);if(Ia||a!==Xa)r.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),L&&r.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Xa&&(Xa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ca.cameraPosition&&(na.setFromMatrixPosition(a.matrixWorld),
|
|
|
+r.uniform3f(ca.cameraPosition,na.x,na.y,na.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&void 0!==ca.viewMatrix&&r.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(g.bindMatrix&&void 0!==ca.bindMatrix&&r.uniformMatrix4fv(ca.bindMatrix,!1,g.bindMatrix.elements),g.bindMatrixInverse&&void 0!==ca.bindMatrixInverse&&r.uniformMatrix4fv(ca.bindMatrixInverse,
|
|
|
+!1,g.bindMatrixInverse.elements),mb&&g.skeleton&&g.skeleton.useVertexTexture){if(void 0!==ca.boneTexture){var Qa=v();r.uniform1i(ca.boneTexture,Qa);ka.setTexture(g.skeleton.boneTexture,Qa)}void 0!==ca.boneTextureWidth&&r.uniform1i(ca.boneTextureWidth,g.skeleton.boneTextureWidth);void 0!==ca.boneTextureHeight&&r.uniform1i(ca.boneTextureHeight,g.skeleton.boneTextureHeight)}else g.skeleton&&g.skeleton.boneMatrices&&void 0!==ca.boneGlobalMatrices&&r.uniformMatrix4fv(ca.boneGlobalMatrices,!1,g.skeleton.boneMatrices);
|
|
|
+if(Ca){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(fb){var wa=!0,ba,ra,Z,Ka=0,ob=0,pb=0,La,Za,eb,Ra,qb,da=Nb,rb=da.directional.colors,sb=da.directional.positions,tb=da.point.colors,ub=da.point.positions,jb=da.point.distances,kb=da.point.decays,vb=da.spot.colors,wb=da.spot.positions,Ib=
|
|
|
+da.spot.distances,xb=da.spot.directions,Jb=da.spot.anglesCos,Kb=da.spot.exponents,Lb=da.spot.decays,yb=da.hemi.skyColors,zb=da.hemi.groundColors,Ab=da.hemi.positions,ab=0,Ma=0,ya=0,Sa=0,Bb=0,Cb=0,Db=0,hb=0,bb=0,cb=0,Ea=0,Ta=0;ba=0;for(ra=b.length;ba<ra;ba++)Z=b[ba],Z.onlyShadow||(La=Z.color,Ra=Z.intensity,qb=Z.distance,Z instanceof THREE.AmbientLight?Z.visible&&(Ka+=La.r,ob+=La.g,pb+=La.b):Z instanceof THREE.DirectionalLight?(Bb+=1,Z.visible&&(ha.setFromMatrixPosition(Z.matrixWorld),na.setFromMatrixPosition(Z.target.matrixWorld),
|
|
|
+ha.sub(na),ha.normalize(),bb=3*ab,sb[bb+0]=ha.x,sb[bb+1]=ha.y,sb[bb+2]=ha.z,z(rb,bb,La,Ra),ab+=1)):Z instanceof THREE.PointLight?(Cb+=1,Z.visible&&(cb=3*Ma,z(tb,cb,La,Ra),na.setFromMatrixPosition(Z.matrixWorld),ub[cb+0]=na.x,ub[cb+1]=na.y,ub[cb+2]=na.z,jb[Ma]=qb,kb[Ma]=0===Z.distance?0:Z.decay,Ma+=1)):Z instanceof THREE.SpotLight?(Db+=1,Z.visible&&(Ea=3*ya,z(vb,Ea,La,Ra),ha.setFromMatrixPosition(Z.matrixWorld),wb[Ea+0]=ha.x,wb[Ea+1]=ha.y,wb[Ea+2]=ha.z,Ib[ya]=qb,na.setFromMatrixPosition(Z.target.matrixWorld),
|
|
|
+ha.sub(na),ha.normalize(),xb[Ea+0]=ha.x,xb[Ea+1]=ha.y,xb[Ea+2]=ha.z,Jb[ya]=Math.cos(Z.angle),Kb[ya]=Z.exponent,Lb[ya]=0===Z.distance?0:Z.decay,ya+=1)):Z instanceof THREE.HemisphereLight&&(hb+=1,Z.visible&&(ha.setFromMatrixPosition(Z.matrixWorld),ha.normalize(),Ta=3*Sa,Ab[Ta+0]=ha.x,Ab[Ta+1]=ha.y,Ab[Ta+2]=ha.z,Za=Z.color,eb=Z.groundColor,z(yb,Ta,Za,Ra),z(zb,Ta,eb,Ra),Sa+=1)));ba=3*ab;for(ra=Math.max(rb.length,3*Bb);ba<ra;ba++)rb[ba]=0;ba=3*Ma;for(ra=Math.max(tb.length,3*Cb);ba<ra;ba++)tb[ba]=0;ba=
|
|
|
+3*ya;for(ra=Math.max(vb.length,3*Db);ba<ra;ba++)vb[ba]=0;ba=3*Sa;for(ra=Math.max(yb.length,3*hb);ba<ra;ba++)yb[ba]=0;ba=3*Sa;for(ra=Math.max(zb.length,3*hb);ba<ra;ba++)zb[ba]=0;da.directional.length=ab;da.point.length=Ma;da.spot.length=ya;da.hemi.length=Sa;da.ambient[0]=Ka;da.ambient[1]=ob;da.ambient[2]=pb;fb=!1}if(wa){var ja=Nb;K.ambientLightColor.value=ja.ambient;K.directionalLightColor.value=ja.directional.colors;K.directionalLightDirection.value=ja.directional.positions;K.pointLightColor.value=
|
|
|
+ja.point.colors;K.pointLightPosition.value=ja.point.positions;K.pointLightDistance.value=ja.point.distances;K.pointLightDecay.value=ja.point.decays;K.spotLightColor.value=ja.spot.colors;K.spotLightPosition.value=ja.spot.positions;K.spotLightDistance.value=ja.spot.distances;K.spotLightDirection.value=ja.spot.directions;K.spotLightAngleCos.value=ja.spot.anglesCos;K.spotLightExponent.value=ja.spot.exponents;K.spotLightDecay.value=ja.spot.decays;K.hemisphereLightSkyColor.value=ja.hemi.skyColors;K.hemisphereLightGroundColor.value=
|
|
|
+ja.hemi.groundColors;K.hemisphereLightDirection.value=ja.hemi.positions;w(K,!0)}else w(K,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){K.opacity.value=d.opacity;K.diffuse.value=d.color;K.map.value=d.map;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 za;
|
|
|
+d.map?za=d.map:d.specularMap?za=d.specularMap:d.normalMap?za=d.normalMap:d.bumpMap?za=d.bumpMap:d.alphaMap?za=d.alphaMap:d.emissiveMap&&(za=d.emissiveMap);if(void 0!==za){var Ob=za.offset,Pb=za.repeat;K.offsetRepeat.value.set(Ob.x,Ob.y,Pb.x,Pb.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}if(d instanceof THREE.LineBasicMaterial)K.diffuse.value=d.color,K.opacity.value=
|
|
|
+d.opacity;else if(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;else if(d instanceof THREE.PointCloudMaterial){if(K.psColor.value=d.color,K.opacity.value=d.opacity,K.size.value=d.size,K.scale.value=D.height/2,K.map.value=d.map,null!==d.map){var Qb=d.map.offset,Rb=d.map.repeat;K.offsetRepeat.value.set(Qb.x,Qb.y,Rb.x,Rb.y)}}else d instanceof THREE.MeshPhongMaterial?(K.shininess.value=
|
|
|
+d.shininess,K.emissive.value=d.emissive,K.specular.value=d.specular,K.lightMap.value=d.lightMap,K.lightMapIntensity.value=d.lightMapIntensity,K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity,K.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?K.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?(K.aoMap.value=d.aoMap,K.aoMapIntensity.value=d.aoMapIntensity):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(g.receiveShadow&&!d._shadowPass&&K.shadowMatrix)for(var Ua=0,Eb=0,Mb=b.length;Eb<Mb;Eb++){var Aa=b[Eb];Aa.castShadow&&(Aa instanceof THREE.SpotLight||Aa instanceof THREE.DirectionalLight&&!Aa.shadowCascade)&&(K.shadowMap.value[Ua]=Aa.shadowMap,K.shadowMapSize.value[Ua]=Aa.shadowMapSize,K.shadowMatrix.value[Ua]=Aa.shadowMatrix,K.shadowDarkness.value[Ua]=Aa.shadowDarkness,K.shadowBias.value[Ua]=Aa.shadowBias,Ua++)}for(var Fb=
|
|
|
+p.uniformsList,sa,Na,ta,ib=0,$b=Fb.length;ib<$b;ib++){var X=Fb[ib][0];if(!1!==X.needsUpdate){var Sb=X.type,O=X.value,Y=Fb[ib][1];switch(Sb){case "1i":r.uniform1i(Y,O);break;case "1f":r.uniform1f(Y,O);break;case "2f":r.uniform2f(Y,O[0],O[1]);break;case "3f":r.uniform3f(Y,O[0],O[1],O[2]);break;case "4f":r.uniform4f(Y,O[0],O[1],O[2],O[3]);break;case "1iv":r.uniform1iv(Y,O);break;case "3iv":r.uniform3iv(Y,O);break;case "1fv":r.uniform1fv(Y,O);break;case "2fv":r.uniform2fv(Y,O);break;case "3fv":r.uniform3fv(Y,
|
|
|
+O);break;case "4fv":r.uniform4fv(Y,O);break;case "Matrix3fv":r.uniformMatrix3fv(Y,!1,O);break;case "Matrix4fv":r.uniformMatrix4fv(Y,!1,O);break;case "i":r.uniform1i(Y,O);break;case "f":r.uniform1f(Y,O);break;case "v2":r.uniform2f(Y,O.x,O.y);break;case "v3":r.uniform3f(Y,O.x,O.y,O.z);break;case "v4":r.uniform4f(Y,O.x,O.y,O.z,O.w);break;case "c":r.uniform3f(Y,O.r,O.g,O.b);break;case "iv1":r.uniform1iv(Y,O);break;case "iv":r.uniform3iv(Y,O);break;case "fv1":r.uniform1fv(Y,O);break;case "fv":r.uniform3fv(Y,
|
|
|
+O);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*O.length));for(var W=0,qa=O.length;W<qa;W++)ta=2*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y;r.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*O.length));W=0;for(qa=O.length;W<qa;W++)ta=3*W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y,X._array[ta+2]=O[W].z;r.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*O.length));W=0;for(qa=O.length;W<qa;W++)ta=4*
|
|
|
+W,X._array[ta+0]=O[W].x,X._array[ta+1]=O[W].y,X._array[ta+2]=O[W].z,X._array[ta+3]=O[W].w;r.uniform4fv(Y,X._array);break;case "m3":r.uniformMatrix3fv(Y,!1,O.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,9*W);r.uniformMatrix3fv(Y,!1,X._array);break;case "m4":r.uniformMatrix4fv(Y,!1,O.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*O.length));W=0;for(qa=O.length;W<qa;W++)O[W].flattenToArrayOffset(X._array,
|
|
|
+16*W);r.uniformMatrix4fv(Y,!1,X._array);break;case "t":sa=O;Na=v();r.uniform1i(Y,Na);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var ga=sa,Tb=Na,Va=aa.get(ga);if(6===ga.image.length)if(0<ga.version&&Va.__version!==ga.version){Va.__image__webglTextureCube||(ga.addEventListener("dispose",e),Va.__image__webglTextureCube=r.createTexture(),Da.textures++);N.activeTexture(r.TEXTURE0+Tb);N.bindTexture(r.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,
|
|
|
+ga.flipY);for(var Ub=ga instanceof THREE.CompressedTexture,Gb=ga.image[0]instanceof THREE.DataTexture,Oa=[],ia=0;6>ia;ia++)Oa[ia]=!ka.autoScaleCubemaps||Ub||Gb?Gb?ga.image[ia].image:ga.image[ia]:H(ga.image[ia],ac);var Vb=Oa[0],Wb=THREE.Math.isPowerOfTwo(Vb.width)&&THREE.Math.isPowerOfTwo(Vb.height),Fa=J(ga.format),Hb=J(ga.type);x(r.TEXTURE_CUBE_MAP,ga,Wb);for(ia=0;6>ia;ia++)if(Ub)for(var Pa,Xb=Oa[ia].mipmaps,db=0,bc=Xb.length;db<bc;db++)Pa=Xb[db],ga.format!==THREE.RGBAFormat&&ga.format!==THREE.RGBFormat?
|
|
|
+-1<Yb().indexOf(Fa)?N.compressedTexImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,db,Fa,Pa.width,Pa.height,0,Pa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,db,Fa,Pa.width,Pa.height,0,Fa,Hb,Pa.data);else Gb?N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Oa[ia].width,Oa[ia].height,0,Fa,Hb,Oa[ia].data):N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Fa,Fa,Hb,Oa[ia]);ga.generateMipmaps&&
|
|
|
+Wb&&r.generateMipmap(r.TEXTURE_CUBE_MAP);Va.__version=ga.version;if(ga.onUpdate)ga.onUpdate(ga)}else N.activeTexture(r.TEXTURE0+Tb),N.bindTexture(r.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube)}else if(sa instanceof THREE.WebGLRenderTargetCube){var cc=sa;N.activeTexture(r.TEXTURE0+Na);N.bindTexture(r.TEXTURE_CUBE_MAP,aa.get(cc).__webglTexture)}else ka.setTexture(sa,Na);break;case "tv":void 0===X._array&&(X._array=[]);W=0;for(qa=X.value.length;W<qa;W++)X._array[W]=v();r.uniform1iv(Y,X._array);W=0;
|
|
|
+for(qa=X.value.length;W<qa;W++)sa=X.value[W],Na=X._array[W],sa&&ka.setTexture(sa,Na);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Sb)}}}}r.uniformMatrix4fv(ca.modelViewMatrix,!1,g._modelViewMatrix.elements);ca.normalMatrix&&r.uniformMatrix3fv(ca.normalMatrix,!1,g._normalMatrix.elements);void 0!==ca.modelMatrix&&r.uniformMatrix4fv(ca.modelMatrix,!1,g.matrixWorld.elements);return $a}function w(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightColor.needsUpdate=b;a.directionalLightDirection.needsUpdate=
|
|
|
+b;a.pointLightColor.needsUpdate=b;a.pointLightPosition.needsUpdate=b;a.pointLightDistance.needsUpdate=b;a.pointLightDecay.needsUpdate=b;a.spotLightColor.needsUpdate=b;a.spotLightPosition.needsUpdate=b;a.spotLightDistance.needsUpdate=b;a.spotLightDirection.needsUpdate=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}function v(){var a=
|
|
|
+gb;a>=eb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+eb);gb+=1;return a}function z(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function x(a,b,c){c?(r.texParameteri(a,r.TEXTURE_WRAP_S,J(b.wrapS)),r.texParameteri(a,r.TEXTURE_WRAP_T,J(b.wrapT)),r.texParameteri(a,r.TEXTURE_MAG_FILTER,J(b.magFilter)),r.texParameteri(a,r.TEXTURE_MIN_FILTER,J(b.minFilter))):(r.texParameteri(a,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(a,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),
|
|
|
+b.wrapS===THREE.ClampToEdgeWrapping&&b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),r.texParameteri(a,r.TEXTURE_MAG_FILTER,B(b.magFilter)),r.texParameteri(a,r.TEXTURE_MIN_FILTER,B(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter. ( "+
|
|
|
+b.sourceFile+" )"));(c=V.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||aa.get(b).__currentAnisotropy)&&(r.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,ka.getMaxAnisotropy())),aa.get(b).__currentAnisotropy=b.anisotropy)}function H(a,b){if(a.width>b||a.height>b){var c=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);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function F(a,b,c){r.bindFramebuffer(r.FRAMEBUFFER,a);r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,c,aa.get(b).__webglTexture,0)}function y(a,b){r.bindRenderbuffer(r.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_COMPONENT16,b.width,b.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,
|
|
|
+r.DEPTH_ATTACHMENT,r.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,b.width,b.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,a)):r.renderbufferStorage(r.RENDERBUFFER,r.RGBA4,b.width,b.height)}function B(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?r.NEAREST:r.LINEAR}function J(a){var b;if(a===THREE.RepeatWrapping)return r.REPEAT;if(a===THREE.ClampToEdgeWrapping)return r.CLAMP_TO_EDGE;
|
|
|
+if(a===THREE.MirroredRepeatWrapping)return r.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return r.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return r.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return r.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return r.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return r.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return r.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return r.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return r.UNSIGNED_SHORT_4_4_4_4;
|
|
|
+if(a===THREE.UnsignedShort5551Type)return r.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return r.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return r.BYTE;if(a===THREE.ShortType)return r.SHORT;if(a===THREE.UnsignedShortType)return r.UNSIGNED_SHORT;if(a===THREE.IntType)return r.INT;if(a===THREE.UnsignedIntType)return r.UNSIGNED_INT;if(a===THREE.FloatType)return r.FLOAT;b=V.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return r.ALPHA;
|
|
|
+if(a===THREE.RGBFormat)return r.RGB;if(a===THREE.RGBAFormat)return r.RGBA;if(a===THREE.LuminanceFormat)return r.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return r.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return r.FUNC_ADD;if(a===THREE.SubtractEquation)return r.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return r.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return r.ZERO;if(a===THREE.OneFactor)return r.ONE;if(a===THREE.SrcColorFactor)return r.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return r.ONE_MINUS_SRC_COLOR;
|
|
|
+if(a===THREE.SrcAlphaFactor)return r.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return r.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return r.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return r.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return r.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return r.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return r.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;
|
|
|
+if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
|
|
|
+if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var D=void 0!==a.canvas?a.canvas:document.createElement("canvas"),A=void 0!==a.context?a.context:null,P=D.width,G=D.height,C=1,E=void 0!==a.precision?a.precision:"highp",I=void 0!==a.alpha?a.alpha:!1,M=void 0!==a.depth?a.depth:!0,
|
|
|
+S=void 0!==a.stencil?a.stencil:!0,U=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,T=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,L=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,$=new THREE.Color(0),ea=0,fa=[],ma=[],oa=[],Ba=[],Ga=[],Wa=new Float32Array(8),ua=[],Ja=[];this.domElement=D;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.gammaOutput=
|
|
|
+this.gammaInput=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;var ka=this,va=[],lb=null,Qa=null,Ya=-1,xa="",Xa=null,gb=0,Ha=0,Ia=0,Ca=D.width,wa=D.height,jb=0,kb=0,Za=new THREE.Frustum,Ka=new THREE.Matrix4,na=new THREE.Vector3,ha=new THREE.Vector3,fb=!0,Nb={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],
|
|
|
+decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},Da={programs:0,geometries:0,textures:0},Q={calls:0,vertices:0,faces:0,points:0};this.info={render:Q,memory:Da,programs:va};var r;try{a={alpha:I,depth:M,stencil:S,antialias:U,premultipliedAlpha:R,preserveDrawingBuffer:T};r=A||D.getContext("webgl",a)||D.getContext("experimental-webgl",a);if(null===r){if(null!==D.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";
|
|
|
+}D.addEventListener("webglcontextlost",function(a){a.preventDefault();d();c();pa.clear();aa.clear()},!1)}catch(Ib){console.error("THREE.WebGLRenderer: "+Ib)}var N=new THREE.WebGLState(r,J);void 0===r.getShaderPrecisionFormat&&(r.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var aa=new THREE.WebGLProperties,pa=new THREE.WebGLObjects(r,aa,this.info),V=new THREE.WebGLExtensions(r);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");
|
|
|
+V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);L&&V.get("EXT_frag_depth");c();this.context=r;this.extensions=V;this.state=N;var la=new THREE.WebGLShadowMap(this,fa,pa);this.shadowMap=la;var eb=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),A=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Jb=r.getParameter(r.MAX_TEXTURE_SIZE),ac=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),
|
|
|
+nb=0<A,mb=nb&&V.get("OES_texture_float"),Kb=V.get("ANGLE_instanced_arrays"),I=r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.HIGH_FLOAT),A=r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT),M=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT);a=r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT);var Yb=function(){var a;return function(){if(void 0!==a)return a;a=[];if(V.get("WEBGL_compressed_texture_pvrtc")||V.get("WEBGL_compressed_texture_s3tc"))for(var b=r.getParameter(r.COMPRESSED_TEXTURE_FORMATS),
|
|
|
+c=0;c<b.length;c++)a.push(b[c]);return a}}(),I=0<I.precision&&0<M.precision,A=0<A.precision&&0<a.precision;"highp"!==E||I||(A?(E="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(E="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==E||A||(E="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Lb=new THREE.SpritePlugin(this,ua),Mb=new THREE.LensFlarePlugin(this,Ja);this.getContext=
|
|
|
+function(){return r};this.getContextAttributes=function(){return r.getContextAttributes()};this.forceContextLoss=function(){V.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return nb};this.supportsInstancedArrays=function(){return Kb};this.supportsFloatTextures=function(){return V.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return V.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return V.get("OES_standard_derivatives")};
|
|
|
+this.supportsCompressedTextureS3TC=function(){return V.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return V.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return V.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?r.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return E};this.getPixelRatio=
|
|
|
+function(){return C};this.setPixelRatio=function(a){void 0!==a&&(C=a)};this.getSize=function(){return{width:P,height:G}};this.setSize=function(a,b,c){P=a;G=b;D.width=a*C;D.height=b*C;!1!==c&&(D.style.width=a+"px",D.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){Ha=a*C;Ia=b*C;Ca=c*C;wa=d*C;r.viewport(Ha,Ia,Ca,wa)};this.setScissor=function(a,b,c,d){r.scissor(a*C,b*C,c*C,d*C)};this.enableScissorTest=function(a){N.setScissorTest(a)};this.getClearColor=function(){return $};
|
|
|
+this.setClearColor=function(a,c){$.set(a);ea=void 0!==c?c:1;b($.r,$.g,$.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b($.r,$.g,$.b,ea)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=r.COLOR_BUFFER_BIT;if(void 0===b||b)d|=r.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=r.STENCIL_BUFFER_BIT;r.clear(d)};this.clearColor=function(){r.clear(r.COLOR_BUFFER_BIT)};this.clearDepth=function(){r.clear(r.DEPTH_BUFFER_BIT)};this.clearStencil=function(){r.clear(r.STENCIL_BUFFER_BIT)};
|
|
|
+this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=d;this.renderBufferImmediate=function(a,b,c){N.initAttributes();var d=aa.get(a);a.hasPositions&&!d.__webglVertexBuffer&&(d.__webglVertexBuffer=r.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&(d.__webglNormalBuffer=r.createBuffer());a.hasUvs&&!d.__webglUvBuffer&&(d.__webglUvBuffer=r.createBuffer());a.hasColors&&!d.__webglColorBuffer&&(d.__webglColorBuffer=r.createBuffer());b=b.getAttributes();a.hasPositions&&
|
|
|
+(r.bindBuffer(r.ARRAY_BUFFER,d.__webglVertexBuffer),r.bufferData(r.ARRAY_BUFFER,a.positionArray,r.DYNAMIC_DRAW),N.enableAttribute(b.position),r.vertexAttribPointer(b.position,3,r.FLOAT,!1,0,0));if(a.hasNormals){r.bindBuffer(r.ARRAY_BUFFER,d.__webglNormalBuffer);if(!1===c instanceof THREE.MeshPhongMaterial&&c.shading===THREE.FlatShading){var e,f,g,h,k,l,m,n,p,q,s,t=3*a.count;for(s=0;s<t;s+=9)q=a.normalArray,e=q[s],f=q[s+1],g=q[s+2],h=q[s+3],l=q[s+4],n=q[s+5],k=q[s+6],m=q[s+7],p=q[s+8],e=(e+h+k)/3,
|
|
|
+f=(f+l+m)/3,g=(g+n+p)/3,q[s]=e,q[s+1]=f,q[s+2]=g,q[s+3]=e,q[s+4]=f,q[s+5]=g,q[s+6]=e,q[s+7]=f,q[s+8]=g}r.bufferData(r.ARRAY_BUFFER,a.normalArray,r.DYNAMIC_DRAW);N.enableAttribute(b.normal);r.vertexAttribPointer(b.normal,3,r.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(r.bindBuffer(r.ARRAY_BUFFER,d.__webglUvBuffer),r.bufferData(r.ARRAY_BUFFER,a.uvArray,r.DYNAMIC_DRAW),N.enableAttribute(b.uv),r.vertexAttribPointer(b.uv,2,r.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(r.bindBuffer(r.ARRAY_BUFFER,
|
|
|
+d.__webglColorBuffer),r.bufferData(r.ARRAY_BUFFER,a.colorArray,r.DYNAMIC_DRAW),N.enableAttribute(b.color),r.vertexAttribPointer(b.color,3,r.FLOAT,!1,0,0));N.disableUnusedAttributes();r.drawArrays(r.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e){if(d instanceof THREE.MeshFaceMaterial){var f=d.materials,g=0;for(d=f.length;g<d;g++)ka.renderBufferDirect(a,b,c,f[g],e)}else if(!1!==d.visible){t(d);f=pa.geometries.get(e);a=u(a,b,c,d,e);g=!1;b=f.id+"_"+a.id+"_"+(d.wireframe?1:
|
|
|
+0);b!==xa&&(xa=b,g=!0);var h=e.morphTargetInfluences;if(void 0!==h){b=[];g=0;for(c=h.length;g<c;g++){var m=h[g];b.push([m,g])}b.sort(l);8<b.length&&(b.length=8);h=f.morphAttributes;g=0;for(c=b.length;g<c;g++)m=b[g],Wa[g]=m[0],0!==m[0]?(m=m[1],!0===d.morphTargets&&f.addAttribute("morphTarget"+g,h.position[m]),!0===d.morphNormals&&f.addAttribute("morphNormal"+g,h.normal[m])):(!0===d.morphTargets&&f.removeAttribute("morphTarget"+g),!0===d.morphNormals&&f.removeAttribute("morphNormal"+g));g=a.getUniforms();
|
|
|
+null!==g.morphTargetInfluences&&r.uniform1fv(g.morphTargetInfluences,Wa);g=!0}if(e instanceof THREE.Mesh)a:{e=r.TRIANGLES;!0===d.wireframe&&(e=r.LINES,N.setLineWidth(d.wireframeLinewidth*C));var n=f.attributes.index;if(n)if(h=pa.getAttributeBuffer(n),n.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(b=r.UNSIGNED_INT,c=4):(b=r.UNSIGNED_SHORT,c=2),m=f.drawcalls,0===m.length){g&&(k(d,a,f,0),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,h));if(f instanceof THREE.InstancedBufferGeometry&&0<f.maxInstancedCount){var p=
|
|
|
+V.get("ANGLE_instanced_arrays");if(null===p){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}p.drawElementsInstancedANGLE(e,n.array.length,b,0,f.maxInstancedCount)}else r.drawElements(e,n.array.length,b,0);Q.calls++;Q.vertices+=n.array.length;Q.faces+=n.array.length/3}else for(var g=!0,n=0,q=m.length;n<q;n++){p=m[n].index;g&&(k(d,a,f,p),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,h));if(f instanceof
|
|
|
+THREE.InstancedBufferGeometry&&0<m[n].instances){p=V.get("ANGLE_instanced_arrays");if(null===p){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}p.drawElementsInstancedANGLE(e,m[n].count,b,m[n].start*c,m[n].count,b,m[n].instances)}else r.drawElements(e,m[n].count,b,m[n].start*c);Q.calls++;Q.vertices+=m[n].count;Q.faces+=m[n].count/3}else if(m=f.drawcalls,0===m.length){g&&k(d,a,f,0);d=f.attributes.position;
|
|
|
+if(f instanceof THREE.InstancedBufferGeometry&&0<f.maxInstancedCount){p=V.get("ANGLE_instanced_arrays");if(null===p){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}d instanceof THREE.InterleavedBufferAttribute?p.drawArraysInstancedANGLE(e,0,d.data.count,f.maxInstancedCount):p.drawArraysInstancedANGLE(e,0,d.count,f.maxInstancedCount)}else d instanceof THREE.InterleavedBufferAttribute?r.drawArrays(e,
|
|
|
+0,d.data.count):r.drawArrays(e,0,d.count);Q.calls++;Q.vertices+=d.count;Q.faces+=d.array.length/3}else for(g&&k(d,a,f,0),n=0,q=m.length;n<q;n++){if(f instanceof THREE.InstancedBufferGeometry){console.error("THREE.WebGLRenderer.renderMesh: cannot use drawCalls with THREE.InstancedBufferGeometry.");break a}else r.drawArrays(e,m[n].start,m[n].count);Q.calls++;Q.vertices+=m[n].count;Q.faces+=m[n].count/3}}else if(e instanceof THREE.Line)if(e=e instanceof THREE.LineSegments?r.LINES:r.LINE_STRIP,N.setLineWidth((void 0!==
|
|
|
+d.linewidth?d.linewidth:1)*C),p=f.attributes.index)if(m=pa.getAttributeBuffer(p),p.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(c=r.UNSIGNED_INT,h=4):(c=r.UNSIGNED_SHORT,h=2),b=f.drawcalls,0===b.length)g&&(k(d,a,f,0),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,p.array.length,c,0),Q.calls++,Q.vertices+=p.array.length;else for(1<b.length&&(g=!0),p=0,n=b.length;p<n;p++)q=b[p].index,g&&(k(d,a,f,q),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,b[p].count,c,b[p].start*
|
|
|
+h),Q.calls++,Q.vertices+=b[p].count;else if(g&&k(d,a,f,0),d=f.attributes.position,b=f.drawcalls,0===b.length)r.drawArrays(e,0,d.array.length/3),Q.calls++,Q.vertices+=d.array.length/3;else for(p=0,n=b.length;p<n;p++)r.drawArrays(e,b[p].index,b[p].count),Q.calls++,Q.vertices+=b[p].count;else if(e instanceof THREE.PointCloud)if(b=g,e=r.POINTS,p=f.attributes.index)if(m=pa.getAttributeBuffer(p),p.array instanceof Uint32Array&&V.get("OES_element_index_uint")?(c=r.UNSIGNED_INT,h=4):(c=r.UNSIGNED_SHORT,h=
|
|
|
+2),g=f.drawcalls,0===g.length)b&&(k(d,a,f,0),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,p.array.length,c,0),Q.calls++,Q.points+=p.array.length;else for(1<g.length&&(b=!0),p=0,n=g.length;p<n;p++)q=g[p].index,b&&(k(d,a,f,q),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,m)),r.drawElements(e,g[p].count,c,g[p].start*h),Q.calls++,Q.points+=g[p].count;else if(b&&k(d,a,f,0),d=f.attributes.position,g=f.drawcalls,0===g.length)r.drawArrays(e,0,d.array.length/3),Q.calls++,Q.points+=d.array.length/3;else for(p=
|
|
|
+0,n=g.length;p<n;p++)r.drawArrays(e,g[p].index,g[p].count),Q.calls++,Q.points+=g[p].count}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;xa="";Ya=-1;Xa=null;fb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ka.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Za.setFromMatrix(Ka);fa.length=
|
|
|
+0;ma.length=0;oa.length=0;Ba.length=0;Ga.length=0;ua.length=0;Ja.length=0;m(a);!0===ka.sortObjects&&(ma.sort(n),oa.sort(p));pa.update(ma);pa.update(oa);la.render(a,b);Q.calls=0;Q.vertices=0;Q.faces=0;Q.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,q(ma,b,fa,e,d),q(oa,b,fa,e,d),s(Ba,b,fa,e,d),s(Ga,b,fa,e,d)):(N.setBlending(THREE.NoBlending),q(ma,b,fa,e,null),s(Ba,b,fa,e,null),
|
|
|
+q(oa,b,fa,e,null),s(Ga,b,fa,e,null));Lb.render(a,b);Mb.render(a,b,jb,kb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(N.bindTexture(r.TEXTURE_CUBE_MAP,aa.get(c).__webglTexture),r.generateMipmap(r.TEXTURE_CUBE_MAP),N.bindTexture(r.TEXTURE_CUBE_MAP,null)):(N.bindTexture(r.TEXTURE_2D,aa.get(c).__webglTexture),r.generateMipmap(r.TEXTURE_2D),N.bindTexture(r.TEXTURE_2D,null)));N.setDepthTest(!0);N.setDepthWrite(!0);
|
|
|
+N.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){t(d);var f=u(a,b,c,d,e);xa="";e.render(function(a){ka.renderBufferImmediate(a,f,d)})};var Zb={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?N.disable(r.CULL_FACE):(b===THREE.FrontFaceDirectionCW?
|
|
|
+r.frontFace(r.CW):r.frontFace(r.CCW),a===THREE.CullFaceBack?r.cullFace(r.BACK):a===THREE.CullFaceFront?r.cullFace(r.FRONT):r.cullFace(r.FRONT_AND_BACK),N.enable(r.CULL_FACE))};this.setTexture=function(a,b){var c=aa.get(a);if(0<a.version&&c.__version!==a.version){var d=a.image;if(void 0===d)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",a);else if(!1===d.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete",a);else{void 0===
|
|
|
+c.__webglInit&&(c.__webglInit=!0,a.__webglInit=!0,a.addEventListener("dispose",e),c.__webglTexture=r.createTexture(),Da.textures++);N.activeTexture(r.TEXTURE0+b);N.bindTexture(r.TEXTURE_2D,c.__webglTexture);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,a.flipY);r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);r.pixelStorei(r.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=H(a.image,Jb);var f=a.image,d=THREE.Math.isPowerOfTwo(f.width)&&THREE.Math.isPowerOfTwo(f.height),g=J(a.format),h=J(a.type);
|
|
|
+x(r.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var m=0,l=k.length;m<l;m++)f=k[m],N.texImage2D(r.TEXTURE_2D,m,g,f.width,f.height,0,g,h,f.data);a.generateMipmaps=!1}else N.texImage2D(r.TEXTURE_2D,0,g,f.width,f.height,0,g,h,f.data);else if(a instanceof THREE.CompressedTexture)for(m=0,l=k.length;m<l;m++)f=k[m],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<Yb().indexOf(g)?N.compressedTexImage2D(r.TEXTURE_2D,m,g,f.width,f.height,0,f.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
|
|
|
+N.texImage2D(r.TEXTURE_2D,m,g,f.width,f.height,0,g,h,f.data);else if(0<k.length&&d){m=0;for(l=k.length;m<l;m++)f=k[m],N.texImage2D(r.TEXTURE_2D,m,g,g,h,f);a.generateMipmaps=!1}else N.texImage2D(r.TEXTURE_2D,0,g,g,h,a.image);a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_2D);c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else N.activeTexture(r.TEXTURE0+b),N.bindTexture(r.TEXTURE_2D,c.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===
|
|
|
+aa.get(a).__webglFramebuffer){var c=aa.get(a);void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",g);c.__webglTexture=r.createTexture();Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=J(a.format),f=J(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];N.bindTexture(r.TEXTURE_CUBE_MAP,c.__webglTexture);x(r.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=r.createFramebuffer(),
|
|
|
+c.__webglRenderbuffer[h]=r.createRenderbuffer(),N.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,f,null),F(c.__webglFramebuffer[h],a,r.TEXTURE_CUBE_MAP_POSITIVE_X+h),y(c.__webglRenderbuffer[h],a);a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=r.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:r.createRenderbuffer(),N.bindTexture(r.TEXTURE_2D,c.__webglTexture),x(r.TEXTURE_2D,a,d),N.texImage2D(r.TEXTURE_2D,
|
|
|
+0,e,a.width,a.height,0,e,f,null),F(c.__webglFramebuffer,a,r.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,c.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,c.__webglRenderbuffer):y(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_2D);b?N.bindTexture(r.TEXTURE_CUBE_MAP,null):N.bindTexture(r.TEXTURE_2D,
|
|
|
+null);r.bindRenderbuffer(r.RENDERBUFFER,null);r.bindFramebuffer(r.FRAMEBUFFER,null)}a?(c=aa.get(a),b=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Ca,a=wa,d=Ha,e=Ia);b!==Qa&&(r.bindFramebuffer(r.FRAMEBUFFER,b),r.viewport(d,e,c,a),Qa=b);jb=c;kb=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(aa.get(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{var g=!1;aa.get(a).__webglFramebuffer!==Qa&&(r.bindFramebuffer(r.FRAMEBUFFER,aa.get(a).__webglFramebuffer),g=!0);r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE?r.readPixels(b,c,d,e,r.RGBA,r.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");
|
|
|
+g&&r.bindFramebuffer(r.FRAMEBUFFER,Qa)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")};Object.defineProperties(this,{shadowMapEnabled:{get:function(){return la.enabled},
|
|
|
+set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");la.enabled=a}},shadowMapType:{get:function(){return la.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");la.type=a}},shadowMapCullFace:{get:function(){return la.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");la.cullFace=a}},shadowMapDebug:{get:function(){return la.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");
|
|
|
+la.debug=a}},shadowMapCascade:{get:function(){return la.cascade},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCascade is now .shadowMap.cascade.");la.cascade=a}}})};
|
|
|
THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();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=void 0!==c.shareDepthFrom?c.shareDepthFrom:null};
|
|
|
THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose()},copy:function(a){this.width=a.width;this.height=a.height;this.wrapS=a.wrapS;this.wrapT=a.wrapT;this.magFilter=a.magFilter;this.minFilter=a.minFilter;this.anisotropy=a.anisotropy;this.offset.copy(a.offset);this.repeat.copy(a.repeat);this.format=a.format;this.type=a.type;this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;
|
|
@@ -602,9 +601,9 @@ THREE.WebGLProgram=function(){function a(a){var b=[],c;for(c in a){var f=a[c];!1
|
|
|
if(f.envMap){switch(g.envMap.mapping){case THREE.CubeReflectionMapping:case THREE.CubeRefractionMapping:m="ENVMAP_TYPE_CUBE";break;case THREE.EquirectangularReflectionMapping:case THREE.EquirectangularRefractionMapping:m="ENVMAP_TYPE_EQUIREC";break;case THREE.SphericalReflectionMapping:m="ENVMAP_TYPE_SPHERE"}switch(g.envMap.mapping){case THREE.CubeRefractionMapping:case THREE.EquirectangularRefractionMapping:q="ENVMAP_MODE_REFRACTION"}switch(g.combine){case THREE.MultiplyOperation:s="ENVMAP_BLENDING_MULTIPLY";
|
|
|
break;case THREE.MixOperation:s="ENVMAP_BLENDING_MIX";break;case THREE.AddOperation:s="ENVMAP_BLENDING_ADD"}}var t=0<d.gammaFactor?d.gammaFactor:1,u=a(k),w=h.createProgram();g instanceof THREE.RawShaderMaterial?d=k="":(k=["precision "+f.precision+" float;","precision "+f.precision+" int;","#define SHADER_NAME "+g.__webglShader.name,u,f.supportsVertexTextures?"#define VERTEX_TEXTURES":"",d.gammaInput?"#define GAMMA_INPUT":"",d.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+t,"#define MAX_DIR_LIGHTS "+
|
|
|
f.maxDirLights,"#define MAX_POINT_LIGHTS "+f.maxPointLights,"#define MAX_SPOT_LIGHTS "+f.maxSpotLights,"#define MAX_HEMI_LIGHTS "+f.maxHemiLights,"#define MAX_SHADOWS "+f.maxShadows,"#define MAX_BONES "+f.maxBones,f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+q:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":
|
|
|
-"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexColors?"#define USE_COLOR":"",f.flatShading?"#define FLAT_SHADED":"",f.skinning?"#define USE_SKINNING":"",f.useVertexTexture?"#define BONE_TEXTURE":"",f.morphTargets?"#define USE_MORPHTARGETS":"",f.morphNormals?"#define USE_MORPHNORMALS":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+p:"",f.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",f.shadowMapCascade?
|
|
|
-"#define SHADOWMAP_CASCADE":"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&d.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR",
|
|
|
-"\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;",
|
|
|
+"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexColors?"#define USE_COLOR":"",f.flatShading?"#define FLAT_SHADED":"",f.skinning?"#define USE_SKINNING":"",f.useVertexTexture?"#define BONE_TEXTURE":"",f.morphTargets?"#define USE_MORPHTARGETS":"",f.morphNormals&&!1===f.flatShading?"#define USE_MORPHNORMALS":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+p:"",f.shadowMapDebug?"#define SHADOWMAP_DEBUG":
|
|
|
+"",f.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&d.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;",
|
|
|
+"#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;",
|
|
|
"\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(b).join("\n"),d=[f.bumpMap||f.normalMap||f.flatShading||g.derivatives?"#extension GL_OES_standard_derivatives : enable":"","precision "+f.precision+" float;","precision "+f.precision+" int;","#define SHADER_NAME "+g.__webglShader.name,u,"#define MAX_DIR_LIGHTS "+f.maxDirLights,"#define MAX_POINT_LIGHTS "+f.maxPointLights,"#define MAX_SPOT_LIGHTS "+f.maxSpotLights,"#define MAX_HEMI_LIGHTS "+
|
|
|
f.maxHemiLights,"#define MAX_SHADOWS "+f.maxShadows,f.alphaTest?"#define ALPHATEST "+f.alphaTest:"",d.gammaInput?"#define GAMMA_INPUT":"",d.gammaOutput?"#define GAMMA_OUTPUT":"","#define GAMMA_FACTOR "+t,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+m:"",f.envMap?"#define "+q:"",f.envMap?"#define "+s:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":
|
|
|
"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexColors?"#define USE_COLOR":"",f.flatShading?"#define FLAT_SHADED":"",f.metal?"#define METAL":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+p:"",f.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",f.shadowMapCascade?"#define SHADOWMAP_CASCADE":
|