|
@@ -1,12 +1,12 @@
|
|
|
// threejs.org/license
|
|
|
'use strict';var THREE={REVISION:"72dev"};"function"===typeof define&&define.amd?define("three",THREE):"undefined"!==typeof exports&&"undefined"!==typeof module&&(module.exports=THREE);
|
|
|
-(function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!self.requestAnimationFrame;++c)self.requestAnimationFrame=self[b[c]+"RequestAnimationFrame"],self.cancelAnimationFrame=self[b[c]+"CancelAnimationFrame"]||self[b[c]+"CancelRequestAnimationFrame"];void 0===self.requestAnimationFrame&&void 0!==self.setTimeout&&(self.requestAnimationFrame=function(b){var c=Date.now(),g=Math.max(0,16-(c-a)),f=self.setTimeout(function(){b(c+g)},g);a=c+g;return f});void 0===self.cancelAnimationFrame&&void 0!==
|
|
|
-self.clearTimeout&&(self.cancelAnimationFrame=function(a){self.clearTimeout(a)})})();void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:+a});void 0===Function.prototype.name&&void 0!==Object.defineProperty&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1]}});THREE.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};THREE.CullFaceNone=0;THREE.CullFaceBack=1;THREE.CullFaceFront=2;THREE.CullFaceFrontBack=3;
|
|
|
-THREE.FrontFaceDirectionCW=0;THREE.FrontFaceDirectionCCW=1;THREE.BasicShadowMap=0;THREE.PCFShadowMap=1;THREE.PCFSoftShadowMap=2;THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0;THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;THREE.CustomBlending=5;THREE.AddEquation=100;THREE.SubtractEquation=101;
|
|
|
-THREE.ReverseSubtractEquation=102;THREE.MinEquation=103;THREE.MaxEquation=104;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202;THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204;THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.NeverDepth=0;THREE.AlwaysDepth=1;THREE.LessDepth=2;THREE.LessEqualDepth=3;THREE.EqualDepth=4;
|
|
|
-THREE.GreaterEqualDepth=5;THREE.GreaterDepth=6;THREE.NotEqualDepth=7;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=300;THREE.CubeReflectionMapping=301;THREE.CubeRefractionMapping=302;THREE.EquirectangularReflectionMapping=303;THREE.EquirectangularRefractionMapping=304;THREE.SphericalReflectionMapping=305;THREE.RepeatWrapping=1E3;THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;
|
|
|
-THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.HalfFloatType=1025;THREE.UnsignedShort4444Type=1016;THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;
|
|
|
-THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGBEFormat=THREE.RGBAFormat;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.RGB_PVRTC_4BPPV1_Format=2100;THREE.RGB_PVRTC_2BPPV1_Format=2101;THREE.RGBA_PVRTC_4BPPV1_Format=2102;THREE.RGBA_PVRTC_2BPPV1_Format=2103;
|
|
|
+void 0!==self.requestAnimationFrame&&void 0!==self.cancelAnimationFrame||function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!self.requestAnimationFrame;++c)self.requestAnimationFrame=self[b[c]+"RequestAnimationFrame"],self.cancelAnimationFrame=self[b[c]+"CancelAnimationFrame"]||self[b[c]+"CancelRequestAnimationFrame"];void 0===self.requestAnimationFrame&&void 0!==self.setTimeout&&(self.requestAnimationFrame=function(b){var c=Date.now(),g=Math.max(0,16-(c-a)),f=self.setTimeout(function(){b(c+
|
|
|
+g)},g);a=c+g;return f});void 0===self.cancelAnimationFrame&&void 0!==self.clearTimeout&&(self.cancelAnimationFrame=function(a){self.clearTimeout(a)})}();void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:+a});void 0===Function.prototype.name&&void 0!==Object.defineProperty&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1]}});THREE.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};THREE.CullFaceNone=0;THREE.CullFaceBack=1;
|
|
|
+THREE.CullFaceFront=2;THREE.CullFaceFrontBack=3;THREE.FrontFaceDirectionCW=0;THREE.FrontFaceDirectionCCW=1;THREE.BasicShadowMap=0;THREE.PCFShadowMap=1;THREE.PCFSoftShadowMap=2;THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0;THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;THREE.CustomBlending=5;
|
|
|
+THREE.AddEquation=100;THREE.SubtractEquation=101;THREE.ReverseSubtractEquation=102;THREE.MinEquation=103;THREE.MaxEquation=104;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202;THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204;THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.NeverDepth=0;THREE.AlwaysDepth=1;THREE.LessDepth=2;
|
|
|
+THREE.LessEqualDepth=3;THREE.EqualDepth=4;THREE.GreaterEqualDepth=5;THREE.GreaterDepth=6;THREE.NotEqualDepth=7;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=300;THREE.CubeReflectionMapping=301;THREE.CubeRefractionMapping=302;THREE.EquirectangularReflectionMapping=303;THREE.EquirectangularRefractionMapping=304;THREE.SphericalReflectionMapping=305;THREE.RepeatWrapping=1E3;THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;
|
|
|
+THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.HalfFloatType=1025;THREE.UnsignedShort4444Type=1016;THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;
|
|
|
+THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGBEFormat=THREE.RGBAFormat;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.RGB_PVRTC_4BPPV1_Format=2100;THREE.RGB_PVRTC_2BPPV1_Format=2101;THREE.RGBA_PVRTC_4BPPV1_Format=2102;THREE.RGBA_PVRTC_2BPPV1_Format=2103;
|
|
|
THREE.Projector=function(){console.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js.");this.projectVector=function(a,b){console.warn("THREE.Projector: .projectVector() is now vector.project().");a.project(b)};this.unprojectVector=function(a,b){console.warn("THREE.Projector: .unprojectVector() is now vector.unproject().");a.unproject(b)};this.pickingRay=function(a,b){console.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}};
|
|
|
THREE.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js");this.domElement=document.createElement("canvas");this.clear=function(){};this.render=function(){};this.setClearColor=function(){};this.setSize=function(){}};THREE.Color=function(a){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(a)};
|
|
|
THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,set:function(a){a instanceof THREE.Color?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1<d&&(d-=1);return d<1/6?a+6*(c-a)*d:.5>d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b,
|
|
@@ -244,10 +244,10 @@ isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBound
|
|
|
a.center(d);for(var f=0,e=0,g=c.length;e<g;e+=3)b.fromArray(c,e),f=Math.max(f,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(f);isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){var a=this.attributes;if(a.position){var b=a.position.array;if(void 0===a.normal)this.addAttribute("normal",
|
|
|
new THREE.BufferAttribute(new Float32Array(b.length),3));else for(var c=a.normal.array,d=0,e=c.length;d<e;d++)c[d]=0;var c=a.normal.array,g,f,h,k=new THREE.Vector3,l=new THREE.Vector3,n=new THREE.Vector3,p=new THREE.Vector3,m=new THREE.Vector3;if(a.index){var q=a.index.array;0===this.drawcalls.length&&this.addDrawCall(0,q.length);for(var r=0,t=this.drawcalls.length;r<t;++r){e=this.drawcalls[r].start;g=this.drawcalls[r].count;for(var u=this.drawcalls[r].index,d=e,e=e+g;d<e;d+=3)g=3*(u+q[d]),f=3*(u+
|
|
|
q[d+1]),h=3*(u+q[d+2]),k.fromArray(b,g),l.fromArray(b,f),n.fromArray(b,h),p.subVectors(n,l),m.subVectors(k,l),p.cross(m),c[g]+=p.x,c[g+1]+=p.y,c[g+2]+=p.z,c[f]+=p.x,c[f+1]+=p.y,c[f+2]+=p.z,c[h]+=p.x,c[h+1]+=p.y,c[h+2]+=p.z}}else for(d=0,e=b.length;d<e;d+=9)k.fromArray(b,d),l.fromArray(b,d+3),n.fromArray(b,d+6),p.subVectors(n,l),m.subVectors(k,l),p.cross(m),c[d]=p.x,c[d+1]=p.y,c[d+2]=p.z,c[d+3]=p.x,c[d+4]=p.y,c[d+5]=p.z,c[d+6]=p.x,c[d+7]=p.y,c[d+8]=p.z;this.normalizeNormals();a.normal.needsUpdate=
|
|
|
-!0}},computeTangents:function(){function a(a,b,c){p.fromArray(d,3*a);m.fromArray(d,3*b);q.fromArray(d,3*c);r.fromArray(g,2*a);t.fromArray(g,2*b);u.fromArray(g,2*c);w=m.x-p.x;v=q.x-p.x;y=m.y-p.y;x=q.y-p.y;z=m.z-p.z;C=q.z-p.z;A=t.x-r.x;B=u.x-r.x;S=t.y-r.y;I=u.y-r.y;D=1/(A*I-B*S);Q.set((I*w-S*v)*D,(I*y-S*x)*D,(I*z-S*C)*D);K.set((A*v-B*w)*D,(A*x-B*y)*D,(A*C-B*z)*D);k[a].add(Q);k[b].add(Q);k[c].add(Q);l[a].add(K);l[b].add(K);l[c].add(K)}function b(a){qa.fromArray(e,3*a);Z.copy(qa);ga=k[a];T.copy(ga);T.sub(qa.multiplyScalar(qa.dot(ga))).normalize();
|
|
|
-H.crossVectors(Z,ga);la=H.dot(l[a]);ea=0>la?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=ea}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,g=this.attributes.uv.array,f=d.length/
|
|
|
+!0}},computeTangents:function(){function a(a,b,c){p.fromArray(d,3*a);m.fromArray(d,3*b);q.fromArray(d,3*c);r.fromArray(g,2*a);t.fromArray(g,2*b);u.fromArray(g,2*c);w=m.x-p.x;v=q.x-p.x;y=m.y-p.y;x=q.y-p.y;z=m.z-p.z;C=q.z-p.z;A=t.x-r.x;B=u.x-r.x;S=t.y-r.y;I=u.y-r.y;D=1/(A*I-B*S);Q.set((I*w-S*v)*D,(I*y-S*x)*D,(I*z-S*C)*D);K.set((A*v-B*w)*D,(A*x-B*y)*D,(A*C-B*z)*D);k[a].add(Q);k[b].add(Q);k[c].add(Q);l[a].add(K);l[b].add(K);l[c].add(K)}function b(a){oa.fromArray(e,3*a);Z.copy(oa);ga=k[a];T.copy(ga);T.sub(oa.multiplyScalar(oa.dot(ga))).normalize();
|
|
|
+H.crossVectors(Z,ga);pa=H.dot(l[a]);ea=0>pa?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=ea}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("THREE.BufferGeometry: Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,g=this.attributes.uv.array,f=d.length/
|
|
|
3;void 0===this.attributes.tangent&&this.addAttribute("tangent",new THREE.BufferAttribute(new Float32Array(4*f),4));for(var h=this.attributes.tangent.array,k=[],l=[],n=0;n<f;n++)k[n]=new THREE.Vector3,l[n]=new THREE.Vector3;var p=new THREE.Vector3,m=new THREE.Vector3,q=new THREE.Vector3,r=new THREE.Vector2,t=new THREE.Vector2,u=new THREE.Vector2,w,v,y,x,z,C,A,B,S,I,D,Q=new THREE.Vector3,K=new THREE.Vector3,L,E,F,N,R;0===this.drawcalls.length&&this.addDrawCall(0,c.length);var U=this.drawcalls,n=0;
|
|
|
-for(E=U.length;n<E;++n){L=U[n].start;F=U[n].count;var O=U[n].index,f=L;for(L+=F;f<L;f+=3)F=O+c[f],N=O+c[f+1],R=O+c[f+2],a(F,N,R)}var T=new THREE.Vector3,H=new THREE.Vector3,qa=new THREE.Vector3,Z=new THREE.Vector3,ea,ga,la,n=0;for(E=U.length;n<E;++n)for(L=U[n].start,F=U[n].count,O=U[n].index,f=L,L+=F;f<L;f+=3)F=O+c[f],N=O+c[f+1],R=O+c[f+2],b(F),b(N),b(R)}},computeOffsets:function(a){void 0===a&&(a=THREE.BufferGeometry.MaxIndex);for(var b=this.attributes.index.array,c=this.attributes.position.array,
|
|
|
+for(E=U.length;n<E;++n){L=U[n].start;F=U[n].count;var O=U[n].index,f=L;for(L+=F;f<L;f+=3)F=O+c[f],N=O+c[f+1],R=O+c[f+2],a(F,N,R)}var T=new THREE.Vector3,H=new THREE.Vector3,oa=new THREE.Vector3,Z=new THREE.Vector3,ea,ga,pa,n=0;for(E=U.length;n<E;++n)for(L=U[n].start,F=U[n].count,O=U[n].index,f=L,L+=F;f<L;f+=3)F=O+c[f],N=O+c[f+1],R=O+c[f+2],b(F),b(N),b(R)}},computeOffsets:function(a){void 0===a&&(a=THREE.BufferGeometry.MaxIndex);for(var b=this.attributes.index.array,c=this.attributes.position.array,
|
|
|
d=b.length/3,e=new (65535<c.length/3&&65535<THREE.BufferGeometry.MaxIndex?Uint32Array:Uint16Array)(b.length),g=0,f=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,n=0,p=new Int32Array(6),m=new Int32Array(c.length),q=new Int32Array(c.length),r=0;r<c.length;r++)m[r]=-1,q[r]=-1;for(c=0;c<d;c++){for(var t=n=0;3>t;t++)r=b[3*c+t],-1===m[r]?(p[2*t]=r,p[2*t+1]=-1,n++):m[r]<k.index?(p[2*t]=r,p[2*t+1]=-1,l++):(p[2*t]=r,p[2*t+1]=m[r]);if(f+n>k.index+a)for(k={start:g,count:0,index:f},h.push(k),n=0;6>n;n+=2)t=p[n+
|
|
|
1],-1<t&&t<k.index&&(p[n+1]=-1);for(n=0;6>n;n+=2)r=p[n],t=p[n+1],-1===t&&(t=f++),m[r]=t,q[t]=r,e[g++]=t-k.index,k.count++}this.reorderBuffers(e,q,f);this.clearDrawCalls();for(a=0;a<h.length;a++)b=h[a],this.addDrawCall(b.start,b.count,b.index)},merge:function(a,b){if(!1===a instanceof THREE.BufferGeometry)console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",a);else{void 0===b&&(b=0);var c=this.attributes,d;for(d in c)if(void 0!==a.attributes[d])for(var e=
|
|
|
c[d].array,g=a.attributes[d],f=g.array,h=0,g=g.itemSize*b;h<f.length;h++,g++)e[g]=f[h];return this}},normalizeNormals:function(){for(var a=this.attributes.normal.array,b,c,d,e=0,g=a.length;e<g;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},reorderBuffers:function(a,b,c){var d={},e;for(e in this.attributes)"index"!==e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize*c));for(var g=0;g<c;g++){var f=b[g];for(e in this.attributes)if("index"!==
|
|
@@ -495,97 +495,97 @@ tFlip:{type:"f",value:-1}},vertexShader:["varying vec3 vWorldPosition;",THREE.Sh
|
|
|
THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"void main() {\nvec3 direction = normalize( vWorldPosition );\nvec2 sampleUV;\nsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\nsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\ngl_FragColor = texture2D( tEquirect, sampleUV );",THREE.ShaderChunk.logdepthbuf_fragment,
|
|
|
"}"].join("\n")},depthRGBA:{uniforms:{},vertexShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,THREE.ShaderChunk.logdepthbuf_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.default_vertex,THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:[THREE.ShaderChunk.common,THREE.ShaderChunk.logdepthbuf_pars_fragment,"vec4 pack_depth( const in float depth ) {\n\tconst vec4 bit_shift = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bit_mask = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = mod( depth * bit_shift * vec4( 255 ), vec4( 256 ) ) / vec4( 255 );\n\tres -= res.xxyz * bit_mask;\n\treturn res;\n}\nvoid main() {",
|
|
|
THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}};
|
|
|
-THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===T&&(a*=d,b*=d,c*=d);s.clearColor(a,b,c,d)}function c(){J.init();s.viewport(Ha,Ia,Ca,wa);b(Z.r,Z.g,Z.b,ea)}function d(){Wa=mb=null;xa="";Xa=-1;gb=!0;J.reset()}function e(a){a.preventDefault();d();c();na.clear();aa.clear()}function g(a){a=a.target;a.removeEventListener("dispose",g);a:{var b=aa.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)}aa.delete(a)}Da.textures--}
|
|
|
+THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===T&&(a*=d,b*=d,c*=d);s.clearColor(a,b,c,d)}function c(){J.init();s.viewport(Ha,Ia,Ca,va);b(Z.r,Z.g,Z.b,ea)}function d(){Wa=mb=null;wa="";Xa=-1;gb=!0;J.reset()}function e(a){a.preventDefault();d();c();ta.clear();aa.clear()}function g(a){a=a.target;a.removeEventListener("dispose",g);a:{var b=aa.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)}aa.delete(a)}Da.textures--}
|
|
|
function f(a){a=a.target;a.removeEventListener("dispose",f);var b=aa.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);aa.delete(a)}Da.textures--}function h(a){a=a.target;a.removeEventListener("dispose",h);k(a);aa.delete(a)}function k(a){var b=
|
|
|
-aa.get(a).program.program;if(void 0!==b){a.program=void 0;a=0;for(var c=ua.length;a!==c;++a){var d=ua[a];if(d.program===b){0===--d.usedTimes&&(c-=1,ua[a]=ua[c],ua.pop(),s.deleteProgram(b),Da.programs=c);break}}}}function l(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=X.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}J.initAttributes();
|
|
|
-var f=c.attributes;b=b.getAttributes();a=a.defaultAttributeValues;for(var g in b){var h=b[g];if(0<=h){var k=f[g];if(void 0!==k){J.enableAttribute(h);var l=k.itemSize,m=na.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var n=k.data,p=n.stride,k=k.offset;s.bindBuffer(s.ARRAY_BUFFER,m);s.vertexAttribPointer(h,l,s.FLOAT,!1,p*n.array.BYTES_PER_ELEMENT,(d*p+k)*n.array.BYTES_PER_ELEMENT);if(n instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
|
|
|
+aa.get(a).program.program;if(void 0!==b){a.program=void 0;a=0;for(var c=ua.length;a!==c;++a){var d=ua[a];if(d.program===b){0===--d.usedTimes&&(c-=1,ua[a]=ua[c],ua.pop(),s.deleteProgram(b),Da.programs=c);break}}}}function l(a,b,c,d){var e;if(c instanceof THREE.InstancedBufferGeometry&&(e=W.get("ANGLE_instanced_arrays"),null===e)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}J.initAttributes();
|
|
|
+var f=c.attributes;b=b.getAttributes();a=a.defaultAttributeValues;for(var g in b){var h=b[g];if(0<=h){var k=f[g];if(void 0!==k){J.enableAttribute(h);var l=k.itemSize,m=ta.getAttributeBuffer(k);if(k instanceof THREE.InterleavedBufferAttribute){var n=k.data,p=n.stride,k=k.offset;s.bindBuffer(s.ARRAY_BUFFER,m);s.vertexAttribPointer(h,l,s.FLOAT,!1,p*n.array.BYTES_PER_ELEMENT,(d*p+k)*n.array.BYTES_PER_ELEMENT);if(n instanceof THREE.InstancedInterleavedBuffer){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");
|
|
|
return}e.vertexAttribDivisorANGLE(h,n.meshPerAttribute);void 0===c.maxInstancedCount&&(c.maxInstancedCount=n.meshPerAttribute*n.count)}}else if(s.bindBuffer(s.ARRAY_BUFFER,m),s.vertexAttribPointer(h,l,s.FLOAT,!1,0,d*l*4),k instanceof THREE.InstancedBufferAttribute){if(null===e){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferAttribute but hardware does not support extension ANGLE_instanced_arrays.");return}e.vertexAttribDivisorANGLE(h,k.meshPerAttribute);void 0===
|
|
|
c.maxInstancedCount&&(c.maxInstancedCount=k.meshPerAttribute*k.count)}}else if(void 0!==a&&(l=a[g],void 0!==l))switch(l.length){case 2:s.vertexAttrib2fv(h,l);break;case 3:s.vertexAttrib3fv(h,l);break;case 4:s.vertexAttrib4fv(h,l);break;default:s.vertexAttrib1fv(h,l)}}}J.disableUnusedAttributes()}function n(a,b){return b[0]-a[0]}function p(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 m(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 q(a){if(!1!==a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),na.init(a),a instanceof THREE.Light)ga.push(a);else if(a instanceof THREE.Sprite)Ya.push(a);else if(a instanceof THREE.LensFlare)Qa.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b=
|
|
|
-a.material;b.transparent?Ba.push(a):Aa.push(a)}else{var c=na.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Za.intersectsObject(a)||(b=a.material,null!==b&&!0===b.visible&&(aa.get(b)&&(b.program=aa.get(b).program),b.transparent?va.push(c):la.push(c),!0===ka.sortObjects&&(ma.setFromMatrixPosition(a.matrixWorld),ma.applyProjection(Ja),c.z=ma.z)))}a=a.children;b=0;for(c=a.length;b<c;b++)q(a[b])}}function r(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,
|
|
|
+b.object.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function m(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 q(a){if(!1!==a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group))if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),ta.init(a),a instanceof THREE.Light)ga.push(a);else if(a instanceof THREE.Sprite)Ya.push(a);else if(a instanceof THREE.LensFlare)Qa.push(a);else if(a instanceof THREE.ImmediateRenderObject){var b=
|
|
|
+a.material;b.transparent?Ba.push(a):Aa.push(a)}else{var c=ta.objects[a.id];!c||!1!==a.frustumCulled&&!0!==Za.intersectsObject(a)||(b=a.material,null!==b&&!0===b.visible&&(aa.get(b)&&(b.program=aa.get(b).program),b.transparent?za.push(c):pa.push(c),!0===ka.sortObjects&&(la.setFromMatrixPosition(a.matrixWorld),la.applyProjection(Ja),c.z=la.z)))}a=a.children;b=0;for(c=a.length;b<c;b++)q(a[b])}}function r(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);ka.renderBufferDirect(b,c,d,f,k)}}function t(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 u(a){a.side!==THREE.DoubleSide?J.enable(s.CULL_FACE):J.disable(s.CULL_FACE);J.setFlipSided(a.side===
|
|
|
THREE.BackSide);!0===a.transparent?J.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):J.setBlending(THREE.NoBlending);J.setDepthFunc(a.depthFunc);J.setDepthTest(a.depthTest);J.setDepthWrite(a.depthWrite);J.setColorWrite(a.colorWrite);J.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)}function w(a,b,c,d,e){var f,l,m,n;hb=0;var p=aa.get(d);if(d.needsUpdate||!p.program){a:{for(var q=aa.get(d),r=Zb[d.type],t=
|
|
|
0,w=0,u=0,A=0,S=0,B=b.length;S<B;S++){var E=b[S];E.onlyShadow||!1===E.visible||(E instanceof THREE.DirectionalLight&&t++,E instanceof THREE.PointLight&&w++,E instanceof THREE.SpotLight&&u++,E instanceof THREE.HemisphereLight&&A++)}f=t;l=w;m=u;n=A;for(var N,K=0,R=0,H=b.length;R<H;R++){var L=b[R];L.castShadow&&(L instanceof THREE.SpotLight&&K++,L instanceof THREE.DirectionalLight&&K++)}N=K;var ga;if(nb&&e&&e.skeleton&&e.skeleton.useVertexTexture)ga=1024;else{var Q=s.getParameter(s.MAX_VERTEX_UNIFORM_VECTORS),
|
|
|
O=Math.floor((Q-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(O=Math.min(e.skeleton.bones.length,O),O<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+O+" (try OpenGL instead of ANGLE)"));ga=O}var U=F;null!==d.precision&&(U=J.getMaxPrecision(d.precision),U!==d.precision&&console.warn("THREE.WebGLRenderer.initMaterial:",d.precision,"not supported, using",U,"instead."));var P={precision:U,supportsVertexTextures:ob,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:qa,skinning:d.skinning,maxBones:ga,useVertexTexture:nb&&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:N,shadowMapEnabled:oa.enabled&&e.receiveShadow&&0<N,shadowMapType:oa.type,shadowMapDebug:oa.debug,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];r?T.push(r):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var la in d.defines)T.push(la),
|
|
|
-T.push(d.defines[la]);for(la in P)T.push(la),T.push(P[la]);var X=T.join(),va=!0;if(q.program)if(q.program.code!==X)k(d);else if(void 0!==r)break a;else va=!1;else d.addEventListener("dispose",h);if(r){var Aa=THREE.ShaderLib[r];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Aa.uniforms),vertexShader:Aa.vertexShader,fragmentShader:Aa.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var Z,Ba=0,Ya=ua.length;Ba<
|
|
|
-Ya;Ba++){var Qa=ua[Ba];if(Qa.code===X){Z=Qa;va&&Z.usedTimes++;break}}void 0===Z&&(d.__webglShader=q.__webglShader,Z=new THREE.WebGLProgram(ka,X,d,P),ua.push(Z),Da.programs=ua.length);q.program=Z;var fb=Z.getAttributes();if(d.morphTargets)for(var ea=d.numSupportedMorphTargets=0;ea<ka.maxMorphTargets;ea++)0<=fb["morphTarget"+ea]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ea=d.numSupportedMorphNormals=0;ea<ka.maxMorphNormals;ea++)0<=fb["morphNormal"+ea]&&d.numSupportedMorphNormals++;q.uniformsList=
|
|
|
-[];var na=q.program.getUniforms(),xa;for(xa in q.__webglShader.uniforms){var Ha=na[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(),G=p.__webglShader.uniforms;$a.id!==mb&&(s.useProgram($a.program),mb=$a.id,wa=Ca=Ia=!0);d.id!==Xa&&(-1===Xa&&(wa=!0),Xa=d.id,Ca=!0);if(Ia||a!==Wa)s.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),qa&&s.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==
|
|
|
-Wa&&(Wa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ca.cameraPosition&&(ma.setFromMatrixPosition(a.matrixWorld),s.uniform3f(ca.cameraPosition,ma.x,ma.y,ma.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!==
|
|
|
+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:oa,skinning:d.skinning,maxBones:ga,useVertexTexture:nb&&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:N,shadowMapEnabled:ma.enabled&&e.receiveShadow&&0<N,shadowMapType:ma.type,shadowMapDebug:ma.debug,alphaTest:d.alphaTest,metal:d.metal,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},T=[];r?T.push(r):(T.push(d.fragmentShader),T.push(d.vertexShader));if(void 0!==d.defines)for(var W in d.defines)T.push(W),
|
|
|
+T.push(d.defines[W]);for(W in P)T.push(W),T.push(P[W]);var pa=T.join(),za=!0;if(q.program)if(q.program.code!==pa)k(d);else if(void 0!==r)break a;else za=!1;else d.addEventListener("dispose",h);if(r){var Aa=THREE.ShaderLib[r];q.__webglShader={name:d.type,uniforms:THREE.UniformsUtils.clone(Aa.uniforms),vertexShader:Aa.vertexShader,fragmentShader:Aa.fragmentShader}}else q.__webglShader={name:d.type,uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var Z,Ba=0,Ya=ua.length;Ba<
|
|
|
+Ya;Ba++){var Qa=ua[Ba];if(Qa.code===pa){Z=Qa;za&&Z.usedTimes++;break}}void 0===Z&&(d.__webglShader=q.__webglShader,Z=new THREE.WebGLProgram(ka,pa,d,P),ua.push(Z),Da.programs=ua.length);q.program=Z;var fb=Z.getAttributes();if(d.morphTargets)for(var ea=d.numSupportedMorphTargets=0;ea<ka.maxMorphTargets;ea++)0<=fb["morphTarget"+ea]&&d.numSupportedMorphTargets++;if(d.morphNormals)for(ea=d.numSupportedMorphNormals=0;ea<ka.maxMorphNormals;ea++)0<=fb["morphNormal"+ea]&&d.numSupportedMorphNormals++;q.uniformsList=
|
|
|
+[];var ta=q.program.getUniforms(),wa;for(wa in q.__webglShader.uniforms){var Ha=ta[wa];Ha&&q.uniformsList.push([q.__webglShader.uniforms[wa],Ha])}}d.needsUpdate=!1}var Ia=!1,Ca=!1,va=!1,$a=p.program,ca=$a.getUniforms(),G=p.__webglShader.uniforms;$a.id!==mb&&(s.useProgram($a.program),mb=$a.id,va=Ca=Ia=!0);d.id!==Xa&&(-1===Xa&&(va=!0),Xa=d.id,Ca=!0);if(Ia||a!==Wa)s.uniformMatrix4fv(ca.projectionMatrix,!1,a.projectionMatrix.elements),oa&&s.uniform1f(ca.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==
|
|
|
+Wa&&(Wa=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&void 0!==ca.cameraPosition&&(la.setFromMatrixPosition(a.matrixWorld),s.uniform3f(ca.cameraPosition,la.x,la.y,la.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),nb&&e.skeleton&&e.skeleton.useVertexTexture){if(void 0!==ca.boneTexture){var Pa=y();s.uniform1i(ca.boneTexture,Pa);ka.setTexture(e.skeleton.boneTexture,Pa)}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(Ca){c&&d.fog&&(G.fogColor.value=c.color,c instanceof THREE.Fog?(G.fogNear.value=c.near,G.fogFar.value=c.far):c instanceof THREE.FogExp2&&(G.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(gb){var wa=!0,ba,ra,$,Ja=0,pb=0,qb=0,Ka,Za,eb,Ra,rb,da=Ob,sb=da.directional.colors,
|
|
|
-tb=da.directional.positions,ub=da.point.colors,vb=da.point.positions,kb=da.point.distances,lb=da.point.decays,wb=da.spot.colors,xb=da.spot.positions,Jb=da.spot.distances,yb=da.spot.directions,Kb=da.spot.anglesCos,Lb=da.spot.exponents,Mb=da.spot.decays,zb=da.hemi.skyColors,Ab=da.hemi.groundColors,Bb=da.hemi.positions,ab=0,La=0,ya=0,Sa=0,Cb=0,Db=0,Eb=0,ib=0,bb=0,cb=0,Ea=0,Ta=0;ba=0;for(ra=b.length;ba<ra;ba++)$=b[ba],$.onlyShadow||(Ka=$.color,Ra=$.intensity,rb=$.distance,$ instanceof THREE.AmbientLight?
|
|
|
-$.visible&&(Ja+=Ka.r,pb+=Ka.g,qb+=Ka.b):$ instanceof THREE.DirectionalLight?(Cb+=1,$.visible&&(ha.setFromMatrixPosition($.matrixWorld),ma.setFromMatrixPosition($.target.matrixWorld),ha.sub(ma),ha.normalize(),bb=3*ab,tb[bb+0]=ha.x,tb[bb+1]=ha.y,tb[bb+2]=ha.z,x(sb,bb,Ka,Ra),ab+=1)):$ instanceof THREE.PointLight?(Db+=1,$.visible&&(cb=3*La,x(ub,cb,Ka,Ra),ma.setFromMatrixPosition($.matrixWorld),vb[cb+0]=ma.x,vb[cb+1]=ma.y,vb[cb+2]=ma.z,kb[La]=rb,lb[La]=0===$.distance?0:$.decay,La+=1)):$ instanceof THREE.SpotLight?
|
|
|
-(Eb+=1,$.visible&&(Ea=3*ya,x(wb,Ea,Ka,Ra),ha.setFromMatrixPosition($.matrixWorld),xb[Ea+0]=ha.x,xb[Ea+1]=ha.y,xb[Ea+2]=ha.z,Jb[ya]=rb,ma.setFromMatrixPosition($.target.matrixWorld),ha.sub(ma),ha.normalize(),yb[Ea+0]=ha.x,yb[Ea+1]=ha.y,yb[Ea+2]=ha.z,Kb[ya]=Math.cos($.angle),Lb[ya]=$.exponent,Mb[ya]=0===$.distance?0:$.decay,ya+=1)):$ instanceof THREE.HemisphereLight&&(ib+=1,$.visible&&(ha.setFromMatrixPosition($.matrixWorld),ha.normalize(),Ta=3*Sa,Bb[Ta+0]=ha.x,Bb[Ta+1]=ha.y,Bb[Ta+2]=ha.z,Za=$.color,
|
|
|
-eb=$.groundColor,x(zb,Ta,Za,Ra),x(Ab,Ta,eb,Ra),Sa+=1)));ba=3*ab;for(ra=Math.max(sb.length,3*Cb);ba<ra;ba++)sb[ba]=0;ba=3*La;for(ra=Math.max(ub.length,3*Db);ba<ra;ba++)ub[ba]=0;ba=3*ya;for(ra=Math.max(wb.length,3*Eb);ba<ra;ba++)wb[ba]=0;ba=3*Sa;for(ra=Math.max(zb.length,3*ib);ba<ra;ba++)zb[ba]=0;ba=3*Sa;for(ra=Math.max(Ab.length,3*ib);ba<ra;ba++)Ab[ba]=0;da.directional.length=ab;da.point.length=La;da.spot.length=ya;da.hemi.length=Sa;da.ambient[0]=Ja;da.ambient[1]=pb;da.ambient[2]=qb;gb=!1}if(wa){var ja=
|
|
|
+e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&void 0!==ca.boneGlobalMatrices&&s.uniformMatrix4fv(ca.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(Ca){c&&d.fog&&(G.fogColor.value=c.color,c instanceof THREE.Fog?(G.fogNear.value=c.near,G.fogFar.value=c.far):c instanceof THREE.FogExp2&&(G.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(gb){var va=!0,ba,qa,$,Ja=0,pb=0,qb=0,Ka,Za,eb,Ra,rb,da=Ob,sb=da.directional.colors,
|
|
|
+tb=da.directional.positions,ub=da.point.colors,vb=da.point.positions,kb=da.point.distances,lb=da.point.decays,wb=da.spot.colors,xb=da.spot.positions,Jb=da.spot.distances,yb=da.spot.directions,Kb=da.spot.anglesCos,Lb=da.spot.exponents,Mb=da.spot.decays,zb=da.hemi.skyColors,Ab=da.hemi.groundColors,Bb=da.hemi.positions,ab=0,La=0,xa=0,Sa=0,Cb=0,Db=0,Eb=0,ib=0,bb=0,cb=0,Ea=0,Ta=0;ba=0;for(qa=b.length;ba<qa;ba++)$=b[ba],$.onlyShadow||(Ka=$.color,Ra=$.intensity,rb=$.distance,$ instanceof THREE.AmbientLight?
|
|
|
+$.visible&&(Ja+=Ka.r,pb+=Ka.g,qb+=Ka.b):$ instanceof THREE.DirectionalLight?(Cb+=1,$.visible&&(ha.setFromMatrixPosition($.matrixWorld),la.setFromMatrixPosition($.target.matrixWorld),ha.sub(la),ha.normalize(),bb=3*ab,tb[bb+0]=ha.x,tb[bb+1]=ha.y,tb[bb+2]=ha.z,x(sb,bb,Ka,Ra),ab+=1)):$ instanceof THREE.PointLight?(Db+=1,$.visible&&(cb=3*La,x(ub,cb,Ka,Ra),la.setFromMatrixPosition($.matrixWorld),vb[cb+0]=la.x,vb[cb+1]=la.y,vb[cb+2]=la.z,kb[La]=rb,lb[La]=0===$.distance?0:$.decay,La+=1)):$ instanceof THREE.SpotLight?
|
|
|
+(Eb+=1,$.visible&&(Ea=3*xa,x(wb,Ea,Ka,Ra),ha.setFromMatrixPosition($.matrixWorld),xb[Ea+0]=ha.x,xb[Ea+1]=ha.y,xb[Ea+2]=ha.z,Jb[xa]=rb,la.setFromMatrixPosition($.target.matrixWorld),ha.sub(la),ha.normalize(),yb[Ea+0]=ha.x,yb[Ea+1]=ha.y,yb[Ea+2]=ha.z,Kb[xa]=Math.cos($.angle),Lb[xa]=$.exponent,Mb[xa]=0===$.distance?0:$.decay,xa+=1)):$ instanceof THREE.HemisphereLight&&(ib+=1,$.visible&&(ha.setFromMatrixPosition($.matrixWorld),ha.normalize(),Ta=3*Sa,Bb[Ta+0]=ha.x,Bb[Ta+1]=ha.y,Bb[Ta+2]=ha.z,Za=$.color,
|
|
|
+eb=$.groundColor,x(zb,Ta,Za,Ra),x(Ab,Ta,eb,Ra),Sa+=1)));ba=3*ab;for(qa=Math.max(sb.length,3*Cb);ba<qa;ba++)sb[ba]=0;ba=3*La;for(qa=Math.max(ub.length,3*Db);ba<qa;ba++)ub[ba]=0;ba=3*xa;for(qa=Math.max(wb.length,3*Eb);ba<qa;ba++)wb[ba]=0;ba=3*Sa;for(qa=Math.max(zb.length,3*ib);ba<qa;ba++)zb[ba]=0;ba=3*Sa;for(qa=Math.max(Ab.length,3*ib);ba<qa;ba++)Ab[ba]=0;da.directional.length=ab;da.point.length=La;da.spot.length=xa;da.hemi.length=Sa;da.ambient[0]=Ja;da.ambient[1]=pb;da.ambient[2]=qb;gb=!1}if(va){var ja=
|
|
|
Ob;G.ambientLightColor.value=ja.ambient;G.directionalLightColor.value=ja.directional.colors;G.directionalLightDirection.value=ja.directional.positions;G.pointLightColor.value=ja.point.colors;G.pointLightPosition.value=ja.point.positions;G.pointLightDistance.value=ja.point.distances;G.pointLightDecay.value=ja.point.decays;G.spotLightColor.value=ja.spot.colors;G.spotLightPosition.value=ja.spot.positions;G.spotLightDistance.value=ja.spot.distances;G.spotLightDirection.value=ja.spot.directions;G.spotLightAngleCos.value=
|
|
|
ja.spot.anglesCos;G.spotLightExponent.value=ja.spot.exponents;G.spotLightDecay.value=ja.spot.decays;G.hemisphereLightSkyColor.value=ja.hemi.skyColors;G.hemisphereLightGroundColor.value=ja.hemi.groundColors;G.hemisphereLightDirection.value=ja.hemi.positions;v(G,!0)}else v(G,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){G.opacity.value=d.opacity;G.diffuse.value=d.color;G.map.value=d.map;G.specularMap.value=d.specularMap;G.alphaMap.value=
|
|
|
-d.alphaMap;d.bumpMap&&(G.bumpMap.value=d.bumpMap,G.bumpScale.value=d.bumpScale);d.normalMap&&(G.normalMap.value=d.normalMap,G.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 Pb=za.offset,Qb=za.repeat;G.offsetRepeat.value.set(Pb.x,Pb.y,Qb.x,Qb.y)}G.envMap.value=d.envMap;G.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?
|
|
|
+d.alphaMap;d.bumpMap&&(G.bumpMap.value=d.bumpMap,G.bumpScale.value=d.bumpScale);d.normalMap&&(G.normalMap.value=d.normalMap,G.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 Pb=ya.offset,Qb=ya.repeat;G.offsetRepeat.value.set(Pb.x,Pb.y,Qb.x,Qb.y)}G.envMap.value=d.envMap;G.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?
|
|
|
1:-1;G.reflectivity.value=d.reflectivity;G.refractionRatio.value=d.refractionRatio}if(d instanceof THREE.LineBasicMaterial)G.diffuse.value=d.color,G.opacity.value=d.opacity;else if(d instanceof THREE.LineDashedMaterial)G.diffuse.value=d.color,G.opacity.value=d.opacity,G.dashSize.value=d.dashSize,G.totalSize.value=d.dashSize+d.gapSize,G.scale.value=d.scale;else if(d instanceof THREE.PointCloudMaterial){if(G.psColor.value=d.color,G.opacity.value=d.opacity,G.size.value=d.size,G.scale.value=D.height/
|
|
|
2,G.map.value=d.map,null!==d.map){var Rb=d.map.offset,Sb=d.map.repeat;G.offsetRepeat.value.set(Rb.x,Rb.y,Sb.x,Sb.y)}}else d instanceof THREE.MeshPhongMaterial?(G.shininess.value=d.shininess,G.emissive.value=d.emissive,G.specular.value=d.specular,G.lightMap.value=d.lightMap,G.lightMapIntensity.value=d.lightMapIntensity,G.aoMap.value=d.aoMap,G.aoMapIntensity.value=d.aoMapIntensity,G.emissiveMap.value=d.emissiveMap):d instanceof THREE.MeshLambertMaterial?G.emissive.value=d.emissive:d instanceof THREE.MeshBasicMaterial?
|
|
|
(G.aoMap.value=d.aoMap,G.aoMapIntensity.value=d.aoMapIntensity):d instanceof THREE.MeshDepthMaterial?(G.mNear.value=a.near,G.mFar.value=a.far,G.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(G.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&G.shadowMatrix)for(var Ua=0,Fb=0,Nb=b.length;Fb<Nb;Fb++){var Fa=b[Fb];Fa.castShadow&&(Fa instanceof THREE.SpotLight||Fa instanceof THREE.DirectionalLight)&&(G.shadowMap.value[Ua]=Fa.shadowMap,G.shadowMapSize.value[Ua]=Fa.shadowMapSize,
|
|
|
-G.shadowMatrix.value[Ua]=Fa.shadowMatrix,G.shadowDarkness.value[Ua]=Fa.shadowDarkness,G.shadowBias.value[Ua]=Fa.shadowBias,Ua++)}for(var Gb=p.uniformsList,sa,Ma,ta,jb=0,$b=Gb.length;jb<$b;jb++){var W=Gb[jb][0];if(!1!==W.needsUpdate){var Tb=W.type,M=W.value,Y=Gb[jb][1];switch(Tb){case "1i":s.uniform1i(Y,M);break;case "1f":s.uniform1f(Y,M);break;case "2f":s.uniform2f(Y,M[0],M[1]);break;case "3f":s.uniform3f(Y,M[0],M[1],M[2]);break;case "4f":s.uniform4f(Y,M[0],M[1],M[2],M[3]);break;case "1iv":s.uniform1iv(Y,
|
|
|
+G.shadowMatrix.value[Ua]=Fa.shadowMatrix,G.shadowDarkness.value[Ua]=Fa.shadowDarkness,G.shadowBias.value[Ua]=Fa.shadowBias,Ua++)}for(var Gb=p.uniformsList,ra,Ma,sa,jb=0,$b=Gb.length;jb<$b;jb++){var X=Gb[jb][0];if(!1!==X.needsUpdate){var Tb=X.type,M=X.value,Y=Gb[jb][1];switch(Tb){case "1i":s.uniform1i(Y,M);break;case "1f":s.uniform1f(Y,M);break;case "2f":s.uniform2f(Y,M[0],M[1]);break;case "3f":s.uniform3f(Y,M[0],M[1],M[2]);break;case "4f":s.uniform4f(Y,M[0],M[1],M[2],M[3]);break;case "1iv":s.uniform1iv(Y,
|
|
|
M);break;case "3iv":s.uniform3iv(Y,M);break;case "1fv":s.uniform1fv(Y,M);break;case "2fv":s.uniform2fv(Y,M);break;case "3fv":s.uniform3fv(Y,M);break;case "4fv":s.uniform4fv(Y,M);break;case "Matrix3fv":s.uniformMatrix3fv(Y,!1,M);break;case "Matrix4fv":s.uniformMatrix4fv(Y,!1,M);break;case "i":s.uniform1i(Y,M);break;case "f":s.uniform1f(Y,M);break;case "v2":s.uniform2f(Y,M.x,M.y);break;case "v3":s.uniform3f(Y,M.x,M.y,M.z);break;case "v4":s.uniform4f(Y,M.x,M.y,M.z,M.w);break;case "c":s.uniform3f(Y,M.r,
|
|
|
-M.g,M.b);break;case "iv1":s.uniform1iv(Y,M);break;case "iv":s.uniform3iv(Y,M);break;case "fv1":s.uniform1fv(Y,M);break;case "fv":s.uniform3fv(Y,M);break;case "v2v":void 0===W._array&&(W._array=new Float32Array(2*M.length));for(var V=0,pa=M.length;V<pa;V++)ta=2*V,W._array[ta+0]=M[V].x,W._array[ta+1]=M[V].y;s.uniform2fv(Y,W._array);break;case "v3v":void 0===W._array&&(W._array=new Float32Array(3*M.length));V=0;for(pa=M.length;V<pa;V++)ta=3*V,W._array[ta+0]=M[V].x,W._array[ta+1]=M[V].y,W._array[ta+2]=
|
|
|
-M[V].z;s.uniform3fv(Y,W._array);break;case "v4v":void 0===W._array&&(W._array=new Float32Array(4*M.length));V=0;for(pa=M.length;V<pa;V++)ta=4*V,W._array[ta+0]=M[V].x,W._array[ta+1]=M[V].y,W._array[ta+2]=M[V].z,W._array[ta+3]=M[V].w;s.uniform4fv(Y,W._array);break;case "m3":s.uniformMatrix3fv(Y,!1,M.elements);break;case "m3v":void 0===W._array&&(W._array=new Float32Array(9*M.length));V=0;for(pa=M.length;V<pa;V++)M[V].flattenToArrayOffset(W._array,9*V);s.uniformMatrix3fv(Y,!1,W._array);break;case "m4":s.uniformMatrix4fv(Y,
|
|
|
-!1,M.elements);break;case "m4v":void 0===W._array&&(W._array=new Float32Array(16*M.length));V=0;for(pa=M.length;V<pa;V++)M[V].flattenToArrayOffset(W._array,16*V);s.uniformMatrix4fv(Y,!1,W._array);break;case "t":sa=M;Ma=y();s.uniform1i(Y,Ma);if(!sa)continue;if(sa instanceof THREE.CubeTexture||Array.isArray(sa.image)&&6===sa.image.length){var fa=sa,Ub=Ma,Va=aa.get(fa);if(6===fa.image.length)if(0<fa.version&&Va.__version!==fa.version){Va.__image__webglTextureCube||(fa.addEventListener("dispose",g),Va.__image__webglTextureCube=
|
|
|
+M.g,M.b);break;case "iv1":s.uniform1iv(Y,M);break;case "iv":s.uniform3iv(Y,M);break;case "fv1":s.uniform1fv(Y,M);break;case "fv":s.uniform3fv(Y,M);break;case "v2v":void 0===X._array&&(X._array=new Float32Array(2*M.length));for(var V=0,na=M.length;V<na;V++)sa=2*V,X._array[sa+0]=M[V].x,X._array[sa+1]=M[V].y;s.uniform2fv(Y,X._array);break;case "v3v":void 0===X._array&&(X._array=new Float32Array(3*M.length));V=0;for(na=M.length;V<na;V++)sa=3*V,X._array[sa+0]=M[V].x,X._array[sa+1]=M[V].y,X._array[sa+2]=
|
|
|
+M[V].z;s.uniform3fv(Y,X._array);break;case "v4v":void 0===X._array&&(X._array=new Float32Array(4*M.length));V=0;for(na=M.length;V<na;V++)sa=4*V,X._array[sa+0]=M[V].x,X._array[sa+1]=M[V].y,X._array[sa+2]=M[V].z,X._array[sa+3]=M[V].w;s.uniform4fv(Y,X._array);break;case "m3":s.uniformMatrix3fv(Y,!1,M.elements);break;case "m3v":void 0===X._array&&(X._array=new Float32Array(9*M.length));V=0;for(na=M.length;V<na;V++)M[V].flattenToArrayOffset(X._array,9*V);s.uniformMatrix3fv(Y,!1,X._array);break;case "m4":s.uniformMatrix4fv(Y,
|
|
|
+!1,M.elements);break;case "m4v":void 0===X._array&&(X._array=new Float32Array(16*M.length));V=0;for(na=M.length;V<na;V++)M[V].flattenToArrayOffset(X._array,16*V);s.uniformMatrix4fv(Y,!1,X._array);break;case "t":ra=M;Ma=y();s.uniform1i(Y,Ma);if(!ra)continue;if(ra instanceof THREE.CubeTexture||Array.isArray(ra.image)&&6===ra.image.length){var fa=ra,Ub=Ma,Va=aa.get(fa);if(6===fa.image.length)if(0<fa.version&&Va.__version!==fa.version){Va.__image__webglTextureCube||(fa.addEventListener("dispose",g),Va.__image__webglTextureCube=
|
|
|
s.createTexture(),Da.textures++);J.activeTexture(s.TEXTURE0+Ub);J.bindTexture(s.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,fa.flipY);for(var Vb=fa instanceof THREE.CompressedTexture,Hb=fa.image[0]instanceof THREE.DataTexture,Na=[],ia=0;6>ia;ia++)Na[ia]=!ka.autoScaleCubemaps||Vb||Hb?Hb?fa.image[ia].image:fa.image[ia]:C(fa.image[ia],ac);var Wb=Na[0],Xb=THREE.Math.isPowerOfTwo(Wb.width)&&THREE.Math.isPowerOfTwo(Wb.height),Ga=I(fa.format),Ib=I(fa.type);z(s.TEXTURE_CUBE_MAP,
|
|
|
fa,Xb);for(ia=0;6>ia;ia++)if(Vb)for(var Oa,Yb=Na[ia].mipmaps,db=0,bc=Yb.length;db<bc;db++)Oa=Yb[db],fa.format!==THREE.RGBAFormat&&fa.format!==THREE.RGBFormat?-1<J.getCompressedTextureFormats().indexOf(Ga)?J.compressedTexImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ia,db,Ga,Oa.width,Oa.height,0,Oa.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ia,db,Ga,Oa.width,Oa.height,0,Ga,Ib,Oa.data);else Hb?
|
|
|
-J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Ga,Na[ia].width,Na[ia].height,0,Ga,Ib,Na[ia].data):J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Ga,Ga,Ib,Na[ia]);fa.generateMipmaps&&Xb&&s.generateMipmap(s.TEXTURE_CUBE_MAP);Va.__version=fa.version;if(fa.onUpdate)fa.onUpdate(fa)}else J.activeTexture(s.TEXTURE0+Ub),J.bindTexture(s.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube)}else if(sa instanceof THREE.WebGLRenderTargetCube){var cc=sa;J.activeTexture(s.TEXTURE0+Ma);J.bindTexture(s.TEXTURE_CUBE_MAP,
|
|
|
-aa.get(cc).__webglTexture)}else ka.setTexture(sa,Ma);break;case "tv":void 0===W._array&&(W._array=[]);V=0;for(pa=W.value.length;V<pa;V++)W._array[V]=y();s.uniform1iv(Y,W._array);V=0;for(pa=W.value.length;V<pa;V++)sa=W.value[V],Ma=W._array[V],sa&&ka.setTexture(sa,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Tb)}}}}s.uniformMatrix4fv(ca.modelViewMatrix,!1,e._modelViewMatrix.elements);ca.normalMatrix&&s.uniformMatrix3fv(ca.normalMatrix,!1,e._normalMatrix.elements);void 0!==
|
|
|
+J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Ga,Na[ia].width,Na[ia].height,0,Ga,Ib,Na[ia].data):J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+ia,0,Ga,Ga,Ib,Na[ia]);fa.generateMipmaps&&Xb&&s.generateMipmap(s.TEXTURE_CUBE_MAP);Va.__version=fa.version;if(fa.onUpdate)fa.onUpdate(fa)}else J.activeTexture(s.TEXTURE0+Ub),J.bindTexture(s.TEXTURE_CUBE_MAP,Va.__image__webglTextureCube)}else if(ra instanceof THREE.WebGLRenderTargetCube){var cc=ra;J.activeTexture(s.TEXTURE0+Ma);J.bindTexture(s.TEXTURE_CUBE_MAP,
|
|
|
+aa.get(cc).__webglTexture)}else ka.setTexture(ra,Ma);break;case "tv":void 0===X._array&&(X._array=[]);V=0;for(na=X.value.length;V<na;V++)X._array[V]=y();s.uniform1iv(Y,X._array);V=0;for(na=X.value.length;V<na;V++)ra=X.value[V],Ma=X._array[V],ra&&ka.setTexture(ra,Ma);break;default:console.warn("THREE.WebGLRenderer: Unknown uniform type: "+Tb)}}}}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 $a}function v(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 y(){var a=hb;a>=eb&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+eb);hb+=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 z(a,b,c){c?(s.texParameteri(a,s.TEXTURE_WRAP_S,I(b.wrapS)),s.texParameteri(a,s.TEXTURE_WRAP_T,I(b.wrapT)),
|
|
|
s.texParameteri(a,s.TEXTURE_MAG_FILTER,I(b.magFilter)),s.texParameteri(a,s.TEXTURE_MIN_FILTER,I(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,S(b.magFilter)),
|
|
|
-s.texParameteri(a,s.TEXTURE_MIN_FILTER,S(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=X.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||aa.get(b).__currentAnisotropy)&&(s.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
|
|
|
+s.texParameteri(a,s.TEXTURE_MIN_FILTER,S(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&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||aa.get(b).__currentAnisotropy)&&(s.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,
|
|
|
ka.getMaxAnisotropy())),aa.get(b).__currentAnisotropy=b.anisotropy)}function C(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 A(a,b,c){s.bindFramebuffer(s.FRAMEBUFFER,
|
|
|
a);s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,c,aa.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 S(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?s.NEAREST:s.LINEAR}function I(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;if(a===THREE.UnsignedShort565Type)return s.UNSIGNED_SHORT_5_6_5;
|
|
|
-if(a===THREE.ByteType)return s.BYTE;if(a===THREE.ShortType)return s.SHORT;if(a===THREE.UnsignedShortType)return s.UNSIGNED_SHORT;if(a===THREE.IntType)return s.INT;if(a===THREE.UnsignedIntType)return s.UNSIGNED_INT;if(a===THREE.FloatType)return s.FLOAT;b=X.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return s.ALPHA;if(a===THREE.RGBFormat)return s.RGB;if(a===THREE.RGBAFormat)return s.RGBA;if(a===THREE.LuminanceFormat)return s.LUMINANCE;
|
|
|
+if(a===THREE.ByteType)return s.BYTE;if(a===THREE.ShortType)return s.SHORT;if(a===THREE.UnsignedShortType)return s.UNSIGNED_SHORT;if(a===THREE.IntType)return s.INT;if(a===THREE.UnsignedIntType)return s.UNSIGNED_INT;if(a===THREE.FloatType)return s.FLOAT;b=W.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return s.ALPHA;if(a===THREE.RGBFormat)return s.RGB;if(a===THREE.RGBAFormat)return s.RGBA;if(a===THREE.LuminanceFormat)return s.LUMINANCE;
|
|
|
if(a===THREE.LuminanceAlphaFormat)return s.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return s.FUNC_ADD;if(a===THREE.SubtractEquation)return s.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return s.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return s.ZERO;if(a===THREE.OneFactor)return s.ONE;if(a===THREE.SrcColorFactor)return s.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return s.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return s.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return s.ONE_MINUS_SRC_ALPHA;
|
|
|
-if(a===THREE.DstAlphaFactor)return s.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return s.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return s.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return s.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return s.SRC_ALPHA_SATURATE;b=X.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=X.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=X.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;
|
|
|
+if(a===THREE.DstAlphaFactor)return s.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return s.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return s.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return s.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return s.SRC_ALPHA_SATURATE;b=W.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=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 D=void 0!==a.canvas?a.canvas:document.createElement("canvas"),Q=void 0!==a.context?a.context:null,K=D.width,L=D.height,E=1,F=void 0!==a.precision?a.precision:"highp",N=void 0!==a.alpha?a.alpha:!1,R=void 0!==a.depth?a.depth:!0,U=void 0!==a.stencil?a.stencil:!0,O=void 0!==a.antialias?a.antialias:!1,T=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,H=void 0!==a.preserveDrawingBuffer?
|
|
|
-a.preserveDrawingBuffer:!1,qa=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Z=new THREE.Color(0),ea=0,ga=[],la=[],va=[],Aa=[],Ba=[],fb=new Float32Array(8),Ya=[],Qa=[];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,ua=[],mb=null,Pa=null,Xa=-1,xa="",Wa=null,hb=0,
|
|
|
-Ha=0,Ia=0,Ca=D.width,wa=D.height,kb=0,lb=0,Za=new THREE.Frustum,Ja=new THREE.Matrix4,ma=new THREE.Vector3,ha=new THREE.Vector3,gb=!0,Ob={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},P={calls:0,vertices:0,faces:0,points:0};
|
|
|
-this.info={render:P,memory:Da,programs:ua};var s;try{a={alpha:N,depth:R,stencil:U,antialias:O,premultipliedAlpha:T,preserveDrawingBuffer:H};s=Q||D.getContext("webgl",a)||D.getContext("experimental-webgl",a);if(null===s){if(null!==D.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}D.addEventListener("webglcontextlost",e,!1)}catch(Jb){console.error("THREE.WebGLRenderer: "+Jb)}var X=new THREE.WebGLExtensions(s);X.get("OES_texture_float");
|
|
|
-X.get("OES_texture_float_linear");X.get("OES_texture_half_float");X.get("OES_texture_half_float_linear");X.get("OES_standard_derivatives");X.get("ANGLE_instanced_arrays");X.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);qa&&X.get("EXT_frag_depth");var J=new THREE.WebGLState(s,X,I),aa=new THREE.WebGLProperties,na=new THREE.WebGLObjects(s,aa,this.info);c();this.context=s;this.extensions=X;this.state=J;var oa=new THREE.WebGLShadowMap(this,ga,na);this.shadowMap=oa;var eb=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),
|
|
|
-Q=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Kb=s.getParameter(s.MAX_TEXTURE_SIZE),ac=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),ob=0<Q,nb=ob&&X.get("OES_texture_float"),Lb=X.get("ANGLE_instanced_arrays"),Q=J.getMaxPrecision(F);Q!==F&&(console.warn("THREE.WebGLRenderer:",F,"not supported, using",Q,"instead."),F=Q);var Mb=new THREE.SpritePlugin(this,Ya),Nb=new THREE.LensFlarePlugin(this,Qa);this.getContext=function(){return s};this.getContextAttributes=function(){return s.getContextAttributes()};
|
|
|
-this.forceContextLoss=function(){X.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return ob};this.supportsInstancedArrays=function(){return Lb};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=X.get("EXT_texture_filter_anisotropic");return a=null!==b?s.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return F};this.getPixelRatio=function(){return E};this.setPixelRatio=function(a){void 0!==a&&(E=
|
|
|
-a)};this.getSize=function(){return{width:K,height:L}};this.setSize=function(a,b,c){K=a;L=b;D.width=a*E;D.height=b*E;!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*E;Ia=b*E;Ca=c*E;wa=d*E;s.viewport(Ha,Ia,Ca,wa)};this.setScissor=function(a,b,c,d){s.scissor(a*E,b*E,c*E,d*E)};this.enableScissorTest=function(a){J.setScissorTest(a)};this.getClearColor=function(){return Z};this.setClearColor=function(a,c){Z.set(a);ea=void 0!==c?c:1;
|
|
|
+a.preserveDrawingBuffer:!1,oa=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,Z=new THREE.Color(0),ea=0,ga=[],pa=[],za=[],Aa=[],Ba=[],fb=new Float32Array(8),Ya=[],Qa=[];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,ua=[],mb=null,Pa=null,Xa=-1,wa="",Wa=null,hb=0,
|
|
|
+Ha=0,Ia=0,Ca=D.width,va=D.height,kb=0,lb=0,Za=new THREE.Frustum,Ja=new THREE.Matrix4,la=new THREE.Vector3,ha=new THREE.Vector3,gb=!0,Ob={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},P={calls:0,vertices:0,faces:0,points:0};
|
|
|
+this.info={render:P,memory:Da,programs:ua};var s;try{a={alpha:N,depth:R,stencil:U,antialias:O,premultipliedAlpha:T,preserveDrawingBuffer:H};s=Q||D.getContext("webgl",a)||D.getContext("experimental-webgl",a);if(null===s){if(null!==D.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}D.addEventListener("webglcontextlost",e,!1)}catch(Jb){console.error("THREE.WebGLRenderer: "+Jb)}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);oa&&W.get("EXT_frag_depth");var J=new THREE.WebGLState(s,W,I),aa=new THREE.WebGLProperties,ta=new THREE.WebGLObjects(s,aa,this.info);c();this.context=s;this.extensions=W;this.state=J;var ma=new THREE.WebGLShadowMap(this,ga,ta);this.shadowMap=ma;var eb=s.getParameter(s.MAX_TEXTURE_IMAGE_UNITS),
|
|
|
+Q=s.getParameter(s.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Kb=s.getParameter(s.MAX_TEXTURE_SIZE),ac=s.getParameter(s.MAX_CUBE_MAP_TEXTURE_SIZE),ob=0<Q,nb=ob&&W.get("OES_texture_float"),Lb=W.get("ANGLE_instanced_arrays"),Q=J.getMaxPrecision(F);Q!==F&&(console.warn("THREE.WebGLRenderer:",F,"not supported, using",Q,"instead."),F=Q);var Mb=new THREE.SpritePlugin(this,Ya),Nb=new THREE.LensFlarePlugin(this,Qa);this.getContext=function(){return s};this.getContextAttributes=function(){return s.getContextAttributes()};
|
|
|
+this.forceContextLoss=function(){W.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return ob};this.supportsInstancedArrays=function(){return Lb};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):0}}();this.getPrecision=function(){return F};this.getPixelRatio=function(){return E};this.setPixelRatio=function(a){void 0!==a&&(E=
|
|
|
+a)};this.getSize=function(){return{width:K,height:L}};this.setSize=function(a,b,c){K=a;L=b;D.width=a*E;D.height=b*E;!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*E;Ia=b*E;Ca=c*E;va=d*E;s.viewport(Ha,Ia,Ca,va)};this.setScissor=function(a,b,c,d){s.scissor(a*E,b*E,c*E,d*E)};this.enableScissorTest=function(a){J.setScissorTest(a)};this.getClearColor=function(){return Z};this.setClearColor=function(a,c){Z.set(a);ea=void 0!==c?c:1;
|
|
|
b(Z.r,Z.g,Z.b,ea)};this.getClearAlpha=function(){return ea};this.setClearAlpha=function(a){ea=a;b(Z.r,Z.g,Z.b,ea)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=s.COLOR_BUFFER_BIT;if(void 0===b||b)d|=s.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=s.STENCIL_BUFFER_BIT;s.clear(d)};this.clearColor=function(){s.clear(s.COLOR_BUFFER_BIT)};this.clearDepth=function(){s.clear(s.DEPTH_BUFFER_BIT)};this.clearStencil=function(){s.clear(s.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);
|
|
|
this.clear(b,c,d)};this.resetGLState=d;this.dispose=function(){D.removeEventListener("webglcontextlost",e,!1)};this.renderBufferImmediate=function(a,b,c){J.initAttributes();var d=aa.get(a);a.hasPositions&&!d.__webglVertexBuffer&&(d.__webglVertexBuffer=s.createBuffer());a.hasNormals&&!d.__webglNormalBuffer&&(d.__webglNormalBuffer=s.createBuffer());a.hasUvs&&!d.__webglUvBuffer&&(d.__webglUvBuffer=s.createBuffer());a.hasColors&&!d.__webglColorBuffer&&(d.__webglColorBuffer=s.createBuffer());b=b.getAttributes();
|
|
|
a.hasPositions&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglVertexBuffer),s.bufferData(s.ARRAY_BUFFER,a.positionArray,s.DYNAMIC_DRAW),J.enableAttribute(b.position),s.vertexAttribPointer(b.position,3,s.FLOAT,!1,0,0));if(a.hasNormals){s.bindBuffer(s.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,r,t=3*a.count;for(r=0;r<t;r+=9)q=a.normalArray,e=q[r],f=q[r+1],g=q[r+2],h=q[r+3],l=q[r+4],n=q[r+5],k=q[r+6],m=q[r+7],p=q[r+
|
|
|
8],e=(e+h+k)/3,f=(f+l+m)/3,g=(g+n+p)/3,q[r]=e,q[r+1]=f,q[r+2]=g,q[r+3]=e,q[r+4]=f,q[r+5]=g,q[r+6]=e,q[r+7]=f,q[r+8]=g}s.bufferData(s.ARRAY_BUFFER,a.normalArray,s.DYNAMIC_DRAW);J.enableAttribute(b.normal);s.vertexAttribPointer(b.normal,3,s.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(s.bindBuffer(s.ARRAY_BUFFER,d.__webglUvBuffer),s.bufferData(s.ARRAY_BUFFER,a.uvArray,s.DYNAMIC_DRAW),J.enableAttribute(b.uv),s.vertexAttribPointer(b.uv,2,s.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(s.bindBuffer(s.ARRAY_BUFFER,
|
|
|
-d.__webglColorBuffer),s.bufferData(s.ARRAY_BUFFER,a.colorArray,s.DYNAMIC_DRAW),J.enableAttribute(b.color),s.vertexAttribPointer(b.color,3,s.FLOAT,!1,0,0));J.disableUnusedAttributes();s.drawArrays(s.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d instanceof THREE.MeshFaceMaterial){var g=d.materials,h=0;for(f=g.length;h<f;h++)d=g[h],null!==d&&!1!==d.visible&&ka.renderBufferDirect(a,b,c,d,e,h)}else{u(d);g=na.geometries.get(e);a=w(a,b,c,d,e);h=!1;b=g.id+"_"+a.id+"_"+
|
|
|
-(d.wireframe?1:0);b!==xa&&(xa=b,h=!0);var k=e.morphTargetInfluences;if(void 0!==k){b=[];h=0;for(c=k.length;h<c;h++){var m=k[h];b.push([m,h])}b.sort(n);8<b.length&&(b.length=8);k=g.morphAttributes;h=0;for(c=b.length;h<c;h++)m=b[h],fb[h]=m[0],0!==m[0]?(m=m[1],!0===d.morphTargets&&g.addAttribute("morphTarget"+h,k.position[m]),!0===d.morphNormals&&g.addAttribute("morphNormal"+h,k.normal[m])):(!0===d.morphTargets&&g.removeAttribute("morphTarget"+h),!0===d.morphNormals&&g.removeAttribute("morphNormal"+
|
|
|
-h));h=a.getUniforms();null!==h.morphTargetInfluences&&s.uniform1fv(h.morphTargetInfluences,fb);h=!0}if(e instanceof THREE.Mesh)a:{e=d;d=s.TRIANGLES;!0===e.wireframe&&(d=s.LINES,J.setLineWidth(e.wireframeLinewidth*E));var p=g.attributes.index;if(p)if(k=na.getAttributeBuffer(p),p.array instanceof Uint32Array&&X.get("OES_element_index_uint")?(b=s.UNSIGNED_INT,c=4):(b=s.UNSIGNED_SHORT,c=2),m=g.drawcalls,0===m.length){h&&(l(e,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,k));if(g instanceof THREE.InstancedBufferGeometry&&
|
|
|
-0<g.maxInstancedCount){var q=X.get("ANGLE_instanced_arrays");if(null===q){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}q.drawElementsInstancedANGLE(d,p.array.length,b,0,g.maxInstancedCount)}else s.drawElements(d,p.array.length,b,0);P.calls++;P.vertices+=p.array.length;P.faces+=p.array.length/3}else for(var h=!0,p=0,r=m.length;p<r;p++){if(q=m[p].index,void 0===f||m[p].materialIndex===f){h&&
|
|
|
-(l(e,a,g,q),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,k));if(g instanceof THREE.InstancedBufferGeometry&&0<m[p].instances){q=X.get("ANGLE_instanced_arrays");if(null===q){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}q.drawElementsInstancedANGLE(d,m[p].count,b,m[p].start*c,m[p].count,b,m[p].instances)}else s.drawElements(d,m[p].count,b,m[p].start*c);P.calls++;P.vertices+=m[p].count;P.faces+=m[p].count/
|
|
|
-3}}else if(m=g.drawcalls,0===m.length){h&&l(e,a,g,0);f=g.attributes.position;if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){q=X.get("ANGLE_instanced_arrays");if(null===q){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}f instanceof THREE.InterleavedBufferAttribute?q.drawArraysInstancedANGLE(d,0,f.data.count,g.maxInstancedCount):q.drawArraysInstancedANGLE(d,0,f.count,
|
|
|
-g.maxInstancedCount)}else f instanceof THREE.InterleavedBufferAttribute?s.drawArrays(d,0,f.data.count):s.drawArrays(d,0,f.count);P.calls++;P.vertices+=f.count;P.faces+=f.array.length/3}else for(h&&l(e,a,g,0),p=0,r=m.length;p<r;p++)if(void 0===f||m[p].materialIndex===f){if(g instanceof THREE.InstancedBufferGeometry){console.error("THREE.WebGLRenderer.renderMesh: cannot use drawCalls with THREE.InstancedBufferGeometry.");break a}else s.drawArrays(d,m[p].start,m[p].count);P.calls++;P.vertices+=m[p].count;
|
|
|
-P.faces+=m[p].count/3}}else if(e instanceof THREE.Line)if(e=e instanceof THREE.LineSegments?s.LINES:s.LINE_STRIP,J.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*E),q=g.attributes.index)if(m=na.getAttributeBuffer(q),q.array instanceof Uint32Array&&X.get("OES_element_index_uint")?(c=s.UNSIGNED_INT,k=4):(c=s.UNSIGNED_SHORT,k=2),b=g.drawcalls,0===b.length)h&&(l(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(e,q.array.length,c,0),P.calls++,P.vertices+=q.array.length;else for(1<b.length&&
|
|
|
-(h=!0),q=0,p=b.length;q<p;q++){if(r=b[q].index,void 0===f||b[q].materialIndex!==f)h&&(l(d,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(e,b[q].count,c,b[q].start*k),P.calls++,P.vertices+=b[q].count}else if(h&&l(d,a,g,0),a=g.attributes.position,b=g.drawcalls,0===b.length)s.drawArrays(e,0,a.array.length/3),P.calls++,P.vertices+=a.array.length/3;else for(q=0,p=b.length;q<p;q++){if(void 0===f||b[q].materialIndex===f)s.drawArrays(e,b[q].index,b[q].count),P.calls++,P.vertices+=b[q].count}else if(e instanceof
|
|
|
-THREE.PointCloud)if(e=d,b=h,d=s.POINTS,q=g.attributes.index)if(m=na.getAttributeBuffer(q),q.array instanceof Uint32Array&&X.get("OES_element_index_uint")?(c=s.UNSIGNED_INT,k=4):(c=s.UNSIGNED_SHORT,k=2),h=g.drawcalls,0===h.length)b&&(l(e,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(d,q.array.length,c,0),P.calls++,P.points+=q.array.length;else for(1<h.length&&(b=!0),q=0,p=h.length;q<p;q++){if(r=h[q].index,void 0===f||h[q].materialIndex===f)b&&(l(e,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,
|
|
|
-m)),s.drawElements(d,h[q].count,c,h[q].start*k),P.calls++,P.points+=h[q].count}else if(b&&l(e,a,g,0),a=g.attributes.position,h=g.drawcalls,0===h.length)s.drawArrays(d,0,a.array.length/3),P.calls++,P.points+=a.array.length/3;else for(q=0,p=h.length;q<p;q++)if(void 0===f||h[q].materialIndex===f)s.drawArrays(d,h[q].index,h[q].count),P.calls++,P.points+=h[q].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="";Xa=-1;Wa=null;gb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ja.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Za.setFromMatrix(Ja);ga.length=0;la.length=0;va.length=0;Aa.length=0;Ba.length=0;Ya.length=0;Qa.length=0;q(a);!0===ka.sortObjects&&(la.sort(p),va.sort(m));na.update(la);na.update(va);oa.render(a,b);P.calls=0;P.vertices=0;P.faces=0;P.points=0;this.setRenderTarget(c);(this.autoClear||
|
|
|
-d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,r(la,b,ga,e,d),r(va,b,ga,e,d),t(Aa,b,ga,e,d),t(Ba,b,ga,e,d)):(J.setBlending(THREE.NoBlending),r(la,b,ga,e,null),t(Aa,b,ga,e,null),r(va,b,ga,e,null),t(Ba,b,ga,e,null));Mb.render(a,b);Nb.render(a,b,kb,lb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(J.bindTexture(s.TEXTURE_CUBE_MAP,aa.get(c).__webglTexture),
|
|
|
-s.generateMipmap(s.TEXTURE_CUBE_MAP),J.bindTexture(s.TEXTURE_CUBE_MAP,null)):(J.bindTexture(s.TEXTURE_2D,aa.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_2D),J.bindTexture(s.TEXTURE_2D,null)));J.setDepthTest(!0);J.setDepthWrite(!0);J.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){u(d);var f=w(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?J.disable(s.CULL_FACE):(b===THREE.FrontFaceDirectionCW?s.frontFace(s.CW):s.frontFace(s.CCW),a===THREE.CullFaceBack?s.cullFace(s.BACK):a===THREE.CullFaceFront?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK),J.enable(s.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",g),c.__webglTexture=s.createTexture(),Da.textures++);J.activeTexture(s.TEXTURE0+b);J.bindTexture(s.TEXTURE_2D,c.__webglTexture);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,a.flipY);s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,
|
|
|
-a.premultiplyAlpha);s.pixelStorei(s.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=C(a.image,Kb);var e=a.image,d=THREE.Math.isPowerOfTwo(e.width)&&THREE.Math.isPowerOfTwo(e.height),f=I(a.format),h=I(a.type);z(s.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var l=0,m=k.length;l<m;l++)e=k[l],J.texImage2D(s.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);a.generateMipmaps=!1}else J.texImage2D(s.TEXTURE_2D,0,f,e.width,e.height,0,f,h,e.data);else if(a instanceof THREE.CompressedTexture)for(l=
|
|
|
-0,m=k.length;l<m;l++)e=k[l],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<J.getCompressedTextureFormats().indexOf(f)?J.compressedTexImage2D(s.TEXTURE_2D,l,f,e.width,e.height,0,e.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):J.texImage2D(s.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);else if(0<k.length&&d){l=0;for(m=k.length;l<m;l++)e=k[l],J.texImage2D(s.TEXTURE_2D,l,f,f,h,e);a.generateMipmaps=!1}else J.texImage2D(s.TEXTURE_2D,
|
|
|
-0,f,f,h,a.image);a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_2D);c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else J.activeTexture(s.TEXTURE0+b),J.bindTexture(s.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",f);c.__webglTexture=s.createTexture();Da.textures++;
|
|
|
-var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),e=I(a.format),g=I(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];J.bindTexture(s.TEXTURE_CUBE_MAP,c.__webglTexture);z(s.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=s.createFramebuffer(),c.__webglRenderbuffer[h]=s.createRenderbuffer(),J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),A(c.__webglFramebuffer[h],a,s.TEXTURE_CUBE_MAP_POSITIVE_X+h),B(c.__webglRenderbuffer[h],
|
|
|
-a);a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=s.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:s.createRenderbuffer(),J.bindTexture(s.TEXTURE_2D,c.__webglTexture),z(s.TEXTURE_2D,a,d),J.texImage2D(s.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),A(c.__webglFramebuffer,a,s.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):
|
|
|
-a.depthBuffer&&a.stencilBuffer&&s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):B(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_2D);b?J.bindTexture(s.TEXTURE_CUBE_MAP,null):J.bindTexture(s.TEXTURE_2D,null);s.bindRenderbuffer(s.RENDERBUFFER,null);s.bindFramebuffer(s.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!==Pa&&(s.bindFramebuffer(s.FRAMEBUFFER,b),s.viewport(d,e,c,a),Pa=b);kb=c;lb=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!==Pa&&(s.bindFramebuffer(s.FRAMEBUFFER,aa.get(a).__webglFramebuffer),g=!0);s.checkFramebufferStatus(s.FRAMEBUFFER)===s.FRAMEBUFFER_COMPLETE?s.readPixels(b,c,d,e,s.RGBA,s.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&s.bindFramebuffer(s.FRAMEBUFFER,Pa)}};this.supportsFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).");
|
|
|
-return X.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");return X.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).");return X.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).");
|
|
|
-return X.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");return X.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");return X.get("EXT_blend_minmax")};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 oa.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");oa.enabled=
|
|
|
-a}},shadowMapType:{get:function(){return oa.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");oa.type=a}},shadowMapCullFace:{get:function(){return oa.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");oa.cullFace=a}},shadowMapDebug:{get:function(){return oa.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");oa.debug=a}}})};
|
|
|
+d.__webglColorBuffer),s.bufferData(s.ARRAY_BUFFER,a.colorArray,s.DYNAMIC_DRAW),J.enableAttribute(b.color),s.vertexAttribPointer(b.color,3,s.FLOAT,!1,0,0));J.disableUnusedAttributes();s.drawArrays(s.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(d instanceof THREE.MeshFaceMaterial){var g=d.materials,h=0;for(f=g.length;h<f;h++)d=g[h],null!==d&&!1!==d.visible&&ka.renderBufferDirect(a,b,c,d,e,h)}else{u(d);g=ta.update(e);a=w(a,b,c,d,e);h=!1;b=g.id+"_"+a.id+"_"+(d.wireframe?
|
|
|
+1:0);b!==wa&&(wa=b,h=!0);var k=e.morphTargetInfluences;if(void 0!==k){b=[];h=0;for(c=k.length;h<c;h++){var m=k[h];b.push([m,h])}b.sort(n);8<b.length&&(b.length=8);k=g.morphAttributes;h=0;for(c=b.length;h<c;h++)m=b[h],fb[h]=m[0],0!==m[0]?(m=m[1],!0===d.morphTargets&&g.addAttribute("morphTarget"+h,k.position[m]),!0===d.morphNormals&&g.addAttribute("morphNormal"+h,k.normal[m])):(!0===d.morphTargets&&g.removeAttribute("morphTarget"+h),!0===d.morphNormals&&g.removeAttribute("morphNormal"+h));h=a.getUniforms();
|
|
|
+null!==h.morphTargetInfluences&&s.uniform1fv(h.morphTargetInfluences,fb);h=!0}if(e instanceof THREE.Mesh)a:{e=d;d=s.TRIANGLES;!0===e.wireframe&&(d=s.LINES,J.setLineWidth(e.wireframeLinewidth*E));var p=g.attributes.index;if(p)if(k=ta.getAttributeBuffer(p),p.array instanceof Uint32Array&&W.get("OES_element_index_uint")?(b=s.UNSIGNED_INT,c=4):(b=s.UNSIGNED_SHORT,c=2),m=g.drawcalls,0===m.length){h&&(l(e,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,k));if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){var q=
|
|
|
+W.get("ANGLE_instanced_arrays");if(null===q){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}q.drawElementsInstancedANGLE(d,p.array.length,b,0,g.maxInstancedCount)}else s.drawElements(d,p.array.length,b,0);P.calls++;P.vertices+=p.array.length;P.faces+=p.array.length/3}else for(var h=!0,p=0,r=m.length;p<r;p++){if(q=m[p].index,void 0===f||m[p].materialIndex===f){h&&(l(e,a,g,q),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,
|
|
|
+k));if(g instanceof THREE.InstancedBufferGeometry&&0<m[p].instances){q=W.get("ANGLE_instanced_arrays");if(null===q){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}q.drawElementsInstancedANGLE(d,m[p].count,b,m[p].start*c,m[p].count,b,m[p].instances)}else s.drawElements(d,m[p].count,b,m[p].start*c);P.calls++;P.vertices+=m[p].count;P.faces+=m[p].count/3}}else if(m=g.drawcalls,0===m.length){h&&
|
|
|
+l(e,a,g,0);f=g.attributes.position;if(g instanceof THREE.InstancedBufferGeometry&&0<g.maxInstancedCount){q=W.get("ANGLE_instanced_arrays");if(null===q){console.error("THREE.WebGLRenderer.renderMesh: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}f instanceof THREE.InterleavedBufferAttribute?q.drawArraysInstancedANGLE(d,0,f.data.count,g.maxInstancedCount):q.drawArraysInstancedANGLE(d,0,f.count,g.maxInstancedCount)}else f instanceof THREE.InterleavedBufferAttribute?
|
|
|
+s.drawArrays(d,0,f.data.count):s.drawArrays(d,0,f.count);P.calls++;P.vertices+=f.count;P.faces+=f.array.length/3}else for(h&&l(e,a,g,0),p=0,r=m.length;p<r;p++)if(void 0===f||m[p].materialIndex===f){if(g instanceof THREE.InstancedBufferGeometry){console.error("THREE.WebGLRenderer.renderMesh: cannot use drawCalls with THREE.InstancedBufferGeometry.");break a}else s.drawArrays(d,m[p].start,m[p].count);P.calls++;P.vertices+=m[p].count;P.faces+=m[p].count/3}}else if(e instanceof THREE.Line)if(e=e instanceof
|
|
|
+THREE.LineSegments?s.LINES:s.LINE_STRIP,J.setLineWidth((void 0!==d.linewidth?d.linewidth:1)*E),q=g.attributes.index)if(m=ta.getAttributeBuffer(q),q.array instanceof Uint32Array&&W.get("OES_element_index_uint")?(c=s.UNSIGNED_INT,k=4):(c=s.UNSIGNED_SHORT,k=2),b=g.drawcalls,0===b.length)h&&(l(d,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(e,q.array.length,c,0),P.calls++,P.vertices+=q.array.length;else for(1<b.length&&(h=!0),q=0,p=b.length;q<p;q++){if(r=b[q].index,void 0===f||b[q].materialIndex!==
|
|
|
+f)h&&(l(d,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(e,b[q].count,c,b[q].start*k),P.calls++,P.vertices+=b[q].count}else if(h&&l(d,a,g,0),a=g.attributes.position,b=g.drawcalls,0===b.length)s.drawArrays(e,0,a.array.length/3),P.calls++,P.vertices+=a.array.length/3;else for(q=0,p=b.length;q<p;q++){if(void 0===f||b[q].materialIndex===f)s.drawArrays(e,b[q].index,b[q].count),P.calls++,P.vertices+=b[q].count}else if(e instanceof THREE.PointCloud)if(e=d,b=h,d=s.POINTS,q=g.attributes.index)if(m=
|
|
|
+ta.getAttributeBuffer(q),q.array instanceof Uint32Array&&W.get("OES_element_index_uint")?(c=s.UNSIGNED_INT,k=4):(c=s.UNSIGNED_SHORT,k=2),h=g.drawcalls,0===h.length)b&&(l(e,a,g,0),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(d,q.array.length,c,0),P.calls++,P.points+=q.array.length;else for(1<h.length&&(b=!0),q=0,p=h.length;q<p;q++){if(r=h[q].index,void 0===f||h[q].materialIndex===f)b&&(l(e,a,g,r),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,m)),s.drawElements(d,h[q].count,c,h[q].start*k),P.calls++,
|
|
|
+P.points+=h[q].count}else if(b&&l(e,a,g,0),a=g.attributes.position,h=g.drawcalls,0===h.length)s.drawArrays(d,0,a.array.length/3),P.calls++,P.points+=a.array.length/3;else for(q=0,p=h.length;q<p;q++)if(void 0===f||h[q].materialIndex===f)s.drawArrays(d,h[q].index,h[q].count),P.calls++,P.points+=h[q].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;wa="";Xa=-1;Wa=null;gb=!0;
|
|
|
+!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ja.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Za.setFromMatrix(Ja);ga.length=0;pa.length=0;za.length=0;Aa.length=0;Ba.length=0;Ya.length=0;Qa.length=0;q(a);!0===ka.sortObjects&&(pa.sort(p),za.sort(m));ma.render(a,b);P.calls=0;P.vertices=0;P.faces=0;P.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
|
|
|
+a.overrideMaterial?(d=a.overrideMaterial,r(pa,b,ga,e,d),r(za,b,ga,e,d),t(Aa,b,ga,e,d),t(Ba,b,ga,e,d)):(J.setBlending(THREE.NoBlending),r(pa,b,ga,e,null),t(Aa,b,ga,e,null),r(za,b,ga,e,null),t(Ba,b,ga,e,null));Mb.render(a,b);Nb.render(a,b,kb,lb);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&(c instanceof THREE.WebGLRenderTargetCube?(J.bindTexture(s.TEXTURE_CUBE_MAP,aa.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_CUBE_MAP),J.bindTexture(s.TEXTURE_CUBE_MAP,
|
|
|
+null)):(J.bindTexture(s.TEXTURE_2D,aa.get(c).__webglTexture),s.generateMipmap(s.TEXTURE_2D),J.bindTexture(s.TEXTURE_2D,null)));J.setDepthTest(!0);J.setDepthWrite(!0);J.setColorWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){u(d);var f=w(a,b,c,d,e);wa="";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?J.disable(s.CULL_FACE):(b===THREE.FrontFaceDirectionCW?s.frontFace(s.CW):s.frontFace(s.CCW),a===THREE.CullFaceBack?s.cullFace(s.BACK):a===THREE.CullFaceFront?s.cullFace(s.FRONT):s.cullFace(s.FRONT_AND_BACK),J.enable(s.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",g),c.__webglTexture=s.createTexture(),Da.textures++);J.activeTexture(s.TEXTURE0+b);J.bindTexture(s.TEXTURE_2D,c.__webglTexture);s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,a.flipY);s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);s.pixelStorei(s.UNPACK_ALIGNMENT,a.unpackAlignment);
|
|
|
+a.image=C(a.image,Kb);var e=a.image,d=THREE.Math.isPowerOfTwo(e.width)&&THREE.Math.isPowerOfTwo(e.height),f=I(a.format),h=I(a.type);z(s.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var l=0,m=k.length;l<m;l++)e=k[l],J.texImage2D(s.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);a.generateMipmaps=!1}else J.texImage2D(s.TEXTURE_2D,0,f,e.width,e.height,0,f,h,e.data);else if(a instanceof THREE.CompressedTexture)for(l=0,m=k.length;l<m;l++)e=k[l],a.format!==THREE.RGBAFormat&&
|
|
|
+a.format!==THREE.RGBFormat?-1<J.getCompressedTextureFormats().indexOf(f)?J.compressedTexImage2D(s.TEXTURE_2D,l,f,e.width,e.height,0,e.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):J.texImage2D(s.TEXTURE_2D,l,f,e.width,e.height,0,f,h,e.data);else if(0<k.length&&d){l=0;for(m=k.length;l<m;l++)e=k[l],J.texImage2D(s.TEXTURE_2D,l,f,f,h,e);a.generateMipmaps=!1}else J.texImage2D(s.TEXTURE_2D,0,f,f,h,a.image);a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_2D);
|
|
|
+c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else J.activeTexture(s.TEXTURE0+b),J.bindTexture(s.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",f);c.__webglTexture=s.createTexture();Da.textures++;var d=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),
|
|
|
+e=I(a.format),g=I(a.type);if(b){c.__webglFramebuffer=[];c.__webglRenderbuffer=[];J.bindTexture(s.TEXTURE_CUBE_MAP,c.__webglTexture);z(s.TEXTURE_CUBE_MAP,a,d);for(var h=0;6>h;h++)c.__webglFramebuffer[h]=s.createFramebuffer(),c.__webglRenderbuffer[h]=s.createRenderbuffer(),J.texImage2D(s.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,e,a.width,a.height,0,e,g,null),A(c.__webglFramebuffer[h],a,s.TEXTURE_CUBE_MAP_POSITIVE_X+h),B(c.__webglRenderbuffer[h],a);a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_CUBE_MAP)}else c.__webglFramebuffer=
|
|
|
+s.createFramebuffer(),c.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:s.createRenderbuffer(),J.bindTexture(s.TEXTURE_2D,c.__webglTexture),z(s.TEXTURE_2D,a,d),J.texImage2D(s.TEXTURE_2D,0,e,a.width,a.height,0,e,g,null),A(c.__webglFramebuffer,a,s.TEXTURE_2D),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?s.framebufferRenderbuffer(s.FRAMEBUFFER,s.DEPTH_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&s.framebufferRenderbuffer(s.FRAMEBUFFER,
|
|
|
+s.DEPTH_STENCIL_ATTACHMENT,s.RENDERBUFFER,c.__webglRenderbuffer):B(c.__webglRenderbuffer,a),a.generateMipmaps&&d&&s.generateMipmap(s.TEXTURE_2D);b?J.bindTexture(s.TEXTURE_CUBE_MAP,null):J.bindTexture(s.TEXTURE_2D,null);s.bindRenderbuffer(s.RENDERBUFFER,null);s.bindFramebuffer(s.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=va,d=Ha,e=Ia);b!==Pa&&(s.bindFramebuffer(s.FRAMEBUFFER,b),s.viewport(d,e,c,a),Pa=b);
|
|
|
+kb=c;lb=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!==Pa&&(s.bindFramebuffer(s.FRAMEBUFFER,aa.get(a).__webglFramebuffer),
|
|
|
+g=!0);s.checkFramebufferStatus(s.FRAMEBUFFER)===s.FRAMEBUFFER_COMPLETE?s.readPixels(b,c,d,e,s.RGBA,s.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&s.bindFramebuffer(s.FRAMEBUFFER,Pa)}};this.supportsFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' ).");return W.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' ).");
|
|
|
+return W.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' ).");return W.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' ).");return W.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=
|
|
|
+function(){console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' ).");return W.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' ).");return W.get("EXT_blend_minmax")};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 ma.enabled},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.");ma.enabled=a}},shadowMapType:{get:function(){return ma.type},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.");
|
|
|
+ma.type=a}},shadowMapCullFace:{get:function(){return ma.cullFace},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapCullFace is now .shadowMap.cullFace.");ma.cullFace=a}},shadowMapDebug:{get:function(){return ma.debug},set:function(a){console.warn("THREE.WebGLRenderer: .shadowMapDebug is now .shadowMap.debug.");ma.debug=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;
|
|
@@ -597,9 +597,8 @@ THREE.WebGLGeometries=function(a,b,c){function d(g){g=g.target;var f=e[g.id],h;f
|
|
|
d);b instanceof THREE.BufferGeometry?e[b.id]=b:b instanceof THREE.Geometry&&(void 0===b._bufferGeometry&&(b._bufferGeometry=(new THREE.BufferGeometry).setFromObject(a)),e[b.id]=b._bufferGeometry);c.memory.geometries++;return e[b.id]}};
|
|
|
THREE.WebGLObjects=function(a,b,c){function d(a){a.target.traverse(function(a){a.removeEventListener("remove",d);(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)&&delete g[a.id];delete a._modelViewMatrix;delete a._normalMatrix;b.delete(a)})}function e(c,d){var e="index"===d?a.ELEMENT_ARRAY_BUFFER:a.ARRAY_BUFFER,f=c instanceof THREE.InterleavedBufferAttribute?c.data:c,g=b.get(f);if(void 0===g.__webglBuffer){g.__webglBuffer=a.createBuffer();a.bindBuffer(e,g.__webglBuffer);
|
|
|
var m=a.STATIC_DRAW;if(f instanceof THREE.DynamicBufferAttribute||f instanceof THREE.InstancedBufferAttribute&&!0===f.dynamic||f instanceof THREE.InterleavedBuffer&&!0===f.dynamic)m=a.DYNAMIC_DRAW;a.bufferData(e,f.array,m);g.version=f.version}else g.version!==f.version&&(a.bindBuffer(e,g.__webglBuffer),void 0===f.updateRange||-1===f.updateRange.count?a.bufferSubData(e,0,f.array):0===f.updateRange.count?console.error("THREE.WebGLObjects.updateBuffer: using updateRange for THREE.DynamicBufferAttribute and marked as needsUpdate but count is 0, ensure you are using set methods or updating manually."):
|
|
|
-(a.bufferSubData(e,f.updateRange.offset*f.array.BYTES_PER_ELEMENT,f.array.subarray(f.updateRange.offset,f.updateRange.offset+f.updateRange.count)),f.updateRange.count=0),g.version=f.version)}var g={},f=new THREE.WebGLGeometries(a,b,c);this.objects=g;this.geometries=f;this.init=function(a){var c=b.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a._modelViewMatrix=new THREE.Matrix4,a._normalMatrix=new THREE.Matrix3,a.addEventListener("removed",d));void 0===c.__webglActive&&(c.__webglActive=!0,a instanceof
|
|
|
-THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.PointCloud)&&(g[a.id]={id:a.id,object:a,z:0})};this.getAttributeBuffer=function(a){return a instanceof THREE.InterleavedBufferAttribute?b.get(a.data).__webglBuffer:b.get(a).__webglBuffer};this.update=function(a){for(var b=0,c=a.length;b<c;b++){var d=a[b].object,g=f.get(d);d.geometry instanceof THREE.Geometry&&g.updateFromObject(d);var m=g.attributes,d=void 0;for(d in m)e(m[d],d);g=g.morphAttributes;for(d in g)for(var m=g[d],q=0,r=m.length;q<
|
|
|
-r;q++)e(m[q],q)}};this.clear=function(){g={}}};
|
|
|
+(a.bufferSubData(e,f.updateRange.offset*f.array.BYTES_PER_ELEMENT,f.array.subarray(f.updateRange.offset,f.updateRange.offset+f.updateRange.count)),f.updateRange.count=0),g.version=f.version)}var g={},f=new THREE.WebGLGeometries(a,b,c);this.objects=g;this.init=function(a){var c=b.get(a);void 0===c.__webglInit&&(c.__webglInit=!0,a._modelViewMatrix=new THREE.Matrix4,a._normalMatrix=new THREE.Matrix3,a.addEventListener("removed",d));void 0===c.__webglActive&&(c.__webglActive=!0,a instanceof THREE.Mesh||
|
|
|
+a instanceof THREE.Line||a instanceof THREE.PointCloud)&&(g[a.id]={id:a.id,object:a,z:0})};this.update=function(a){var b=f.get(a);a.geometry instanceof THREE.Geometry&&b.updateFromObject(a);a=b.attributes;for(var c in a)e(a[c],c);a=b.morphAttributes;for(c in a)for(var d=a[c],g=0,m=d.length;g<m;g++)e(d[g],g);return b};this.getAttributeBuffer=function(a){return a instanceof THREE.InterleavedBufferAttribute?b.get(a.data).__webglBuffer:b.get(a).__webglBuffer};this.clear=function(){g={}}};
|
|
|
THREE.WebGLProgram=function(){function a(a){var b=[],c;for(c in a){var f=a[c];!1!==f&&b.push("#define "+c+" "+f)}return b.join("\n")}function b(a){return""!==a}var c=0;return function(d,e,g,f){var h=d.context,k=g.defines,l=g.__webglShader.vertexShader,n=g.__webglShader.fragmentShader,p="SHADOWMAP_TYPE_BASIC";f.shadowMapType===THREE.PCFShadowMap?p="SHADOWMAP_TYPE_PCF":f.shadowMapType===THREE.PCFSoftShadowMap&&(p="SHADOWMAP_TYPE_PCF_SOFT");var m="ENVMAP_TYPE_CUBE",q="ENVMAP_MODE_REFLECTION",r="ENVMAP_BLENDING_MULTIPLY";
|
|
|
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:r="ENVMAP_BLENDING_MULTIPLY";
|
|
|
break;case THREE.MixOperation:r="ENVMAP_BLENDING_MIX";break;case THREE.AddOperation:r="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 "+
|
|
@@ -772,9 +771,9 @@ THREE.ExtrudeGeometry.prototype.addShape=function(a,b){function c(a,b,c){b||cons
|
|
|
!0):-1E-10>d?-1E-10>f&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(H=a.length;0<=--H;){c=H;d=H-1;0>d&&(d=a.length-1);for(var e=0,f=q+2*n,e=0;e<f;e++){var g=U*e,h=U*(e+1),k=b+c+g,g=b+d+g,l=b+d+h,h=b+c+h,k=k+I,g=g+I,l=l+I,h=h+I;S.faces.push(new THREE.Face3(k,g,h));S.faces.push(new THREE.Face3(g,l,h));k=w.generateSideWallUV(S,k,g,l,h);S.faceVertexUvs[0].push([k[0],k[1],k[3]]);S.faceVertexUvs[0].push([k[1],
|
|
|
k[2],k[3]])}}}function g(a,b,c){S.vertices.push(new THREE.Vector3(a,b,c))}function f(a,b,c){a+=I;b+=I;c+=I;S.faces.push(new THREE.Face3(a,b,c));a=w.generateTopUV(S,a,b,c);S.faceVertexUvs[0].push(a)}var h=void 0!==b.amount?b.amount:100,k=void 0!==b.bevelThickness?b.bevelThickness:6,l=void 0!==b.bevelSize?b.bevelSize:k-2,n=void 0!==b.bevelSegments?b.bevelSegments:3,p=void 0!==b.bevelEnabled?b.bevelEnabled:!0,m=void 0!==b.curveSegments?b.curveSegments:12,q=void 0!==b.steps?b.steps:1,r=b.extrudePath,
|
|
|
t,u=!1,w=void 0!==b.UVGenerator?b.UVGenerator:THREE.ExtrudeGeometry.WorldUVGenerator,v,y,x,z;r&&(t=r.getSpacedPoints(q),u=!0,p=!1,v=void 0!==b.frames?b.frames:new THREE.TubeGeometry.FrenetFrames(r,q,!1),y=new THREE.Vector3,x=new THREE.Vector3,z=new THREE.Vector3);p||(l=k=n=0);var C,A,B,S=this,I=this.vertices.length,r=a.extractPoints(m),m=r.shape,D=r.holes;if(r=!THREE.Shape.Utils.isClockWise(m)){m=m.reverse();A=0;for(B=D.length;A<B;A++)C=D[A],THREE.Shape.Utils.isClockWise(C)&&(D[A]=C.reverse());r=
|
|
|
-!1}var Q=THREE.Shape.Utils.triangulateShape(m,D),K=m;A=0;for(B=D.length;A<B;A++)C=D[A],m=m.concat(C);var L,E,F,N,R,U=m.length,O,T=Q.length,r=[],H=0;F=K.length;L=F-1;for(E=H+1;H<F;H++,L++,E++)L===F&&(L=0),E===F&&(E=0),r[H]=d(K[H],K[L],K[E]);var qa=[],Z,ea=r.concat();A=0;for(B=D.length;A<B;A++){C=D[A];Z=[];H=0;F=C.length;L=F-1;for(E=H+1;H<F;H++,L++,E++)L===F&&(L=0),E===F&&(E=0),Z[H]=d(C[H],C[L],C[E]);qa.push(Z);ea=ea.concat(Z)}for(L=0;L<n;L++){F=L/n;N=k*(1-F);E=l*Math.sin(F*Math.PI/2);H=0;for(F=K.length;H<
|
|
|
-F;H++)R=c(K[H],r[H],E),g(R.x,R.y,-N);A=0;for(B=D.length;A<B;A++)for(C=D[A],Z=qa[A],H=0,F=C.length;H<F;H++)R=c(C[H],Z[H],E),g(R.x,R.y,-N)}E=l;for(H=0;H<U;H++)R=p?c(m[H],ea[H],E):m[H],u?(x.copy(v.normals[0]).multiplyScalar(R.x),y.copy(v.binormals[0]).multiplyScalar(R.y),z.copy(t[0]).add(x).add(y),g(z.x,z.y,z.z)):g(R.x,R.y,0);for(F=1;F<=q;F++)for(H=0;H<U;H++)R=p?c(m[H],ea[H],E):m[H],u?(x.copy(v.normals[F]).multiplyScalar(R.x),y.copy(v.binormals[F]).multiplyScalar(R.y),z.copy(t[F]).add(x).add(y),g(z.x,
|
|
|
-z.y,z.z)):g(R.x,R.y,h/q*F);for(L=n-1;0<=L;L--){F=L/n;N=k*(1-F);E=l*Math.sin(F*Math.PI/2);H=0;for(F=K.length;H<F;H++)R=c(K[H],r[H],E),g(R.x,R.y,h+N);A=0;for(B=D.length;A<B;A++)for(C=D[A],Z=qa[A],H=0,F=C.length;H<F;H++)R=c(C[H],Z[H],E),u?g(R.x,R.y+t[q-1].y,t[q-1].x+N):g(R.x,R.y,h+N)}(function(){if(p){var a;a=0*U;for(H=0;H<T;H++)O=Q[H],f(O[2]+a,O[1]+a,O[0]+a);a=q+2*n;a*=U;for(H=0;H<T;H++)O=Q[H],f(O[0]+a,O[1]+a,O[2]+a)}else{for(H=0;H<T;H++)O=Q[H],f(O[2],O[1],O[0]);for(H=0;H<T;H++)O=Q[H],f(O[0]+U*q,O[1]+
|
|
|
+!1}var Q=THREE.Shape.Utils.triangulateShape(m,D),K=m;A=0;for(B=D.length;A<B;A++)C=D[A],m=m.concat(C);var L,E,F,N,R,U=m.length,O,T=Q.length,r=[],H=0;F=K.length;L=F-1;for(E=H+1;H<F;H++,L++,E++)L===F&&(L=0),E===F&&(E=0),r[H]=d(K[H],K[L],K[E]);var oa=[],Z,ea=r.concat();A=0;for(B=D.length;A<B;A++){C=D[A];Z=[];H=0;F=C.length;L=F-1;for(E=H+1;H<F;H++,L++,E++)L===F&&(L=0),E===F&&(E=0),Z[H]=d(C[H],C[L],C[E]);oa.push(Z);ea=ea.concat(Z)}for(L=0;L<n;L++){F=L/n;N=k*(1-F);E=l*Math.sin(F*Math.PI/2);H=0;for(F=K.length;H<
|
|
|
+F;H++)R=c(K[H],r[H],E),g(R.x,R.y,-N);A=0;for(B=D.length;A<B;A++)for(C=D[A],Z=oa[A],H=0,F=C.length;H<F;H++)R=c(C[H],Z[H],E),g(R.x,R.y,-N)}E=l;for(H=0;H<U;H++)R=p?c(m[H],ea[H],E):m[H],u?(x.copy(v.normals[0]).multiplyScalar(R.x),y.copy(v.binormals[0]).multiplyScalar(R.y),z.copy(t[0]).add(x).add(y),g(z.x,z.y,z.z)):g(R.x,R.y,0);for(F=1;F<=q;F++)for(H=0;H<U;H++)R=p?c(m[H],ea[H],E):m[H],u?(x.copy(v.normals[F]).multiplyScalar(R.x),y.copy(v.binormals[F]).multiplyScalar(R.y),z.copy(t[F]).add(x).add(y),g(z.x,
|
|
|
+z.y,z.z)):g(R.x,R.y,h/q*F);for(L=n-1;0<=L;L--){F=L/n;N=k*(1-F);E=l*Math.sin(F*Math.PI/2);H=0;for(F=K.length;H<F;H++)R=c(K[H],r[H],E),g(R.x,R.y,h+N);A=0;for(B=D.length;A<B;A++)for(C=D[A],Z=oa[A],H=0,F=C.length;H<F;H++)R=c(C[H],Z[H],E),u?g(R.x,R.y+t[q-1].y,t[q-1].x+N):g(R.x,R.y,h+N)}(function(){if(p){var a;a=0*U;for(H=0;H<T;H++)O=Q[H],f(O[2]+a,O[1]+a,O[0]+a);a=q+2*n;a*=U;for(H=0;H<T;H++)O=Q[H],f(O[0]+a,O[1]+a,O[2]+a)}else{for(H=0;H<T;H++)O=Q[H],f(O[2],O[1],O[0]);for(H=0;H<T;H++)O=Q[H],f(O[0]+U*q,O[1]+
|
|
|
U*q,O[2]+U*q)}})();(function(){var a=0;e(K,a);a+=K.length;A=0;for(B=D.length;A<B;A++)C=D[A],e(C,a),a+=C.length})()};
|
|
|
THREE.ExtrudeGeometry.WorldUVGenerator={generateTopUV:function(a,b,c,d){a=a.vertices;b=a[b];c=a[c];d=a[d];return[new THREE.Vector2(b.x,b.y),new THREE.Vector2(c.x,c.y),new THREE.Vector2(d.x,d.y)]},generateSideWallUV:function(a,b,c,d,e){a=a.vertices;b=a[b];c=a[c];d=a[d];e=a[e];return.01>Math.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y,
|
|
|
1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===Array.isArray(a)&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;c<d;c++)this.addShape(a[c],b);return this};
|