|
@@ -285,16 +285,16 @@ THREE.Loader.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},ge
|
|
|
THREE.XHRLoader.prototype={constructor:THREE.XHRLoader,load:function(a,b,c,d){var e=this,g=THREE.Cache.get(a);if(void 0!==g)return b&&setTimeout(function(){b(g)},0),g;var f=new XMLHttpRequest;f.open("GET",a,!0);f.addEventListener("load",function(c){THREE.Cache.add(a,this.response);b&&b(this.response);e.manager.itemEnd(a)},!1);void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1);f.addEventListener("error",function(b){d&&d(b);e.manager.itemError(a)},!1);void 0!==this.crossOrigin&&(f.crossOrigin=
|
|
|
this.crossOrigin);void 0!==this.responseType&&(f.responseType=this.responseType);void 0!==this.withCredentials&&(f.withCredentials=this.withCredentials);f.send(null);e.manager.itemStart(a);return f},setResponseType:function(a){this.responseType=a},setCrossOrigin:function(a){this.crossOrigin=a},setWithCredentials:function(a){this.withCredentials=a}};THREE.ImageLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager};
|
|
|
THREE.ImageLoader.prototype={constructor:THREE.ImageLoader,load:function(a,b,c,d){var e=this,g=THREE.Cache.get(a);if(void 0!==g)return b&&setTimeout(function(){b(g)},0),g;var f=document.createElement("img");f.addEventListener("load",function(c){THREE.Cache.add(a,this);b&&b(this);e.manager.itemEnd(a)},!1);void 0!==c&&f.addEventListener("progress",function(a){c(a)},!1);f.addEventListener("error",function(b){d&&d(b);e.manager.itemError(a)},!1);void 0!==this.crossOrigin&&(f.crossOrigin=this.crossOrigin);
|
|
|
-e.manager.itemStart(a);f.src=a;return f},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.JSONLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager;this.withCredentials=!1};
|
|
|
-THREE.JSONLoader.prototype={constructor:THREE.JSONLoader,load:function(a,b,c,d){var e=this,g=this.texturePath&&"string"===typeof this.texturePath?this.texturePath:THREE.Loader.prototype.extractUrlBase(a);c=new THREE.XHRLoader(this.manager);c.setCrossOrigin(this.crossOrigin);c.setWithCredentials(this.withCredentials);c.load(a,function(c){c=JSON.parse(c);var d=c.metadata;if(void 0!==d){if("object"===d.type){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.ObjectLoader instead.");return}if("scene"===
|
|
|
-d.type){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.SceneLoader instead.");return}}c=e.parse(c,g);b(c.geometry,c.materials)})},setCrossOrigin:function(a){this.crossOrigin=a},setTexturePath:function(a){this.texturePath=a},parse:function(a,b){var c=new THREE.Geometry,d=void 0!==a.scale?1/a.scale:1;(function(b){var d,f,h,k,l,n,p,m,q,t,r,v,w,u=a.faces;n=a.vertices;var z=a.normals,x=a.colors,D=0;if(void 0!==a.uvs){for(d=0;d<a.uvs.length;d++)a.uvs[d].length&&D++;for(d=0;d<D;d++)c.faceVertexUvs[d]=
|
|
|
-[]}k=0;for(l=n.length;k<l;)d=new THREE.Vector3,d.x=n[k++]*b,d.y=n[k++]*b,d.z=n[k++]*b,c.vertices.push(d);k=0;for(l=u.length;k<l;)if(b=u[k++],q=b&1,h=b&2,d=b&8,p=b&16,t=b&32,n=b&64,b&=128,q){q=new THREE.Face3;q.a=u[k];q.b=u[k+1];q.c=u[k+3];r=new THREE.Face3;r.a=u[k+1];r.b=u[k+2];r.c=u[k+3];k+=4;h&&(h=u[k++],q.materialIndex=h,r.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<D;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],c.faceVertexUvs[d][h+1]=[],f=0;4>f;f++)m=u[k++],w=v[2*m],m=v[2*m+1],w=new THREE.Vector2(w,
|
|
|
-m),2!==f&&c.faceVertexUvs[d][h].push(w),0!==f&&c.faceVertexUvs[d][h+1].push(w);p&&(p=3*u[k++],q.normal.set(z[p++],z[p++],z[p]),r.normal.copy(q.normal));if(t)for(d=0;4>d;d++)p=3*u[k++],t=new THREE.Vector3(z[p++],z[p++],z[p]),2!==d&&q.vertexNormals.push(t),0!==d&&r.vertexNormals.push(t);n&&(n=u[k++],n=x[n],q.color.setHex(n),r.color.setHex(n));if(b)for(d=0;4>d;d++)n=u[k++],n=x[n],2!==d&&q.vertexColors.push(new THREE.Color(n)),0!==d&&r.vertexColors.push(new THREE.Color(n));c.faces.push(q);c.faces.push(r)}else{q=
|
|
|
-new THREE.Face3;q.a=u[k++];q.b=u[k++];q.c=u[k++];h&&(h=u[k++],q.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<D;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],f=0;3>f;f++)m=u[k++],w=v[2*m],m=v[2*m+1],w=new THREE.Vector2(w,m),c.faceVertexUvs[d][h].push(w);p&&(p=3*u[k++],q.normal.set(z[p++],z[p++],z[p]));if(t)for(d=0;3>d;d++)p=3*u[k++],t=new THREE.Vector3(z[p++],z[p++],z[p]),q.vertexNormals.push(t);n&&(n=u[k++],q.color.setHex(x[n]));if(b)for(d=0;3>d;d++)n=u[k++],q.vertexColors.push(new THREE.Color(x[n]));
|
|
|
-c.faces.push(q)}})(d);(function(){var b=void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,f=a.skinWeights.length;d<f;d+=b)c.skinWeights.push(new THREE.Vector4(a.skinWeights[d],1<b?a.skinWeights[d+1]:0,2<b?a.skinWeights[d+2]:0,3<b?a.skinWeights[d+3]:0));if(a.skinIndices)for(d=0,f=a.skinIndices.length;d<f;d+=b)c.skinIndices.push(new THREE.Vector4(a.skinIndices[d],1<b?a.skinIndices[d+1]:0,2<b?a.skinIndices[d+2]:0,3<b?a.skinIndices[d+3]:0));c.bones=a.bones;c.bones&&0<
|
|
|
-c.bones.length&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.");c.animation=a.animation;c.animations=a.animations})();(function(b){if(void 0!==a.morphTargets){var d,f,h,k,l,n;d=0;for(f=a.morphTargets.length;d<f;d++)for(c.morphTargets[d]={},c.morphTargets[d].name=a.morphTargets[d].name,c.morphTargets[d].vertices=
|
|
|
-[],l=c.morphTargets[d].vertices,n=a.morphTargets[d].vertices,h=0,k=n.length;h<k;h+=3){var p=new THREE.Vector3;p.x=n[h]*b;p.y=n[h+1]*b;p.z=n[h+2]*b;l.push(p)}}if(void 0!==a.morphColors)for(d=0,f=a.morphColors.length;d<f;d++)for(c.morphColors[d]={},c.morphColors[d].name=a.morphColors[d].name,c.morphColors[d].colors=[],k=c.morphColors[d].colors,l=a.morphColors[d].colors,b=0,h=l.length;b<h;b+=3)n=new THREE.Color(16755200),n.setRGB(l[b],l[b+1],l[b+2]),k.push(n)})(d);c.computeFaceNormals();c.computeBoundingSphere();
|
|
|
-if(void 0===a.materials||0===a.materials.length)return{geometry:c};d=THREE.Loader.prototype.initMaterials(a.materials,b,this.crossOrigin);return{geometry:c,materials:d}}};
|
|
|
+e.manager.itemStart(a);f.src=a;return f},setCrossOrigin:function(a){this.crossOrigin=a}};THREE.JSONLoader=function(a){"boolean"===typeof a&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),a=void 0);this.manager=void 0!==a?a:THREE.DefaultLoadingManager;this.withCredentials=!1};
|
|
|
+THREE.JSONLoader.prototype={constructor:THREE.JSONLoader,get statusDomElement(){void 0===this._statusDomElement&&(this._statusDomElement=document.createElement("div"));console.warn("THREE.JSONLoader: .statusDomElement has been removed.");return this._statusDomElement},load:function(a,b,c,d){var e=this,g=this.texturePath&&"string"===typeof this.texturePath?this.texturePath:THREE.Loader.prototype.extractUrlBase(a);c=new THREE.XHRLoader(this.manager);c.setCrossOrigin(this.crossOrigin);c.setWithCredentials(this.withCredentials);
|
|
|
+c.load(a,function(c){c=JSON.parse(c);var d=c.metadata;if(void 0!==d){if("object"===d.type){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.ObjectLoader instead.");return}if("scene"===d.type){console.error("THREE.JSONLoader: "+a+" should be loaded with THREE.SceneLoader instead.");return}}c=e.parse(c,g);b(c.geometry,c.materials)})},setCrossOrigin:function(a){this.crossOrigin=a},setTexturePath:function(a){this.texturePath=a},parse:function(a,b){var c=new THREE.Geometry,d=void 0!==
|
|
|
+a.scale?1/a.scale:1;(function(b){var d,f,h,k,l,n,p,m,q,t,r,v,w,u=a.faces;n=a.vertices;var z=a.normals,x=a.colors,D=0;if(void 0!==a.uvs){for(d=0;d<a.uvs.length;d++)a.uvs[d].length&&D++;for(d=0;d<D;d++)c.faceVertexUvs[d]=[]}k=0;for(l=n.length;k<l;)d=new THREE.Vector3,d.x=n[k++]*b,d.y=n[k++]*b,d.z=n[k++]*b,c.vertices.push(d);k=0;for(l=u.length;k<l;)if(b=u[k++],q=b&1,h=b&2,d=b&8,p=b&16,t=b&32,n=b&64,b&=128,q){q=new THREE.Face3;q.a=u[k];q.b=u[k+1];q.c=u[k+3];r=new THREE.Face3;r.a=u[k+1];r.b=u[k+2];r.c=
|
|
|
+u[k+3];k+=4;h&&(h=u[k++],q.materialIndex=h,r.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<D;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],c.faceVertexUvs[d][h+1]=[],f=0;4>f;f++)m=u[k++],w=v[2*m],m=v[2*m+1],w=new THREE.Vector2(w,m),2!==f&&c.faceVertexUvs[d][h].push(w),0!==f&&c.faceVertexUvs[d][h+1].push(w);p&&(p=3*u[k++],q.normal.set(z[p++],z[p++],z[p]),r.normal.copy(q.normal));if(t)for(d=0;4>d;d++)p=3*u[k++],t=new THREE.Vector3(z[p++],z[p++],z[p]),2!==d&&q.vertexNormals.push(t),0!==d&&r.vertexNormals.push(t);
|
|
|
+n&&(n=u[k++],n=x[n],q.color.setHex(n),r.color.setHex(n));if(b)for(d=0;4>d;d++)n=u[k++],n=x[n],2!==d&&q.vertexColors.push(new THREE.Color(n)),0!==d&&r.vertexColors.push(new THREE.Color(n));c.faces.push(q);c.faces.push(r)}else{q=new THREE.Face3;q.a=u[k++];q.b=u[k++];q.c=u[k++];h&&(h=u[k++],q.materialIndex=h);h=c.faces.length;if(d)for(d=0;d<D;d++)for(v=a.uvs[d],c.faceVertexUvs[d][h]=[],f=0;3>f;f++)m=u[k++],w=v[2*m],m=v[2*m+1],w=new THREE.Vector2(w,m),c.faceVertexUvs[d][h].push(w);p&&(p=3*u[k++],q.normal.set(z[p++],
|
|
|
+z[p++],z[p]));if(t)for(d=0;3>d;d++)p=3*u[k++],t=new THREE.Vector3(z[p++],z[p++],z[p]),q.vertexNormals.push(t);n&&(n=u[k++],q.color.setHex(x[n]));if(b)for(d=0;3>d;d++)n=u[k++],q.vertexColors.push(new THREE.Color(x[n]));c.faces.push(q)}})(d);(function(){var b=void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,f=a.skinWeights.length;d<f;d+=b)c.skinWeights.push(new THREE.Vector4(a.skinWeights[d],1<b?a.skinWeights[d+1]:0,2<b?a.skinWeights[d+2]:0,3<b?a.skinWeights[d+3]:
|
|
|
+0));if(a.skinIndices)for(d=0,f=a.skinIndices.length;d<f;d+=b)c.skinIndices.push(new THREE.Vector4(a.skinIndices[d],1<b?a.skinIndices[d+1]:0,2<b?a.skinIndices[d+2]:0,3<b?a.skinIndices[d+3]:0));c.bones=a.bones;c.bones&&0<c.bones.length&&(c.skinWeights.length!==c.skinIndices.length||c.skinIndices.length!==c.vertices.length)&&console.warn("When skinning, number of vertices ("+c.vertices.length+"), skinIndices ("+c.skinIndices.length+"), and skinWeights ("+c.skinWeights.length+") should match.");c.animation=
|
|
|
+a.animation;c.animations=a.animations})();(function(b){if(void 0!==a.morphTargets){var d,f,h,k,l,n;d=0;for(f=a.morphTargets.length;d<f;d++)for(c.morphTargets[d]={},c.morphTargets[d].name=a.morphTargets[d].name,c.morphTargets[d].vertices=[],l=c.morphTargets[d].vertices,n=a.morphTargets[d].vertices,h=0,k=n.length;h<k;h+=3){var p=new THREE.Vector3;p.x=n[h]*b;p.y=n[h+1]*b;p.z=n[h+2]*b;l.push(p)}}if(void 0!==a.morphColors)for(d=0,f=a.morphColors.length;d<f;d++)for(c.morphColors[d]={},c.morphColors[d].name=
|
|
|
+a.morphColors[d].name,c.morphColors[d].colors=[],k=c.morphColors[d].colors,l=a.morphColors[d].colors,b=0,h=l.length;b<h;b+=3)n=new THREE.Color(16755200),n.setRGB(l[b],l[b+1],l[b+2]),k.push(n)})(d);c.computeFaceNormals();c.computeBoundingSphere();if(void 0===a.materials||0===a.materials.length)return{geometry:c};d=THREE.Loader.prototype.initMaterials(a.materials,b,this.crossOrigin);return{geometry:c,materials:d}}};
|
|
|
THREE.LoadingManager=function(a,b,c){var d=this,e=!1,g=0,f=0;this.onStart=void 0;this.onLoad=a;this.onProgress=b;this.onError=c;this.itemStart=function(a){f++;if(!1===e&&void 0!==d.onStart)d.onStart(a,g,f);e=!0};this.itemEnd=function(a){g++;if(void 0!==d.onProgress)d.onProgress(a,g,f);if(g===f&&(e=!1,void 0!==d.onLoad))d.onLoad()};this.itemError=function(a){if(void 0!==d.onError)d.onError(a)}};THREE.DefaultLoadingManager=new THREE.LoadingManager;
|
|
|
THREE.BufferGeometryLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager};
|
|
|
THREE.BufferGeometryLoader.prototype={constructor:THREE.BufferGeometryLoader,load:function(a,b,c,d){var e=this,g=new THREE.XHRLoader(e.manager);g.setCrossOrigin(this.crossOrigin);g.load(a,function(a){b(e.parse(JSON.parse(a)))},c,d)},setCrossOrigin:function(a){this.crossOrigin=a},parse:function(a){var b=new THREE.BufferGeometry,c=a.data.index;void 0!==c&&(c=new self[c.type](c.array),b.addIndex(new THREE.BufferAttribute(c,1)));var d=a.data.attributes,e;for(e in d){var g=d[e],c=new self[g.type](g.array);
|
|
@@ -321,7 +321,7 @@ THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a,b
|
|
|
THREE.BinaryTextureLoader.prototype={constructor:THREE.BinaryTextureLoader,load:function(a,b,c,d){var e=this,g=new THREE.DataTexture,f=new THREE.XHRLoader(this.manager);f.setCrossOrigin(this.crossOrigin);f.setResponseType("arraybuffer");f.load(a,function(a){if(a=e._parser(a))void 0!==a.image?g.image=a.image:void 0!==a.data&&(g.image.width=a.width,g.image.height=a.height,g.image.data=a.data),g.wrapS=void 0!==a.wrapS?a.wrapS:THREE.ClampToEdgeWrapping,g.wrapT=void 0!==a.wrapT?a.wrapT:THREE.ClampToEdgeWrapping,
|
|
|
g.magFilter=void 0!==a.magFilter?a.magFilter:THREE.LinearFilter,g.minFilter=void 0!==a.minFilter?a.minFilter:THREE.LinearMipMapLinearFilter,g.anisotropy=void 0!==a.anisotropy?a.anisotropy:1,void 0!==a.format&&(g.format=a.format),void 0!==a.type&&(g.type=a.type),void 0!==a.mipmaps&&(g.mipmaps=a.mipmaps),1===a.mipmapCount&&(g.minFilter=THREE.LinearFilter),g.needsUpdate=!0,b&&b(g,a)},c,d);return g},setCrossOrigin:function(a){this.crossOrigin=a}};
|
|
|
THREE.CompressedTextureLoader=function(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager;this._parser=null};
|
|
|
-THREE.CompressedTextureLoader.prototype={constructor:THREE.CompressedTextureLoader,load:function(a,b,c,d){var e=this,g=[],f=new THREE.CompressedTexture;f.image=g;var h=new THREE.XHRLoader(this.manager);h.setCrossOrigin(this.crossOrigin);h.setResponseType("arraybuffer");if(Array.isArray(a))for(var k=0,l=function(l){h.load(a[l],function(a){a=e._parser(a,!0);g[l]={width:a.width,height:a.height,format:a.format,mipmaps:a.mipmaps};k+=1;6===k&&(1===a.mipmapCount&&(f.minFilter=THREE.LinearFilter),f.format=
|
|
|
+THREE.CompressedTextureLoader.prototype={constructor:THREE.CompressedTextureLoader,load:function(a,b,c,d){var e=this,g=[],f=new THREE.CompressedTexture;f.image=g;var h=new THREE.XHRLoader(this.manager);h.setCrossOrigin(this.crossOrigin);h.setResponseType("arraybuffer");if(Array.isArray(a))for(var k=0,l=function(m){h.load(a[m],function(a){a=e._parser(a,!0);g[m]={width:a.width,height:a.height,format:a.format,mipmaps:a.mipmaps};k+=1;6===k&&(1===a.mipmapCount&&(f.minFilter=THREE.LinearFilter),f.format=
|
|
|
a.format,f.needsUpdate=!0,b&&b(f))},c,d)},n=0,p=a.length;n<p;++n)l(n);else h.load(a,function(a){a=e._parser(a,!0);if(a.isCubemap)for(var c=a.mipmaps.length/a.mipmapCount,d=0;d<c;d++){g[d]={mipmaps:[]};for(var h=0;h<a.mipmapCount;h++)g[d].mipmaps.push(a.mipmaps[d*a.mipmapCount+h]),g[d].format=a.format,g[d].width=a.width,g[d].height=a.height}else f.image.width=a.width,f.image.height=a.height,f.mipmaps=a.mipmaps;1===a.mipmapCount&&(f.minFilter=THREE.LinearFilter);f.format=a.format;f.needsUpdate=!0;b&&
|
|
|
b(f)},c,d);return f},setCrossOrigin:function(a){this.crossOrigin=a}};
|
|
|
THREE.Material=function(){Object.defineProperty(this,"id",{value:THREE.MaterialIdCount++});this.uuid=THREE.Math.generateUUID();this.name="";this.type="Material";this.side=THREE.FrontSide;this.opacity=1;this.transparent=!1;this.blending=THREE.NormalBlending;this.blendSrc=THREE.SrcAlphaFactor;this.blendDst=THREE.OneMinusSrcAlphaFactor;this.blendEquation=THREE.AddEquation;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.depthFunc=THREE.LessEqualDepth;this.colorWrite=this.depthWrite=
|
|
@@ -488,45 +488,45 @@ THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_Fra
|
|
|
THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===R&&(a*=d,b*=d,c*=d);s.clearColor(a,b,c,d)}function c(){K.init();s.viewport(Ha,za,Aa,Ba);b(E.r,E.g,E.b,ja)}function d(){Za=rb=null;va="";$a=-1;jb=!0;K.reset()}function e(a){a.preventDefault();d();c();$.clear()}function g(a){a=a.target;a.removeEventListener("dispose",g);a:{var b=$.get(a);if(a.image&&b.__image__webglTextureCube)s.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;s.deleteTexture(b.__webglTexture)}$.delete(a)}Ca.textures--}
|
|
|
function f(a){a=a.target;a.removeEventListener("dispose",f);var b=$.get(a);if(a&&void 0!==b.__webglTexture){s.deleteTexture(b.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(var c=0;6>c;c++)s.deleteFramebuffer(b.__webglFramebuffer[c]),s.deleteRenderbuffer(b.__webglRenderbuffer[c]);else s.deleteFramebuffer(b.__webglFramebuffer),s.deleteRenderbuffer(b.__webglRenderbuffer);$.delete(a)}Ca.textures--}function h(a){a=a.target;a.removeEventListener("dispose",h);k(a);$.delete(a)}function k(a){var b=
|
|
|
$.get(a).program.program;if(void 0!==b){a.program=void 0;a=0;for(var c=qa.length;a!==c;++a){var d=qa[a];if(d.program===b){0===--d.usedTimes&&(c-=1,qa[a]=qa[c],qa.pop(),s.deleteProgram(b),Ca.programs=c);break}}}}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.material.id!==b.material.id?a.material.id-b.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,b,c,d,e){var f;c.transparent?(d=Da,f=++Ia):(d=la,f=++wa);f=d[f];void 0!==f?(f.id=a.id,f.object=a,f.geometry=b,f.material=c,f.z=ba.z,f.group=e):(f={id:a.id,object:a,geometry:b,material:c,z:ba.z,group:e},d.push(f))}function q(a){if(!1!==a.visible){if(a instanceof THREE.Light)Y.push(a);else if(a instanceof THREE.Sprite)Ra.push(a);else if(a instanceof THREE.LensFlare)ab.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b,
|
|
|
-c;a.material.transparent?(b=Ja,c=++Ka):(b=ra,c=++bb);c<b.length?b[c]=a:b.push(a)}else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.PointCloud)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),!1===a.frustumCulled||!0===kb.intersectsObject(a)){var d=a.material;if(!0===d.visible)if(!0===ka.sortObjects&&(ba.setFromMatrixPosition(a.matrixWorld),ba.applyProjection(Sa)),b=sa.update(a),d instanceof THREE.MeshFaceMaterial){c=b.groups;for(var e=d.materials,d=0,f=c.length;d<
|
|
|
-f;d++){var g=c[d],h=e[g.materialIndex];!0===h.visible&&m(a,b,h,ba.z,g)}}else m(a,b,d,ba.z)}a=a.children;d=0;for(f=a.length;d<f;d++)q(a[d])}}function t(a,b,c,d,e){for(var f=0,g=a.length;f<g;f++){var h=a[f],k=h.object,l=h.geometry,m=void 0===e?h.material:e,h=h.group;k.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k.normalMatrix.getNormalMatrix(k.modelViewMatrix);ka.renderBufferDirect(b,c,d,l,m,k,h)}}function r(a,b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g];k.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,
|
|
|
-k.matrixWorld);k.normalMatrix.getNormalMatrix(k.modelViewMatrix);void 0===e&&(f=k.material);v(f);var l=w(b,c,d,f,k);va="";k.render(function(a){ka.renderBufferImmediate(a,l,f)})}}function v(a){a.side!==THREE.DoubleSide?K.enable(s.CULL_FACE):K.disable(s.CULL_FACE);K.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?K.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):K.setBlending(THREE.NoBlending);K.setDepthFunc(a.depthFunc);K.setDepthTest(a.depthTest);
|
|
|
-K.setDepthWrite(a.depthWrite);K.setColorWrite(a.colorWrite);K.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function w(a,b,c,d,e){var f,l,m,n;lb=0;var q=$.get(d);if(d.needsUpdate||!q.program){a:{for(var p=$.get(d),t=$b[d.type],r=0,w=0,v=0,L=0,y=0,A=b.length;y<A;y++){var B=b[y];B.onlyShadow||!1===B.visible||(B instanceof THREE.DirectionalLight&&r++,B instanceof THREE.PointLight&&w++,B instanceof THREE.SpotLight&&v++,B instanceof THREE.HemisphereLight&&L++)}f=r;l=w;m=
|
|
|
-v;n=L;for(var G,H=0,J=0,E=b.length;J<E;J++){var P=b[J];P.castShadow&&(P instanceof THREE.SpotLight&&H++,P instanceof THREE.DirectionalLight&&H++)}G=H;var Q;if(ia.floatVertexTextures&&e&&e.skeleton&&e.skeleton.useVertexTexture)Q=1024;else{var O=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),wa=Math.floor((O-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(wa=Math.min(e.skeleton.bones.length,wa),wa<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+
|
|
|
-wa+" (try OpenGL instead of ANGLE)"));Q=wa}var R=ia.precision;null!==d.precision&&(R=ia.getMaxPrecision(d.precision),R!==d.precision&&console.warn("THREE.WebGLRenderer.initMaterial:",d.precision,"not supported, using",R,"instead."));var V={precision:R,supportsVertexTextures:ia.vertexTextures,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:ia.logarithmicDepthBuffer,skinning:d.skinning,maxBones:Q,useVertexTexture:ia.floatVertexTextures&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:ka.maxMorphTargets,maxMorphNormals:ka.maxMorphNormals,maxDirLights:f,maxPointLights:l,maxSpotLights:m,
|
|
|
-maxHemiLights:n,maxShadows:G,shadowMapEnabled:ma.enabled&&e.receiveShadow&&0<G,shadowMapType:ma.type,shadowMapDebug:ma.debug,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},S=[];t?S.push(t):(S.push(d.fragmentShader),S.push(d.vertexShader));if(void 0!==d.defines)for(var ra in d.defines)S.push(ra),S.push(d.defines[ra]);for(ra in V)S.push(ra),S.push(V[ra]);var W=S.join(),Da=!0;if(p.program)if(p.program.code!==W)k(d);else if(void 0!==t)break a;
|
|
|
-else Da=!1;else d.addEventListener("dispose",h);if(t){var Ia=THREE.ShaderLib[t];p.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ia.uniforms),vertexShader:Ia.vertexShader,fragmentShader:Ia.fragmentShader}}else p.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var Y,Ka=0,bb=qa.length;Ka<bb;Ka++){var Ra=qa[Ka];if(Ra.code===W){Y=Ra;Da&&Y.usedTimes++;break}}void 0===Y&&(d.__webglShader=p.__webglShader,Y=new THREE.WebGLProgram(ka,
|
|
|
-W,d,V),qa.push(Y),Ca.programs=qa.length);p.program=Y;d.program=Y;var Ja=Y.getAttributes();if(d.morphTargets)for(var ta=d.numSupportedMorphTargets=0;ta<ka.maxMorphTargets;ta++)0<=Ja["morphTarget"+ta]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ta=d.numSupportedMorphNormals=0;ta<ka.maxMorphNormals;ta++)0<=Ja["morphNormal"+ta]&&d.numSupportedMorphNormals++;p.uniformsList=[];var ab=p.program.getUniforms(),ja;for(ja in p.__webglShader.uniforms){var la=ab[ja];la&&p.uniformsList.push([p.__webglShader.uniforms[ja],
|
|
|
-la])}}d.needsUpdate=!1}var ua=!1,va=!1,sa=!1,cb=q.program,ca=cb.getUniforms(),I=q.__webglShader.uniforms;cb.id!==rb&&(s.useProgram(cb.program),rb=cb.id,sa=va=ua=!0);d.id!==$a&&(-1===$a&&(sa=!0),$a=d.id,va=!0);if(ua||a!==Za)s.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),ia.logarithmicDepthBuffer&&s.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Za&&(Za=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ca.cameraPosition&&
|
|
|
-(ba.setFromMatrixPosition(a.matrixWorld),s.uniform3f(ca.cameraPosition,ba.x,ba.y,ba.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&void 0!==ca.viewMatrix&&s.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&void 0!==ca.bindMatrix&&s.uniformMatrix4fv(ca.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&void 0!==ca.bindMatrixInverse&&
|
|
|
-s.uniformMatrix4fv(ca.bindMatrixInverse,!1,e.bindMatrixInverse.elements),ia.floatVertexTextures&&e.skeleton&&e.skeleton.useVertexTexture){if(void 0!==ca.boneTexture){var Ha=z();s.uniform1i(ca.boneTexture,Ha);ka.setTexture(e.skeleton.boneTexture,Ha)}void 0!==ca.boneTextureWidth&&s.uniform1i(ca.boneTextureWidth,e.skeleton.boneTextureWidth);void 0!==ca.boneTextureHeight&&s.uniform1i(ca.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&void 0!==ca.boneGlobalMatrices&&
|
|
|
-s.uniformMatrix4fv(ca.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(va){c&&d.fog&&(I.fogColor.value=c.color,c instanceof THREE.Fog?(I.fogNear.value=c.near,I.fogFar.value=c.far):c instanceof THREE.FogExp2&&(I.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(jb){var sa=!0,aa,oa,Z,za=0,Aa=0,Ba=0,La,Qa,Sa,Ta,sb,da=Pb,db=a.matrixWorldInverse,tb=da.directional.colors,ub=da.directional.positions,vb=da.point.colors,wb=da.point.positions,
|
|
|
-kb=da.point.distances,pb=da.point.decays,xb=da.spot.colors,yb=da.spot.positions,qb=da.spot.distances,zb=da.spot.directions,Kb=da.spot.anglesCos,Lb=da.spot.exponents,Mb=da.spot.decays,Ab=da.hemi.skyColors,Bb=da.hemi.groundColors,Cb=da.hemi.positions,eb=0,Ma=0,xa=0,Ua=0,Db=0,Eb=0,Fb=0,mb=0,fb=0,gb=0,Ea=0,Va=0;aa=0;for(oa=b.length;aa<oa;aa++)Z=b[aa],Z.onlyShadow||(La=Z.color,Ta=Z.intensity,sb=Z.distance,Z instanceof THREE.AmbientLight?Z.visible&&(za+=La.r,Aa+=La.g,Ba+=La.b):Z instanceof THREE.DirectionalLight?
|
|
|
-(Db+=1,Z.visible&&(fa.setFromMatrixPosition(Z.matrixWorld),ba.setFromMatrixPosition(Z.target.matrixWorld),fa.sub(ba),fa.transformDirection(db),fb=3*eb,ub[fb+0]=fa.x,ub[fb+1]=fa.y,ub[fb+2]=fa.z,x(tb,fb,La,Ta),eb+=1)):Z instanceof THREE.PointLight?(Eb+=1,Z.visible&&(gb=3*Ma,x(vb,gb,La,Ta),ba.setFromMatrixPosition(Z.matrixWorld),ba.applyMatrix4(db),wb[gb+0]=ba.x,wb[gb+1]=ba.y,wb[gb+2]=ba.z,kb[Ma]=sb,pb[Ma]=0===Z.distance?0:Z.decay,Ma+=1)):Z instanceof THREE.SpotLight?(Fb+=1,Z.visible&&(Ea=3*xa,x(xb,
|
|
|
-Ea,La,Ta),fa.setFromMatrixPosition(Z.matrixWorld),ba.copy(fa).applyMatrix4(db),yb[Ea+0]=ba.x,yb[Ea+1]=ba.y,yb[Ea+2]=ba.z,qb[xa]=sb,ba.setFromMatrixPosition(Z.target.matrixWorld),fa.sub(ba),fa.transformDirection(db),zb[Ea+0]=fa.x,zb[Ea+1]=fa.y,zb[Ea+2]=fa.z,Kb[xa]=Math.cos(Z.angle),Lb[xa]=Z.exponent,Mb[xa]=0===Z.distance?0:Z.decay,xa+=1)):Z instanceof THREE.HemisphereLight&&(mb+=1,Z.visible&&(fa.setFromMatrixPosition(Z.matrixWorld),fa.transformDirection(db),Va=3*Ua,Cb[Va+0]=fa.x,Cb[Va+1]=fa.y,Cb[Va+
|
|
|
-2]=fa.z,Qa=Z.color,Sa=Z.groundColor,x(Ab,Va,Qa,Ta),x(Bb,Va,Sa,Ta),Ua+=1)));aa=3*eb;for(oa=Math.max(tb.length,3*Db);aa<oa;aa++)tb[aa]=0;aa=3*Ma;for(oa=Math.max(vb.length,3*Eb);aa<oa;aa++)vb[aa]=0;aa=3*xa;for(oa=Math.max(xb.length,3*Fb);aa<oa;aa++)xb[aa]=0;aa=3*Ua;for(oa=Math.max(Ab.length,3*mb);aa<oa;aa++)Ab[aa]=0;aa=3*Ua;for(oa=Math.max(Bb.length,3*mb);aa<oa;aa++)Bb[aa]=0;da.directional.length=eb;da.point.length=Ma;da.spot.length=xa;da.hemi.length=Ua;da.ambient[0]=za;da.ambient[1]=Aa;da.ambient[2]=
|
|
|
-Ba;jb=!1}if(sa){var ha=Pb;I.ambientLightColor.value=ha.ambient;I.directionalLightColor.value=ha.directional.colors;I.directionalLightDirection.value=ha.directional.positions;I.pointLightColor.value=ha.point.colors;I.pointLightPosition.value=ha.point.positions;I.pointLightDistance.value=ha.point.distances;I.pointLightDecay.value=ha.point.decays;I.spotLightColor.value=ha.spot.colors;I.spotLightPosition.value=ha.spot.positions;I.spotLightDistance.value=ha.spot.distances;I.spotLightDirection.value=ha.spot.directions;
|
|
|
-I.spotLightAngleCos.value=ha.spot.anglesCos;I.spotLightExponent.value=ha.spot.exponents;I.spotLightDecay.value=ha.spot.decays;I.hemisphereLightSkyColor.value=ha.hemi.skyColors;I.hemisphereLightGroundColor.value=ha.hemi.groundColors;I.hemisphereLightDirection.value=ha.hemi.positions;u(I,!0)}else u(I,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){I.opacity.value=d.opacity;I.diffuse.value=d.color;I.map.value=d.map;I.specularMap.value=
|
|
|
-d.specularMap;I.alphaMap.value=d.alphaMap;d.bumpMap&&(I.bumpMap.value=d.bumpMap,I.bumpScale.value=d.bumpScale);d.normalMap&&(I.normalMap.value=d.normalMap,I.normalScale.value.copy(d.normalScale));var ya;d.map?ya=d.map:d.specularMap?ya=d.specularMap:d.normalMap?ya=d.normalMap:d.bumpMap?ya=d.bumpMap:d.alphaMap?ya=d.alphaMap:d.emissiveMap&&(ya=d.emissiveMap);if(void 0!==ya){var Qb=ya.offset,Rb=ya.repeat;I.offsetRepeat.value.set(Qb.x,Qb.y,Rb.x,Rb.y)}I.envMap.value=d.envMap;I.flipEnvMap.value=d.envMap instanceof
|
|
|
-THREE.WebGLRenderTargetCube?1:-1;I.reflectivity.value=d.reflectivity;I.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)I.diffuse.value=d.color,I.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)I.diffuse.value=d.color,I.opacity.value=d.opacity,I.dashSize.value=d.dashSize,I.totalSize.value=d.dashSize+d.gapSize,I.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(I.psColor.value=d.color,I.opacity.value=d.opacity,I.size.value=d.size,
|
|
|
-I.scale.value=C.height/2,I.map.value=d.map,null!==d.map){var Sb=d.map.offset,Tb=d.map.repeat;I.offsetRepeat.value.set(Sb.x,Sb.y,Tb.x,Tb.y)}}else d instanceof THREE.MeshPhongMaterial?(I.shininess.value=d.shininess,I.emissive.value=d.emissive,I.specular.value=d.specular,I.lightMap.value=d.lightMap,I.lightMapIntensity.value=d.lightMapIntensity,I.aoMap.value=d.aoMap,I.aoMapIntensity.value=d.aoMapIntensity,I.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?I.emissive.value=d.emissive:
|
|
|
-d instanceof THREE.MeshBasicMaterial?(I.aoMap.value=d.aoMap,I.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(I.mNear.value=a.near,I.mFar.value=a.far,I.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(I.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&I.shadowMatrix)for(var Wa=0,Gb=0,Nb=b.length;Gb<Nb;Gb++){var Fa=b[Gb];Fa.castShadow&&(Fa instanceof THREE.SpotLight||Fa instanceof THREE.DirectionalLight)&&(I.shadowMap.value[Wa]=Fa.shadowMap,
|
|
|
-I.shadowMapSize.value[Wa]=Fa.shadowMapSize,I.shadowMatrix.value[Wa]=Fa.shadowMatrix,I.shadowDarkness.value[Wa]=Fa.shadowDarkness,I.shadowBias.value[Wa]=Fa.shadowBias,Wa++)}for(var Hb=q.uniformsList,pa,Na,nb=0,Ob=Hb.length;nb<Ob;nb++){var T=Hb[nb][0];if(!1!==T.needsUpdate){var Ub=T.type,M=T.value,X=Hb[nb][1];switch(Ub){case "1i":s.uniform1i(X,M);break;case "1f":s.uniform1f(X,M);break;case "2f":s.uniform2f(X,M[0],M[1]);break;case "3f":s.uniform3f(X,M[0],M[1],M[2]);break;case "4f":s.uniform4f(X,M[0],
|
|
|
-M[1],M[2],M[3]);break;case "1iv":s.uniform1iv(X,M);break;case "3iv":s.uniform3iv(X,M);break;case "1fv":s.uniform1fv(X,M);break;case "2fv":s.uniform2fv(X,M);break;case "3fv":s.uniform3fv(X,M);break;case "4fv":s.uniform4fv(X,M);break;case "Matrix3fv":s.uniformMatrix3fv(X,!1,M);break;case "Matrix4fv":s.uniformMatrix4fv(X,!1,M);break;case "i":s.uniform1i(X,M);break;case "f":s.uniform1f(X,M);break;case "v2":s.uniform2f(X,M.x,M.y);break;case "v3":s.uniform3f(X,M.x,M.y,M.z);break;case "v4":s.uniform4f(X,
|
|
|
-M.x,M.y,M.z,M.w);break;case "c":s.uniform3f(X,M.r,M.g,M.b);break;case "iv1":s.uniform1iv(X,M);break;case "iv":s.uniform3iv(X,M);break;case "fv1":s.uniform1fv(X,M);break;case "fv":s.uniform3fv(X,M);break;case "v2v":void 0===T._array&&(T._array=new Float32Array(2*M.length));for(var U=0,ob=0,na=M.length;U<na;U++,ob+=2)T._array[ob+0]=M[U].x,T._array[ob+1]=M[U].y;s.uniform2fv(X,T._array);break;case "v3v":void 0===T._array&&(T._array=new Float32Array(3*M.length));for(var hb=U=0,na=M.length;U<na;U++,hb+=
|
|
|
-3)T._array[hb+0]=M[U].x,T._array[hb+1]=M[U].y,T._array[hb+2]=M[U].z;s.uniform3fv(X,T._array);break;case "v4v":void 0===T._array&&(T._array=new Float32Array(4*M.length));for(var Xa=U=0,na=M.length;U<na;U++,Xa+=4)T._array[Xa+0]=M[U].x,T._array[Xa+1]=M[U].y,T._array[Xa+2]=M[U].z,T._array[Xa+3]=M[U].w;s.uniform4fv(X,T._array);break;case "m3":s.uniformMatrix3fv(X,!1,M.elements);break;case "m3v":void 0===T._array&&(T._array=new Float32Array(9*M.length));U=0;for(na=M.length;U<na;U++)M[U].flattenToArrayOffset(T._array,
|
|
|
-9*U);s.uniformMatrix3fv(X,!1,T._array);break;case "m4":s.uniformMatrix4fv(X,!1,M.elements);break;case "m4v":void 0===T._array&&(T._array=new Float32Array(16*M.length));U=0;for(na=M.length;U<na;U++)M[U].flattenToArrayOffset(T._array,16*U);s.uniformMatrix4fv(X,!1,T._array);break;case "t":pa=M;Na=z();s.uniform1i(X,Na);if(!pa)continue;if(pa instanceof THREE.CubeTexture||Array.isArray(pa.image)&&6===pa.image.length){var ea=pa,Vb=Na,Ya=$.get(ea);if(6===ea.image.length)if(0<ea.version&&Ya.__version!==ea.version){Ya.__image__webglTextureCube||
|
|
|
-(ea.addEventListener("dispose",g),Ya.__image__webglTextureCube=s.createTexture(),Ca.textures++);K.activeTexture(s.TEXTURE0+Vb);K.bindTexture(s.TEXTURE_CUBE_MAP,Ya.__image__webglTextureCube);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,ea.flipY);for(var Wb=ea instanceof THREE.CompressedTexture,Ib=ea.image[0]instanceof THREE.DataTexture,Oa=[],ga=0;6>ga;ga++)Oa[ga]=!ka.autoScaleCubemaps||Wb||Ib?Ib?ea.image[ga].image:ea.image[ga]:F(ea.image[ga],ia.maxCubemapSize);var Xb=Oa[0],Yb=THREE.Math.isPowerOfTwo(Xb.width)&&
|
|
|
-THREE.Math.isPowerOfTwo(Xb.height),Ga=N(ea.format),Jb=N(ea.type);D(s.TEXTURE_CUBE_MAP,ea,Yb);for(ga=0;6>ga;ga++)if(Wb)for(var Pa,Zb=Oa[ga].mipmaps,ib=0,ac=Zb.length;ib<ac;ib++)Pa=Zb[ib],ea.format!==THREE.RGBAFormat&&ea.format!==THREE.RGBFormat?-1<K.getCompressedTextureFormats().indexOf(Ga)?K.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,ib,Ga,Pa.width,Pa.height,0,Pa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):K.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
-ga,ib,Ga,Pa.width,Pa.height,0,Ga,Jb,Pa.data);else Ib?K.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,0,Ga,Oa[ga].width,Oa[ga].height,0,Ga,Jb,Oa[ga].data):K.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,0,Ga,Ga,Jb,Oa[ga]);ea.generateMipmaps&&Yb&&s.generateMipmap(s.TEXTURE_CUBE_MAP);Ya.__version=ea.version;if(ea.onUpdate)ea.onUpdate(ea)}else K.activeTexture(s.TEXTURE0+Vb),K.bindTexture(s.TEXTURE_CUBE_MAP,Ya.__image__webglTextureCube)}else if(pa instanceof THREE.WebGLRenderTargetCube){var bc=pa;K.activeTexture(s.TEXTURE0+
|
|
|
-Na);K.bindTexture(s.TEXTURE_CUBE_MAP,$.get(bc).__webglTexture)}else ka.setTexture(pa,Na);break;case "tv":void 0===T._array&&(T._array=[]);U=0;for(na=T.value.length;U<na;U++)T._array[U]=z();s.uniform1iv(X,T._array);U=0;for(na=T.value.length;U<na;U++)pa=T.value[U],Na=T._array[U],pa&&ka.setTexture(pa,Na);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Ub)}}}}s.uniformMatrix4fv(ca.modelViewMatrix,!1,e.modelViewMatrix.elements);ca.normalMatrix&&s.uniformMatrix3fv(ca.normalMatrix,
|
|
|
-!1,e.normalMatrix.elements);void 0!==ca.modelMatrix&&s.uniformMatrix4fv(ca.modelMatrix,!1,e.matrixWorld.elements);return cb}function u(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 z(){var a=lb;a>=ia.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ia.maxTextures);lb+=1;return a}function x(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function D(a,b,c){c?(s.texParameteri(a,s.TEXTURE_WRAP_S,
|
|
|
-N(b.wrapS)),s.texParameteri(a,s.TEXTURE_WRAP_T,N(b.wrapT)),s.texParameteri(a,s.TEXTURE_MAG_FILTER,N(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,N(b.minFilter))):(s.texParameteri(a,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(a,s.TEXTURE_WRAP_T,s.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+
|
|
|
-" )"),s.texParameteri(a,s.TEXTURE_MAG_FILTER,L(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,L(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=W.get("EXT_texture_filter_anisotropic"))||b.type===THREE.FloatType&&null===W.get("OES_texture_float_linear")||b.type===THREE.HalfFloatType&&null===
|
|
|
-W.get("OES_texture_half_float_linear")||!(1<b.anisotropy||$.get(b).__currentAnisotropy)||(s.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,ka.getMaxAnisotropy())),$.get(b).__currentAnisotropy=b.anisotropy)}function F(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.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function m(a,b,c,d,e){var f;c.transparent?(d=Da,f=++Ia):(d=la,f=++wa);f=d[f];void 0!==f?(f.id=a.id,f.object=a,f.geometry=b,f.material=c,f.z=aa.z,f.group=e):(f={id:a.id,object:a,geometry:b,material:c,z:aa.z,group:e},d.push(f))}function q(a){if(!1!==a.visible){if(a instanceof THREE.Light)Y.push(a);else if(a instanceof THREE.Sprite)Ra.push(a);else if(a instanceof THREE.LensFlare)ab.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b,
|
|
|
+c;a.material.transparent?(b=Ja,c=++Ka):(b=ra,c=++bb);c<b.length?b[c]=a:b.push(a)}else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.PointCloud)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),!1===a.frustumCulled||!0===kb.intersectsObject(a)){var d=a.material;if(!0===d.visible){!0===ka.sortObjects&&(aa.setFromMatrixPosition(a.matrixWorld),aa.applyProjection(Sa));var e=sa.update(a),f=e.groups;if(d instanceof THREE.MeshFaceMaterial)for(d=d.materials,b=0,c=f.length;b<
|
|
|
+c;b++){var g=f[b],h=d[g.materialIndex];!0===h.visible&&m(a,e,h,aa.z,g)}else if(0<f.length)for(b=0,c=f.length;b<c;b++)m(a,e,d,aa.z,f[b]);else m(a,e,d,aa.z)}}a=a.children;b=0;for(c=a.length;b<c;b++)q(a[b])}}function t(a,b,c,d,e){for(var f=0,g=a.length;f<g;f++){var h=a[f],k=h.object,l=h.geometry,m=void 0===e?h.material:e,h=h.group;k.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k.normalMatrix.getNormalMatrix(k.modelViewMatrix);ka.renderBufferDirect(b,c,d,l,m,k,h)}}function r(a,
|
|
|
+b,c,d,e){for(var f=e,g=0,h=a.length;g<h;g++){var k=a[g];k.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,k.matrixWorld);k.normalMatrix.getNormalMatrix(k.modelViewMatrix);void 0===e&&(f=k.material);v(f);var l=w(b,c,d,f,k);va="";k.render(function(a){ka.renderBufferImmediate(a,l,f)})}}function v(a){a.side!==THREE.DoubleSide?K.enable(s.CULL_FACE):K.disable(s.CULL_FACE);K.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?K.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,
|
|
|
+a.blendSrcAlpha,a.blendDstAlpha):K.setBlending(THREE.NoBlending);K.setDepthFunc(a.depthFunc);K.setDepthTest(a.depthTest);K.setDepthWrite(a.depthWrite);K.setColorWrite(a.colorWrite);K.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function w(a,b,c,d,e){var f,l,m,n;lb=0;var q=$.get(d);if(d.needsUpdate||!q.program){a:{for(var p=$.get(d),t=$b[d.type],r=0,w=0,v=0,L=0,y=0,A=b.length;y<A;y++){var B=b[y];B.onlyShadow||!1===B.visible||(B instanceof THREE.DirectionalLight&&r++,
|
|
|
+B instanceof THREE.PointLight&&w++,B instanceof THREE.SpotLight&&v++,B instanceof THREE.HemisphereLight&&L++)}f=r;l=w;m=v;n=L;for(var G,H=0,J=0,E=b.length;J<E;J++){var P=b[J];P.castShadow&&(P instanceof THREE.SpotLight&&H++,P instanceof THREE.DirectionalLight&&H++)}G=H;var Q;if(ia.floatVertexTextures&&e&&e.skeleton&&e.skeleton.useVertexTexture)Q=1024;else{var O=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),wa=Math.floor((O-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(wa=Math.min(e.skeleton.bones.length,
|
|
|
+wa),wa<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+wa+" (try OpenGL instead of ANGLE)"));Q=wa}var R=ia.precision;null!==d.precision&&(R=ia.getMaxPrecision(d.precision),R!==d.precision&&console.warn("THREE.WebGLRenderer.initMaterial:",d.precision,"not supported, using",R,"instead."));var V={precision:R,supportsVertexTextures:ia.vertexTextures,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:ia.logarithmicDepthBuffer,skinning:d.skinning,maxBones:Q,useVertexTexture:ia.floatVertexTextures&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,
|
|
|
+morphNormals:d.morphNormals,maxMorphTargets:ka.maxMorphTargets,maxMorphNormals:ka.maxMorphNormals,maxDirLights:f,maxPointLights:l,maxSpotLights:m,maxHemiLights:n,maxShadows:G,shadowMapEnabled:ma.enabled&&e.receiveShadow&&0<G,shadowMapType:ma.type,shadowMapDebug:ma.debug,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},S=[];t?S.push(t):(S.push(d.fragmentShader),S.push(d.vertexShader));if(void 0!==d.defines)for(var ra in d.defines)S.push(ra),
|
|
|
+S.push(d.defines[ra]);for(ra in V)S.push(ra),S.push(V[ra]);var W=S.join(),Da=!0;if(p.program)if(p.program.code!==W)k(d);else if(void 0!==t)break a;else Da=!1;else d.addEventListener("dispose",h);if(t){var Ia=THREE.ShaderLib[t];p.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Ia.uniforms),vertexShader:Ia.vertexShader,fragmentShader:Ia.fragmentShader}}else p.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var Y,Ka=0,bb=qa.length;Ka<
|
|
|
+bb;Ka++){var Ra=qa[Ka];if(Ra.code===W){Y=Ra;Da&&Y.usedTimes++;break}}void 0===Y&&(d.__webglShader=p.__webglShader,Y=new THREE.WebGLProgram(ka,W,d,V),qa.push(Y),Ca.programs=qa.length);p.program=Y;d.program=Y;var Ja=Y.getAttributes();if(d.morphTargets)for(var ta=d.numSupportedMorphTargets=0;ta<ka.maxMorphTargets;ta++)0<=Ja["morphTarget"+ta]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ta=d.numSupportedMorphNormals=0;ta<ka.maxMorphNormals;ta++)0<=Ja["morphNormal"+ta]&&d.numSupportedMorphNormals++;
|
|
|
+p.uniformsList=[];var ab=p.program.getUniforms(),ja;for(ja in p.__webglShader.uniforms){var la=ab[ja];la&&p.uniformsList.push([p.__webglShader.uniforms[ja],la])}}d.needsUpdate=!1}var ua=!1,va=!1,sa=!1,cb=q.program,ca=cb.getUniforms(),I=q.__webglShader.uniforms;cb.id!==rb&&(s.useProgram(cb.program),rb=cb.id,sa=va=ua=!0);d.id!==$a&&(-1===$a&&(sa=!0),$a=d.id,va=!0);if(ua||a!==Za)s.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),ia.logarithmicDepthBuffer&&s.uniform1f(ca.logDepthBufFC,
|
|
|
+2/(Math.log(a.far+1)/Math.LN2)),a!==Za&&(Za=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ca.cameraPosition&&(aa.setFromMatrixPosition(a.matrixWorld),s.uniform3f(ca.cameraPosition,aa.x,aa.y,aa.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&void 0!==ca.viewMatrix&&s.uniformMatrix4fv(ca.viewMatrix,!1,a.matrixWorldInverse.elements);
|
|
|
+if(d.skinning)if(e.bindMatrix&&void 0!==ca.bindMatrix&&s.uniformMatrix4fv(ca.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&void 0!==ca.bindMatrixInverse&&s.uniformMatrix4fv(ca.bindMatrixInverse,!1,e.bindMatrixInverse.elements),ia.floatVertexTextures&&e.skeleton&&e.skeleton.useVertexTexture){if(void 0!==ca.boneTexture){var Ha=z();s.uniform1i(ca.boneTexture,Ha);ka.setTexture(e.skeleton.boneTexture,Ha)}void 0!==ca.boneTextureWidth&&s.uniform1i(ca.boneTextureWidth,e.skeleton.boneTextureWidth);
|
|
|
+void 0!==ca.boneTextureHeight&&s.uniform1i(ca.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&void 0!==ca.boneGlobalMatrices&&s.uniformMatrix4fv(ca.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(va){c&&d.fog&&(I.fogColor.value=c.color,c instanceof THREE.Fog?(I.fogNear.value=c.near,I.fogFar.value=c.far):c instanceof THREE.FogExp2&&(I.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(jb){var sa=
|
|
|
+!0,ba,oa,Z,za=0,Aa=0,Ba=0,La,Qa,Sa,Ta,sb,da=Pb,db=a.matrixWorldInverse,tb=da.directional.colors,ub=da.directional.positions,vb=da.point.colors,wb=da.point.positions,kb=da.point.distances,pb=da.point.decays,xb=da.spot.colors,yb=da.spot.positions,qb=da.spot.distances,zb=da.spot.directions,Kb=da.spot.anglesCos,Lb=da.spot.exponents,Mb=da.spot.decays,Ab=da.hemi.skyColors,Bb=da.hemi.groundColors,Cb=da.hemi.positions,eb=0,Ma=0,xa=0,Ua=0,Db=0,Eb=0,Fb=0,mb=0,fb=0,gb=0,Ea=0,Va=0;ba=0;for(oa=b.length;ba<oa;ba++)Z=
|
|
|
+b[ba],Z.onlyShadow||(La=Z.color,Ta=Z.intensity,sb=Z.distance,Z instanceof THREE.AmbientLight?Z.visible&&(za+=La.r,Aa+=La.g,Ba+=La.b):Z instanceof THREE.DirectionalLight?(Db+=1,Z.visible&&(fa.setFromMatrixPosition(Z.matrixWorld),aa.setFromMatrixPosition(Z.target.matrixWorld),fa.sub(aa),fa.transformDirection(db),fb=3*eb,ub[fb+0]=fa.x,ub[fb+1]=fa.y,ub[fb+2]=fa.z,x(tb,fb,La,Ta),eb+=1)):Z instanceof THREE.PointLight?(Eb+=1,Z.visible&&(gb=3*Ma,x(vb,gb,La,Ta),aa.setFromMatrixPosition(Z.matrixWorld),aa.applyMatrix4(db),
|
|
|
+wb[gb+0]=aa.x,wb[gb+1]=aa.y,wb[gb+2]=aa.z,kb[Ma]=sb,pb[Ma]=0===Z.distance?0:Z.decay,Ma+=1)):Z instanceof THREE.SpotLight?(Fb+=1,Z.visible&&(Ea=3*xa,x(xb,Ea,La,Ta),fa.setFromMatrixPosition(Z.matrixWorld),aa.copy(fa).applyMatrix4(db),yb[Ea+0]=aa.x,yb[Ea+1]=aa.y,yb[Ea+2]=aa.z,qb[xa]=sb,aa.setFromMatrixPosition(Z.target.matrixWorld),fa.sub(aa),fa.transformDirection(db),zb[Ea+0]=fa.x,zb[Ea+1]=fa.y,zb[Ea+2]=fa.z,Kb[xa]=Math.cos(Z.angle),Lb[xa]=Z.exponent,Mb[xa]=0===Z.distance?0:Z.decay,xa+=1)):Z instanceof
|
|
|
+THREE.HemisphereLight&&(mb+=1,Z.visible&&(fa.setFromMatrixPosition(Z.matrixWorld),fa.transformDirection(db),Va=3*Ua,Cb[Va+0]=fa.x,Cb[Va+1]=fa.y,Cb[Va+2]=fa.z,Qa=Z.color,Sa=Z.groundColor,x(Ab,Va,Qa,Ta),x(Bb,Va,Sa,Ta),Ua+=1)));ba=3*eb;for(oa=Math.max(tb.length,3*Db);ba<oa;ba++)tb[ba]=0;ba=3*Ma;for(oa=Math.max(vb.length,3*Eb);ba<oa;ba++)vb[ba]=0;ba=3*xa;for(oa=Math.max(xb.length,3*Fb);ba<oa;ba++)xb[ba]=0;ba=3*Ua;for(oa=Math.max(Ab.length,3*mb);ba<oa;ba++)Ab[ba]=0;ba=3*Ua;for(oa=Math.max(Bb.length,3*
|
|
|
+mb);ba<oa;ba++)Bb[ba]=0;da.directional.length=eb;da.point.length=Ma;da.spot.length=xa;da.hemi.length=Ua;da.ambient[0]=za;da.ambient[1]=Aa;da.ambient[2]=Ba;jb=!1}if(sa){var ha=Pb;I.ambientLightColor.value=ha.ambient;I.directionalLightColor.value=ha.directional.colors;I.directionalLightDirection.value=ha.directional.positions;I.pointLightColor.value=ha.point.colors;I.pointLightPosition.value=ha.point.positions;I.pointLightDistance.value=ha.point.distances;I.pointLightDecay.value=ha.point.decays;I.spotLightColor.value=
|
|
|
+ha.spot.colors;I.spotLightPosition.value=ha.spot.positions;I.spotLightDistance.value=ha.spot.distances;I.spotLightDirection.value=ha.spot.directions;I.spotLightAngleCos.value=ha.spot.anglesCos;I.spotLightExponent.value=ha.spot.exponents;I.spotLightDecay.value=ha.spot.decays;I.hemisphereLightSkyColor.value=ha.hemi.skyColors;I.hemisphereLightGroundColor.value=ha.hemi.groundColors;I.hemisphereLightDirection.value=ha.hemi.positions;u(I,!0)}else u(I,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof
|
|
|
+THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){I.opacity.value=d.opacity;I.diffuse.value=d.color;I.map.value=d.map;I.specularMap.value=d.specularMap;I.alphaMap.value=d.alphaMap;d.bumpMap&&(I.bumpMap.value=d.bumpMap,I.bumpScale.value=d.bumpScale);d.normalMap&&(I.normalMap.value=d.normalMap,I.normalScale.value.copy(d.normalScale));var ya;d.map?ya=d.map:d.specularMap?ya=d.specularMap:d.normalMap?ya=d.normalMap:d.bumpMap?ya=d.bumpMap:d.alphaMap?ya=d.alphaMap:d.emissiveMap&&(ya=d.emissiveMap);
|
|
|
+if(void 0!==ya){var Qb=ya.offset,Rb=ya.repeat;I.offsetRepeat.value.set(Qb.x,Qb.y,Rb.x,Rb.y)}I.envMap.value=d.envMap;I.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;I.reflectivity.value=d.reflectivity;I.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)I.diffuse.value=d.color,I.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)I.diffuse.value=d.color,I.opacity.value=d.opacity,I.dashSize.value=d.dashSize,I.totalSize.value=d.dashSize+
|
|
|
+d.gapSize,I.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(I.psColor.value=d.color,I.opacity.value=d.opacity,I.size.value=d.size,I.scale.value=C.height/2,I.map.value=d.map,null!==d.map){var Sb=d.map.offset,Tb=d.map.repeat;I.offsetRepeat.value.set(Sb.x,Sb.y,Tb.x,Tb.y)}}else d instanceof THREE.MeshPhongMaterial?(I.shininess.value=d.shininess,I.emissive.value=d.emissive,I.specular.value=d.specular,I.lightMap.value=d.lightMap,I.lightMapIntensity.value=d.lightMapIntensity,I.aoMap.value=
|
|
|
+d.aoMap,I.aoMapIntensity.value=d.aoMapIntensity,I.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?I.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?(I.aoMap.value=d.aoMap,I.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(I.mNear.value=a.near,I.mFar.value=a.far,I.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(I.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&I.shadowMatrix)for(var Wa=0,Gb=0,Nb=b.length;Gb<
|
|
|
+Nb;Gb++){var Fa=b[Gb];Fa.castShadow&&(Fa instanceof THREE.SpotLight||Fa instanceof THREE.DirectionalLight)&&(I.shadowMap.value[Wa]=Fa.shadowMap,I.shadowMapSize.value[Wa]=Fa.shadowMapSize,I.shadowMatrix.value[Wa]=Fa.shadowMatrix,I.shadowDarkness.value[Wa]=Fa.shadowDarkness,I.shadowBias.value[Wa]=Fa.shadowBias,Wa++)}for(var Hb=q.uniformsList,pa,Na,nb=0,Ob=Hb.length;nb<Ob;nb++){var T=Hb[nb][0];if(!1!==T.needsUpdate){var Ub=T.type,M=T.value,X=Hb[nb][1];switch(Ub){case "1i":s.uniform1i(X,M);break;case "1f":s.uniform1f(X,
|
|
|
+M);break;case "2f":s.uniform2f(X,M[0],M[1]);break;case "3f":s.uniform3f(X,M[0],M[1],M[2]);break;case "4f":s.uniform4f(X,M[0],M[1],M[2],M[3]);break;case "1iv":s.uniform1iv(X,M);break;case "3iv":s.uniform3iv(X,M);break;case "1fv":s.uniform1fv(X,M);break;case "2fv":s.uniform2fv(X,M);break;case "3fv":s.uniform3fv(X,M);break;case "4fv":s.uniform4fv(X,M);break;case "Matrix3fv":s.uniformMatrix3fv(X,!1,M);break;case "Matrix4fv":s.uniformMatrix4fv(X,!1,M);break;case "i":s.uniform1i(X,M);break;case "f":s.uniform1f(X,
|
|
|
+M);break;case "v2":s.uniform2f(X,M.x,M.y);break;case "v3":s.uniform3f(X,M.x,M.y,M.z);break;case "v4":s.uniform4f(X,M.x,M.y,M.z,M.w);break;case "c":s.uniform3f(X,M.r,M.g,M.b);break;case "iv1":s.uniform1iv(X,M);break;case "iv":s.uniform3iv(X,M);break;case "fv1":s.uniform1fv(X,M);break;case "fv":s.uniform3fv(X,M);break;case "v2v":void 0===T._array&&(T._array=new Float32Array(2*M.length));for(var U=0,ob=0,na=M.length;U<na;U++,ob+=2)T._array[ob+0]=M[U].x,T._array[ob+1]=M[U].y;s.uniform2fv(X,T._array);
|
|
|
+break;case "v3v":void 0===T._array&&(T._array=new Float32Array(3*M.length));for(var hb=U=0,na=M.length;U<na;U++,hb+=3)T._array[hb+0]=M[U].x,T._array[hb+1]=M[U].y,T._array[hb+2]=M[U].z;s.uniform3fv(X,T._array);break;case "v4v":void 0===T._array&&(T._array=new Float32Array(4*M.length));for(var Xa=U=0,na=M.length;U<na;U++,Xa+=4)T._array[Xa+0]=M[U].x,T._array[Xa+1]=M[U].y,T._array[Xa+2]=M[U].z,T._array[Xa+3]=M[U].w;s.uniform4fv(X,T._array);break;case "m3":s.uniformMatrix3fv(X,!1,M.elements);break;case "m3v":void 0===
|
|
|
+T._array&&(T._array=new Float32Array(9*M.length));U=0;for(na=M.length;U<na;U++)M[U].flattenToArrayOffset(T._array,9*U);s.uniformMatrix3fv(X,!1,T._array);break;case "m4":s.uniformMatrix4fv(X,!1,M.elements);break;case "m4v":void 0===T._array&&(T._array=new Float32Array(16*M.length));U=0;for(na=M.length;U<na;U++)M[U].flattenToArrayOffset(T._array,16*U);s.uniformMatrix4fv(X,!1,T._array);break;case "t":pa=M;Na=z();s.uniform1i(X,Na);if(!pa)continue;if(pa instanceof THREE.CubeTexture||Array.isArray(pa.image)&&
|
|
|
+6===pa.image.length){var ea=pa,Vb=Na,Ya=$.get(ea);if(6===ea.image.length)if(0<ea.version&&Ya.__version!==ea.version){Ya.__image__webglTextureCube||(ea.addEventListener("dispose",g),Ya.__image__webglTextureCube=s.createTexture(),Ca.textures++);K.activeTexture(s.TEXTURE0+Vb);K.bindTexture(s.TEXTURE_CUBE_MAP,Ya.__image__webglTextureCube);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,ea.flipY);for(var Wb=ea instanceof THREE.CompressedTexture,Ib=ea.image[0]instanceof THREE.DataTexture,Oa=[],ga=0;6>ga;ga++)Oa[ga]=
|
|
|
+!ka.autoScaleCubemaps||Wb||Ib?Ib?ea.image[ga].image:ea.image[ga]:F(ea.image[ga],ia.maxCubemapSize);var Xb=Oa[0],Yb=THREE.Math.isPowerOfTwo(Xb.width)&&THREE.Math.isPowerOfTwo(Xb.height),Ga=N(ea.format),Jb=N(ea.type);D(s.TEXTURE_CUBE_MAP,ea,Yb);for(ga=0;6>ga;ga++)if(Wb)for(var Pa,Zb=Oa[ga].mipmaps,ib=0,ac=Zb.length;ib<ac;ib++)Pa=Zb[ib],ea.format!==THREE.RGBAFormat&&ea.format!==THREE.RGBFormat?-1<K.getCompressedTextureFormats().indexOf(Ga)?K.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,ib,Ga,
|
|
|
+Pa.width,Pa.height,0,Pa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):K.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,ib,Ga,Pa.width,Pa.height,0,Ga,Jb,Pa.data);else Ib?K.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,0,Ga,Oa[ga].width,Oa[ga].height,0,Ga,Jb,Oa[ga].data):K.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ga,0,Ga,Ga,Jb,Oa[ga]);ea.generateMipmaps&&Yb&&s.generateMipmap(s.TEXTURE_CUBE_MAP);Ya.__version=ea.version;if(ea.onUpdate)ea.onUpdate(ea)}else K.activeTexture(s.TEXTURE0+
|
|
|
+Vb),K.bindTexture(s.TEXTURE_CUBE_MAP,Ya.__image__webglTextureCube)}else if(pa instanceof THREE.WebGLRenderTargetCube){var bc=pa;K.activeTexture(s.TEXTURE0+Na);K.bindTexture(s.TEXTURE_CUBE_MAP,$.get(bc).__webglTexture)}else ka.setTexture(pa,Na);break;case "tv":void 0===T._array&&(T._array=[]);U=0;for(na=T.value.length;U<na;U++)T._array[U]=z();s.uniform1iv(X,T._array);U=0;for(na=T.value.length;U<na;U++)pa=T.value[U],Na=T._array[U],pa&&ka.setTexture(pa,Na);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+
|
|
|
+Ub)}}}}s.uniformMatrix4fv(ca.modelViewMatrix,!1,e.modelViewMatrix.elements);ca.normalMatrix&&s.uniformMatrix3fv(ca.normalMatrix,!1,e.normalMatrix.elements);void 0!==ca.modelMatrix&&s.uniformMatrix4fv(ca.modelMatrix,!1,e.matrixWorld.elements);return cb}function u(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 z(){var a=lb;a>=ia.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ia.maxTextures);
|
|
|
+lb+=1;return a}function x(a,b,c,d){a[b+0]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function D(a,b,c){c?(s.texParameteri(a,s.TEXTURE_WRAP_S,N(b.wrapS)),s.texParameteri(a,s.TEXTURE_WRAP_T,N(b.wrapT)),s.texParameteri(a,s.TEXTURE_MAG_FILTER,N(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,N(b.minFilter))):(s.texParameteri(a,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(a,s.TEXTURE_WRAP_T,s.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+" )"),s.texParameteri(a,s.TEXTURE_MAG_FILTER,L(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,L(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=W.get("EXT_texture_filter_anisotropic"))||b.type===THREE.FloatType&&null===W.get("OES_texture_float_linear")||b.type===THREE.HalfFloatType&&
|
|
|
+null===W.get("OES_texture_half_float_linear")||!(1<b.anisotropy||$.get(b).__currentAnisotropy)||(s.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,ka.getMaxAnisotropy())),$.get(b).__currentAnisotropy=b.anisotropy)}function F(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 y(a,b,c){s.bindFramebuffer(s.FRAMEBUFFER,a);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,c,$.get(b).__webglTexture,0)}function B(a,b){s.bindRenderbuffer(s.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(s.renderbufferStorage(s.RENDERBUFFER,s.DEPTH_COMPONENT16,b.width,b.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(s.renderbufferStorage(s.RENDERBUFFER,
|
|
|
s.DEPTH_STENCIL,b.width,b.height),s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,a)):s.renderbufferStorage(s.RENDERBUFFER,s.RGBA4,b.width,b.height)}function L(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?s.NEAREST:s.LINEAR}function N(a){var b;if(a===THREE.RepeatWrapping)return s.REPEAT;if(a===THREE.ClampToEdgeWrapping)return s.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return s.MIRRORED_REPEAT;
|
|
|
if(a===THREE.NearestFilter)return s.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return s.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return s.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return s.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return s.LINEAR_MIPMAP_NEAREST;if(a===THREE.LinearMipMapLinearFilter)return s.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return s.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return s.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return s.UNSIGNED_SHORT_5_5_5_1;
|
|
@@ -536,7 +536,7 @@ if(a===THREE.OneMinusSrcAlphaFactor)return s.ONE_MINUS_SRC_ALPHA;if(a===THREE.Ds
|
|
|
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=W.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=
|
|
|
W.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 C=void 0!==a.canvas?a.canvas:document.createElement("canvas"),O=void 0!==a.context?a.context:null,G=C.width,J=C.height,A=1,H=void 0!==a.alpha?a.alpha:!1,P=void 0!==a.depth?a.depth:!0,Q=void 0!==a.stencil?a.stencil:!0,V=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:
|
|
|
!0,S=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,E=new THREE.Color(0),ja=0,Y=[],la=[],wa=-1,Da=[],Ia=-1,ra=[],bb=-1,Ja=[],Ka=-1,ta=new Float32Array(8),Ra=[],ab=[];this.domElement=C;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,qa=[],rb=null,Qa=null,$a=-1,va="",Za=null,lb=0,Ha=
|
|
|
-0,za=0,Aa=C.width,Ba=C.height,pb=0,qb=0,kb=new THREE.Frustum,Sa=new THREE.Matrix4,ba=new THREE.Vector3,fa=new THREE.Vector3,jb=!0,Pb={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:[]}},Ca={programs:0,geometries:0,textures:0},ua={calls:0,vertices:0,faces:0,points:0};
|
|
|
+0,za=0,Aa=C.width,Ba=C.height,pb=0,qb=0,kb=new THREE.Frustum,Sa=new THREE.Matrix4,aa=new THREE.Vector3,fa=new THREE.Vector3,jb=!0,Pb={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:[]}},Ca={programs:0,geometries:0,textures:0},ua={calls:0,vertices:0,faces:0,points:0};
|
|
|
this.info={render:ua,memory:Ca,programs:qa};var s;try{H={alpha:H,depth:P,stencil:Q,antialias:V,premultipliedAlpha:R,preserveDrawingBuffer:S};s=O||C.getContext("webgl",H)||C.getContext("experimental-webgl",H);if(null===s){if(null!==C.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}C.addEventListener("webglcontextlost",e,!1)}catch(Kb){console.error("THREE.WebGLRenderer: "+Kb)}var W=new THREE.WebGLExtensions(s);W.get("OES_texture_float");
|
|
|
W.get("OES_texture_float_linear");W.get("OES_texture_half_float");W.get("OES_texture_half_float_linear");W.get("OES_standard_derivatives");W.get("ANGLE_instanced_arrays");W.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);var ia=new THREE.WebGLCapabilities(s,W,a),K=new THREE.WebGLState(s,W,N),$=new THREE.WebGLProperties,sa=new THREE.WebGLObjects(s,$,this.info),Lb=new THREE.WebGLBufferRenderer(s,W,ua),Mb=new THREE.WebGLIndexedBufferRenderer(s,W,ua);c();this.context=s;this.capabilities=
|
|
|
ia;this.extensions=W;this.state=K;var ma=new THREE.WebGLShadowMap(this,Y,sa);this.shadowMap=ma;var Nb=new THREE.SpritePlugin(this,Ra),Ob=new THREE.LensFlarePlugin(this,ab);this.getContext=function(){return s};this.getContextAttributes=function(){return s.getContextAttributes()};this.forceContextLoss=function(){W.get("WEBGL_lose_context").loseContext()};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=W.get("EXT_texture_filter_anisotropic");return a=null!==b?s.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):
|