|
@@ -145,7 +145,8 @@ this.distanceToPoint(a.start);a=this.distanceToPoint(a.end);return 0>b&&0<a||0>a
|
|
|
g.applyMatrix4(d);this.setFromNormalAndCoplanarPoint(f,g);return this}}(),translate:function(a){this.constant-=a.dot(this.normal);return this},equals:function(a){return a.normal.equals(this.normal)&&a.constant===this.constant}};
|
|
|
THREE.Math={generateUUID:function(){var a="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),b=Array(36),c=0,d;return function(){for(var e=0;36>e;e++)8===e||13===e||18===e||23===e?b[e]="-":14===e?b[e]="4":(2>=c&&(c=33554432+16777216*Math.random()|0),d=c&15,c>>=4,b[e]=a[19===e?d&3|8:d]);return b.join("")}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c,d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,
|
|
|
b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},random16:function(){console.warn("THREE.Math.random16() has been deprecated. Use Math.random() instead.");return Math.random()},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a*(.5-Math.random())},degToRad:function(){var a=
|
|
|
-Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},nearestPowerOfTwo:function(a){return Math.pow(2,Math.round(Math.log(a)/Math.LN2))},nextPowerOfTwo:function(a){a--;a|=a>>1;a|=a>>2;a|=a>>4;a|=a>>8;a|=a>>16;a++;return a}};
|
|
|
+Math.PI/180;return function(b){return b*a}}(),radToDeg:function(){var a=180/Math.PI;return function(b){return b*a}}(),isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},nearestPowerOfTwo:function(a){return Math.pow(2,Math.round(Math.log(a)/Math.LN2))},nextPowerOfTwo:function(a){a--;a|=a>>1;a|=a>>2;a|=a>>4;a|=a>>8;a|=a>>16;a++;return a}};THREE.Rectangle=function(a,b,c,d){this.set(a,b,c,d)};
|
|
|
+THREE.Rectangle.prototype={constructor:THREE.Rectangle,set:function(a,b,c,d){this.x=a;this.y=b;this.width=c;this.height=d;return this},copy:function(a){this.x=a.x;this.y=a.y;this.width=a.width;this.height=a.height;return this}};
|
|
|
THREE.Spline=function(a){function b(a,b,c,d,e,f,g){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,f,g,h,k,l,m,p,n;this.initFromArray=function(a){this.points=[];for(var b=0;b<a.length;b++)this.points[b]={x:a[b][0],y:a[b][1],z:a[b][2]}};this.getPoint=function(a){e=(this.points.length-1)*a;f=Math.floor(e);g=e-f;c[0]=0===f?f:f-1;c[1]=f;c[2]=f>this.points.length-2?this.points.length-1:f+1;c[3]=f>this.points.length-3?this.points.length-1:f+
|
|
|
2;l=this.points[c[0]];m=this.points[c[1]];p=this.points[c[2]];n=this.points[c[3]];h=g*g;k=g*h;d.x=b(l.x,m.x,p.x,n.x,g,h,k);d.y=b(l.y,m.y,p.y,n.y,g,h,k);d.z=b(l.z,m.z,p.z,n.z,g,h,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a<c;a++)b=this.points[a],d[a]=[b.x,b.y,b.z];return d};this.getLength=function(a){var b,c,d,e=b=b=0,f=new THREE.Vector3,g=new THREE.Vector3,h=[],k=0;h[0]=0;a||(a=100);c=this.points.length*a;f.copy(this.points[0]);for(a=1;a<c;a++)b=
|
|
|
a/c,d=this.getPoint(b),g.copy(d),k+=g.distanceTo(f),f.copy(d),b*=this.points.length-1,b=Math.floor(b),b!==e&&(h[b]=k,e=b);h[h.length]=k;return{chunks:h,total:k}};this.reparametrizeByArcLength=function(a){var b,c,d,e,f,g,h=[],k=new THREE.Vector3,l=this.getLength();h.push(k.copy(this.points[0]).clone());for(b=1;b<this.points.length;b++){c=l.chunks[b]-l.chunks[b-1];g=Math.ceil(a*c/l.total);e=(b-1)/(this.points.length-1);f=b/(this.points.length-1);for(c=1;c<g-1;c++)d=e+1/g*c*(f-e),d=this.getPoint(d),
|
|
@@ -589,17 +590,17 @@ THREE.ShaderChunk.logdepthbuf_fragment,"}"].join("\n")},depthRGBA:{uniforms:{},v
|
|
|
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")},
|
|
|
distanceRGBA:{uniforms:{lightPos:{type:"v3",value:new THREE.Vector3(0,0,0)}},vertexShader:["varying vec4 vWorldPosition;",THREE.ShaderChunk.common,THREE.ShaderChunk.morphtarget_pars_vertex,THREE.ShaderChunk.skinning_pars_vertex,"void main() {",THREE.ShaderChunk.skinbase_vertex,THREE.ShaderChunk.begin_vertex,THREE.ShaderChunk.morphtarget_vertex,THREE.ShaderChunk.skinning_vertex,THREE.ShaderChunk.project_vertex,THREE.ShaderChunk.worldpos_vertex,"vWorldPosition = worldPosition;\n}"].join("\n"),fragmentShader:["uniform vec3 lightPos;\nvarying vec4 vWorldPosition;",
|
|
|
THREE.ShaderChunk.common,"vec4 pack1K ( float depth ) {\n depth /= 1000.0;\n const vec4 bitSh = vec4( 256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0 );\n\tconst vec4 bitMsk = vec4( 0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0 );\n\tvec4 res = fract( depth * bitSh );\n\tres -= res.xxyz * bitMsk;\n\treturn res; \n}\nfloat unpack1K ( vec4 color ) {\n\tconst vec4 bitSh = vec4( 1.0 / ( 256.0 * 256.0 * 256.0 ), 1.0 / ( 256.0 * 256.0 ), 1.0 / 256.0, 1.0 );\n\treturn dot( color, bitSh ) * 1000.0;\n}\nvoid main () {\n\tgl_FragColor = pack1K( length( vWorldPosition.xyz - lightPos.xyz ) );\n}"].join("\n")}};
|
|
|
-THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===P&&(a*=d,b*=d,c*=d);r.clearColor(a,b,c,d)}function c(){H.init();r.viewport(sa,ta,ua,va);b(S.r,S.g,S.b,W)}function d(){ga=wa=null;ha="";na=-1;H.reset()}function e(a){a.preventDefault();d();c();T.clear()}function f(a){a=a.target;a.removeEventListener("dispose",f);a:{var b=T.get(a);if(a.image&&b.__image__webglTextureCube)r.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;r.deleteTexture(b.__webglTexture)}T.delete(a)}ea.textures--}
|
|
|
-function g(a){a=a.target;a.removeEventListener("dispose",g);var b=T.get(a),c=T.get(a.texture);if(a&&void 0!==c.__webglTexture){r.deleteTexture(c.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(c=0;6>c;c++)r.deleteFramebuffer(b.__webglFramebuffer[c]),r.deleteRenderbuffer(b.__webglDepthbuffer[c]);else r.deleteFramebuffer(b.__webglFramebuffer),r.deleteRenderbuffer(b.__webglDepthbuffer);T.delete(a.texture);T.delete(a)}ea.textures--}function h(a){a=a.target;a.removeEventListener("dispose",
|
|
|
-h);k(a);T.delete(a)}function k(a){var b=T.get(a).program;a.program=void 0;void 0!==b&&ia.releaseProgram(b)}function l(a,b){return Math.abs(b[0])-Math.abs(a[0])}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,
|
|
|
-b,c,d,e){var f;c.transparent?(d=ba,f=++ja):(d=$,f=++fa);f=d[f];void 0!==f?(f.id=a.id,f.object=a,f.geometry=b,f.material=c,f.z=X.z,f.group=e):(f={id:a.id,object:a,geometry:b,material:c,z:X.z,group:e},d.push(f))}function q(a,b){if(!1!==a.visible){if(a.layers.test(b.layers))if(a instanceof THREE.Light)Z.push(a);else if(a instanceof THREE.Sprite)!1!==a.frustumCulled&&!0!==xa.intersectsObject(a)||aa.push(a);else if(a instanceof THREE.LensFlare)ya.push(a);else if(a instanceof THREE.ImmediateRenderObject)!0===
|
|
|
-Y.sortObjects&&(X.setFromMatrixPosition(a.matrixWorld),X.applyProjection(oa)),n(a,null,a.material,X.z,null);else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Points)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),!1===a.frustumCulled||!0===xa.intersectsObject(a)){var c=a.material;if(!0===c.visible){!0===Y.sortObjects&&(X.setFromMatrixPosition(a.matrixWorld),X.applyProjection(oa));var d=ka.update(a);if(c instanceof THREE.MultiMaterial)for(var e=d.groups,f=c.materials,
|
|
|
-c=0,g=e.length;c<g;c++){var h=e[c],k=f[h.materialIndex];!0===k.visible&&n(a,d,k,X.z,h)}else n(a,d,c,X.z,null)}}d=a.children;c=0;for(g=d.length;c<g;c++)q(d[c],b)}}function t(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,l=void 0===d?g.material:d,g=g.group;h.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,h.matrixWorld);h.normalMatrix.getNormalMatrix(h.modelViewMatrix);if(h instanceof THREE.ImmediateRenderObject){u(l);var n=s(b,c,l,h);ha="";h.render(function(a){Y.renderBufferImmediate(a,
|
|
|
+THREE.WebGLRenderer=function(a){function b(a,b,c,d){!0===P&&(a*=d,b*=d,c*=d);r.clearColor(a,b,c,d)}function c(){H.init();r.viewport(ea.x,ea.y,ea.width,ea.height);b(S.r,S.g,S.b,W)}function d(){ha=ta=null;ia="";oa=-1;H.reset()}function e(a){a.preventDefault();d();c();T.clear()}function f(a){a=a.target;a.removeEventListener("dispose",f);a:{var b=T.get(a);if(a.image&&b.__image__webglTextureCube)r.deleteTexture(b.__image__webglTextureCube);else{if(void 0===b.__webglInit)break a;r.deleteTexture(b.__webglTexture)}T.delete(a)}fa.textures--}
|
|
|
+function g(a){a=a.target;a.removeEventListener("dispose",g);var b=T.get(a),c=T.get(a.texture);if(a&&void 0!==c.__webglTexture){r.deleteTexture(c.__webglTexture);if(a instanceof THREE.WebGLRenderTargetCube)for(c=0;6>c;c++)r.deleteFramebuffer(b.__webglFramebuffer[c]),r.deleteRenderbuffer(b.__webglDepthbuffer[c]);else r.deleteFramebuffer(b.__webglFramebuffer),r.deleteRenderbuffer(b.__webglDepthbuffer);T.delete(a.texture);T.delete(a)}fa.textures--}function h(a){a=a.target;a.removeEventListener("dispose",
|
|
|
+h);k(a);T.delete(a)}function k(a){var b=T.get(a).program;a.program=void 0;void 0!==b&&ja.releaseProgram(b)}function l(a,b){return Math.abs(b[0])-Math.abs(a[0])}function m(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return a.object.renderOrder!==b.object.renderOrder?a.object.renderOrder-b.object.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,
|
|
|
+b,c,d,e){var f;c.transparent?(d=ba,f=++ka):(d=$,f=++ga);f=d[f];void 0!==f?(f.id=a.id,f.object=a,f.geometry=b,f.material=c,f.z=X.z,f.group=e):(f={id:a.id,object:a,geometry:b,material:c,z:X.z,group:e},d.push(f))}function q(a,b){if(!1!==a.visible){if(a.layers.test(b.layers))if(a instanceof THREE.Light)Z.push(a);else if(a instanceof THREE.Sprite)!1!==a.frustumCulled&&!0!==ua.intersectsObject(a)||aa.push(a);else if(a instanceof THREE.LensFlare)va.push(a);else if(a instanceof THREE.ImmediateRenderObject)!0===
|
|
|
+Y.sortObjects&&(X.setFromMatrixPosition(a.matrixWorld),X.applyProjection(pa)),n(a,null,a.material,X.z,null);else if(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Points)if(a instanceof THREE.SkinnedMesh&&a.skeleton.update(),!1===a.frustumCulled||!0===ua.intersectsObject(a)){var c=a.material;if(!0===c.visible){!0===Y.sortObjects&&(X.setFromMatrixPosition(a.matrixWorld),X.applyProjection(pa));var d=la.update(a);if(c instanceof THREE.MultiMaterial)for(var e=d.groups,f=c.materials,
|
|
|
+c=0,g=e.length;c<g;c++){var h=e[c],k=f[h.materialIndex];!0===k.visible&&n(a,d,k,X.z,h)}else n(a,d,c,X.z,null)}}d=a.children;c=0;for(g=d.length;c<g;c++)q(d[c],b)}}function t(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,l=void 0===d?g.material:d,g=g.group;h.modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,h.matrixWorld);h.normalMatrix.getNormalMatrix(h.modelViewMatrix);if(h instanceof THREE.ImmediateRenderObject){u(l);var n=s(b,c,l,h);ia="";h.render(function(a){Y.renderBufferImmediate(a,
|
|
|
n,l)})}else Y.renderBufferDirect(b,c,k,l,h,g)}}function u(a){a.side!==THREE.DoubleSide?H.enable(r.CULL_FACE):H.disable(r.CULL_FACE);H.setFlipSided(a.side===THREE.BackSide);!0===a.transparent?H.setBlending(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha):H.setBlending(THREE.NoBlending);H.setDepthFunc(a.depthFunc);H.setDepthTest(a.depthTest);H.setDepthWrite(a.depthWrite);H.setColorWrite(a.colorWrite);H.setPolygonOffset(a.polygonOffset,a.polygonOffsetFactor,
|
|
|
-a.polygonOffsetUnits)}function s(a,b,c,d){pa=0;var e=T.get(c);void 0===e.program&&(c.needsUpdate=!0);void 0!==e.lightsHash&&e.lightsHash!==U.hash&&(c.needsUpdate=!0);if(c.needsUpdate){a:{var f=T.get(c),g=ia.getParameters(c,U,b,d),l=ia.getProgramCode(c,g),n=f.program,m=!0;if(void 0===n)c.addEventListener("dispose",h);else if(n.code!==l)k(c);else if(void 0!==g.shaderID)break a;else m=!1;m&&(g.shaderID?(n=THREE.ShaderLib[g.shaderID],f.__webglShader={name:c.type,uniforms:THREE.UniformsUtils.clone(n.uniforms),
|
|
|
-vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}):f.__webglShader={name:c.type,uniforms:c.uniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader},c.__webglShader=f.__webglShader,n=ia.acquireProgram(c,g,l),f.program=n,c.program=n);g=n.getAttributes();if(c.morphTargets)for(l=c.numSupportedMorphTargets=0;l<Y.maxMorphTargets;l++)0<=g["morphTarget"+l]&&c.numSupportedMorphTargets++;if(c.morphNormals)for(l=c.numSupportedMorphNormals=0;l<Y.maxMorphNormals;l++)0<=g["morphNormal"+
|
|
|
+a.polygonOffsetUnits)}function s(a,b,c,d){qa=0;var e=T.get(c);void 0===e.program&&(c.needsUpdate=!0);void 0!==e.lightsHash&&e.lightsHash!==U.hash&&(c.needsUpdate=!0);if(c.needsUpdate){a:{var f=T.get(c),g=ja.getParameters(c,U,b,d),l=ja.getProgramCode(c,g),n=f.program,m=!0;if(void 0===n)c.addEventListener("dispose",h);else if(n.code!==l)k(c);else if(void 0!==g.shaderID)break a;else m=!1;m&&(g.shaderID?(n=THREE.ShaderLib[g.shaderID],f.__webglShader={name:c.type,uniforms:THREE.UniformsUtils.clone(n.uniforms),
|
|
|
+vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}):f.__webglShader={name:c.type,uniforms:c.uniforms,vertexShader:c.vertexShader,fragmentShader:c.fragmentShader},c.__webglShader=f.__webglShader,n=ja.acquireProgram(c,g,l),f.program=n,c.program=n);g=n.getAttributes();if(c.morphTargets)for(l=c.numSupportedMorphTargets=0;l<Y.maxMorphTargets;l++)0<=g["morphTarget"+l]&&c.numSupportedMorphTargets++;if(c.morphNormals)for(l=c.numSupportedMorphNormals=0;l<Y.maxMorphNormals;l++)0<=g["morphNormal"+
|
|
|
l]&&c.numSupportedMorphNormals++;f.uniformsList=[];var g=f.__webglShader.uniforms,l=f.program.getUniforms(),p;for(p in g)(n=l[p])&&f.uniformsList.push([f.__webglShader.uniforms[p],n]);if(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshStandardMaterial||c.lights)f.lightsHash=U.hash,g.ambientLightColor.value=U.ambient,g.directionalLights.value=U.directional,g.pointLights.value=U.point,g.spotLights.value=U.spot,g.hemisphereLights.value=U.hemi;f.hasDynamicUniforms=
|
|
|
-!1;p=0;for(g=f.uniformsList.length;p<g;p++)if(!0===f.uniformsList[p][0].dynamic){f.hasDynamicUniforms=!0;break}}c.needsUpdate=!1}n=l=m=!1;f=e.program;p=f.getUniforms();g=e.__webglShader.uniforms;f.id!==wa&&(r.useProgram(f.program),wa=f.id,n=l=m=!0);c.id!==na&&(na=c.id,l=!0);if(m||a!==ga)r.uniformMatrix4fv(p.projectionMatrix,!1,a.projectionMatrix.elements),ca.logarithmicDepthBuffer&&r.uniform1f(p.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==ga&&(ga=a,n=l=!0),(c instanceof THREE.ShaderMaterial||
|
|
|
+!1;p=0;for(g=f.uniformsList.length;p<g;p++)if(!0===f.uniformsList[p][0].dynamic){f.hasDynamicUniforms=!0;break}}c.needsUpdate=!1}n=l=m=!1;f=e.program;p=f.getUniforms();g=e.__webglShader.uniforms;f.id!==ta&&(r.useProgram(f.program),ta=f.id,n=l=m=!0);c.id!==oa&&(oa=c.id,l=!0);if(m||a!==ha)r.uniformMatrix4fv(p.projectionMatrix,!1,a.projectionMatrix.elements),ca.logarithmicDepthBuffer&&r.uniform1f(p.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==ha&&(ha=a,n=l=!0),(c instanceof THREE.ShaderMaterial||
|
|
|
c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshStandardMaterial||c.envMap)&&void 0!==p.cameraPosition&&(X.setFromMatrixPosition(a.matrixWorld),r.uniform3f(p.cameraPosition,X.x,X.y,X.z)),(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshBasicMaterial||c instanceof THREE.MeshStandardMaterial||c instanceof THREE.ShaderMaterial||c.skinning)&&void 0!==p.viewMatrix&&r.uniformMatrix4fv(p.viewMatrix,!1,a.matrixWorldInverse.elements);c.skinning&&
|
|
|
(d.bindMatrix&&void 0!==p.bindMatrix&&r.uniformMatrix4fv(p.bindMatrix,!1,d.bindMatrix.elements),d.bindMatrixInverse&&void 0!==p.bindMatrixInverse&&r.uniformMatrix4fv(p.bindMatrixInverse,!1,d.bindMatrixInverse.elements),ca.floatVertexTextures&&d.skeleton&&d.skeleton.useVertexTexture?(void 0!==p.boneTexture&&(m=w(),r.uniform1i(p.boneTexture,m),Y.setTexture(d.skeleton.boneTexture,m)),void 0!==p.boneTextureWidth&&r.uniform1i(p.boneTextureWidth,d.skeleton.boneTextureWidth),void 0!==p.boneTextureHeight&&
|
|
|
r.uniform1i(p.boneTextureHeight,d.skeleton.boneTextureHeight)):d.skeleton&&d.skeleton.boneMatrices&&void 0!==p.boneGlobalMatrices&&r.uniformMatrix4fv(p.boneGlobalMatrices,!1,d.skeleton.boneMatrices));if(l){if(c instanceof THREE.MeshPhongMaterial||c instanceof THREE.MeshLambertMaterial||c instanceof THREE.MeshStandardMaterial||c.lights)l=n,g.ambientLightColor.needsUpdate=l,g.directionalLights.needsUpdate=l,g.pointLights.needsUpdate=l,g.spotLights.needsUpdate=l,g.hemisphereLights.needsUpdate=l;b&&c.fog&&
|
|
@@ -609,8 +610,8 @@ c.aoMap,g.aoMapIntensity.value=c.aoMapIntensity);var q;c.map?q=c.map:c.specularM
|
|
|
c.map&&(q=c.map.offset,b=c.map.repeat,g.offsetRepeat.value.set(q.x,q.y,b.x,b.y))):c instanceof THREE.MeshPhongMaterial?(g.specular.value=c.specular,g.shininess.value=Math.max(c.shininess,1E-4),c.lightMap&&(g.lightMap.value=c.lightMap,g.lightMapIntensity.value=c.lightMapIntensity),c.emissiveMap&&(g.emissiveMap.value=c.emissiveMap),c.bumpMap&&(g.bumpMap.value=c.bumpMap,g.bumpScale.value=c.bumpScale),c.normalMap&&(g.normalMap.value=c.normalMap,g.normalScale.value.copy(c.normalScale)),c.displacementMap&&
|
|
|
(g.displacementMap.value=c.displacementMap,g.displacementScale.value=c.displacementScale,g.displacementBias.value=c.displacementBias)):c instanceof THREE.MeshStandardMaterial?(g.roughness.value=c.roughness,g.metalness.value=c.metalness,c.roughnessMap&&(g.roughnessMap.value=c.roughnessMap),c.metalnessMap&&(g.metalnessMap.value=c.metalnessMap),c.lightMap&&(g.lightMap.value=c.lightMap,g.lightMapIntensity.value=c.lightMapIntensity),c.emissiveMap&&(g.emissiveMap.value=c.emissiveMap),c.bumpMap&&(g.bumpMap.value=
|
|
|
c.bumpMap,g.bumpScale.value=c.bumpScale),c.normalMap&&(g.normalMap.value=c.normalMap,g.normalScale.value.copy(c.normalScale)),c.displacementMap&&(g.displacementMap.value=c.displacementMap,g.displacementScale.value=c.displacementScale,g.displacementBias.value=c.displacementBias),c.envMap&&(g.envMapIntensity.value=c.envMapIntensity)):c instanceof THREE.MeshDepthMaterial?(g.mNear.value=a.near,g.mFar.value=a.far,g.opacity.value=c.opacity):c instanceof THREE.MeshNormalMaterial&&(g.opacity.value=c.opacity);
|
|
|
-if(za.enabled&&d.receiveShadow&&!c._shadowPass&&g.shadowMatrix)for(c=U.shadows,q=0,b=c.length;q<b;q++)l=c[q],n=l.shadow,l instanceof THREE.PointLight?(X.setFromMatrixPosition(l.matrixWorld).negate(),n.matrix.identity().setPosition(X),g.shadowDarkness.value[q]=-n.darkness):g.shadowDarkness.value[q]=n.darkness,g.shadowBias.value[q]=n.bias,g.shadowMap.value[q]=n.map,g.shadowMapSize.value[q]=n.mapSize,g.shadowMatrix.value[q]=n.matrix;v(e.uniformsList)}r.uniformMatrix4fv(p.modelViewMatrix,!1,d.modelViewMatrix.elements);
|
|
|
-p.normalMatrix&&r.uniformMatrix3fv(p.normalMatrix,!1,d.normalMatrix.elements);void 0!==p.modelMatrix&&r.uniformMatrix4fv(p.modelMatrix,!1,d.matrixWorld.elements);if(!0===e.hasDynamicUniforms){e=e.uniformsList;c=[];q=0;for(b=e.length;q<b;q++)p=e[q][0],g=p.onUpdateCallback,void 0!==g&&(g.bind(p)(d,a),c.push(e[q]));v(c)}return f}function w(){var a=pa;a>=ca.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ca.maxTextures);pa+=1;return a}function v(a){for(var b,
|
|
|
+if(wa.enabled&&d.receiveShadow&&!c._shadowPass&&g.shadowMatrix)for(c=U.shadows,q=0,b=c.length;q<b;q++)l=c[q],n=l.shadow,l instanceof THREE.PointLight?(X.setFromMatrixPosition(l.matrixWorld).negate(),n.matrix.identity().setPosition(X),g.shadowDarkness.value[q]=-n.darkness):g.shadowDarkness.value[q]=n.darkness,g.shadowBias.value[q]=n.bias,g.shadowMap.value[q]=n.map,g.shadowMapSize.value[q]=n.mapSize,g.shadowMatrix.value[q]=n.matrix;v(e.uniformsList)}r.uniformMatrix4fv(p.modelViewMatrix,!1,d.modelViewMatrix.elements);
|
|
|
+p.normalMatrix&&r.uniformMatrix3fv(p.normalMatrix,!1,d.normalMatrix.elements);void 0!==p.modelMatrix&&r.uniformMatrix4fv(p.modelMatrix,!1,d.matrixWorld.elements);if(!0===e.hasDynamicUniforms){e=e.uniformsList;c=[];q=0;for(b=e.length;q<b;q++)p=e[q][0],g=p.onUpdateCallback,void 0!==g&&(g.bind(p)(d,a),c.push(e[q]));v(c)}return f}function w(){var a=qa;a>=ca.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ca.maxTextures);qa+=1;return a}function v(a){for(var b,
|
|
|
c,d=0,e=a.length;d<e;d++){var f=a[d][0];if(!1!==f.needsUpdate){var g=f.type;b=f.value;var h=a[d][1];switch(g){case "1i":r.uniform1i(h,b);break;case "1f":r.uniform1f(h,b);break;case "2f":r.uniform2f(h,b[0],b[1]);break;case "3f":r.uniform3f(h,b[0],b[1],b[2]);break;case "4f":r.uniform4f(h,b[0],b[1],b[2],b[3]);break;case "1iv":r.uniform1iv(h,b);break;case "3iv":r.uniform3iv(h,b);break;case "1fv":r.uniform1fv(h,b);break;case "2fv":r.uniform2fv(h,b);break;case "3fv":r.uniform3fv(h,b);break;case "4fv":r.uniform4fv(h,
|
|
|
b);break;case "Matrix2fv":r.uniformMatrix2fv(h,!1,b);break;case "Matrix3fv":r.uniformMatrix3fv(h,!1,b);break;case "Matrix4fv":r.uniformMatrix4fv(h,!1,b);break;case "i":r.uniform1i(h,b);break;case "f":r.uniform1f(h,b);break;case "v2":r.uniform2f(h,b.x,b.y);break;case "v3":r.uniform3f(h,b.x,b.y,b.z);break;case "v4":r.uniform4f(h,b.x,b.y,b.z,b.w);break;case "c":r.uniform3f(h,b.r,b.g,b.b);break;case "sa":for(g=0;g<b.length;g++)for(var k in f.properties){var l=h[g][k];c=b[g][k];switch(f.properties[k].type){case "i":r.uniform1i(l,
|
|
|
c);break;case "f":r.uniform1f(l,c);break;case "v2":r.uniform2f(l,c.x,c.y);break;case "v3":r.uniform3f(l,c.x,c.y,c.z);break;case "v4":r.uniform4f(l,c.x,c.y,c.z,c.w);break;case "c":r.uniform3f(l,c.r,c.g,c.b)}}break;case "iv1":r.uniform1iv(h,b);break;case "iv":r.uniform3iv(h,b);break;case "fv1":r.uniform1fv(h,b);break;case "fv":r.uniform3fv(h,b);break;case "v2v":void 0===f._array&&(f._array=new Float32Array(2*b.length));c=g=0;for(l=b.length;g<l;g++,c+=2)f._array[c+0]=b[g].x,f._array[c+1]=b[g].y;r.uniform2fv(h,
|
|
@@ -621,7 +622,7 @@ c):b instanceof THREE.WebGLRenderTargetCube?z(b.texture,c):Y.setTexture(b,c));br
|
|
|
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),r.texParameteri(a,r.TEXTURE_MAG_FILTER,L(b.magFilter)),r.texParameteri(a,r.TEXTURE_MIN_FILTER,L(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.",
|
|
|
b));!(c=V.get("EXT_texture_filter_anisotropic"))||b.type===THREE.FloatType&&null===V.get("OES_texture_float_linear")||b.type===THREE.HalfFloatType&&null===V.get("OES_texture_half_float_linear")||!(1<b.anisotropy||T.get(b).__currentAnisotropy)||(r.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,Y.getMaxAnisotropy())),T.get(b).__currentAnisotropy=b.anisotropy)}function x(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 E(a){return THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height)}function A(a,b){var c=T.get(a);if(6===a.image.length)if(0<a.version&&c.__version!==a.version){c.__image__webglTextureCube||(a.addEventListener("dispose",f),c.__image__webglTextureCube=
|
|
|
-r.createTexture(),ea.textures++);H.activeTexture(r.TEXTURE0+b);H.bindTexture(r.TEXTURE_CUBE_MAP,c.__image__webglTextureCube);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,a.flipY);for(var d=a instanceof THREE.CompressedTexture,e=a.image[0]instanceof THREE.DataTexture,g=[],h=0;6>h;h++)g[h]=!Y.autoScaleCubemaps||d||e?e?a.image[h].image:a.image[h]:x(a.image[h],ca.maxCubemapSize);var k=E(g[0]),l=C(a.format),n=C(a.type);D(r.TEXTURE_CUBE_MAP,a,k);for(h=0;6>h;h++)if(d)for(var m,p=g[h].mipmaps,q=0,t=p.length;q<t;q++)m=
|
|
|
+r.createTexture(),fa.textures++);H.activeTexture(r.TEXTURE0+b);H.bindTexture(r.TEXTURE_CUBE_MAP,c.__image__webglTextureCube);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,a.flipY);for(var d=a instanceof THREE.CompressedTexture,e=a.image[0]instanceof THREE.DataTexture,g=[],h=0;6>h;h++)g[h]=!Y.autoScaleCubemaps||d||e?e?a.image[h].image:a.image[h]:x(a.image[h],ca.maxCubemapSize);var k=E(g[0]),l=C(a.format),n=C(a.type);D(r.TEXTURE_CUBE_MAP,a,k);for(h=0;6>h;h++)if(d)for(var m,p=g[h].mipmaps,q=0,t=p.length;q<t;q++)m=
|
|
|
p[q],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<H.getCompressedTextureFormats().indexOf(l)?H.compressedTexImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+h,q,l,m.width,m.height,0,m.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setCubeTexture()"):H.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+h,q,l,m.width,m.height,0,l,n,m.data);else e?H.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,l,g[h].width,g[h].height,0,l,n,g[h].data):H.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+
|
|
|
h,0,l,l,n,g[h]);a.generateMipmaps&&k&&r.generateMipmap(r.TEXTURE_CUBE_MAP);c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}else H.activeTexture(r.TEXTURE0+b),H.bindTexture(r.TEXTURE_CUBE_MAP,c.__image__webglTextureCube)}function z(a,b){H.activeTexture(r.TEXTURE0+b);H.bindTexture(r.TEXTURE_CUBE_MAP,T.get(a).__webglTexture)}function y(a,b,c,d){var e=C(b.texture.format),g=C(b.texture.type);H.texImage2D(d,0,e,b.width,b.height,0,e,g,null);r.bindFramebuffer(r.FRAMEBUFFER,a);r.framebufferTexture2D(r.FRAMEBUFFER,
|
|
|
c,d,T.get(b.texture).__webglTexture,0);r.bindFramebuffer(r.FRAMEBUFFER,null)}function M(a,b){r.bindRenderbuffer(r.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_COMPONENT16,b.width,b.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(r.renderbufferStorage(r.RENDERBUFFER,r.DEPTH_STENCIL,b.width,b.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.RENDERBUFFER,
|
|
@@ -632,42 +633,42 @@ if(a===THREE.LuminanceAlphaFormat)return r.LUMINANCE_ALPHA;if(a===THREE.AddEquat
|
|
|
if(a===THREE.DstAlphaFactor)return r.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return r.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return r.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return r.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return r.SRC_ALPHA_SATURATE;b=V.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
|
|
if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=V.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=V.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;
|
|
|
if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var F=void 0!==a.canvas?a.canvas:document.createElement("canvas"),N=void 0!==a.context?a.context:null,O=F.width,I=F.height,G=1,J=void 0!==a.alpha?a.alpha:!1,Q=void 0!==a.depth?a.depth:!0,R=void 0!==a.stencil?a.stencil:!0,K=void 0!==a.antialias?a.antialias:!1,P=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,B=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,S=new THREE.Color(0),
|
|
|
-W=0,Z=[],$=[],fa=-1,ba=[],ja=-1,la=new Float32Array(8),aa=[],ya=[];this.domElement=F;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 Y=this,wa=null,ma=null,qa=null,na=-1,ha="",ga=null,pa=0,sa=0,ta=0,ua=F.width,va=F.height,Aa=0,Ba=0,xa=new THREE.Frustum,oa=new THREE.Matrix4,X=new THREE.Vector3,U={hash:"",
|
|
|
-ambient:[0,0,0],directional:[],point:[],spot:[],hemi:[],shadows:[],shadowsPointLight:0},ea={geometries:0,textures:0},da={calls:0,vertices:0,faces:0,points:0};this.info={render:da,memory:ea,programs:null};var r;try{J={alpha:J,depth:Q,stencil:R,antialias:K,premultipliedAlpha:P,preserveDrawingBuffer:B};r=N||F.getContext("webgl",J)||F.getContext("experimental-webgl",J);if(null===r){if(null!==F.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";
|
|
|
-}F.addEventListener("webglcontextlost",e,!1)}catch(Ca){console.error("THREE.WebGLRenderer: "+Ca)}var V=new THREE.WebGLExtensions(r);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);var ca=new THREE.WebGLCapabilities(r,V,a),H=new THREE.WebGLState(r,V,C),T=new THREE.WebGLProperties,
|
|
|
-ka=new THREE.WebGLObjects(r,T,this.info),ia=new THREE.WebGLPrograms(this,ca),ra=new THREE.WebGLLights;this.info.programs=ia.programs;var Da=new THREE.WebGLBufferRenderer(r,V,da),Ea=new THREE.WebGLIndexedBufferRenderer(r,V,da);c();this.context=r;this.capabilities=ca;this.extensions=V;this.properties=T;this.state=H;var za=new THREE.WebGLShadowMap(this,U,ka);this.shadowMap=za;var Fa=new THREE.SpritePlugin(this,aa),Ga=new THREE.LensFlarePlugin(this,ya);this.getContext=function(){return r};this.getContextAttributes=
|
|
|
+W=0,Z=[],$=[],ga=-1,ba=[],ka=-1,ma=new Float32Array(8),aa=[],va=[];this.domElement=F;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 Y=this,ta=null,na=null,ra=null,oa=-1,ia="",ha=null,qa=0,ea=new THREE.Rectangle(0,0,F.width,F.height),xa=0,ya=0,ua=new THREE.Frustum,pa=new THREE.Matrix4,X=new THREE.Vector3,
|
|
|
+U={hash:"",ambient:[0,0,0],directional:[],point:[],spot:[],hemi:[],shadows:[],shadowsPointLight:0},fa={geometries:0,textures:0},da={calls:0,vertices:0,faces:0,points:0};this.info={render:da,memory:fa,programs:null};var r;try{J={alpha:J,depth:Q,stencil:R,antialias:K,premultipliedAlpha:P,preserveDrawingBuffer:B};r=N||F.getContext("webgl",J)||F.getContext("experimental-webgl",J);if(null===r){if(null!==F.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";
|
|
|
+}F.addEventListener("webglcontextlost",e,!1)}catch(za){console.error("THREE.WebGLRenderer: "+za)}var V=new THREE.WebGLExtensions(r);V.get("OES_texture_float");V.get("OES_texture_float_linear");V.get("OES_texture_half_float");V.get("OES_texture_half_float_linear");V.get("OES_standard_derivatives");V.get("ANGLE_instanced_arrays");V.get("OES_element_index_uint")&&(THREE.BufferGeometry.MaxIndex=4294967296);var ca=new THREE.WebGLCapabilities(r,V,a),H=new THREE.WebGLState(r,V,C),T=new THREE.WebGLProperties,
|
|
|
+la=new THREE.WebGLObjects(r,T,this.info),ja=new THREE.WebGLPrograms(this,ca),sa=new THREE.WebGLLights;this.info.programs=ja.programs;var Aa=new THREE.WebGLBufferRenderer(r,V,da),Ba=new THREE.WebGLIndexedBufferRenderer(r,V,da);c();this.context=r;this.capabilities=ca;this.extensions=V;this.properties=T;this.state=H;var wa=new THREE.WebGLShadowMap(this,U,la);this.shadowMap=wa;var Ca=new THREE.SpritePlugin(this,aa),Da=new THREE.LensFlarePlugin(this,va);this.getContext=function(){return r};this.getContextAttributes=
|
|
|
function(){return r.getContextAttributes()};this.forceContextLoss=function(){V.get("WEBGL_lose_context").loseContext()};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=V.get("EXT_texture_filter_anisotropic");return a=null!==b?r.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return ca.precision};this.getPixelRatio=function(){return G};this.setPixelRatio=function(a){void 0!==a&&(G=a)};this.getSize=function(){return{width:O,height:I}};
|
|
|
-this.setSize=function(a,b,c){O=a;I=b;F.width=a*G;F.height=b*G;!1!==c&&(F.style.width=a+"px",F.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){null===ma&&(sa=a*=G,ta=b*=G,ua=c*=G,va=d*=G);r.viewport(a,b,c,d)};this.setScissor=function(a,b,c,d){null===ma&&(a*=G,b*=G,c*=G,d*=G);r.scissor(a,b,c,d)};this.enableScissorTest=function(a){H.setScissorTest(a)};this.getClearColor=function(){return S};this.setClearColor=function(a,c){S.set(a);W=void 0!==c?c:1;b(S.r,S.g,S.b,W)};
|
|
|
-this.getClearAlpha=function(){return W};this.setClearAlpha=function(a){W=a;b(S.r,S.g,S.b,W)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=r.COLOR_BUFFER_BIT;if(void 0===b||b)d|=r.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=r.STENCIL_BUFFER_BIT;r.clear(d)};this.clearColor=function(){r.clear(r.COLOR_BUFFER_BIT)};this.clearDepth=function(){r.clear(r.DEPTH_BUFFER_BIT)};this.clearStencil=function(){r.clear(r.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,
|
|
|
+this.setSize=function(a,b,c){O=a;I=b;F.width=a*G;F.height=b*G;!1!==c&&(F.style.width=a+"px",F.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){null===na&&(a*=G,b*=G,c*=G,d*=G,ea.set(a,b,c,d));r.viewport(a,b,c,d)};this.setScissor=function(a,b,c,d){null===na&&(a*=G,b*=G,c*=G,d*=G);r.scissor(a,b,c,d)};this.enableScissorTest=function(a){H.setScissorTest(a)};this.getClearColor=function(){return S};this.setClearColor=function(a,c){S.set(a);W=void 0!==c?c:1;b(S.r,S.g,S.b,
|
|
|
+W)};this.getClearAlpha=function(){return W};this.setClearAlpha=function(a){W=a;b(S.r,S.g,S.b,W)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=r.COLOR_BUFFER_BIT;if(void 0===b||b)d|=r.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=r.STENCIL_BUFFER_BIT;r.clear(d)};this.clearColor=function(){r.clear(r.COLOR_BUFFER_BIT)};this.clearDepth=function(){r.clear(r.DEPTH_BUFFER_BIT)};this.clearStencil=function(){r.clear(r.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,
|
|
|
c,d)};this.resetGLState=d;this.dispose=function(){F.removeEventListener("webglcontextlost",e,!1)};this.renderBufferImmediate=function(a,b,c){H.initAttributes();var d=T.get(a);a.hasPositions&&!d.position&&(d.position=r.createBuffer());a.hasNormals&&!d.normal&&(d.normal=r.createBuffer());a.hasUvs&&!d.uv&&(d.uv=r.createBuffer());a.hasColors&&!d.color&&(d.color=r.createBuffer());b=b.getAttributes();a.hasPositions&&(r.bindBuffer(r.ARRAY_BUFFER,d.position),r.bufferData(r.ARRAY_BUFFER,a.positionArray,r.DYNAMIC_DRAW),
|
|
|
H.enableAttribute(b.position),r.vertexAttribPointer(b.position,3,r.FLOAT,!1,0,0));if(a.hasNormals){r.bindBuffer(r.ARRAY_BUFFER,d.normal);if("MeshPhongMaterial"!==c.type&&"MeshStandardMaterial"!==c.type&&c.shading===THREE.FlatShading)for(var e=0,g=3*a.count;e<g;e+=9){var f=a.normalArray,h=(f[e+0]+f[e+3]+f[e+6])/3,k=(f[e+1]+f[e+4]+f[e+7])/3,l=(f[e+2]+f[e+5]+f[e+8])/3;f[e+0]=h;f[e+1]=k;f[e+2]=l;f[e+3]=h;f[e+4]=k;f[e+5]=l;f[e+6]=h;f[e+7]=k;f[e+8]=l}r.bufferData(r.ARRAY_BUFFER,a.normalArray,r.DYNAMIC_DRAW);
|
|
|
H.enableAttribute(b.normal);r.vertexAttribPointer(b.normal,3,r.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(r.bindBuffer(r.ARRAY_BUFFER,d.uv),r.bufferData(r.ARRAY_BUFFER,a.uvArray,r.DYNAMIC_DRAW),H.enableAttribute(b.uv),r.vertexAttribPointer(b.uv,2,r.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(r.bindBuffer(r.ARRAY_BUFFER,d.color),r.bufferData(r.ARRAY_BUFFER,a.colorArray,r.DYNAMIC_DRAW),H.enableAttribute(b.color),r.vertexAttribPointer(b.color,3,r.FLOAT,!1,0,0));H.disableUnusedAttributes();r.drawArrays(r.TRIANGLES,
|
|
|
-0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){u(d);var g=s(a,b,d,e),h=!1;a=c.id+"_"+g.id+"_"+d.wireframe;a!==ha&&(ha=a,h=!0);b=e.morphTargetInfluences;if(void 0!==b){a=[];for(var k=0,h=b.length;k<h;k++){var n=b[k];a.push([n,k])}a.sort(l);8<a.length&&(a.length=8);for(var m=c.morphAttributes,k=0,h=a.length;k<h;k++)n=a[k],la[k]=n[0],0!==n[0]?(b=n[1],!0===d.morphTargets&&m.position&&c.addAttribute("morphTarget"+k,m.position[b]),!0===d.morphNormals&&m.normal&&c.addAttribute("morphNormal"+
|
|
|
-k,m.normal[b])):(!0===d.morphTargets&&c.removeAttribute("morphTarget"+k),!0===d.morphNormals&&c.removeAttribute("morphNormal"+k));a=g.getUniforms();null!==a.morphTargetInfluences&&r.uniform1fv(a.morphTargetInfluences,la);h=!0}b=c.index;k=c.attributes.position;!0===d.wireframe&&(b=ka.getWireframeAttribute(c));null!==b?(a=Ea,a.setIndex(b)):a=Da;if(h){a:{var h=void 0,p;if(c instanceof THREE.InstancedBufferGeometry&&(p=V.get("ANGLE_instanced_arrays"),null===p)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
|
|
-break a}void 0===h&&(h=0);H.initAttributes();var n=c.attributes,g=g.getAttributes(),m=d.defaultAttributeValues,q;for(q in g){var t=g[q];if(0<=t){var w=n[q];if(void 0!==w){var v=w.itemSize,C=ka.getAttributeBuffer(w);if(w instanceof THREE.InterleavedBufferAttribute){var x=w.data,D=x.stride,w=w.offset;x instanceof THREE.InstancedInterleavedBuffer?(H.enableAttributeAndDivisor(t,x.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=x.meshPerAttribute*x.count)):H.enableAttribute(t);r.bindBuffer(r.ARRAY_BUFFER,
|
|
|
+0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){u(d);var g=s(a,b,d,e),h=!1;a=c.id+"_"+g.id+"_"+d.wireframe;a!==ia&&(ia=a,h=!0);b=e.morphTargetInfluences;if(void 0!==b){a=[];for(var k=0,h=b.length;k<h;k++){var n=b[k];a.push([n,k])}a.sort(l);8<a.length&&(a.length=8);for(var m=c.morphAttributes,k=0,h=a.length;k<h;k++)n=a[k],ma[k]=n[0],0!==n[0]?(b=n[1],!0===d.morphTargets&&m.position&&c.addAttribute("morphTarget"+k,m.position[b]),!0===d.morphNormals&&m.normal&&c.addAttribute("morphNormal"+
|
|
|
+k,m.normal[b])):(!0===d.morphTargets&&c.removeAttribute("morphTarget"+k),!0===d.morphNormals&&c.removeAttribute("morphNormal"+k));a=g.getUniforms();null!==a.morphTargetInfluences&&r.uniform1fv(a.morphTargetInfluences,ma);h=!0}b=c.index;k=c.attributes.position;!0===d.wireframe&&(b=la.getWireframeAttribute(c));null!==b?(a=Ba,a.setIndex(b)):a=Aa;if(h){a:{var h=void 0,p;if(c instanceof THREE.InstancedBufferGeometry&&(p=V.get("ANGLE_instanced_arrays"),null===p)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");
|
|
|
+break a}void 0===h&&(h=0);H.initAttributes();var n=c.attributes,g=g.getAttributes(),m=d.defaultAttributeValues,q;for(q in g){var t=g[q];if(0<=t){var w=n[q];if(void 0!==w){var v=w.itemSize,C=la.getAttributeBuffer(w);if(w instanceof THREE.InterleavedBufferAttribute){var x=w.data,D=x.stride,w=w.offset;x instanceof THREE.InstancedInterleavedBuffer?(H.enableAttributeAndDivisor(t,x.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=x.meshPerAttribute*x.count)):H.enableAttribute(t);r.bindBuffer(r.ARRAY_BUFFER,
|
|
|
C);r.vertexAttribPointer(t,v,r.FLOAT,!1,D*x.array.BYTES_PER_ELEMENT,(h*D+w)*x.array.BYTES_PER_ELEMENT)}else w instanceof THREE.InstancedBufferAttribute?(H.enableAttributeAndDivisor(t,w.meshPerAttribute,p),void 0===c.maxInstancedCount&&(c.maxInstancedCount=w.meshPerAttribute*w.count)):H.enableAttribute(t),r.bindBuffer(r.ARRAY_BUFFER,C),r.vertexAttribPointer(t,v,r.FLOAT,!1,0,h*v*4)}else if(void 0!==m&&(v=m[q],void 0!==v))switch(v.length){case 2:r.vertexAttrib2fv(t,v);break;case 3:r.vertexAttrib3fv(t,
|
|
|
-v);break;case 4:r.vertexAttrib4fv(t,v);break;default:r.vertexAttrib1fv(t,v)}}}H.disableUnusedAttributes()}null!==b&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,ka.getAttributeBuffer(b))}p=Infinity;null!==b?p=b.count:void 0!==k&&(p=k.count);q=c.drawRange.start;b=c.drawRange.count;k=null!==f?f.start:0;h=null!==f?f.count:Infinity;f=Math.max(0,q,k);p=Math.min(0+p,q+b,k+h)-1;p=Math.max(0,p-f+1);if(e instanceof THREE.Mesh)if(!0===d.wireframe)H.setLineWidth(d.wireframeLinewidth*(null===ma?G:1)),a.setMode(r.LINES);
|
|
|
-else switch(e.drawMode){case THREE.TrianglesDrawMode:a.setMode(r.TRIANGLES);break;case THREE.TriangleStripDrawMode:a.setMode(r.TRIANGLE_STRIP);break;case THREE.TriangleFanDrawMode:a.setMode(r.TRIANGLE_FAN)}else e instanceof THREE.Line?(d=d.linewidth,void 0===d&&(d=1),H.setLineWidth(d*(null===ma?G:1)),e instanceof THREE.LineSegments?a.setMode(r.LINES):a.setMode(r.LINE_STRIP)):e instanceof THREE.Points&&a.setMode(r.POINTS);c instanceof THREE.InstancedBufferGeometry&&0<c.maxInstancedCount?a.renderInstances(c,
|
|
|
-f,p):a.render(f,p)};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;ha="";na=-1;ga=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);oa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);xa.setFromMatrix(oa);Z.length=0;ja=fa=-1;aa.length=0;ya.length=0;q(a,b);$.length=fa+1;ba.length=ja+1;!0===
|
|
|
-Y.sortObjects&&($.sort(m),ba.sort(p));var f=Z,g,h,k,l=0,n=0,s=0,w,v,u,x=b.matrixWorldInverse,C=0,D=0,z=0,A=0,y=0;g=U.shadowsPointLight=0;for(h=f.length;g<h;g++)if(k=f[g],w=k.color,v=k.intensity,u=k.distance,k instanceof THREE.AmbientLight)l+=w.r*v,n+=w.g*v,s+=w.b*v;else if(k instanceof THREE.DirectionalLight){var F=ra.get(k);F.direction.setFromMatrixPosition(k.matrixWorld);X.setFromMatrixPosition(k.target.matrixWorld);F.direction.sub(X);F.direction.transformDirection(x);F.color.copy(k.color).multiplyScalar(k.intensity);
|
|
|
-k.castShadow?(F.shadow=y,U.shadows[y++]=k):F.shadow=-1;U.directional[C++]=F}else k instanceof THREE.PointLight?(F=ra.get(k),F.position.setFromMatrixPosition(k.matrixWorld),F.position.applyMatrix4(x),F.color.copy(k.color).multiplyScalar(k.intensity),F.distance=k.distance,F.decay=0===k.distance?0:k.decay,k.castShadow?(F.shadow=y,U.shadows[y++]=k,U.shadowsPointLight++):F.shadow=-1,U.point[D++]=F):k instanceof THREE.SpotLight?(F=ra.get(k),F.position.setFromMatrixPosition(k.matrixWorld),F.position.applyMatrix4(x),
|
|
|
-F.color.copy(w).multiplyScalar(v),F.distance=u,F.direction.setFromMatrixPosition(k.matrixWorld),X.setFromMatrixPosition(k.target.matrixWorld),F.direction.sub(X),F.direction.transformDirection(x),F.angleCos=Math.cos(k.angle),F.exponent=k.exponent,F.decay=0===k.distance?0:k.decay,k.castShadow?(F.shadow=y,U.shadows[y++]=k):F.shadow=-1,U.spot[z++]=F):k instanceof THREE.HemisphereLight&&(F=ra.get(k),F.direction.setFromMatrixPosition(k.matrixWorld),F.direction.transformDirection(x),F.direction.normalize(),
|
|
|
-F.skyColor.copy(k.color).multiplyScalar(v),F.groundColor.copy(k.groundColor).multiplyScalar(v),U.hemi[A++]=F);U.ambient[0]=l;U.ambient[1]=n;U.ambient[2]=s;U.directional.length=C;U.point.length=D;U.spot.length=z;U.hemi.length=A;U.shadows.length=y;U.hash=C+","+D+","+z+","+A+","+y;za.render(a,b);da.calls=0;da.vertices=0;da.faces=0;da.points=0;void 0===c&&(c=null);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?
|
|
|
-(d=a.overrideMaterial,t($,b,e,d),t(ba,b,e,d)):(H.setBlending(THREE.NoBlending),t($,b,e),t(ba,b,e));Fa.render(a,b);Ga.render(a,b,Aa,Ba);c&&(a=c.texture,a.generateMipmaps&&E(c)&&a.minFilter!==THREE.NearestFilter&&a.minFilter!==THREE.LinearFilter&&(a=c instanceof THREE.WebGLRenderTargetCube?r.TEXTURE_CUBE_MAP:r.TEXTURE_2D,c=T.get(c.texture).__webglTexture,H.bindTexture(a,c),r.generateMipmap(a),H.bindTexture(a,null)));H.setDepthTest(!0);H.setDepthWrite(!0);H.setColorWrite(!0)}};this.setFaceCulling=function(a,
|
|
|
+v);break;case 4:r.vertexAttrib4fv(t,v);break;default:r.vertexAttrib1fv(t,v)}}}H.disableUnusedAttributes()}null!==b&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,la.getAttributeBuffer(b))}p=Infinity;null!==b?p=b.count:void 0!==k&&(p=k.count);q=c.drawRange.start;b=c.drawRange.count;k=null!==f?f.start:0;h=null!==f?f.count:Infinity;f=Math.max(0,q,k);p=Math.min(0+p,q+b,k+h)-1;p=Math.max(0,p-f+1);if(e instanceof THREE.Mesh)if(!0===d.wireframe)H.setLineWidth(d.wireframeLinewidth*(null===na?G:1)),a.setMode(r.LINES);
|
|
|
+else switch(e.drawMode){case THREE.TrianglesDrawMode:a.setMode(r.TRIANGLES);break;case THREE.TriangleStripDrawMode:a.setMode(r.TRIANGLE_STRIP);break;case THREE.TriangleFanDrawMode:a.setMode(r.TRIANGLE_FAN)}else e instanceof THREE.Line?(d=d.linewidth,void 0===d&&(d=1),H.setLineWidth(d*(null===na?G:1)),e instanceof THREE.LineSegments?a.setMode(r.LINES):a.setMode(r.LINE_STRIP)):e instanceof THREE.Points&&a.setMode(r.POINTS);c instanceof THREE.InstancedBufferGeometry&&0<c.maxInstancedCount?a.renderInstances(c,
|
|
|
+f,p):a.render(f,p)};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;ia="";oa=-1;ha=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);pa.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);ua.setFromMatrix(pa);Z.length=0;ka=ga=-1;aa.length=0;va.length=0;q(a,b);$.length=ga+1;ba.length=ka+1;!0===
|
|
|
+Y.sortObjects&&($.sort(m),ba.sort(p));var f=Z,g,h,k,l=0,n=0,s=0,w,v,u,x=b.matrixWorldInverse,C=0,D=0,z=0,A=0,y=0;g=U.shadowsPointLight=0;for(h=f.length;g<h;g++)if(k=f[g],w=k.color,v=k.intensity,u=k.distance,k instanceof THREE.AmbientLight)l+=w.r*v,n+=w.g*v,s+=w.b*v;else if(k instanceof THREE.DirectionalLight){var F=sa.get(k);F.direction.setFromMatrixPosition(k.matrixWorld);X.setFromMatrixPosition(k.target.matrixWorld);F.direction.sub(X);F.direction.transformDirection(x);F.color.copy(k.color).multiplyScalar(k.intensity);
|
|
|
+k.castShadow?(F.shadow=y,U.shadows[y++]=k):F.shadow=-1;U.directional[C++]=F}else k instanceof THREE.PointLight?(F=sa.get(k),F.position.setFromMatrixPosition(k.matrixWorld),F.position.applyMatrix4(x),F.color.copy(k.color).multiplyScalar(k.intensity),F.distance=k.distance,F.decay=0===k.distance?0:k.decay,k.castShadow?(F.shadow=y,U.shadows[y++]=k,U.shadowsPointLight++):F.shadow=-1,U.point[D++]=F):k instanceof THREE.SpotLight?(F=sa.get(k),F.position.setFromMatrixPosition(k.matrixWorld),F.position.applyMatrix4(x),
|
|
|
+F.color.copy(w).multiplyScalar(v),F.distance=u,F.direction.setFromMatrixPosition(k.matrixWorld),X.setFromMatrixPosition(k.target.matrixWorld),F.direction.sub(X),F.direction.transformDirection(x),F.angleCos=Math.cos(k.angle),F.exponent=k.exponent,F.decay=0===k.distance?0:k.decay,k.castShadow?(F.shadow=y,U.shadows[y++]=k):F.shadow=-1,U.spot[z++]=F):k instanceof THREE.HemisphereLight&&(F=sa.get(k),F.direction.setFromMatrixPosition(k.matrixWorld),F.direction.transformDirection(x),F.direction.normalize(),
|
|
|
+F.skyColor.copy(k.color).multiplyScalar(v),F.groundColor.copy(k.groundColor).multiplyScalar(v),U.hemi[A++]=F);U.ambient[0]=l;U.ambient[1]=n;U.ambient[2]=s;U.directional.length=C;U.point.length=D;U.spot.length=z;U.hemi.length=A;U.shadows.length=y;U.hash=C+","+D+","+z+","+A+","+y;wa.render(a,b);da.calls=0;da.vertices=0;da.faces=0;da.points=0;void 0===c&&(c=null);this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?
|
|
|
+(d=a.overrideMaterial,t($,b,e,d),t(ba,b,e,d)):(H.setBlending(THREE.NoBlending),t($,b,e),t(ba,b,e));Ca.render(a,b);Da.render(a,b,xa,ya);c&&(a=c.texture,a.generateMipmaps&&E(c)&&a.minFilter!==THREE.NearestFilter&&a.minFilter!==THREE.LinearFilter&&(a=c instanceof THREE.WebGLRenderTargetCube?r.TEXTURE_CUBE_MAP:r.TEXTURE_2D,c=T.get(c.texture).__webglTexture,H.bindTexture(a,c),r.generateMipmap(a),H.bindTexture(a,null)));H.setDepthTest(!0);H.setDepthWrite(!0);H.setColorWrite(!0)}};this.setFaceCulling=function(a,
|
|
|
b){a===THREE.CullFaceNone?H.disable(r.CULL_FACE):(b===THREE.FrontFaceDirectionCW?r.frontFace(r.CW):r.frontFace(r.CCW),a===THREE.CullFaceBack?r.cullFace(r.BACK):a===THREE.CullFaceFront?r.cullFace(r.FRONT):r.cullFace(r.FRONT_AND_BACK),H.enable(r.CULL_FACE))};this.setTexture=function(a,b){var c=T.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.addEventListener("dispose",f),c.__webglTexture=r.createTexture(),ea.textures++);H.activeTexture(r.TEXTURE0+b);H.bindTexture(r.TEXTURE_2D,c.__webglTexture);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,a.flipY);r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);r.pixelStorei(r.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=x(a.image,ca.maxTextureSize);if((a.wrapS!==THREE.ClampToEdgeWrapping||a.wrapT!==THREE.ClampToEdgeWrapping||a.minFilter!==THREE.NearestFilter&&
|
|
|
+a);else{void 0===c.__webglInit&&(c.__webglInit=!0,a.addEventListener("dispose",f),c.__webglTexture=r.createTexture(),fa.textures++);H.activeTexture(r.TEXTURE0+b);H.bindTexture(r.TEXTURE_2D,c.__webglTexture);r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,a.flipY);r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);r.pixelStorei(r.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=x(a.image,ca.maxTextureSize);if((a.wrapS!==THREE.ClampToEdgeWrapping||a.wrapT!==THREE.ClampToEdgeWrapping||a.minFilter!==THREE.NearestFilter&&
|
|
|
a.minFilter!==THREE.LinearFilter)&&!1===E(a.image)){d=a.image;if(d instanceof HTMLImageElement||d instanceof HTMLCanvasElement){var e=document.createElement("canvas");e.width=THREE.Math.nearestPowerOfTwo(d.width);e.height=THREE.Math.nearestPowerOfTwo(d.height);e.getContext("2d").drawImage(d,0,0,e.width,e.height);console.warn("THREE.WebGLRenderer: image is not power of two ("+d.width+"x"+d.height+"). Resized to "+e.width+"x"+e.height,d);d=e}a.image=d}var g=a.image,d=E(g),e=C(a.format),h=C(a.type);
|
|
|
D(r.TEXTURE_2D,a,d);var k=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<k.length&&d){for(var l=0,n=k.length;l<n;l++)g=k[l],H.texImage2D(r.TEXTURE_2D,l,e,g.width,g.height,0,e,h,g.data);a.generateMipmaps=!1}else H.texImage2D(r.TEXTURE_2D,0,e,g.width,g.height,0,e,h,g.data);else if(a instanceof THREE.CompressedTexture)for(l=0,n=k.length;l<n;l++)g=k[l],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<H.getCompressedTextureFormats().indexOf(e)?H.compressedTexImage2D(r.TEXTURE_2D,l,e,g.width,
|
|
|
g.height,0,g.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):H.texImage2D(r.TEXTURE_2D,l,e,g.width,g.height,0,e,h,g.data);else if(0<k.length&&d){l=0;for(n=k.length;l<n;l++)g=k[l],H.texImage2D(r.TEXTURE_2D,l,e,e,h,g);a.generateMipmaps=!1}else H.texImage2D(r.TEXTURE_2D,0,e,e,h,a.image);a.generateMipmaps&&d&&r.generateMipmap(r.TEXTURE_2D);c.__version=a.version;if(a.onUpdate)a.onUpdate(a)}}else H.activeTexture(r.TEXTURE0+b),H.bindTexture(r.TEXTURE_2D,
|
|
|
-c.__webglTexture)};this.setRenderTarget=function(a){if((ma=a)&&void 0===T.get(a).__webglFramebuffer){var b=T.get(a),c=T.get(a.texture);a.addEventListener("dispose",g);c.__webglTexture=r.createTexture();ea.textures++;var d=a instanceof THREE.WebGLRenderTargetCube,e=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height);if(d){b.__webglFramebuffer=[];for(var f=0;6>f;f++)b.__webglFramebuffer[f]=r.createFramebuffer()}else b.__webglFramebuffer=r.createFramebuffer();if(d){H.bindTexture(r.TEXTURE_CUBE_MAP,
|
|
|
+c.__webglTexture)};this.setRenderTarget=function(a){if((na=a)&&void 0===T.get(a).__webglFramebuffer){var b=T.get(a),c=T.get(a.texture);a.addEventListener("dispose",g);c.__webglTexture=r.createTexture();fa.textures++;var d=a instanceof THREE.WebGLRenderTargetCube,e=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height);if(d){b.__webglFramebuffer=[];for(var f=0;6>f;f++)b.__webglFramebuffer[f]=r.createFramebuffer()}else b.__webglFramebuffer=r.createFramebuffer();if(d){H.bindTexture(r.TEXTURE_CUBE_MAP,
|
|
|
c.__webglTexture);D(r.TEXTURE_CUBE_MAP,a.texture,e);for(f=0;6>f;f++)y(b.__webglFramebuffer[f],a,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+f);a.texture.generateMipmaps&&e&&r.generateMipmap(r.TEXTURE_CUBE_MAP);H.bindTexture(r.TEXTURE_CUBE_MAP,null)}else H.bindTexture(r.TEXTURE_2D,c.__webglTexture),D(r.TEXTURE_2D,a.texture,e),y(b.__webglFramebuffer,a,r.COLOR_ATTACHMENT0,r.TEXTURE_2D),a.texture.generateMipmaps&&e&&r.generateMipmap(r.TEXTURE_2D),H.bindTexture(r.TEXTURE_2D,null);if(a.depthBuffer){b=
|
|
|
-T.get(a);if(a instanceof THREE.WebGLRenderTargetCube)for(b.__webglDepthbuffer=[],c=0;6>c;c++)r.bindFramebuffer(r.FRAMEBUFFER,b.__webglFramebuffer[c]),b.__webglDepthbuffer[c]=r.createRenderbuffer(),M(b.__webglDepthbuffer[c],a);else r.bindFramebuffer(r.FRAMEBUFFER,b.__webglFramebuffer),b.__webglDepthbuffer=r.createRenderbuffer(),M(b.__webglDepthbuffer,a);r.bindFramebuffer(r.FRAMEBUFFER,null)}}var b=a instanceof THREE.WebGLRenderTargetCube,h;a?(c=T.get(a),e=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,
|
|
|
-c=a.width,d=a.height,h=f=0):(e=null,c=ua,d=va,f=sa,h=ta);e!==qa&&(r.bindFramebuffer(r.FRAMEBUFFER,e),r.viewport(f,h,c,d),qa=e);b&&(b=T.get(a.texture),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,0));Aa=c;Ba=d};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else{var g=T.get(a).__webglFramebuffer;
|
|
|
-if(g){var h=!1;g!==qa&&(r.bindFramebuffer(r.FRAMEBUFFER,g),h=!0);try{var k=a.texture;k.format!==THREE.RGBAFormat&&C(k.format)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):k.type===THREE.UnsignedByteType||C(k.type)===r.getParameter(r.IMPLEMENTATION_COLOR_READ_TYPE)||k.type===THREE.FloatType&&V.get("WEBGL_color_buffer_float")||k.type===THREE.HalfFloatType&&V.get("EXT_color_buffer_half_float")?
|
|
|
-r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE?r.readPixels(b,c,d,e,C(k.format),C(k.type),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&r.bindFramebuffer(r.FRAMEBUFFER,qa)}}}}};
|
|
|
-THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();this.width=a;this.height=b;c=c||{};void 0===c.minFilter&&(c.minFilter=THREE.LinearFilter);this.texture=new THREE.Texture(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy);this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0};
|
|
|
-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()},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.shareDepthFrom=a.shareDepthFrom;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);
|
|
|
-THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube;
|
|
|
+T.get(a);if(a instanceof THREE.WebGLRenderTargetCube)for(b.__webglDepthbuffer=[],c=0;6>c;c++)r.bindFramebuffer(r.FRAMEBUFFER,b.__webglFramebuffer[c]),b.__webglDepthbuffer[c]=r.createRenderbuffer(),M(b.__webglDepthbuffer[c],a);else r.bindFramebuffer(r.FRAMEBUFFER,b.__webglFramebuffer),b.__webglDepthbuffer=r.createRenderbuffer(),M(b.__webglDepthbuffer,a);r.bindFramebuffer(r.FRAMEBUFFER,null)}}b=a instanceof THREE.WebGLRenderTargetCube;a?(c=T.get(a),d=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,
|
|
|
+c=a.viewport):(d=null,c=ea);d!==ra&&(r.bindFramebuffer(r.FRAMEBUFFER,d),r.viewport(c.x,c.y,c.width,c.height),ra=d);b&&(b=T.get(a.texture),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,0));xa=c.width;ya=c.height};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else{var g=T.get(a).__webglFramebuffer;
|
|
|
+if(g){var h=!1;g!==ra&&(r.bindFramebuffer(r.FRAMEBUFFER,g),h=!0);try{var k=a.texture;k.format!==THREE.RGBAFormat&&C(k.format)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):k.type===THREE.UnsignedByteType||C(k.type)===r.getParameter(r.IMPLEMENTATION_COLOR_READ_TYPE)||k.type===THREE.FloatType&&V.get("WEBGL_color_buffer_float")||k.type===THREE.HalfFloatType&&V.get("EXT_color_buffer_half_float")?
|
|
|
+r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE?r.readPixels(b,c,d,e,C(k.format),C(k.type),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&&r.bindFramebuffer(r.FRAMEBUFFER,ra)}}}}};
|
|
|
+THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();this.width=a;this.height=b;this.viewport=new THREE.Rectangle(0,0,a,b);c=c||{};void 0===c.minFilter&&(c.minFilter=THREE.LinearFilter);this.texture=new THREE.Texture(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy);this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0};
|
|
|
+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();this.viewport.set(0,0,a,b)},setViewport:function(a,b,c,d){this.viewport.set(a,b,c,d)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.shareDepthFrom=
|
|
|
+a.shareDepthFrom;return this},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube;
|
|
|
THREE.WebGLBufferRenderer=function(a,b,c){var d;this.setMode=function(a){d=a};this.render=function(b,f){a.drawArrays(d,b,f);c.calls++;c.vertices+=f;d===a.TRIANGLES&&(c.faces+=f/3)};this.renderInstances=function(a){var c=b.get("ANGLE_instanced_arrays");if(null===c)console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{var g=a.attributes.position;g instanceof THREE.InterleavedBufferAttribute?c.drawArraysInstancedANGLE(d,
|
|
|
0,g.data.count,a.maxInstancedCount):c.drawArraysInstancedANGLE(d,0,g.count,a.maxInstancedCount)}}};
|
|
|
THREE.WebGLIndexedBufferRenderer=function(a,b,c){var d,e,f;this.setMode=function(a){d=a};this.setIndex=function(c){c.array instanceof Uint32Array&&b.get("OES_element_index_uint")?(e=a.UNSIGNED_INT,f=4):(e=a.UNSIGNED_SHORT,f=2)};this.render=function(b,h){a.drawElements(d,h,e,b*f);c.calls++;c.vertices+=h;d===a.TRIANGLES&&(c.faces+=h/3)};this.renderInstances=function(a,c,k){var l=b.get("ANGLE_instanced_arrays");null===l?console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays."):
|
|
@@ -715,8 +716,8 @@ new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1),new THREE.Vector3(0,1,0),new
|
|
|
E=0;4!==E;++E){var A=0!==(E&1),z=0!==(E&2),y=new THREE.ShaderMaterial({uniforms:v,vertexShader:w.vertexShader,fragmentShader:w.fragmentShader,morphTargets:A,skinning:z});y._shadowPass=!0;n[E]=y;A=new THREE.ShaderMaterial({uniforms:x,vertexShader:D.vertexShader,fragmentShader:D.fragmentShader,morphTargets:A,skinning:z});A._shadowPass=!0;q[E]=A}var M=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.cullFace=THREE.CullFaceFront;this.render=function(n,q){var w,
|
|
|
v;if(!1!==M.enabled&&(!1!==M.autoUpdate||!1!==M.needsUpdate)){var x=g.getScissorTest();f.clearColor(1,1,1,1);g.disable(f.BLEND);g.enable(f.CULL_FACE);f.frontFace(f.CCW);f.cullFace(M.cullFace===THREE.CullFaceFront?f.FRONT:f.BACK);g.setDepthTest(!0);g.setScissorTest(!1);for(var D=b.shadows,z=0,A=D.length;z<A;z++){var E=D[z],y=E.shadow,K=y.camera,P=y.mapSize;if(E instanceof THREE.PointLight){w=6;v=!0;var B=P.x/4,S=P.y/2;s[0].set(2*B,S,B,S);s[1].set(0,S,B,S);s[2].set(3*B,S,B,S);s[3].set(B,S,B,S);s[4].set(3*
|
|
|
B,0,B,S);s[5].set(B,0,B,S)}else w=1,v=!1;null===y.map&&(B=THREE.LinearFilter,M.type===THREE.PCFSoftShadowMap&&(B=THREE.NearestFilter),y.map=new THREE.WebGLRenderTarget(P.x,P.y,{minFilter:B,magFilter:B,format:THREE.RGBAFormat}),y.matrix=new THREE.Matrix4,E instanceof THREE.SpotLight&&(K.aspect=P.x/P.y),K.updateProjectionMatrix());P=y.map;y=y.matrix;m.setFromMatrixPosition(E.matrixWorld);K.position.copy(m);a.setRenderTarget(P);a.clear();for(P=0;P<w;P++)for(v?(l.copy(K.position),l.add(t[P]),K.up.copy(u[P]),
|
|
|
-K.lookAt(l),B=s[P],a.setViewport(B.x,B.y,B.z,B.w)):(l.setFromMatrixPosition(E.target.matrixWorld),K.lookAt(l)),K.updateMatrixWorld(),K.matrixWorldInverse.getInverse(K.matrixWorld),y.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),y.multiply(K.projectionMatrix),y.multiply(K.matrixWorldInverse),k.multiplyMatrices(K.projectionMatrix,K.matrixWorldInverse),h.setFromMatrix(k),p.length=0,e(n,q,K),B=0,S=p.length;B<S;B++){var W=p[B],Z=c.update(W),$=W.material;if($ instanceof THREE.MeshFaceMaterial)for(var fa=Z.groups,
|
|
|
-$=$.materials,ba=0,ja=fa.length;ba<ja;ba++){var la=fa[ba],aa=$[la.materialIndex];!0===aa.visible&&(aa=d(W,aa,v,m),a.renderBufferDirect(K,null,Z,aa,W,la))}else aa=d(W,$,v,m),a.renderBufferDirect(K,null,Z,aa,W,null)}a.resetGLState()}w=a.getClearColor();v=a.getClearAlpha();a.setClearColor(w,v);g.enable(f.BLEND);!0===x&&g.setScissorTest(!0);M.cullFace===THREE.CullFaceFront&&f.cullFace(f.BACK);a.resetGLState();M.needsUpdate=!1}}};
|
|
|
+K.lookAt(l),B=s[P],a.setViewport(B.x,B.y,B.z,B.w)):(l.setFromMatrixPosition(E.target.matrixWorld),K.lookAt(l)),K.updateMatrixWorld(),K.matrixWorldInverse.getInverse(K.matrixWorld),y.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),y.multiply(K.projectionMatrix),y.multiply(K.matrixWorldInverse),k.multiplyMatrices(K.projectionMatrix,K.matrixWorldInverse),h.setFromMatrix(k),p.length=0,e(n,q,K),B=0,S=p.length;B<S;B++){var W=p[B],Z=c.update(W),$=W.material;if($ instanceof THREE.MeshFaceMaterial)for(var ga=Z.groups,
|
|
|
+$=$.materials,ba=0,ka=ga.length;ba<ka;ba++){var ma=ga[ba],aa=$[ma.materialIndex];!0===aa.visible&&(aa=d(W,aa,v,m),a.renderBufferDirect(K,null,Z,aa,W,ma))}else aa=d(W,$,v,m),a.renderBufferDirect(K,null,Z,aa,W,null)}a.resetGLState()}w=a.getClearColor();v=a.getClearAlpha();a.setClearColor(w,v);g.enable(f.BLEND);!0===x&&g.setScissorTest(!0);M.cullFace===THREE.CullFaceFront&&f.cullFace(f.BACK);a.resetGLState();M.needsUpdate=!1}}};
|
|
|
THREE.WebGLState=function(a,b,c){var d=this,e=new Uint8Array(16),f=new Uint8Array(16),g=new Uint8Array(16),h={},k=null,l=null,m=null,p=null,n=null,q=null,t=null,u=null,s=null,w=null,v=null,D=null,x=null,E=null,A=null,z=null,y=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),M=void 0,L={};this.init=function(){a.clearColor(0,0,0,1);a.clearDepth(1);a.clearStencil(0);this.enable(a.DEPTH_TEST);a.depthFunc(a.LEQUAL);a.frontFace(a.CCW);a.cullFace(a.BACK);this.enable(a.CULL_FACE);this.enable(a.BLEND);a.blendEquation(a.FUNC_ADD);
|
|
|
a.blendFunc(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA)};this.initAttributes=function(){for(var a=0,b=e.length;a<b;a++)e[a]=0};this.enableAttribute=function(c){e[c]=1;0===f[c]&&(a.enableVertexAttribArray(c),f[c]=1);0!==g[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,0),g[c]=0)};this.enableAttributeAndDivisor=function(b,c,d){e[b]=1;0===f[b]&&(a.enableVertexAttribArray(b),f[b]=1);g[b]!==c&&(d.vertexAttribDivisorANGLE(b,c),g[b]=c)};this.disableUnusedAttributes=function(){for(var b=0,c=f.length;b<
|
|
|
c;b++)f[b]!==e[b]&&(a.disableVertexAttribArray(b),f[b]=0)};this.enable=function(b){!0!==h[b]&&(a.enable(b),h[b]=!0)};this.disable=function(b){!1!==h[b]&&(a.disable(b),h[b]=!1)};this.getCompressedTextureFormats=function(){if(null===k&&(k=[],b.get("WEBGL_compressed_texture_pvrtc")||b.get("WEBGL_compressed_texture_s3tc")))for(var c=a.getParameter(a.COMPRESSED_TEXTURE_FORMATS),d=0;d<c.length;d++)k.push(c[d]);return k};this.setBlending=function(b,d,e,f,g,h,k){b!==l&&(b===THREE.NoBlending?this.disable(a.BLEND):
|