|
@@ -228,28 +228,28 @@ THREE.ShaderChunk.color_pars_vertex,"void main() {",THREE.ShaderChunk.color_vert
|
|
|
THREE.WebGLRenderer=function(a){function c(l,z,o){var n,p,C,A=l.vertices,D=A.length,P=l.colors,V=P.length,E=l.__vertexArray,Z=l.__colorArray,ka=l.__sortArray,na=l.__dirtyVertices,wa=l.__dirtyColors;if(o.sortParticles){Aa.multiplySelf(o.matrixWorld);for(n=0;n<D;n++){p=A[n].position;qa.copy(p);Aa.multiplyVector3(qa);ka[n]=[qa.z,n]}ka.sort(function(la,Ca){return Ca[0]-la[0]});for(n=0;n<D;n++){p=A[ka[n][1]].position;C=n*3;E[C]=p.x;E[C+1]=p.y;E[C+2]=p.z}for(n=0;n<V;n++){C=n*3;color=P[ka[n][1]];Z[C]=color.r;
|
|
|
Z[C+1]=color.g;Z[C+2]=color.b}}else{if(na)for(n=0;n<D;n++){p=A[n].position;C=n*3;E[C]=p.x;E[C+1]=p.y;E[C+2]=p.z}if(wa)for(n=0;n<V;n++){color=P[n];C=n*3;Z[C]=color.r;Z[C+1]=color.g;Z[C+2]=color.b}}if(na||o.sortParticles){f.bindBuffer(f.ARRAY_BUFFER,l.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,E,z)}if(wa||o.sortParticles){f.bindBuffer(f.ARRAY_BUFFER,l.__webGLColorBuffer);f.bufferData(f.ARRAY_BUFFER,Z,z)}}function b(l,z){l.fragmentShader=z.fragmentShader;l.vertexShader=z.vertexShader;l.uniforms=
|
|
|
Uniforms.clone(z.uniforms)}function d(l,z,o,n,p){n.program||da.initMaterial(n,z,o,p);var C=n.program,A=C.uniforms,D=n.uniforms;if(C!=T){f.useProgram(C);T=C}f.uniformMatrix4fv(A.projectionMatrix,!1,ia);if(o&&(n instanceof THREE.MeshBasicMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshPhongMaterial||n instanceof THREE.LineBasicMaterial||n instanceof THREE.ParticleBasicMaterial)){D.fogColor.value.setHex(o.color.hex);if(o instanceof THREE.Fog){D.fogNear.value=o.near;D.fogFar.value=
|
|
|
-o.far}else if(o instanceof THREE.FogExp2)D.fogDensity.value=o.density}if(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshShaderMaterial){var P,V,E=0,Z=0,ka=0,na,wa,la,Ca=ra,Da=Ca.directional.colors,Pa=Ca.directional.positions,M=Ca.point.colors,Na=Ca.point.positions,Ia=0,Oa=0;o=V=V=0;for(P=z.length;o<P;o++){V=z[o];na=V.color;wa=V.position;la=V.intensity;if(V instanceof THREE.AmbientLight){E+=na.r;Z+=na.g;ka+=na.b}else if(V instanceof THREE.DirectionalLight){V=
|
|
|
-Ia*3;Da[V]=na.r*la;Da[V+1]=na.g*la;Da[V+2]=na.b*la;Pa[V]=wa.x;Pa[V+1]=wa.y;Pa[V+2]=wa.z;Ia+=1}else if(V instanceof THREE.PointLight){V=Oa*3;M[V]=na.r*la;M[V+1]=na.g*la;M[V+2]=na.b*la;Na[V]=wa.x;Na[V+1]=wa.y;Na[V+2]=wa.z;Oa+=1}}for(o=Ia*3;o<Da.length;o++)Da[o]=0;for(o=Oa*3;o<M.length;o++)M[o]=0;Ca.point.length=Oa;Ca.directional.length=Ia;Ca.ambient[0]=E;Ca.ambient[1]=Z;Ca.ambient[2]=ka;z=ra;D.enableLighting.value=z.directional.length+z.point.length;D.ambientLightColor.value=z.ambient;D.directionalLightColor.value=
|
|
|
-z.directional.colors;D.directionalLightDirection.value=z.directional.positions;D.pointLightColor.value=z.point.colors;D.pointLightPosition.value=z.point.positions}if(n instanceof THREE.MeshBasicMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshPhongMaterial){D.diffuse.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity;D.map.texture=n.map;D.lightMap.texture=n.lightMap;D.envMap.texture=n.envMap;D.reflectivity.value=n.reflectivity;
|
|
|
-D.refractionRatio.value=n.refractionRatio;D.combine.value=n.combine;D.useRefract.value=n.envMap&&n.envMap.mapping instanceof THREE.CubeRefractionMapping}if(n instanceof THREE.LineBasicMaterial){D.diffuse.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity}else if(n instanceof THREE.ParticleBasicMaterial){D.psColor.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity;D.size.value=n.size;D.scale.value=J.height/
|
|
|
-2;D.map.texture=n.map}else if(n instanceof THREE.MeshPhongMaterial){D.ambient.value.setRGB(n.ambient.r,n.ambient.g,n.ambient.b);D.specular.value.setRGB(n.specular.r,n.specular.g,n.specular.b);D.shininess.value=n.shininess}else if(n instanceof THREE.MeshDepthMaterial){D.mNear.value=l.near;D.mFar.value=l.far;D.opacity.value=n.opacity}else if(n instanceof THREE.MeshNormalMaterial)D.opacity.value=n.opacity;for(var S in D)if(E=C.uniforms[S]){o=D[S];P=o.type;z=o.value;if(P=="i")f.uniform1i(E,z);else if(P==
|
|
|
-"f")f.uniform1f(E,z);else if(P=="fv1")f.uniform1fv(E,z);else if(P=="fv")f.uniform3fv(E,z);else if(P=="v2")f.uniform2f(E,z.x,z.y);else if(P=="v3")f.uniform3f(E,z.x,z.y,z.z);else if(P=="c")f.uniform3f(E,z.r,z.g,z.b);else if(P=="t"){f.uniform1i(E,z);if(o=o.texture)if(o.image instanceof Array&&o.image.length==6){if(o.image.length==6){if(o.needsUpdate){if(o.__wasSetOnce){f.bindTexture(f.TEXTURE_CUBE_MAP,o.image.__webGLTextureCube);for(P=0;P<6;++P)f.texSubImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+P,0,0,0,f.RGBA,
|
|
|
-f.UNSIGNED_BYTE,o.image[P])}else{o.image.__webGLTextureCube=f.createTexture();f.bindTexture(f.TEXTURE_CUBE_MAP,o.image.__webGLTextureCube);for(P=0;P<6;++P)f.texImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+P,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,o.image[P]);o.__wasSetOnce=!0}F(f.TEXTURE_CUBE_MAP,o,o.image[0]);f.bindTexture(f.TEXTURE_CUBE_MAP,null);o.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_CUBE_MAP,o.image.__webGLTextureCube)}}else{if(o.needsUpdate){if(o.__wasSetOnce){f.bindTexture(f.TEXTURE_2D,
|
|
|
-o.__webGLTexture);f.texSubImage2D(f.TEXTURE_2D,0,0,0,f.RGBA,f.UNSIGNED_BYTE,o.image)}else{o.__webGLTexture=f.createTexture();f.bindTexture(f.TEXTURE_2D,o.__webGLTexture);f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,o.image);o.__wasSetOnce=!0}F(f.TEXTURE_2D,o,o.image);f.bindTexture(f.TEXTURE_2D,null);o.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_2D,o.__webGLTexture)}}}f.uniformMatrix4fv(A.modelViewMatrix,!1,p._modelViewMatrixArray);f.uniformMatrix3fv(A.normalMatrix,
|
|
|
-!1,p._normalMatrixArray);(n instanceof THREE.MeshShaderMaterial||n instanceof THREE.MeshPhongMaterial||n.envMap)&&f.uniform3f(A.cameraPosition,l.position.x,l.position.y,l.position.z);(n instanceof THREE.MeshShaderMaterial||n.envMap||n.skinning)&&f.uniformMatrix4fv(A.objectMatrix,!1,p._objectMatrixArray);(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshShaderMaterial||n.skinning)&&f.uniformMatrix4fv(A.viewMatrix,!1,aa);if(n.skinning){f.uniformMatrix4fv(A.cameraInverseMatrix,
|
|
|
-!1,aa);f.uniformMatrix4fv(A.boneGlobalMatrices,!1,p.boneMatrices)}return C}function e(l,z,o,n,p,C){if(n.opacity!=0){l=d(l,z,o,n,C).attributes;if(n.morphTargets){z=n.program.attributes;C.morphTargetBase!==-1?f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[C.morphTargetBase]):f.bindBuffer(f.ARRAY_BUFFER,p.__webGLVertexBuffer);f.vertexAttribPointer(z.position,3,f.FLOAT,!1,0,0);if(C.morphTargetForcedOrder.length){o=0;for(var A=C.morphTargetForcedOrder,D=C.morphTargetInfluences;o<n.numSupportedMorphTargets&&
|
|
|
-o<A.length;){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[A[o]]);f.vertexAttribPointer(z["morphTarget"+o],3,f.FLOAT,!1,0,0);C.__webGLMorphTargetInfluences[o]=D[A[o]];o++}}else{A=[];var P=-1,V=0;D=C.morphTargetInfluences;var E,Z=D.length;o=0;for(C.morphTargetBase!==-1&&(A[C.morphTargetBase]=!0);o<n.numSupportedMorphTargets;){for(E=0;E<Z;E++)if(!A[E]&&D[E]>P){V=E;P=D[V]}f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[V]);f.vertexAttribPointer(z["morphTarget"+o],3,f.FLOAT,!1,0,0);
|
|
|
-C.__webGLMorphTargetInfluences[o]=P;A[V]=1;P=-1;o++}}f.uniform1fv(n.program.uniforms.morphTargetInfluences,C.__webGLMorphTargetInfluences)}else{f.bindBuffer(f.ARRAY_BUFFER,p.__webGLVertexBuffer);f.vertexAttribPointer(l.position,3,f.FLOAT,!1,0,0)}if(l.color>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLColorBuffer);f.vertexAttribPointer(l.color,3,f.FLOAT,!1,0,0)}if(l.normal>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLNormalBuffer);f.vertexAttribPointer(l.normal,3,f.FLOAT,!1,0,0)}if(l.tangent>=0){f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
-p.__webGLTangentBuffer);f.vertexAttribPointer(l.tangent,4,f.FLOAT,!1,0,0)}if(l.uv>=0)if(p.__webGLUVBuffer){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLUVBuffer);f.vertexAttribPointer(l.uv,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(l.uv)}else f.disableVertexAttribArray(l.uv);if(l.uv2>=0)if(p.__webGLUV2Buffer){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLUV2Buffer);f.vertexAttribPointer(l.uv2,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(l.uv2)}else f.disableVertexAttribArray(l.uv2);if(n.skinning&&l.skinVertexA>=0&&
|
|
|
-l.skinVertexB>=0&&l.skinIndex>=0&&l.skinWeight>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinVertexABuffer);f.vertexAttribPointer(l.skinVertexA,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinVertexBBuffer);f.vertexAttribPointer(l.skinVertexB,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinIndicesBuffer);f.vertexAttribPointer(l.skinIndex,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinWeightsBuffer);f.vertexAttribPointer(l.skinWeight,4,f.FLOAT,!1,0,0)}if(C instanceof
|
|
|
-THREE.Mesh)if(n.wireframe){f.lineWidth(n.wireframeLinewidth);f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer);f.drawElements(f.LINES,p.__webGLLineCount,f.UNSIGNED_SHORT,0)}else{f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);f.drawElements(f.TRIANGLES,p.__webGLFaceCount,f.UNSIGNED_SHORT,0)}else if(C instanceof THREE.Line){C=C.type==THREE.LineStrip?f.LINE_STRIP:f.LINES;f.lineWidth(n.linewidth);f.drawArrays(C,0,p.__webGLLineCount)}else if(C instanceof THREE.ParticleSystem)f.drawArrays(f.POINTS,
|
|
|
-0,p.__webGLParticleCount);else C instanceof THREE.Ribbon&&f.drawArrays(f.TRIANGLE_STRIP,0,p.__webGLVertexCount)}}function g(l,z){if(!l.__webGLVertexBuffer)l.__webGLVertexBuffer=f.createBuffer();if(!l.__webGLNormalBuffer)l.__webGLNormalBuffer=f.createBuffer();if(l.hasPos){f.bindBuffer(f.ARRAY_BUFFER,l.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,l.positionArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.position);f.vertexAttribPointer(z.attributes.position,3,f.FLOAT,!1,0,0)}if(l.hasNormal){f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
-l.__webGLNormalBuffer);f.bufferData(f.ARRAY_BUFFER,l.normalArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.normal);f.vertexAttribPointer(z.attributes.normal,3,f.FLOAT,!1,0,0)}f.drawArrays(f.TRIANGLES,0,l.count);l.count=0}function h(l){if(ga!=l.doubleSided){l.doubleSided?f.disable(f.CULL_FACE):f.enable(f.CULL_FACE);ga=l.doubleSided}if(I!=l.flipSided){l.flipSided?f.frontFace(f.CW):f.frontFace(f.CCW);I=l.flipSided}}function j(l){if(za!=l){l?f.enable(f.DEPTH_TEST):f.disable(f.DEPTH_TEST);
|
|
|
-za=l}}function k(l){va[0].set(l.n41-l.n11,l.n42-l.n12,l.n43-l.n13,l.n44-l.n14);va[1].set(l.n41+l.n11,l.n42+l.n12,l.n43+l.n13,l.n44+l.n14);va[2].set(l.n41+l.n21,l.n42+l.n22,l.n43+l.n23,l.n44+l.n24);va[3].set(l.n41-l.n21,l.n42-l.n22,l.n43-l.n23,l.n44-l.n24);va[4].set(l.n41-l.n31,l.n42-l.n32,l.n43-l.n33,l.n44-l.n34);va[5].set(l.n41+l.n31,l.n42+l.n32,l.n43+l.n33,l.n44+l.n34);var z;for(l=0;l<6;l++){z=va[l];z.divideScalar(Math.sqrt(z.x*z.x+z.y*z.y+z.z*z.z))}}function m(l){for(var z=l.matrixWorld,o=-l.geometry.boundingSphere.radius*
|
|
|
-Math.max(l.scale.x,Math.max(l.scale.y,l.scale.z)),n=0;n<6;n++){l=va[n].x*z.n14+va[n].y*z.n24+va[n].z*z.n34+va[n].w;if(l<=o)return!1}return!0}function q(l,z){l.list[l.count]=z;l.count+=1}function v(l){var z,o,n=l.object,p=l.opaque,C=l.transparent;C.count=0;l=p.count=0;for(z=n.materials.length;l<z;l++){o=n.materials[l];o.opacity&&o.opacity<1||o.blending!=THREE.NormalBlending?q(C,o):q(p,o)}}function u(l){var z,o,n,p,C=l.object,A=l.buffer,D=l.opaque,P=l.transparent;P.count=0;l=D.count=0;for(n=C.materials.length;l<
|
|
|
-n;l++){z=C.materials[l];if(z instanceof THREE.MeshFaceMaterial){z=0;for(o=A.materials.length;z<o;z++)(p=A.materials[z])&&(p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?q(P,p):q(D,p))}else{p=z;p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?q(P,p):q(D,p)}}}function t(l,z){return z.z-l.z}function y(l,z){l._modelViewMatrix.multiplyToArray(z.matrixWorldInverse,l.matrixWorld,l._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(l._modelViewMatrix).transposeIntoArray(l._normalMatrixArray)}
|
|
|
-function B(l){function z(ka){var na=[];o=0;for(n=ka.length;o<n;o++)ka[o]==undefined?na.push("undefined"):na.push(ka[o].id);return na.join("_")}var o,n,p,C,A,D,P,V,E={},Z=l.morphTargets!==undefined?l.morphTargets.length:0;l.geometryGroups={};p=0;for(C=l.faces.length;p<C;p++){A=l.faces[p];D=A.materials;P=z(D);E[P]==undefined&&(E[P]={hash:P,counter:0});V=E[P].hash+"_"+E[P].counter;l.geometryGroups[V]==undefined&&(l.geometryGroups[V]={faces:[],materials:D,vertices:0,numMorphTargets:Z});A=A instanceof
|
|
|
-THREE.Face3?3:4;if(l.geometryGroups[V].vertices+A>65535){E[P].counter+=1;V=E[P].hash+"_"+E[P].counter;l.geometryGroups[V]==undefined&&(l.geometryGroups[V]={faces:[],materials:D,vertices:0,numMorphTargets:Z})}l.geometryGroups[V].faces.push(p);l.geometryGroups[V].vertices+=A}}function G(l,z,o){l.push({buffer:z,object:o,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function w(l){if(l!=ca){switch(l){case THREE.AdditiveBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.ONE,f.ONE);break;case THREE.SubtractiveBlending:f.blendFunc(f.DST_COLOR,
|
|
|
+o.far}else if(o instanceof THREE.FogExp2)D.fogDensity.value=o.density}if(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial){var P,V,E=0,Z=0,ka=0,na,wa,la,Ca=ra,Da=Ca.directional.colors,Pa=Ca.directional.positions,M=Ca.point.colors,Na=Ca.point.positions,Ia=0,Oa=0;o=V=V=0;for(P=z.length;o<P;o++){V=z[o];na=V.color;wa=V.position;la=V.intensity;if(V instanceof THREE.AmbientLight){E+=na.r;Z+=na.g;ka+=na.b}else if(V instanceof THREE.DirectionalLight){V=Ia*3;Da[V]=na.r*la;Da[V+
|
|
|
+1]=na.g*la;Da[V+2]=na.b*la;Pa[V]=wa.x;Pa[V+1]=wa.y;Pa[V+2]=wa.z;Ia+=1}else if(V instanceof THREE.PointLight){V=Oa*3;M[V]=na.r*la;M[V+1]=na.g*la;M[V+2]=na.b*la;Na[V]=wa.x;Na[V+1]=wa.y;Na[V+2]=wa.z;Oa+=1}}for(o=Ia*3;o<Da.length;o++)Da[o]=0;for(o=Oa*3;o<M.length;o++)M[o]=0;Ca.point.length=Oa;Ca.directional.length=Ia;Ca.ambient[0]=E;Ca.ambient[1]=Z;Ca.ambient[2]=ka;z=ra;D.enableLighting.value=z.directional.length+z.point.length;D.ambientLightColor.value=z.ambient;D.directionalLightColor.value=z.directional.colors;
|
|
|
+D.directionalLightDirection.value=z.directional.positions;D.pointLightColor.value=z.point.colors;D.pointLightPosition.value=z.point.positions}if(n instanceof THREE.MeshBasicMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshPhongMaterial){D.diffuse.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity;D.map.texture=n.map;D.lightMap.texture=n.lightMap;D.envMap.texture=n.envMap;D.reflectivity.value=n.reflectivity;D.refractionRatio.value=
|
|
|
+n.refractionRatio;D.combine.value=n.combine;D.useRefract.value=n.envMap&&n.envMap.mapping instanceof THREE.CubeRefractionMapping}if(n instanceof THREE.LineBasicMaterial){D.diffuse.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity}else if(n instanceof THREE.ParticleBasicMaterial){D.psColor.value.setRGB(n.color.r*n.opacity,n.color.g*n.opacity,n.color.b*n.opacity);D.opacity.value=n.opacity;D.size.value=n.size;D.scale.value=J.height/2;D.map.texture=n.map}else if(n instanceof
|
|
|
+THREE.MeshPhongMaterial){D.ambient.value.setRGB(n.ambient.r,n.ambient.g,n.ambient.b);D.specular.value.setRGB(n.specular.r,n.specular.g,n.specular.b);D.shininess.value=n.shininess}else if(n instanceof THREE.MeshDepthMaterial){D.mNear.value=l.near;D.mFar.value=l.far;D.opacity.value=n.opacity}else if(n instanceof THREE.MeshNormalMaterial)D.opacity.value=n.opacity;for(var S in D)if(E=C.uniforms[S]){o=D[S];P=o.type;z=o.value;if(P=="i")f.uniform1i(E,z);else if(P=="f")f.uniform1f(E,z);else if(P=="fv1")f.uniform1fv(E,
|
|
|
+z);else if(P=="fv")f.uniform3fv(E,z);else if(P=="v2")f.uniform2f(E,z.x,z.y);else if(P=="v3")f.uniform3f(E,z.x,z.y,z.z);else if(P=="c")f.uniform3f(E,z.r,z.g,z.b);else if(P=="t"){f.uniform1i(E,z);if(o=o.texture)if(o.image instanceof Array&&o.image.length==6){if(o.image.length==6){if(o.needsUpdate){if(o.__wasSetOnce){f.bindTexture(f.TEXTURE_CUBE_MAP,o.image.__webGLTextureCube);for(P=0;P<6;++P)f.texSubImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+P,0,0,0,f.RGBA,f.UNSIGNED_BYTE,o.image[P])}else{o.image.__webGLTextureCube=
|
|
|
+f.createTexture();f.bindTexture(f.TEXTURE_CUBE_MAP,o.image.__webGLTextureCube);for(P=0;P<6;++P)f.texImage2D(f.TEXTURE_CUBE_MAP_POSITIVE_X+P,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,o.image[P]);o.__wasSetOnce=!0}F(f.TEXTURE_CUBE_MAP,o,o.image[0]);f.bindTexture(f.TEXTURE_CUBE_MAP,null);o.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_CUBE_MAP,o.image.__webGLTextureCube)}}else{if(o.needsUpdate){if(o.__wasSetOnce){f.bindTexture(f.TEXTURE_2D,o.__webGLTexture);f.texSubImage2D(f.TEXTURE_2D,
|
|
|
+0,0,0,f.RGBA,f.UNSIGNED_BYTE,o.image)}else{o.__webGLTexture=f.createTexture();f.bindTexture(f.TEXTURE_2D,o.__webGLTexture);f.texImage2D(f.TEXTURE_2D,0,f.RGBA,f.RGBA,f.UNSIGNED_BYTE,o.image);o.__wasSetOnce=!0}F(f.TEXTURE_2D,o,o.image);f.bindTexture(f.TEXTURE_2D,null);o.needsUpdate=!1}f.activeTexture(f.TEXTURE0+z);f.bindTexture(f.TEXTURE_2D,o.__webGLTexture)}}}f.uniformMatrix4fv(A.modelViewMatrix,!1,p._modelViewMatrixArray);f.uniformMatrix3fv(A.normalMatrix,!1,p._normalMatrixArray);(n instanceof THREE.MeshShaderMaterial||
|
|
|
+n instanceof THREE.MeshPhongMaterial||n.envMap)&&f.uniform3f(A.cameraPosition,l.position.x,l.position.y,l.position.z);(n instanceof THREE.MeshShaderMaterial||n.envMap||n.skinning)&&f.uniformMatrix4fv(A.objectMatrix,!1,p._objectMatrixArray);(n instanceof THREE.MeshPhongMaterial||n instanceof THREE.MeshLambertMaterial||n instanceof THREE.MeshShaderMaterial||n.skinning)&&f.uniformMatrix4fv(A.viewMatrix,!1,aa);if(n.skinning){f.uniformMatrix4fv(A.cameraInverseMatrix,!1,aa);f.uniformMatrix4fv(A.boneGlobalMatrices,
|
|
|
+!1,p.boneMatrices)}return C}function e(l,z,o,n,p,C){if(n.opacity!=0){l=d(l,z,o,n,C).attributes;if(n.morphTargets){z=n.program.attributes;C.morphTargetBase!==-1?f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[C.morphTargetBase]):f.bindBuffer(f.ARRAY_BUFFER,p.__webGLVertexBuffer);f.vertexAttribPointer(z.position,3,f.FLOAT,!1,0,0);if(C.morphTargetForcedOrder.length){o=0;for(var A=C.morphTargetForcedOrder,D=C.morphTargetInfluences;o<n.numSupportedMorphTargets&&o<A.length;){f.bindBuffer(f.ARRAY_BUFFER,
|
|
|
+p.__webGLMorphTargetsBuffers[A[o]]);f.vertexAttribPointer(z["morphTarget"+o],3,f.FLOAT,!1,0,0);C.__webGLMorphTargetInfluences[o]=D[A[o]];o++}}else{A=[];var P=-1,V=0;D=C.morphTargetInfluences;var E,Z=D.length;o=0;for(C.morphTargetBase!==-1&&(A[C.morphTargetBase]=!0);o<n.numSupportedMorphTargets;){for(E=0;E<Z;E++)if(!A[E]&&D[E]>P){V=E;P=D[V]}f.bindBuffer(f.ARRAY_BUFFER,p.__webGLMorphTargetsBuffers[V]);f.vertexAttribPointer(z["morphTarget"+o],3,f.FLOAT,!1,0,0);C.__webGLMorphTargetInfluences[o]=P;A[V]=
|
|
|
+1;P=-1;o++}}f.uniform1fv(n.program.uniforms.morphTargetInfluences,C.__webGLMorphTargetInfluences)}else{f.bindBuffer(f.ARRAY_BUFFER,p.__webGLVertexBuffer);f.vertexAttribPointer(l.position,3,f.FLOAT,!1,0,0)}if(l.color>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLColorBuffer);f.vertexAttribPointer(l.color,3,f.FLOAT,!1,0,0)}if(l.normal>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLNormalBuffer);f.vertexAttribPointer(l.normal,3,f.FLOAT,!1,0,0)}if(l.tangent>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLTangentBuffer);
|
|
|
+f.vertexAttribPointer(l.tangent,4,f.FLOAT,!1,0,0)}if(l.uv>=0)if(p.__webGLUVBuffer){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLUVBuffer);f.vertexAttribPointer(l.uv,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(l.uv)}else f.disableVertexAttribArray(l.uv);if(l.uv2>=0)if(p.__webGLUV2Buffer){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLUV2Buffer);f.vertexAttribPointer(l.uv2,2,f.FLOAT,!1,0,0);f.enableVertexAttribArray(l.uv2)}else f.disableVertexAttribArray(l.uv2);if(n.skinning&&l.skinVertexA>=0&&l.skinVertexB>=0&&l.skinIndex>=
|
|
|
+0&&l.skinWeight>=0){f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinVertexABuffer);f.vertexAttribPointer(l.skinVertexA,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinVertexBBuffer);f.vertexAttribPointer(l.skinVertexB,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinIndicesBuffer);f.vertexAttribPointer(l.skinIndex,4,f.FLOAT,!1,0,0);f.bindBuffer(f.ARRAY_BUFFER,p.__webGLSkinWeightsBuffer);f.vertexAttribPointer(l.skinWeight,4,f.FLOAT,!1,0,0)}if(C instanceof THREE.Mesh)if(n.wireframe){f.lineWidth(n.wireframeLinewidth);
|
|
|
+f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer);f.drawElements(f.LINES,p.__webGLLineCount,f.UNSIGNED_SHORT,0)}else{f.bindBuffer(f.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);f.drawElements(f.TRIANGLES,p.__webGLFaceCount,f.UNSIGNED_SHORT,0)}else if(C instanceof THREE.Line){C=C.type==THREE.LineStrip?f.LINE_STRIP:f.LINES;f.lineWidth(n.linewidth);f.drawArrays(C,0,p.__webGLLineCount)}else if(C instanceof THREE.ParticleSystem)f.drawArrays(f.POINTS,0,p.__webGLParticleCount);else C instanceof THREE.Ribbon&&
|
|
|
+f.drawArrays(f.TRIANGLE_STRIP,0,p.__webGLVertexCount)}}function g(l,z){if(!l.__webGLVertexBuffer)l.__webGLVertexBuffer=f.createBuffer();if(!l.__webGLNormalBuffer)l.__webGLNormalBuffer=f.createBuffer();if(l.hasPos){f.bindBuffer(f.ARRAY_BUFFER,l.__webGLVertexBuffer);f.bufferData(f.ARRAY_BUFFER,l.positionArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.position);f.vertexAttribPointer(z.attributes.position,3,f.FLOAT,!1,0,0)}if(l.hasNormal){f.bindBuffer(f.ARRAY_BUFFER,l.__webGLNormalBuffer);
|
|
|
+f.bufferData(f.ARRAY_BUFFER,l.normalArray,f.DYNAMIC_DRAW);f.enableVertexAttribArray(z.attributes.normal);f.vertexAttribPointer(z.attributes.normal,3,f.FLOAT,!1,0,0)}f.drawArrays(f.TRIANGLES,0,l.count);l.count=0}function h(l){if(ga!=l.doubleSided){l.doubleSided?f.disable(f.CULL_FACE):f.enable(f.CULL_FACE);ga=l.doubleSided}if(I!=l.flipSided){l.flipSided?f.frontFace(f.CW):f.frontFace(f.CCW);I=l.flipSided}}function j(l){if(za!=l){l?f.enable(f.DEPTH_TEST):f.disable(f.DEPTH_TEST);za=l}}function k(l){va[0].set(l.n41-
|
|
|
+l.n11,l.n42-l.n12,l.n43-l.n13,l.n44-l.n14);va[1].set(l.n41+l.n11,l.n42+l.n12,l.n43+l.n13,l.n44+l.n14);va[2].set(l.n41+l.n21,l.n42+l.n22,l.n43+l.n23,l.n44+l.n24);va[3].set(l.n41-l.n21,l.n42-l.n22,l.n43-l.n23,l.n44-l.n24);va[4].set(l.n41-l.n31,l.n42-l.n32,l.n43-l.n33,l.n44-l.n34);va[5].set(l.n41+l.n31,l.n42+l.n32,l.n43+l.n33,l.n44+l.n34);var z;for(l=0;l<6;l++){z=va[l];z.divideScalar(Math.sqrt(z.x*z.x+z.y*z.y+z.z*z.z))}}function m(l){for(var z=l.matrixWorld,o=-l.geometry.boundingSphere.radius*Math.max(l.scale.x,
|
|
|
+Math.max(l.scale.y,l.scale.z)),n=0;n<6;n++){l=va[n].x*z.n14+va[n].y*z.n24+va[n].z*z.n34+va[n].w;if(l<=o)return!1}return!0}function q(l,z){l.list[l.count]=z;l.count+=1}function v(l){var z,o,n=l.object,p=l.opaque,C=l.transparent;C.count=0;l=p.count=0;for(z=n.materials.length;l<z;l++){o=n.materials[l];o.opacity&&o.opacity<1||o.blending!=THREE.NormalBlending?q(C,o):q(p,o)}}function u(l){var z,o,n,p,C=l.object,A=l.buffer,D=l.opaque,P=l.transparent;P.count=0;l=D.count=0;for(n=C.materials.length;l<n;l++){z=
|
|
|
+C.materials[l];if(z instanceof THREE.MeshFaceMaterial){z=0;for(o=A.materials.length;z<o;z++)(p=A.materials[z])&&(p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?q(P,p):q(D,p))}else{p=z;p.opacity&&p.opacity<1||p.blending!=THREE.NormalBlending?q(P,p):q(D,p)}}}function t(l,z){return z.z-l.z}function y(l,z){l._modelViewMatrix.multiplyToArray(z.matrixWorldInverse,l.matrixWorld,l._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(l._modelViewMatrix).transposeIntoArray(l._normalMatrixArray)}function B(l){function z(ka){var na=
|
|
|
+[];o=0;for(n=ka.length;o<n;o++)ka[o]==undefined?na.push("undefined"):na.push(ka[o].id);return na.join("_")}var o,n,p,C,A,D,P,V,E={},Z=l.morphTargets!==undefined?l.morphTargets.length:0;l.geometryGroups={};p=0;for(C=l.faces.length;p<C;p++){A=l.faces[p];D=A.materials;P=z(D);E[P]==undefined&&(E[P]={hash:P,counter:0});V=E[P].hash+"_"+E[P].counter;l.geometryGroups[V]==undefined&&(l.geometryGroups[V]={faces:[],materials:D,vertices:0,numMorphTargets:Z});A=A instanceof THREE.Face3?3:4;if(l.geometryGroups[V].vertices+
|
|
|
+A>65535){E[P].counter+=1;V=E[P].hash+"_"+E[P].counter;l.geometryGroups[V]==undefined&&(l.geometryGroups[V]={faces:[],materials:D,vertices:0,numMorphTargets:Z})}l.geometryGroups[V].faces.push(p);l.geometryGroups[V].vertices+=A}}function G(l,z,o){l.push({buffer:z,object:o,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function w(l){if(l!=ca){switch(l){case THREE.AdditiveBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.ONE,f.ONE);break;case THREE.SubtractiveBlending:f.blendFunc(f.DST_COLOR,
|
|
|
f.ZERO);break;case THREE.BillboardBlending:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.SRC_ALPHA,f.ONE_MINUS_SRC_ALPHA);break;case THREE.ReverseSubtractiveBlending:f.blendEquation(f.FUNC_REVERSE_SUBTRACT);f.blendFunc(f.ONE,f.ONE);break;default:f.blendEquation(f.FUNC_ADD);f.blendFunc(f.ONE,f.ONE_MINUS_SRC_ALPHA)}ca=l}}function F(l,z,o){if((o.width&o.width-1)==0&&(o.height&o.height-1)==0){f.texParameteri(l,f.TEXTURE_WRAP_S,Y(z.wrapS));f.texParameteri(l,f.TEXTURE_WRAP_T,Y(z.wrapT));f.texParameteri(l,f.TEXTURE_MAG_FILTER,
|
|
|
Y(z.magFilter));f.texParameteri(l,f.TEXTURE_MIN_FILTER,Y(z.minFilter));f.generateMipmap(l)}else{f.texParameteri(l,f.TEXTURE_WRAP_S,f.CLAMP_TO_EDGE);f.texParameteri(l,f.TEXTURE_WRAP_T,f.CLAMP_TO_EDGE);f.texParameteri(l,f.TEXTURE_MAG_FILTER,L(z.magFilter));f.texParameteri(l,f.TEXTURE_MIN_FILTER,L(z.minFilter))}}function x(l){if(l&&!l.__webGLFramebuffer){l.__webGLFramebuffer=f.createFramebuffer();l.__webGLRenderbuffer=f.createRenderbuffer();l.__webGLTexture=f.createTexture();f.bindRenderbuffer(f.RENDERBUFFER,
|
|
|
l.__webGLRenderbuffer);f.renderbufferStorage(f.RENDERBUFFER,f.DEPTH_COMPONENT16,l.width,l.height);f.bindTexture(f.TEXTURE_2D,l.__webGLTexture);f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_S,Y(l.wrapS));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_WRAP_T,Y(l.wrapT));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,Y(l.magFilter));f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,Y(l.minFilter));f.texImage2D(f.TEXTURE_2D,0,Y(l.format),l.width,l.height,0,Y(l.format),Y(l.type),null);f.bindFramebuffer(f.FRAMEBUFFER,
|