|
@@ -644,26 +644,26 @@ b){a=[];for(var k=0,h=b.length;k<h;k++){var m=b[k];a.push([m,k])}a.sort(l);8<a.l
|
|
r.uniform1fv(a.morphTargetInfluences,pa);h=!0}b=c.index;k=c.attributes.position;!0===d.wireframe&&(b=oa.getWireframeAttribute(c));null!==b?(a=Ca,a.setIndex(b)):a=Ba;if(h){a:{var h=void 0,q;if(c instanceof THREE.InstancedBufferGeometry&&(q=V.get("ANGLE_instanced_arrays"),null===q)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}void 0===h&&(h=0);I.initAttributes();var m=c.attributes,
|
|
r.uniform1fv(a.morphTargetInfluences,pa);h=!0}b=c.index;k=c.attributes.position;!0===d.wireframe&&(b=oa.getWireframeAttribute(c));null!==b?(a=Ca,a.setIndex(b)):a=Ba;if(h){a:{var h=void 0,q;if(c instanceof THREE.InstancedBufferGeometry&&(q=V.get("ANGLE_instanced_arrays"),null===q)){console.error("THREE.WebGLRenderer.setupVertexAttributes: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");break a}void 0===h&&(h=0);I.initAttributes();var m=c.attributes,
|
|
f=f.getAttributes(),n=d.defaultAttributeValues,p;for(p in f){var s=f[p];if(0<=s){var t=m[p];if(void 0!==t){var v=t.itemSize,x=oa.getAttributeBuffer(t);if(t instanceof THREE.InterleavedBufferAttribute){var G=t.data,E=G.stride,t=t.offset;G instanceof THREE.InstancedInterleavedBuffer?(I.enableAttributeAndDivisor(s,G.meshPerAttribute,q),void 0===c.maxInstancedCount&&(c.maxInstancedCount=G.meshPerAttribute*G.count)):I.enableAttribute(s);r.bindBuffer(r.ARRAY_BUFFER,x);r.vertexAttribPointer(s,v,r.FLOAT,
|
|
f=f.getAttributes(),n=d.defaultAttributeValues,p;for(p in f){var s=f[p];if(0<=s){var t=m[p];if(void 0!==t){var v=t.itemSize,x=oa.getAttributeBuffer(t);if(t instanceof THREE.InterleavedBufferAttribute){var G=t.data,E=G.stride,t=t.offset;G instanceof THREE.InstancedInterleavedBuffer?(I.enableAttributeAndDivisor(s,G.meshPerAttribute,q),void 0===c.maxInstancedCount&&(c.maxInstancedCount=G.meshPerAttribute*G.count)):I.enableAttribute(s);r.bindBuffer(r.ARRAY_BUFFER,x);r.vertexAttribPointer(s,v,r.FLOAT,
|
|
!1,E*G.array.BYTES_PER_ELEMENT,(h*E+t)*G.array.BYTES_PER_ELEMENT)}else t instanceof THREE.InstancedBufferAttribute?(I.enableAttributeAndDivisor(s,t.meshPerAttribute,q),void 0===c.maxInstancedCount&&(c.maxInstancedCount=t.meshPerAttribute*t.count)):I.enableAttribute(s),r.bindBuffer(r.ARRAY_BUFFER,x),r.vertexAttribPointer(s,v,r.FLOAT,!1,0,h*v*4)}else if(void 0!==n&&(v=n[p],void 0!==v))switch(v.length){case 2:r.vertexAttrib2fv(s,v);break;case 3:r.vertexAttrib3fv(s,v);break;case 4:r.vertexAttrib4fv(s,
|
|
!1,E*G.array.BYTES_PER_ELEMENT,(h*E+t)*G.array.BYTES_PER_ELEMENT)}else t instanceof THREE.InstancedBufferAttribute?(I.enableAttributeAndDivisor(s,t.meshPerAttribute,q),void 0===c.maxInstancedCount&&(c.maxInstancedCount=t.meshPerAttribute*t.count)):I.enableAttribute(s),r.bindBuffer(r.ARRAY_BUFFER,x),r.vertexAttribPointer(s,v,r.FLOAT,!1,0,h*v*4)}else if(void 0!==n&&(v=n[p],void 0!==v))switch(v.length){case 2:r.vertexAttrib2fv(s,v);break;case 3:r.vertexAttrib3fv(s,v);break;case 4:r.vertexAttrib4fv(s,
|
|
-v);break;default:r.vertexAttrib1fv(s,v)}}}I.disableUnusedAttributes()}null!==b&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,oa.getAttributeBuffer(b))}q=Infinity;null!==b?q=b.count:void 0!==k&&(q=k.count);p=c.drawRange.start;b=c.drawRange.count;k=null!==g?g.start:0;h=null!==g?g.count:Infinity;g=Math.max(0,p,k);q=Math.min(0+q,p+b,k+h)-1;q=Math.max(0,q-g+1);if(e instanceof THREE.Mesh){if(!0===d.wireframe)I.setLineWidth(d.wireframeLinewidth*F),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)}c instanceof THREE.InstancedBufferGeometry&&0<c.maxInstancedCount?a.renderInstances(c,g,q):a.render(g,q)}else e instanceof THREE.Line?(c=d.linewidth,void 0===c&&(c=1),I.setLineWidth(c*F),e instanceof THREE.LineSegments?a.setMode(r.LINES):a.setMode(r.LINE_STRIP),a.render(g,q)):e instanceof THREE.Points&&(a.setMode(r.POINTS),a.render(g,q))};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;la="";qa=-1;ka=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);ra.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);va.setFromMatrix(ra);Z.length=0;na=fa=-1;aa.length=0;wa.length=0;q(a,b);$.length=fa+1;ba.length=na+1;!0===Y.sortObjects&&($.sort(m),ba.sort(p));var g=Z,f,h,k,l=0,
|
|
|
|
-n=0,t=0,v,u,x,w=b.matrixWorldInverse,G=0,E=0,D=0,z=0,A=0;f=T.shadowsPointLight=0;for(h=g.length;f<h;f++)if(k=g[f],v=k.color,u=k.intensity,x=k.distance,k instanceof THREE.AmbientLight)l+=v.r,n+=v.g,t+=v.b;else if(k instanceof THREE.DirectionalLight){k.__webglUniforms||(k.__webglUniforms={direction:new THREE.Vector3,color:new THREE.Color,shadow:-1});var y=k.__webglUniforms;y.direction.setFromMatrixPosition(k.matrixWorld);X.setFromMatrixPosition(k.target.matrixWorld);y.direction.sub(X);y.direction.transformDirection(w);
|
|
|
|
-y.color.copy(k.color).multiplyScalar(k.intensity);k.castShadow?(y.shadow=A,T.shadows[A++]=k):y.shadow=-1;T.directional[G++]=y}else k instanceof THREE.PointLight?(k.__webglUniforms||(k.__webglUniforms={position:new THREE.Vector3,color:new THREE.Color,distance:0,decay:0,shadow:-1}),y=k.__webglUniforms,y.position.setFromMatrixPosition(k.matrixWorld),y.position.applyMatrix4(w),y.color.copy(k.color).multiplyScalar(k.intensity),y.distance=k.distance,y.decay=0===k.distance?0:k.decay,k.castShadow?(y.shadow=
|
|
|
|
-A,T.shadows[A++]=k,T.shadowsPointLight++):y.shadow=-1,T.point[E++]=y):k instanceof THREE.SpotLight?(k.__webglUniforms||(k.__webglUniforms={position:new THREE.Vector3,direction:new THREE.Vector3,color:new THREE.Color,distance:0,decay:0,angleCos:0}),y=k.__webglUniforms,y.position.setFromMatrixPosition(k.matrixWorld),y.position.applyMatrix4(w),y.color.copy(v).multiplyScalar(u),y.distance=x,y.direction.setFromMatrixPosition(k.matrixWorld),X.setFromMatrixPosition(k.target.matrixWorld),y.direction.sub(X),
|
|
|
|
-y.direction.transformDirection(w),y.angleCos=Math.cos(k.angle),y.exponent=k.exponent,y.decay=0===k.distance?0:k.decay,k.castShadow?(y.shadow=A,T.shadows[A++]=k):y.shadow=-1,T.spot[D++]=y):k instanceof THREE.HemisphereLight&&(k.__webglUniforms||(k.__webglUniforms={direction:new THREE.Vector3,skyColor:new THREE.Color,groundColor:new THREE.Color}),y=k.__webglUniforms,y.direction.setFromMatrixPosition(k.matrixWorld),y.direction.transformDirection(w),y.direction.normalize(),y.skyColor.copy(k.color).multiplyScalar(u),
|
|
|
|
-y.groundColor.copy(k.groundColor).multiplyScalar(u),T.hemi[z++]=y);T.ambient[0]=l;T.ambient[1]=n;T.ambient[2]=t;T.directional.length=G;T.point.length=E;T.spot.length=D;T.hemi.length=z;T.shadows.length=A;T.hash=G+","+E+","+D+","+z+","+A;xa.render(a,b);da.calls=0;da.vertices=0;da.faces=0;da.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,s($,b,e,d),s(ba,b,e,d)):(I.setBlending(THREE.NoBlending),
|
|
|
|
-s($,b,e),s(ba,b,e));Da.render(a,b);Ea.render(a,b,ya,za);c&&(a=c.texture,a.generateMipmaps&&B(c)&&a.minFilter!==THREE.NearestFilter&&a.minFilter!==THREE.LinearFilter&&(a=c instanceof THREE.WebGLRenderTargetCube?r.TEXTURE_CUBE_MAP:r.TEXTURE_2D,c=U.get(c.texture).__webglTexture,I.bindTexture(a,c),r.generateMipmap(a),I.bindTexture(a,null)));I.setDepthTest(!0);I.setDepthWrite(!0);I.setColorWrite(!0)}};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?I.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),I.enable(r.CULL_FACE))};this.setTexture=function(a,b){var c=U.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++);I.activeTexture(r.TEXTURE0+b);I.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===B(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=B(g),e=D(a.format),h=D(a.type);
|
|
|
|
-E(r.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++)g=k[l],I.texImage2D(r.TEXTURE_2D,l,e,g.width,g.height,0,e,h,g.data);a.generateMipmaps=!1}else I.texImage2D(r.TEXTURE_2D,0,e,g.width,g.height,0,e,h,g.data);else if(a instanceof THREE.CompressedTexture)for(l=0,m=k.length;l<m;l++)g=k[l],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<I.getCompressedTextureFormats().indexOf(e)?I.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()"):I.texImage2D(r.TEXTURE_2D,l,e,g.width,g.height,0,e,h,g.data);else if(0<k.length&&d){l=0;for(m=k.length;l<m;l++)g=k[l],I.texImage2D(r.TEXTURE_2D,l,e,e,h,g);a.generateMipmaps=!1}else I.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 I.activeTexture(r.TEXTURE0+b),I.bindTexture(r.TEXTURE_2D,
|
|
|
|
-c.__webglTexture)};this.setRenderTarget=function(a){if(a&&void 0===U.get(a).__webglFramebuffer){var b=U.get(a),c=U.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);D(a.texture.format);D(a.texture.type);if(d){b.__webglFramebuffer=[];for(var f=0;6>f;f++)b.__webglFramebuffer[f]=r.createFramebuffer()}else b.__webglFramebuffer=r.createFramebuffer();
|
|
|
|
-if(d){I.bindTexture(r.TEXTURE_CUBE_MAP,c.__webglTexture);E(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);I.bindTexture(r.TEXTURE_CUBE_MAP,null)}else I.bindTexture(r.TEXTURE_2D,c.__webglTexture),E(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),I.bindTexture(r.TEXTURE_2D,
|
|
|
|
-null);if(a.depthBuffer){b=U.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(),H(b.__webglDepthbuffer[c],a);else r.bindFramebuffer(r.FRAMEBUFFER,b.__webglFramebuffer),b.__webglDepthbuffer=r.createRenderbuffer(),H(b.__webglDepthbuffer,a);r.bindFramebuffer(r.FRAMEBUFFER,null)}}var b=a instanceof THREE.WebGLRenderTargetCube,h;a?(c=U.get(a),e=b?c.__webglFramebuffer[a.activeCubeFace]:
|
|
|
|
-c.__webglFramebuffer,c=a.width,d=a.height,h=f=0):(e=null,c=ia,d=ja,f=ga,h=ha);e!==ta&&(r.bindFramebuffer(r.FRAMEBUFFER,e),r.viewport(f,h,c,d),ta=e);b&&(b=U.get(a.texture),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,0));ya=c;za=d};this.readRenderTargetPixels=function(a,b,c,d,e,g){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");
|
|
|
|
-else{var f=U.get(a).__webglFramebuffer;if(f){var h=!1;f!==ta&&(r.bindFramebuffer(r.FRAMEBUFFER,f),h=!0);try{var k=a.texture;k.format!==THREE.RGBAFormat&&D(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||D(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,D(k.format),D(k.type),g):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,ta)}}}}};
|
|
|
|
|
|
+v);break;default:r.vertexAttrib1fv(s,v)}}}I.disableUnusedAttributes()}null!==b&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,oa.getAttributeBuffer(b))}q=Infinity;null!==b?q=b.count:void 0!==k&&(q=k.count);p=c.drawRange.start;b=c.drawRange.count;k=null!==g?g.start:0;h=null!==g?g.count:Infinity;g=Math.max(0,p,k);q=Math.min(0+q,p+b,k+h)-1;q=Math.max(0,q-g+1);if(e instanceof THREE.Mesh)if(!0===d.wireframe)I.setLineWidth(d.wireframeLinewidth*F),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),I.setLineWidth(d*F),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,g,q):a.render(g,q)};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;la="";qa=-1;ka=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);ra.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);va.setFromMatrix(ra);Z.length=0;na=fa=-1;aa.length=0;wa.length=0;q(a,b);$.length=fa+1;ba.length=na+1;!0===Y.sortObjects&&($.sort(m),ba.sort(p));var g=Z,f,h,k,l=0,n=0,t=0,v,u,x,w=b.matrixWorldInverse,G=0,E=0,D=0,z=0,A=0;f=T.shadowsPointLight=0;for(h=g.length;f<h;f++)if(k=g[f],
|
|
|
|
+v=k.color,u=k.intensity,x=k.distance,k instanceof THREE.AmbientLight)l+=v.r,n+=v.g,t+=v.b;else if(k instanceof THREE.DirectionalLight){k.__webglUniforms||(k.__webglUniforms={direction:new THREE.Vector3,color:new THREE.Color,shadow:-1});var y=k.__webglUniforms;y.direction.setFromMatrixPosition(k.matrixWorld);X.setFromMatrixPosition(k.target.matrixWorld);y.direction.sub(X);y.direction.transformDirection(w);y.color.copy(k.color).multiplyScalar(k.intensity);k.castShadow?(y.shadow=A,T.shadows[A++]=k):
|
|
|
|
+y.shadow=-1;T.directional[G++]=y}else k instanceof THREE.PointLight?(k.__webglUniforms||(k.__webglUniforms={position:new THREE.Vector3,color:new THREE.Color,distance:0,decay:0,shadow:-1}),y=k.__webglUniforms,y.position.setFromMatrixPosition(k.matrixWorld),y.position.applyMatrix4(w),y.color.copy(k.color).multiplyScalar(k.intensity),y.distance=k.distance,y.decay=0===k.distance?0:k.decay,k.castShadow?(y.shadow=A,T.shadows[A++]=k,T.shadowsPointLight++):y.shadow=-1,T.point[E++]=y):k instanceof THREE.SpotLight?
|
|
|
|
+(k.__webglUniforms||(k.__webglUniforms={position:new THREE.Vector3,direction:new THREE.Vector3,color:new THREE.Color,distance:0,decay:0,angleCos:0}),y=k.__webglUniforms,y.position.setFromMatrixPosition(k.matrixWorld),y.position.applyMatrix4(w),y.color.copy(v).multiplyScalar(u),y.distance=x,y.direction.setFromMatrixPosition(k.matrixWorld),X.setFromMatrixPosition(k.target.matrixWorld),y.direction.sub(X),y.direction.transformDirection(w),y.angleCos=Math.cos(k.angle),y.exponent=k.exponent,y.decay=0===
|
|
|
|
+k.distance?0:k.decay,k.castShadow?(y.shadow=A,T.shadows[A++]=k):y.shadow=-1,T.spot[D++]=y):k instanceof THREE.HemisphereLight&&(k.__webglUniforms||(k.__webglUniforms={direction:new THREE.Vector3,skyColor:new THREE.Color,groundColor:new THREE.Color}),y=k.__webglUniforms,y.direction.setFromMatrixPosition(k.matrixWorld),y.direction.transformDirection(w),y.direction.normalize(),y.skyColor.copy(k.color).multiplyScalar(u),y.groundColor.copy(k.groundColor).multiplyScalar(u),T.hemi[z++]=y);T.ambient[0]=l;
|
|
|
|
+T.ambient[1]=n;T.ambient[2]=t;T.directional.length=G;T.point.length=E;T.spot.length=D;T.hemi.length=z;T.shadows.length=A;T.hash=G+","+E+","+D+","+z+","+A;xa.render(a,b);da.calls=0;da.vertices=0;da.faces=0;da.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);a.overrideMaterial?(d=a.overrideMaterial,s($,b,e,d),s(ba,b,e,d)):(I.setBlending(THREE.NoBlending),s($,b,e),s(ba,b,e));Da.render(a,b);Ea.render(a,b,ya,za);c&&(a=c.texture,
|
|
|
|
+a.generateMipmaps&&B(c)&&a.minFilter!==THREE.NearestFilter&&a.minFilter!==THREE.LinearFilter&&(a=c instanceof THREE.WebGLRenderTargetCube?r.TEXTURE_CUBE_MAP:r.TEXTURE_2D,c=U.get(c.texture).__webglTexture,I.bindTexture(a,c),r.generateMipmap(a),I.bindTexture(a,null)));I.setDepthTest(!0);I.setDepthWrite(!0);I.setColorWrite(!0)}};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?I.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),I.enable(r.CULL_FACE))};this.setTexture=function(a,b){var c=U.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++);I.activeTexture(r.TEXTURE0+b);I.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===B(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=B(g),e=D(a.format),h=D(a.type);E(r.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++)g=k[l],I.texImage2D(r.TEXTURE_2D,l,e,g.width,g.height,0,e,h,g.data);a.generateMipmaps=!1}else I.texImage2D(r.TEXTURE_2D,0,e,g.width,g.height,0,e,h,g.data);else if(a instanceof THREE.CompressedTexture)for(l=0,m=k.length;l<m;l++)g=k[l],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<I.getCompressedTextureFormats().indexOf(e)?I.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()"):
|
|
|
|
+I.texImage2D(r.TEXTURE_2D,l,e,g.width,g.height,0,e,h,g.data);else if(0<k.length&&d){l=0;for(m=k.length;l<m;l++)g=k[l],I.texImage2D(r.TEXTURE_2D,l,e,e,h,g);a.generateMipmaps=!1}else I.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 I.activeTexture(r.TEXTURE0+b),I.bindTexture(r.TEXTURE_2D,c.__webglTexture)};this.setRenderTarget=function(a){if(a&&void 0===U.get(a).__webglFramebuffer){var b=U.get(a),
|
|
|
|
+c=U.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);D(a.texture.format);D(a.texture.type);if(d){b.__webglFramebuffer=[];for(var f=0;6>f;f++)b.__webglFramebuffer[f]=r.createFramebuffer()}else b.__webglFramebuffer=r.createFramebuffer();if(d){I.bindTexture(r.TEXTURE_CUBE_MAP,c.__webglTexture);E(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);I.bindTexture(r.TEXTURE_CUBE_MAP,null)}else I.bindTexture(r.TEXTURE_2D,c.__webglTexture),E(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),I.bindTexture(r.TEXTURE_2D,null);if(a.depthBuffer){b=U.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(),H(b.__webglDepthbuffer[c],a);else r.bindFramebuffer(r.FRAMEBUFFER,b.__webglFramebuffer),b.__webglDepthbuffer=r.createRenderbuffer(),H(b.__webglDepthbuffer,a);r.bindFramebuffer(r.FRAMEBUFFER,null)}}var b=a instanceof THREE.WebGLRenderTargetCube,h;a?(c=U.get(a),e=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,c=a.width,d=a.height,h=f=0):(e=null,c=ia,d=ja,f=ga,h=ha);e!==ta&&(r.bindFramebuffer(r.FRAMEBUFFER,e),r.viewport(f,
|
|
|
|
+h,c,d),ta=e);b&&(b=U.get(a.texture),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,0));ya=c;za=d};this.readRenderTargetPixels=function(a,b,c,d,e,g){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else{var f=U.get(a).__webglFramebuffer;if(f){var h=!1;f!==ta&&(r.bindFramebuffer(r.FRAMEBUFFER,f),h=!0);try{var k=a.texture;k.format!==
|
|
|
|
+THREE.RGBAFormat&&D(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||D(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,D(k.format),D(k.type),g):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,ta)}}}}};
|
|
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=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.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;
|
|
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;
|