|
@@ -215,7 +215,7 @@ default_vertex:"#ifndef USE_MORPHTARGETS\n#ifndef USE_SKINNING\ngl_Position = pr
|
|
|
THREE.UniformsLib={common:{diffuse:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},map:{type:"t",value:0,texture:null},lightMap:{type:"t",value:2,texture:null},envMap:{type:"t",value:1,texture:null},useRefract:{type:"i",value:0},reflectivity:{type:"f",value:1},refractionRatio:{type:"f",value:0.98},combine:{type:"i",value:0},fogDensity:{type:"f",value:2.5E-4},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)},morphTargetInfluences:{type:"f",
|
|
|
value:0}},lights:{enableLighting:{type:"i",value:1},ambientLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]},directionalLightColor:{type:"fv",value:[]},pointLightColor:{type:"fv",value:[]},pointLightPosition:{type:"fv",value:[]},pointLightDistance:{type:"fv1",value:[]}},particle:{psColor:{type:"c",value:new THREE.Color(15658734)},opacity:{type:"f",value:1},size:{type:"f",value:1},scale:{type:"f",value:1},map:{type:"t",value:0,texture:null},fogDensity:{type:"f",value:2.5E-4},
|
|
|
fogNear:{type:"f",value:1},fogFar:{type:"f",value:2E3},fogColor:{type:"c",value:new THREE.Color(16777215)}}};
|
|
|
-THREE.ShaderLib={lensFlareVertexTexture:{vertexShader:"uniform \tvec3 \tscreenPosition;\nuniform\tvec2\tscale;\nuniform\tfloat\trotation;\nuniform int renderType;\nuniform\tsampler2D\tocclusionMap;\nattribute \tvec2 \tposition;\nattribute vec2\tUV;\nvarying\tvec2\tvUV;\nvarying\tfloat\tvVisibility;\nvoid main(void)\n{\nvUV = UV;\nvec2 pos = position;\nif( renderType == 2 ) {\nvec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 )) +\ntexture2D( occlusionMap, vec2( 0.5, 0.1 )) +\ntexture2D( occlusionMap, vec2( 0.9, 0.1 )) +\ntexture2D( occlusionMap, vec2( 0.9, 0.5 )) +\ntexture2D( occlusionMap, vec2( 0.9, 0.9 )) +\ntexture2D( occlusionMap, vec2( 0.5, 0.9 )) +\ntexture2D( occlusionMap, vec2( 0.1, 0.9 )) +\ntexture2D( occlusionMap, vec2( 0.1, 0.5 )) +\ntexture2D( occlusionMap, vec2( 0.5, 0.5 ));\nvVisibility = ( visibility.r / 9.0 ) *\n( 1.0 - visibility.g / 9.0 ) *\n( visibility.b / 9.0 ) *\n( 1.0 - visibility.a / 9.0 );\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4(( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",fragmentShader:"#ifdef GL_ES\nprecision highp float;\n#endif\nuniform\tsampler2D\tmap;\nuniform\tfloat\t\topacity;\nuniform int renderType;\nvarying\tvec2\t\tvUV;\nvarying\tfloat\t\tvVisibility;\nvoid main( void )\n{\nif( renderType == 0 ) {\ngl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 color = texture2D( map, vUV );\ncolor.a *= opacity * vVisibility;\ngl_FragColor = color;\n}\n}"},
|
|
|
+THREE.ShaderLib={lensFlareVertexTexture:{vertexShader:"uniform \tvec3 \tscreenPosition;\nuniform\tvec2\tscale;\nuniform\tfloat\trotation;\nuniform int renderType;\nuniform\tsampler2D\tocclusionMap;\nattribute \tvec2 \tposition;\nattribute vec2\tUV;\nvarying\tvec2\tvUV;\nvarying\tfloat\tvVisibility;\nvoid main(void)\n{\nvUV = UV;\nvec2 pos = position;\nif( renderType == 2 ) {\nfloat visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 )).a +\ntexture2D( occlusionMap, vec2( 0.5, 0.1 )).a +\ntexture2D( occlusionMap, vec2( 0.9, 0.1 )).a +\ntexture2D( occlusionMap, vec2( 0.9, 0.5 )).a +\ntexture2D( occlusionMap, vec2( 0.9, 0.9 )).a +\ntexture2D( occlusionMap, vec2( 0.5, 0.9 )).a +\ntexture2D( occlusionMap, vec2( 0.1, 0.9 )).a +\ntexture2D( occlusionMap, vec2( 0.1, 0.5 )).a +\ntexture2D( occlusionMap, vec2( 0.5, 0.5 )).a;\nvVisibility = ( 1.0 - visibility / 9.0 );\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4(( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",fragmentShader:"#ifdef GL_ES\nprecision highp float;\n#endif\nuniform\tsampler2D\tmap;\nuniform\tfloat\t\topacity;\nuniform int renderType;\nvarying\tvec2\t\tvUV;\nvarying\tfloat\t\tvVisibility;\nvoid main( void )\n{\nif( renderType == 0 ) {\ngl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nvec4 color = texture2D( map, vUV );\ncolor.a *= opacity * vVisibility;\ngl_FragColor = color;\n}\n}"},
|
|
|
lensFlare:{vertexShader:"uniform \tvec3 \tscreenPosition;\nuniform\tvec2\tscale;\nuniform\tfloat\trotation;\nuniform int renderType;\nattribute \tvec2 \tposition;\nattribute vec2\tUV;\nvarying\tvec2\tvUV;\nvoid main(void)\n{\nvUV = UV;\nvec2 pos = position;\nif( renderType == 2 ) {\npos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;\npos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;\n}\ngl_Position = vec4(( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );\n}",
|
|
|
fragmentShader:"#ifdef GL_ES\nprecision highp float;\n#endif\nuniform\tsampler2D\tmap;\nuniform\tsampler2D\tocclusionMap;\nuniform\tfloat\t\topacity;\nuniform int renderType;\nvarying\tvec2\t\tvUV;\nvoid main( void )\n{\nif( renderType == 0 ) {\ngl_FragColor = vec4( texture2D( map, vUV ).rgb, 0.0 );\n} else if( renderType == 1 ) {\ngl_FragColor = texture2D( map, vUV );\n} else {\nfloat visibility = texture2D( occlusionMap, vec2( 0.5, 0.1 )).a +\ntexture2D( occlusionMap, vec2( 0.9, 0.5 )).a +\ntexture2D( occlusionMap, vec2( 0.5, 0.9 )).a +\ntexture2D( occlusionMap, vec2( 0.1, 0.5 )).a;\nvisibility = ( 1.0 - visibility / 4.0 );\nvec4 color = texture2D( map, vUV );\ncolor.a *= opacity * visibility;\ngl_FragColor = color;\n}\n}"},
|
|
|
sprite:{vertexShader:"uniform\tint\t\tuseScreenCoordinates;\nuniform int affectedByDistance;\nuniform\tvec3\tscreenPosition;\nuniform \tmat4 \tmodelViewMatrix;\nuniform \tmat4 \tprojectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 alignment;\nuniform vec2 uvOffset;\nuniform\tvec2 uvScale;\nattribute \tvec2 \tposition;\nattribute vec2\tuv;\nvarying\tvec2\tvUV;\nvoid main(void)\n{\nvUV = uvOffset + uv * uvScale;\nvec2 alignedPosition = position + alignment;\nvec2 rotatedPosition;\nrotatedPosition.x = ( cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y ) * scale.x;\nrotatedPosition.y = ( sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y ) * scale.y;\nvec4 finalPosition;\nif( useScreenCoordinates != 0 ) {\nfinalPosition = vec4( screenPosition.xy + rotatedPosition, screenPosition.z, 1.0 );\n} else {\nfinalPosition = projectionMatrix * modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\nfinalPosition.xy += rotatedPosition * ( affectedByDistance == 1 ? 1.0 : finalPosition.z );\n}\ngl_Position = finalPosition;\n}",
|
|
@@ -259,71 +259,71 @@ e.depthMask(!1);e.colorMask(!1,!1,!1,!1);e.stencilFunc(e.ALWAYS,1,255);e.stencil
|
|
|
z,undefined,u);E=E.program;P=E.uniforms;F=E.attributes;if(xa!==E){e.useProgram(E);xa=E;e.uniformMatrix4fv(P.projectionMatrix,!1,$a);e.uniformMatrix4fv(P.viewMatrix,!1,ab);e.uniform3fv(P.directionalLightDirection,J)}u.matrixWorld.flattenToArray(u._objectMatrixArray);e.uniformMatrix4fv(P.objectMatrix,!1,u._objectMatrixArray);e.bindBuffer(e.ARRAY_BUFFER,L.__webglVertexBuffer);e.vertexAttribPointer(F.position,3,e.FLOAT,!1,0,0);e.bindBuffer(e.ARRAY_BUFFER,L.__webglNormalBuffer);e.vertexAttribPointer(F.normal,
|
|
|
3,e.FLOAT,!1,0,0);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,L.__webglFaceBuffer);e.cullFace(e.FRONT);e.drawElements(e.TRIANGLES,L.__webglFaceCount,e.UNSIGNED_SHORT,0);e.cullFace(e.BACK);e.drawElements(e.TRIANGLES,L.__webglFaceCount,e.UNSIGNED_SHORT,0)}}}e.disable(e.POLYGON_OFFSET_FILL);e.colorMask(!0,!0,!0,!0);e.stencilFunc(e.NOTEQUAL,0,255);e.stencilOp(e.KEEP,e.KEEP,e.KEEP);e.disable(e.DEPTH_TEST);ga="";xa=wa.program;e.useProgram(wa.program);e.uniformMatrix4fv(wa.projectionLocation,!1,$a);e.uniform1f(wa.darknessLocation,
|
|
|
wa.darkness);e.bindBuffer(e.ARRAY_BUFFER,wa.vertexBuffer);e.vertexAttribPointer(wa.vertexLocation,3,e.FLOAT,!1,0,0);e.enableVertexAttribArray(wa.vertexLocation);e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA);e.blendEquation(e.FUNC_ADD);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,wa.elementBuffer);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0);e.disable(e.STENCIL_TEST);e.enable(e.DEPTH_TEST);e.depthMask(oa)}function C(m,B){var x,u,z;x=_sprite.attributes;var J=_sprite.uniforms,L=ja/ia,E,P=[],F=ia*0.5,M=ja*0.5,
|
|
|
-I=!0;e.useProgram(_sprite.program);xa=_sprite.program;ga="";e.disable(e.CULL_FACE);e.enable(e.BLEND);e.bindBuffer(e.ARRAY_BUFFER,_sprite.vertexBuffer);e.vertexAttribPointer(x.position,2,e.FLOAT,!1,16,0);e.vertexAttribPointer(x.uv,2,e.FLOAT,!1,16,8);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,_sprite.elementBuffer);e.uniformMatrix4fv(J.projectionMatrix,!1,$a);e.activeTexture(e.TEXTURE0);e.uniform1i(J.map,0);x=0;for(u=m.__webglSprites.length;x<u;x++){z=m.__webglSprites[x];if(z.material===undefined&&z.map&&
|
|
|
-z.map.image&&z.map.image.width){if(z.useScreenCoordinates){e.uniform1i(J.useScreenCoordinates,1);e.uniform3f(J.screenPosition,(z.position.x-F)/F,(M-z.position.y)/M,z.position.z)}else{z._modelViewMatrix.multiplyToArray(B.matrixWorldInverse,z.matrixWorld,z._modelViewMatrixArray);e.uniform1i(J.useScreenCoordinates,0);e.uniform1i(J.affectedByDistance,z.affectedByDistance?1:0);e.uniformMatrix4fv(J.modelViewMatrix,!1,z._modelViewMatrixArray)}E=z.map.image.width/(z.affectedByDistance?1:ja);P[0]=E*L*z.scale.x;
|
|
|
-P[1]=E*z.scale.y;e.uniform2f(J.uvScale,z.uvScale.x,z.uvScale.y);e.uniform2f(J.uvOffset,z.uvOffset.x,z.uvOffset.y);e.uniform2f(J.alignment,z.alignment.x,z.alignment.y);e.uniform1f(J.opacity,z.opacity);e.uniform1f(J.rotation,z.rotation);e.uniform2fv(J.scale,P);if(z.mergeWith3D&&!I){e.enable(e.DEPTH_TEST);e.depthMask(!0);I=!0}else if(!z.mergeWith3D&&I){e.disable(e.DEPTH_TEST);e.depthMask(!1);I=!1}N(z.blending);R(z.map,0);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}}e.enable(e.CULL_FACE);e.enable(e.DEPTH_TEST);
|
|
|
-e.depthMask(oa)}function G(m,B){var x,u,z=m.__webglLensFlares.length,J,L,E,P=new THREE.Vector3,F=ja/ia,M=ia*0.5,I=ja*0.5,X=16/ja,U=[X*F,X],ya=[1,1,0],va=[1,1],ra=fa.uniforms;x=fa.attributes;e.useProgram(fa.program);xa=fa.program;ga="";e.uniform1i(ra.occlusionMap,0);e.uniform1i(ra.map,1);e.bindBuffer(e.ARRAY_BUFFER,fa.vertexBuffer);e.vertexAttribPointer(x.vertex,2,e.FLOAT,!1,16,0);e.vertexAttribPointer(x.uv,2,e.FLOAT,!1,16,8);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,fa.elementBuffer);e.disable(e.CULL_FACE);
|
|
|
-e.depthMask(!1);e.activeTexture(e.TEXTURE0);e.bindTexture(e.TEXTURE_2D,fa.occlusionTexture);e.activeTexture(e.TEXTURE1);for(u=0;u<z;u++){x=m.__webglLensFlares[u].object;P.set(x.matrixWorld.n14,x.matrixWorld.n24,x.matrixWorld.n34);B.matrixWorldInverse.multiplyVector3(P);B.projectionMatrix.multiplyVector3(P);ya[0]=P.x;ya[1]=P.y;ya[2]=P.z;va[0]=ya[0]*M+M;va[1]=ya[1]*I+I;if(fa.hasVertexTexture||va[0]>0&&va[0]<ia&&va[1]>0&&va[1]<ja){e.bindTexture(e.TEXTURE_2D,fa.tempTexture);e.copyTexImage2D(e.TEXTURE_2D,
|
|
|
-0,e.RGB,va[0]-8,va[1]-8,16,16,0);e.uniform1i(ra.renderType,0);e.uniform2fv(ra.scale,U);e.uniform3fv(ra.screenPosition,ya);e.disable(e.BLEND);e.enable(e.DEPTH_TEST);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0);e.bindTexture(e.TEXTURE_2D,fa.occlusionTexture);e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,va[0]-8,va[1]-8,16,16,0);e.uniform1i(ra.renderType,1);e.disable(e.DEPTH_TEST);e.bindTexture(e.TEXTURE_2D,fa.tempTexture);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0);x.positionScreen.x=ya[0];x.positionScreen.y=
|
|
|
-ya[1];x.positionScreen.z=ya[2];x.customUpdateCallback?x.customUpdateCallback(x):x.updateLensFlares();e.uniform1i(ra.renderType,2);e.enable(e.BLEND);J=0;for(L=x.lensFlares.length;J<L;J++){E=x.lensFlares[J];if(E.opacity>0.0010&&E.scale>0.0010){ya[0]=E.x;ya[1]=E.y;ya[2]=E.z;X=E.size*E.scale/ja;U[0]=X*F;U[1]=X;e.uniform3fv(ra.screenPosition,ya);e.uniform2fv(ra.scale,U);e.uniform1f(ra.rotation,E.rotation);e.uniform1f(ra.opacity,E.opacity);N(E.blending);R(E.texture,1);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,
|
|
|
-0)}}}}e.enable(e.CULL_FACE);e.enable(e.DEPTH_TEST);e.depthMask(oa)}function H(m,B){m._modelViewMatrix.multiplyToArray(B.matrixWorldInverse,m.matrixWorld,m._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(m._modelViewMatrix).transposeIntoArray(m._normalMatrixArray)}function K(m){var B,x,u,z,J;if(m instanceof THREE.Mesh){x=m.geometry;for(B in x.geometryGroups){u=x.geometryGroups[B];J=!1;for(z in u.__webglCustomAttributes)if(u.__webglCustomAttributes[z].needsUpdate){J=!0;break}if(x.__dirtyVertices||
|
|
|
-x.__dirtyMorphTargets||x.__dirtyElements||x.__dirtyUvs||x.__dirtyNormals||x.__dirtyColors||x.__dirtyTangents||J){J=e.DYNAMIC_DRAW;var L=void 0,E=void 0,P=void 0,F=void 0;P=void 0;var M=void 0,I=void 0,X=void 0,U=void 0,ya=void 0,va=void 0,ra=void 0,Na=void 0,Sa=void 0,Ka=void 0,Ja=void 0,Ia=void 0,Wa=void 0;I=void 0;X=void 0;F=void 0;U=void 0;F=void 0;var D=void 0,aa=void 0;I=void 0;D=void 0;aa=void 0;var t=void 0,bb=void 0;D=void 0;aa=void 0;t=void 0;bb=void 0;D=void 0;aa=void 0;t=void 0;bb=void 0;
|
|
|
-D=void 0;aa=void 0;t=void 0;F=void 0;U=void 0;M=void 0;P=void 0;P=void 0;D=void 0;aa=void 0;t=void 0;var eb=void 0,Ta=0,Qa=0,hb=0,gb=0,cb=0,fb=0,sa=0,Va=0,Pa=0,T=0,Xa=0;aa=D=0;var La=u.__vertexArray,V=u.__uvArray,za=u.__uv2Array,na=u.__normalArray,Y=u.__tangentArray,Ca=u.__colorArray,qa=u.__skinVertexAArray,ha=u.__skinVertexBArray,Q=u.__skinIndexArray,Ea=u.__skinWeightArray,ib=u.__morphTargetsArrays,Ya=u.__webglCustomAttributes;t=void 0;var Za=u.__faceArray,db=u.__lineArray,jb=u.__needsSmoothNormals;
|
|
|
-va=u.__vertexColorType;ya=u.__uvType;ra=u.__normalType;var Ua=m.geometry,sb=Ua.__dirtyVertices,tb=Ua.__dirtyElements,rb=Ua.__dirtyUvs,ub=Ua.__dirtyNormals,vb=Ua.__dirtyTangents,wb=Ua.__dirtyColors,xb=Ua.__dirtyMorphTargets,nb=Ua.vertices,yb=u.faces,Bb=Ua.faces,zb=Ua.faceVertexUvs[0],Ab=Ua.faceVertexUvs[1],ob=Ua.skinVerticesA,pb=Ua.skinVerticesB,qb=Ua.skinIndices,lb=Ua.skinWeights,mb=Ua.edgeFaces,kb=Ua.morphTargets;if(Ya)for(eb in Ya){Ya[eb].offset=0;Ya[eb].offsetSrc=0}L=0;for(E=yb.length;L<E;L++){P=
|
|
|
-yb[L];F=Bb[P];zb&&(Na=zb[P]);Ab&&(Sa=Ab[P]);P=F.vertexNormals;M=F.normal;I=F.vertexColors;X=F.color;U=F.vertexTangents;if(F instanceof THREE.Face3){if(sb){Ka=nb[F.a].position;Ja=nb[F.b].position;Ia=nb[F.c].position;La[Qa]=Ka.x;La[Qa+1]=Ka.y;La[Qa+2]=Ka.z;La[Qa+3]=Ja.x;La[Qa+4]=Ja.y;La[Qa+5]=Ja.z;La[Qa+6]=Ia.x;La[Qa+7]=Ia.y;La[Qa+8]=Ia.z;Qa+=9}if(Ya)for(eb in Ya){t=Ya[eb];if(t.needsUpdate){D=t.offset;aa=t.offsetSrc;if(t.size===1){if(t.boundTo===undefined||t.boundTo==="vertices"){t.array[D+0]=t.value[F.a];
|
|
|
-t.array[D+1]=t.value[F.b];t.array[D+2]=t.value[F.c]}else if(t.boundTo==="faces"){t.array[D+0]=t.value[aa];t.array[D+1]=t.value[aa];t.array[D+2]=t.value[aa];t.offsetSrc++}else if(t.boundTo==="faceVertices"){t.array[D+0]=t.value[aa+0];t.array[D+1]=t.value[aa+1];t.array[D+2]=t.value[aa+2];t.offsetSrc+=3}t.offset+=3}else{if(t.boundTo===undefined||t.boundTo==="vertices"){Ka=t.value[F.a];Ja=t.value[F.b];Ia=t.value[F.c]}else if(t.boundTo==="faces"){Ka=t.value[aa];Ja=t.value[aa];Ia=t.value[aa];t.offsetSrc++}else if(t.boundTo===
|
|
|
-"faceVertices"){Ka=t.value[aa+0];Ja=t.value[aa+1];Ia=t.value[aa+2];t.offsetSrc+=3}if(t.size===2){t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ja.x;t.array[D+3]=Ja.y;t.array[D+4]=Ia.x;t.array[D+5]=Ia.y;t.offset+=6}else if(t.size===3){if(t.type==="c"){t.array[D+0]=Ka.r;t.array[D+1]=Ka.g;t.array[D+2]=Ka.b;t.array[D+3]=Ja.r;t.array[D+4]=Ja.g;t.array[D+5]=Ja.b;t.array[D+6]=Ia.r;t.array[D+7]=Ia.g;t.array[D+8]=Ia.b}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ja.x;t.array[D+
|
|
|
-4]=Ja.y;t.array[D+5]=Ja.z;t.array[D+6]=Ia.x;t.array[D+7]=Ia.y;t.array[D+8]=Ia.z}t.offset+=9}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ka.w;t.array[D+4]=Ja.x;t.array[D+5]=Ja.y;t.array[D+6]=Ja.z;t.array[D+7]=Ja.w;t.array[D+8]=Ia.x;t.array[D+9]=Ia.y;t.array[D+10]=Ia.z;t.array[D+11]=Ia.w;t.offset+=12}}}}if(xb){D=0;for(aa=kb.length;D<aa;D++){Ka=kb[D].vertices[F.a].position;Ja=kb[D].vertices[F.b].position;Ia=kb[D].vertices[F.c].position;t=ib[D];t[Xa+0]=Ka.x;t[Xa+1]=Ka.y;t[Xa+
|
|
|
-2]=Ka.z;t[Xa+3]=Ja.x;t[Xa+4]=Ja.y;t[Xa+5]=Ja.z;t[Xa+6]=Ia.x;t[Xa+7]=Ia.y;t[Xa+8]=Ia.z}Xa+=9}if(lb.length){D=lb[F.a];aa=lb[F.b];t=lb[F.c];Ea[T]=D.x;Ea[T+1]=D.y;Ea[T+2]=D.z;Ea[T+3]=D.w;Ea[T+4]=aa.x;Ea[T+5]=aa.y;Ea[T+6]=aa.z;Ea[T+7]=aa.w;Ea[T+8]=t.x;Ea[T+9]=t.y;Ea[T+10]=t.z;Ea[T+11]=t.w;D=qb[F.a];aa=qb[F.b];t=qb[F.c];Q[T]=D.x;Q[T+1]=D.y;Q[T+2]=D.z;Q[T+3]=D.w;Q[T+4]=aa.x;Q[T+5]=aa.y;Q[T+6]=aa.z;Q[T+7]=aa.w;Q[T+8]=t.x;Q[T+9]=t.y;Q[T+10]=t.z;Q[T+11]=t.w;D=ob[F.a];aa=ob[F.b];t=ob[F.c];qa[T]=D.x;qa[T+1]=
|
|
|
-D.y;qa[T+2]=D.z;qa[T+3]=1;qa[T+4]=aa.x;qa[T+5]=aa.y;qa[T+6]=aa.z;qa[T+7]=1;qa[T+8]=t.x;qa[T+9]=t.y;qa[T+10]=t.z;qa[T+11]=1;D=pb[F.a];aa=pb[F.b];t=pb[F.c];ha[T]=D.x;ha[T+1]=D.y;ha[T+2]=D.z;ha[T+3]=1;ha[T+4]=aa.x;ha[T+5]=aa.y;ha[T+6]=aa.z;ha[T+7]=1;ha[T+8]=t.x;ha[T+9]=t.y;ha[T+10]=t.z;ha[T+11]=1;T+=12}if(wb&&va){if(I.length==3&&va==THREE.VertexColors){F=I[0];D=I[1];aa=I[2]}else aa=D=F=X;Ca[Pa]=F.r;Ca[Pa+1]=F.g;Ca[Pa+2]=F.b;Ca[Pa+3]=D.r;Ca[Pa+4]=D.g;Ca[Pa+5]=D.b;Ca[Pa+6]=aa.r;Ca[Pa+7]=aa.g;Ca[Pa+8]=
|
|
|
-aa.b;Pa+=9}if(vb&&Ua.hasTangents){I=U[0];X=U[1];F=U[2];Y[sa]=I.x;Y[sa+1]=I.y;Y[sa+2]=I.z;Y[sa+3]=I.w;Y[sa+4]=X.x;Y[sa+5]=X.y;Y[sa+6]=X.z;Y[sa+7]=X.w;Y[sa+8]=F.x;Y[sa+9]=F.y;Y[sa+10]=F.z;Y[sa+11]=F.w;sa+=12}if(ub&&ra)if(P.length==3&&jb)for(U=0;U<3;U++){M=P[U];na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}else for(U=0;U<3;U++){na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}if(rb&&Na!==undefined&&ya)for(U=0;U<3;U++){P=Na[U];V[hb]=P.u;V[hb+1]=P.v;hb+=2}if(rb&&Sa!==undefined&&ya)for(U=0;U<3;U++){P=Sa[U];za[gb]=
|
|
|
-P.u;za[gb+1]=P.v;gb+=2}if(tb){Za[cb]=Ta;Za[cb+1]=Ta+1;Za[cb+2]=Ta+2;cb+=3;db[Va]=Ta;db[Va+1]=Ta+1;db[Va+2]=Ta;db[Va+3]=Ta+2;db[Va+4]=Ta+1;db[Va+5]=Ta+2;Va+=6;Ta+=3}}else if(F instanceof THREE.Face4){if(sb){Ka=nb[F.a].position;Ja=nb[F.b].position;Ia=nb[F.c].position;Wa=nb[F.d].position;La[Qa]=Ka.x;La[Qa+1]=Ka.y;La[Qa+2]=Ka.z;La[Qa+3]=Ja.x;La[Qa+4]=Ja.y;La[Qa+5]=Ja.z;La[Qa+6]=Ia.x;La[Qa+7]=Ia.y;La[Qa+8]=Ia.z;La[Qa+9]=Wa.x;La[Qa+10]=Wa.y;La[Qa+11]=Wa.z;Qa+=12}if(Ya)for(eb in Ya){t=Ya[eb];if(t.needsUpdate){D=
|
|
|
-t.offset;aa=t.offsetSrc;if(t.size===1){if(t.boundTo===undefined||t.boundTo==="vertices"){t.array[D+0]=t.value[F.a];t.array[D+1]=t.value[F.b];t.array[D+2]=t.value[F.c];t.array[D+2]=t.value[F.d]}else if(t.boundTo==="faces"){t.array[D+0]=t.value[aa];t.array[D+1]=t.value[aa];t.array[D+2]=t.value[aa];t.array[D+2]=t.value[aa];t.offsetSrc++}else if(t.boundTo==="faceVertices"){t.array[D+0]=t.value[aa+0];t.array[D+1]=t.value[aa+1];t.array[D+2]=t.value[aa+2];t.array[D+2]=t.value[aa+3];t.offsetSrc+=4}t.offset+=
|
|
|
-4}else{if(t.boundTo===undefined||t.boundTo==="vertices"){Ka=t.value[F.a];Ja=t.value[F.b];Ia=t.value[F.c];Wa=t.value[F.d]}else if(t.boundTo==="faces"){Ka=t.value[aa];Ja=t.value[aa];Ia=t.value[aa];Wa=t.value[aa];t.offsetSrc++}else if(t.boundTo==="faceVertices"){Ka=t.value[aa+0];Ja=t.value[aa+1];Ia=t.value[aa+2];Wa=t.value[aa+3];t.offsetSrc+=4}if(t.size===2){t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ja.x;t.array[D+3]=Ja.y;t.array[D+4]=Ia.x;t.array[D+5]=Ia.y;t.array[D+6]=Wa.x;t.array[D+7]=Wa.y;
|
|
|
-t.offset+=8}else if(t.size===3){if(t.type==="c"){t.array[D+0]=Ka.r;t.array[D+1]=Ka.g;t.array[D+2]=Ka.b;t.array[D+3]=Ja.r;t.array[D+4]=Ja.g;t.array[D+5]=Ja.b;t.array[D+6]=Ia.r;t.array[D+7]=Ia.g;t.array[D+8]=Ia.b;t.array[D+9]=Wa.r;t.array[D+10]=Wa.g;t.array[D+11]=Wa.b}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ja.x;t.array[D+4]=Ja.y;t.array[D+5]=Ja.z;t.array[D+6]=Ia.x;t.array[D+7]=Ia.y;t.array[D+8]=Ia.z;t.array[D+9]=Wa.x;t.array[D+10]=Wa.y;t.array[D+11]=Wa.z}t.offset+=12}else{t.array[D+
|
|
|
-0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ka.w;t.array[D+4]=Ja.x;t.array[D+5]=Ja.y;t.array[D+6]=Ja.z;t.array[D+7]=Ja.w;t.array[D+8]=Ia.x;t.array[D+9]=Ia.y;t.array[D+10]=Ia.z;t.array[D+11]=Ia.w;t.array[D+12]=Wa.x;t.array[D+13]=Wa.y;t.array[D+14]=Wa.z;t.array[D+15]=Wa.w;t.offset+=16}}}}if(xb){D=0;for(aa=kb.length;D<aa;D++){Ka=kb[D].vertices[F.a].position;Ja=kb[D].vertices[F.b].position;Ia=kb[D].vertices[F.c].position;Wa=kb[D].vertices[F.d].position;t=ib[D];t[Xa+0]=Ka.x;t[Xa+1]=Ka.y;t[Xa+
|
|
|
-2]=Ka.z;t[Xa+3]=Ja.x;t[Xa+4]=Ja.y;t[Xa+5]=Ja.z;t[Xa+6]=Ia.x;t[Xa+7]=Ia.y;t[Xa+8]=Ia.z;t[Xa+9]=Wa.x;t[Xa+10]=Wa.y;t[Xa+11]=Wa.z}Xa+=12}if(lb.length){D=lb[F.a];aa=lb[F.b];t=lb[F.c];bb=lb[F.d];Ea[T]=D.x;Ea[T+1]=D.y;Ea[T+2]=D.z;Ea[T+3]=D.w;Ea[T+4]=aa.x;Ea[T+5]=aa.y;Ea[T+6]=aa.z;Ea[T+7]=aa.w;Ea[T+8]=t.x;Ea[T+9]=t.y;Ea[T+10]=t.z;Ea[T+11]=t.w;Ea[T+12]=bb.x;Ea[T+13]=bb.y;Ea[T+14]=bb.z;Ea[T+15]=bb.w;D=qb[F.a];aa=qb[F.b];t=qb[F.c];bb=qb[F.d];Q[T]=D.x;Q[T+1]=D.y;Q[T+2]=D.z;Q[T+3]=D.w;Q[T+4]=aa.x;Q[T+5]=aa.y;
|
|
|
-Q[T+6]=aa.z;Q[T+7]=aa.w;Q[T+8]=t.x;Q[T+9]=t.y;Q[T+10]=t.z;Q[T+11]=t.w;Q[T+12]=bb.x;Q[T+13]=bb.y;Q[T+14]=bb.z;Q[T+15]=bb.w;D=ob[F.a];aa=ob[F.b];t=ob[F.c];bb=ob[F.d];qa[T]=D.x;qa[T+1]=D.y;qa[T+2]=D.z;qa[T+3]=1;qa[T+4]=aa.x;qa[T+5]=aa.y;qa[T+6]=aa.z;qa[T+7]=1;qa[T+8]=t.x;qa[T+9]=t.y;qa[T+10]=t.z;qa[T+11]=1;qa[T+12]=bb.x;qa[T+13]=bb.y;qa[T+14]=bb.z;qa[T+15]=1;D=pb[F.a];aa=pb[F.b];t=pb[F.c];F=pb[F.d];ha[T]=D.x;ha[T+1]=D.y;ha[T+2]=D.z;ha[T+3]=1;ha[T+4]=aa.x;ha[T+5]=aa.y;ha[T+6]=aa.z;ha[T+7]=1;ha[T+8]=t.x;
|
|
|
-ha[T+9]=t.y;ha[T+10]=t.z;ha[T+11]=1;ha[T+12]=F.x;ha[T+13]=F.y;ha[T+14]=F.z;ha[T+15]=1;T+=16}if(wb&&va){if(I.length==4&&va==THREE.VertexColors){F=I[0];D=I[1];aa=I[2];I=I[3]}else I=aa=D=F=X;Ca[Pa]=F.r;Ca[Pa+1]=F.g;Ca[Pa+2]=F.b;Ca[Pa+3]=D.r;Ca[Pa+4]=D.g;Ca[Pa+5]=D.b;Ca[Pa+6]=aa.r;Ca[Pa+7]=aa.g;Ca[Pa+8]=aa.b;Ca[Pa+9]=I.r;Ca[Pa+10]=I.g;Ca[Pa+11]=I.b;Pa+=12}if(vb&&Ua.hasTangents){I=U[0];X=U[1];F=U[2];U=U[3];Y[sa]=I.x;Y[sa+1]=I.y;Y[sa+2]=I.z;Y[sa+3]=I.w;Y[sa+4]=X.x;Y[sa+5]=X.y;Y[sa+6]=X.z;Y[sa+7]=X.w;Y[sa+
|
|
|
-8]=F.x;Y[sa+9]=F.y;Y[sa+10]=F.z;Y[sa+11]=F.w;Y[sa+12]=U.x;Y[sa+13]=U.y;Y[sa+14]=U.z;Y[sa+15]=U.w;sa+=16}if(ub&&ra)if(P.length==4&&jb)for(U=0;U<4;U++){M=P[U];na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}else for(U=0;U<4;U++){na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}if(rb&&Na!==undefined&&ya)for(U=0;U<4;U++){P=Na[U];V[hb]=P.u;V[hb+1]=P.v;hb+=2}if(rb&&Sa!==undefined&&ya)for(U=0;U<4;U++){P=Sa[U];za[gb]=P.u;za[gb+1]=P.v;gb+=2}if(tb){Za[cb]=Ta;Za[cb+1]=Ta+1;Za[cb+2]=Ta+3;Za[cb+3]=Ta+1;Za[cb+4]=Ta+2;Za[cb+
|
|
|
-5]=Ta+3;cb+=6;db[Va]=Ta;db[Va+1]=Ta+1;db[Va+2]=Ta;db[Va+3]=Ta+3;db[Va+4]=Ta+1;db[Va+5]=Ta+2;db[Va+6]=Ta+2;db[Va+7]=Ta+3;Va+=8;Ta+=4}}}if(mb){L=0;for(E=mb.length;L<E;L++){Za[cb]=mb[L].a;Za[cb+1]=mb[L].b;Za[cb+2]=mb[L].c;Za[cb+3]=mb[L].a;Za[cb+4]=mb[L].c;Za[cb+5]=mb[L].d;cb+=6}}if(sb){e.bindBuffer(e.ARRAY_BUFFER,u.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,La,J)}if(Ya)for(eb in Ya){t=Ya[eb];if(t.needsUpdate){e.bindBuffer(e.ARRAY_BUFFER,t.buffer);e.bufferData(e.ARRAY_BUFFER,t.array,J);t.needsUpdate=
|
|
|
-!1}}if(xb){D=0;for(aa=kb.length;D<aa;D++){e.bindBuffer(e.ARRAY_BUFFER,u.__webglMorphTargetsBuffers[D]);e.bufferData(e.ARRAY_BUFFER,ib[D],J)}}if(wb&&Pa>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,Ca,J)}if(ub){e.bindBuffer(e.ARRAY_BUFFER,u.__webglNormalBuffer);e.bufferData(e.ARRAY_BUFFER,na,J)}if(vb&&Ua.hasTangents){e.bindBuffer(e.ARRAY_BUFFER,u.__webglTangentBuffer);e.bufferData(e.ARRAY_BUFFER,Y,J)}if(rb&&hb>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglUVBuffer);e.bufferData(e.ARRAY_BUFFER,
|
|
|
-V,J)}if(rb&&gb>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglUV2Buffer);e.bufferData(e.ARRAY_BUFFER,za,J)}if(tb){e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,u.__webglFaceBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,Za,J);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,u.__webglLineBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,db,J)}if(T>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglSkinVertexABuffer);e.bufferData(e.ARRAY_BUFFER,qa,J);e.bindBuffer(e.ARRAY_BUFFER,u.__webglSkinVertexBBuffer);e.bufferData(e.ARRAY_BUFFER,ha,J);e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
-u.__webglSkinIndicesBuffer);e.bufferData(e.ARRAY_BUFFER,Q,J);e.bindBuffer(e.ARRAY_BUFFER,u.__webglSkinWeightsBuffer);e.bufferData(e.ARRAY_BUFFER,Ea,J)}}}x.__dirtyVertices=!1;x.__dirtyMorphTargets=!1;x.__dirtyElements=!1;x.__dirtyUvs=!1;x.__dirtyNormals=!1;x.__dirtyTangents=!1;x.__dirtyColors=!1}else if(m instanceof THREE.Ribbon){x=m.geometry;if(x.__dirtyVertices||x.__dirtyColors){m=x;B=e.DYNAMIC_DRAW;va=m.vertices;u=m.colors;ra=va.length;J=u.length;Na=m.__vertexArray;L=m.__colorArray;Sa=m.__dirtyColors;
|
|
|
-if(m.__dirtyVertices){for(E=0;E<ra;E++){ya=va[E].position;z=E*3;Na[z]=ya.x;Na[z+1]=ya.y;Na[z+2]=ya.z}e.bindBuffer(e.ARRAY_BUFFER,m.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,Na,B)}if(Sa){for(E=0;E<J;E++){color=u[E];z=E*3;L[z]=color.r;L[z+1]=color.g;L[z+2]=color.b}e.bindBuffer(e.ARRAY_BUFFER,m.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,L,B)}}x.__dirtyVertices=!1;x.__dirtyColors=!1}else if(m instanceof THREE.Line){x=m.geometry;if(x.__dirtyVertices||x.__dirtyColors){m=x;B=e.DYNAMIC_DRAW;va=
|
|
|
-m.vertices;u=m.colors;ra=va.length;J=u.length;Na=m.__vertexArray;L=m.__colorArray;Sa=m.__dirtyColors;if(m.__dirtyVertices){for(E=0;E<ra;E++){ya=va[E].position;z=E*3;Na[z]=ya.x;Na[z+1]=ya.y;Na[z+2]=ya.z}e.bindBuffer(e.ARRAY_BUFFER,m.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,Na,B)}if(Sa){for(E=0;E<J;E++){color=u[E];z=E*3;L[z]=color.r;L[z+1]=color.g;L[z+2]=color.b}e.bindBuffer(e.ARRAY_BUFFER,m.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,L,B)}}x.__dirtyVertices=!1;x.__dirtyColors=!1}else if(m instanceof
|
|
|
-THREE.ParticleSystem){x=m.geometry;(x.__dirtyVertices||x.__dirtyColors||m.sortParticles)&&c(x,e.DYNAMIC_DRAW,m);x.__dirtyVertices=!1;x.__dirtyColors=!1}}function W(m){function B(X){var U=[];x=0;for(u=X.length;x<u;x++)X[x]==undefined?U.push("undefined"):U.push(X[x].id);return U.join("_")}var x,u,z,J,L,E,P,F,M={},I=m.morphTargets!==undefined?m.morphTargets.length:0;m.geometryGroups={};z=0;for(J=m.faces.length;z<J;z++){L=m.faces[z];E=L.materials;P=B(E);M[P]==undefined&&(M[P]={hash:P,counter:0});F=M[P].hash+
|
|
|
-"_"+M[P].counter;m.geometryGroups[F]==undefined&&(m.geometryGroups[F]={faces:[],materials:E,vertices:0,numMorphTargets:I});L=L instanceof THREE.Face3?3:4;if(m.geometryGroups[F].vertices+L>65535){M[P].counter+=1;F=M[P].hash+"_"+M[P].counter;m.geometryGroups[F]==undefined&&(m.geometryGroups[F]={faces:[],materials:E,vertices:0,numMorphTargets:I})}m.geometryGroups[F].faces.push(z);m.geometryGroups[F].vertices+=L}}function A(m,B,x){m.push({buffer:B,object:x,opaque:{list:[],count:0},transparent:{list:[],
|
|
|
-count:0}})}function N(m){if(m!=ga){switch(m){case THREE.AdditiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE);break;case THREE.SubtractiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:e.blendEquationSeparate(e.FUNC_ADD,e.FUNC_ADD);e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}ga=m}}function O(m,B,x){if((x.width&
|
|
|
-x.width-1)==0&&(x.height&x.height-1)==0){e.texParameteri(m,e.TEXTURE_WRAP_S,ca(B.wrapS));e.texParameteri(m,e.TEXTURE_WRAP_T,ca(B.wrapT));e.texParameteri(m,e.TEXTURE_MAG_FILTER,ca(B.magFilter));e.texParameteri(m,e.TEXTURE_MIN_FILTER,ca(B.minFilter));e.generateMipmap(m)}else{e.texParameteri(m,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(m,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(m,e.TEXTURE_MAG_FILTER,ua(B.magFilter));e.texParameteri(m,e.TEXTURE_MIN_FILTER,ua(B.minFilter))}}function R(m,
|
|
|
-B){if(m.needsUpdate){if(m.__webglInit){e.bindTexture(e.TEXTURE_2D,m.__webglTexture);e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,m.image)}else{m.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,m.__webglTexture);e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,m.image);m.__webglInit=!0}O(e.TEXTURE_2D,m,m.image);e.bindTexture(e.TEXTURE_2D,null);m.needsUpdate=!1}e.activeTexture(e.TEXTURE0+B);e.bindTexture(e.TEXTURE_2D,m.__webglTexture)}function Fa(m){if(m&&!m.__webglFramebuffer){if(m.depthBuffer===
|
|
|
-undefined)m.depthBuffer=!0;if(m.stencilBuffer===undefined)m.stencilBuffer=!0;m.__webglFramebuffer=e.createFramebuffer();m.__webglRenderbuffer=e.createRenderbuffer();m.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,m.__webglTexture);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,ca(m.wrapS));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,ca(m.wrapT));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,ca(m.magFilter));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,ca(m.minFilter));e.texImage2D(e.TEXTURE_2D,
|
|
|
-0,ca(m.format),m.width,m.height,0,ca(m.format),ca(m.type),null);e.bindRenderbuffer(e.RENDERBUFFER,m.__webglRenderbuffer);e.bindFramebuffer(e.FRAMEBUFFER,m.__webglFramebuffer);e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,m.__webglTexture,0);if(m.depthBuffer&&!m.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_COMPONENT16,m.width,m.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,m.__webglRenderbuffer)}else if(m.depthBuffer&&m.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,
|
|
|
-e.DEPTH_STENCIL,m.width,m.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,m.__webglRenderbuffer)}else e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,m.width,m.height);e.bindTexture(e.TEXTURE_2D,null);e.bindRenderbuffer(e.RENDERBUFFER,null);e.bindFramebuffer(e.FRAMEBUFFER,null)}var B,x;if(m){B=m.__webglFramebuffer;x=m.width;m=m.height}else{B=null;x=ia;m=ja}if(B!=Ha){e.bindFramebuffer(e.FRAMEBUFFER,B);e.viewport(la,Ga,x,m);Ha=B}}function ka(m,B){var x;if(m=="fragment")x=
|
|
|
-e.createShader(e.FRAGMENT_SHADER);else m=="vertex"&&(x=e.createShader(e.VERTEX_SHADER));e.shaderSource(x,B);e.compileShader(x);if(!e.getShaderParameter(x,e.COMPILE_STATUS)){console.error(e.getShaderInfoLog(x));console.error(B);return null}return x}function ua(m){switch(m){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return e.NEAREST;default:return e.LINEAR}}function ca(m){switch(m){case THREE.RepeatWrapping:return e.REPEAT;case THREE.ClampToEdgeWrapping:return e.CLAMP_TO_EDGE;
|
|
|
-case THREE.MirroredRepeatWrapping:return e.MIRRORED_REPEAT;case THREE.NearestFilter:return e.NEAREST;case THREE.NearestMipMapNearestFilter:return e.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return e.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return e.LINEAR;case THREE.LinearMipMapNearestFilter:return e.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return e.LINEAR_MIPMAP_LINEAR;case THREE.ByteType:return e.BYTE;case THREE.UnsignedByteType:return e.UNSIGNED_BYTE;case THREE.ShortType:return e.SHORT;
|
|
|
-case THREE.UnsignedShortType:return e.UNSIGNED_SHORT;case THREE.IntType:return e.INT;case THREE.UnsignedShortType:return e.UNSIGNED_INT;case THREE.FloatType:return e.FLOAT;case THREE.AlphaFormat:return e.ALPHA;case THREE.RGBFormat:return e.RGB;case THREE.RGBAFormat:return e.RGBA;case THREE.LuminanceFormat:return e.LUMINANCE;case THREE.LuminanceAlphaFormat:return e.LUMINANCE_ALPHA}return 0}var e,ea=document.createElement("canvas"),Aa=[],xa=null,Ha=null,oa=!0,da=this,pa=null,Ba=null,ga=null,$=null,
|
|
|
-la=0,Ga=0,ia=0,ja=0,ta=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Ra=new THREE.Matrix4,$a=new Float32Array(16),ab=new Float32Array(16),Oa=new THREE.Vector4,S={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},Z=!0,ma=!0,Da=new THREE.Color(0),Ma=0;if(b){if(b.stencil!=undefined)Z=b.stencil;if(b.antialias!==undefined)ma=b.antialias;b.clearColor!==undefined&&Da.setHex(b.clearColor);
|
|
|
-if(b.clearAlpha!==undefined)Ma=b.clearAlpha}this.maxMorphTargets=8;this.domElement=ea;this.autoClear=!0;this.sortObjects=!0;(function(m,B,x,u){try{if(!(e=ea.getContext("experimental-webgl",{antialias:m,stencil:u})))throw"Error creating WebGL context.";}catch(z){console.error(z)}e.clearColor(0,0,0,1);e.clearDepth(1);e.enable(e.DEPTH_TEST);e.depthFunc(e.LEQUAL);e.frontFace(e.CCW);e.cullFace(e.BACK);e.enable(e.CULL_FACE);e.enable(e.BLEND);e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA);
|
|
|
-e.clearColor(B.r,B.g,B.b,x)})(ma,Da,Ma,Z);this.context=e;if(Z){var wa={};wa.vertices=new Float32Array(12);wa.faces=new Uint16Array(6);wa.darkness=0.5;wa.vertices[0]=-20;wa.vertices[1]=-20;wa.vertices[2]=-1;wa.vertices[3]=20;wa.vertices[4]=-20;wa.vertices[5]=-1;wa.vertices[6]=20;wa.vertices[7]=20;wa.vertices[8]=-1;wa.vertices[9]=-20;wa.vertices[10]=20;wa.vertices[11]=-1;wa.faces[0]=0;wa.faces[1]=1;wa.faces[2]=2;wa.faces[3]=0;wa.faces[4]=2;wa.faces[5]=3;wa.vertexBuffer=e.createBuffer();wa.elementBuffer=
|
|
|
-e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,wa.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,wa.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,wa.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,wa.faces,e.STATIC_DRAW);wa.program=e.createProgram();e.attachShader(wa.program,ka("fragment",THREE.ShaderLib.shadowPost.fragmentShader));e.attachShader(wa.program,ka("vertex",THREE.ShaderLib.shadowPost.vertexShader));e.linkProgram(wa.program);wa.vertexLocation=e.getAttribLocation(wa.program,"position");
|
|
|
-wa.projectionLocation=e.getUniformLocation(wa.program,"projectionMatrix");wa.darknessLocation=e.getUniformLocation(wa.program,"darkness")}var fa={};fa.vertices=new Float32Array(16);fa.faces=new Uint16Array(6);b=0;fa.vertices[b++]=-1;fa.vertices[b++]=-1;fa.vertices[b++]=0;fa.vertices[b++]=0;fa.vertices[b++]=1;fa.vertices[b++]=-1;fa.vertices[b++]=1;fa.vertices[b++]=0;fa.vertices[b++]=1;fa.vertices[b++]=1;fa.vertices[b++]=1;fa.vertices[b++]=1;fa.vertices[b++]=-1;fa.vertices[b++]=1;fa.vertices[b++]=0;
|
|
|
-fa.vertices[b++]=1;b=0;fa.faces[b++]=0;fa.faces[b++]=1;fa.faces[b++]=2;fa.faces[b++]=0;fa.faces[b++]=2;fa.faces[b++]=3;fa.vertexBuffer=e.createBuffer();fa.elementBuffer=e.createBuffer();fa.tempTexture=e.createTexture();fa.occlusionTexture=e.createTexture();e.bindBuffer(e.ARRAY_BUFFER,fa.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,fa.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,fa.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,fa.faces,e.STATIC_DRAW);e.bindTexture(e.TEXTURE_2D,fa.tempTexture);
|
|
|
-e.texImage2D(e.TEXTURE_2D,0,e.RGB,16,16,0,e.RGB,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST);e.bindTexture(e.TEXTURE_2D,fa.occlusionTexture);e.texImage2D(e.TEXTURE_2D,0,e.RGBA,16,16,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);
|
|
|
-e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST);if(e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)<=0){fa.hasVertexTexture=!1;fa.program=e.createProgram();e.attachShader(fa.program,ka("fragment",THREE.ShaderLib.lensFlare.fragmentShader));e.attachShader(fa.program,ka("vertex",THREE.ShaderLib.lensFlare.vertexShader))}else{fa.hasVertexTexture=!0;fa.program=e.createProgram();
|
|
|
-e.attachShader(fa.program,ka("fragment",THREE.ShaderLib.lensFlareVertexTexture.fragmentShader));e.attachShader(fa.program,ka("vertex",THREE.ShaderLib.lensFlareVertexTexture.vertexShader))}e.linkProgram(fa.program);fa.attributes={};fa.uniforms={};fa.attributes.vertex=e.getAttribLocation(fa.program,"position");fa.attributes.uv=e.getAttribLocation(fa.program,"UV");fa.uniforms.renderType=e.getUniformLocation(fa.program,"renderType");fa.uniforms.map=e.getUniformLocation(fa.program,"map");fa.uniforms.occlusionMap=
|
|
|
-e.getUniformLocation(fa.program,"occlusionMap");fa.uniforms.opacity=e.getUniformLocation(fa.program,"opacity");fa.uniforms.scale=e.getUniformLocation(fa.program,"scale");fa.uniforms.rotation=e.getUniformLocation(fa.program,"rotation");fa.uniforms.screenPosition=e.getUniformLocation(fa.program,"screenPosition");_sprite={};_sprite.vertices=new Float32Array(16);_sprite.faces=new Uint16Array(6);b=0;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=0;_sprite.vertices[b++]=0;_sprite.vertices[b++]=
|
|
|
-1;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=0;_sprite.vertices[b++]=1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=0;_sprite.vertices[b++]=1;b=0;_sprite.faces[b++]=0;_sprite.faces[b++]=1;_sprite.faces[b++]=2;_sprite.faces[b++]=0;_sprite.faces[b++]=2;_sprite.faces[b++]=3;_sprite.vertexBuffer=e.createBuffer();_sprite.elementBuffer=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
-_sprite.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,_sprite.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,_sprite.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,_sprite.faces,e.STATIC_DRAW);_sprite.program=e.createProgram();e.attachShader(_sprite.program,ka("fragment",THREE.ShaderLib.sprite.fragmentShader));e.attachShader(_sprite.program,ka("vertex",THREE.ShaderLib.sprite.vertexShader));e.linkProgram(_sprite.program);_sprite.attributes={};_sprite.uniforms={};_sprite.attributes.position=
|
|
|
-e.getAttribLocation(_sprite.program,"position");_sprite.attributes.uv=e.getAttribLocation(_sprite.program,"uv");_sprite.uniforms.uvOffset=e.getUniformLocation(_sprite.program,"uvOffset");_sprite.uniforms.uvScale=e.getUniformLocation(_sprite.program,"uvScale");_sprite.uniforms.rotation=e.getUniformLocation(_sprite.program,"rotation");_sprite.uniforms.scale=e.getUniformLocation(_sprite.program,"scale");_sprite.uniforms.alignment=e.getUniformLocation(_sprite.program,"alignment");_sprite.uniforms.map=
|
|
|
-e.getUniformLocation(_sprite.program,"map");_sprite.uniforms.opacity=e.getUniformLocation(_sprite.program,"opacity");_sprite.uniforms.useScreenCoordinates=e.getUniformLocation(_sprite.program,"useScreenCoordinates");_sprite.uniforms.affectedByDistance=e.getUniformLocation(_sprite.program,"affectedByDistance");_sprite.uniforms.screenPosition=e.getUniformLocation(_sprite.program,"screenPosition");_sprite.uniforms.modelViewMatrix=e.getUniformLocation(_sprite.program,"modelViewMatrix");_sprite.uniforms.projectionMatrix=
|
|
|
-e.getUniformLocation(_sprite.program,"projectionMatrix");this.setSize=function(m,B){ea.width=m;ea.height=B;this.setViewport(0,0,ea.width,ea.height)};this.setViewport=function(m,B,x,u){la=m;Ga=B;ia=x;ja=u;e.viewport(la,Ga,ia,ja)};this.setScissor=function(m,B,x,u){e.scissor(m,B,x,u)};this.enableScissorTest=function(m){m?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST)};this.enableDepthBufferWrite=function(m){oa=m;e.depthMask(m)};this.setClearColorHex=function(m,B){var x=new THREE.Color(m);e.clearColor(x.r,
|
|
|
-x.g,x.b,B)};this.setClearColor=function(m,B){e.clearColor(m.r,m.g,m.b,B)};this.clear=function(){e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT|e.STENCIL_BUFFER_BIT)};this.setStencilShadowDarkness=function(m){wa.darkness=m};this.initMaterial=function(m,B,x,u){var z,J,L;if(m instanceof THREE.MeshDepthMaterial)L="depth";else if(m instanceof THREE.ShadowVolumeDynamicMaterial)L="shadowVolumeDynamic";else if(m instanceof THREE.MeshNormalMaterial)L="normal";else if(m instanceof THREE.MeshBasicMaterial)L=
|
|
|
-"basic";else if(m instanceof THREE.MeshLambertMaterial)L="lambert";else if(m instanceof THREE.MeshPhongMaterial)L="phong";else if(m instanceof THREE.LineBasicMaterial)L="basic";else m instanceof THREE.ParticleBasicMaterial&&(L="particle_basic");if(L){var E=THREE.ShaderLib[L];m.uniforms=Uniforms.clone(E.uniforms);m.vertexShader=E.vertexShader;m.fragmentShader=E.fragmentShader}var P,F,M;P=M=E=0;for(F=B.length;P<F;P++){J=B[P];J instanceof THREE.DirectionalLight&&M++;J instanceof THREE.PointLight&&E++}if(E+
|
|
|
-M<=4)B=M;else{B=Math.ceil(4*M/(E+M));E=4-B}J={directional:B,point:E};M=50;if(u!==undefined&&u instanceof THREE.SkinnedMesh)M=u.bones.length;var I;a:{P=m.fragmentShader;F=m.vertexShader;E=m.uniforms;B=m.attributes;x={map:!!m.map,envMap:!!m.envMap,lightMap:!!m.lightMap,vertexColors:m.vertexColors,fog:x,sizeAttenuation:m.sizeAttenuation,skinning:m.skinning,morphTargets:m.morphTargets,maxMorphTargets:this.maxMorphTargets,maxDirLights:J.directional,maxPointLights:J.point,maxBones:M};var X;J=[];if(L)J.push(L);
|
|
|
-else{J.push(P);J.push(F)}for(X in x){J.push(X);J.push(x[X])}L=J.join();X=0;for(J=Aa.length;X<J;X++)if(Aa[X].code==L){I=Aa[X].program;break a}X=e.createProgram();prefix_fragment=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+x.maxDirLights,"#define MAX_POINT_LIGHTS "+x.maxPointLights,x.fog?"#define USE_FOG":"",x.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",x.map?"#define USE_MAP":"",x.envMap?"#define USE_ENVMAP":"",x.lightMap?"#define USE_LIGHTMAP":"",x.vertexColors?
|
|
|
-"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");prefix_vertex=[e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+x.maxDirLights,"#define MAX_POINT_LIGHTS "+x.maxPointLights,"#define MAX_BONES "+x.maxBones,x.map?"#define USE_MAP":"",x.envMap?"#define USE_ENVMAP":"",x.lightMap?"#define USE_LIGHTMAP":"",x.vertexColors?"#define USE_COLOR":"",x.skinning?"#define USE_SKINNING":"",x.morphTargets?"#define USE_MORPHTARGETS":
|
|
|
-"",x.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
+I=!0;e.useProgram(_sprite.program);xa=_sprite.program;ga="";e.disable(e.CULL_FACE);e.enable(e.BLEND);e.bindBuffer(e.ARRAY_BUFFER,_sprite.vertexBuffer);e.vertexAttribPointer(x.position,2,e.FLOAT,!1,16,0);e.vertexAttribPointer(x.uv,2,e.FLOAT,!1,16,8);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,_sprite.elementBuffer);e.uniformMatrix4fv(J.projectionMatrix,!1,$a);e.activeTexture(e.TEXTURE0);e.uniform1i(J.map,0);x=0;for(u=m.__webglSprites.length;x<u;x++){z=m.__webglSprites[x];if(z.useScreenCoordinates)z.z=-z.position.z;
|
|
|
+else{z._modelViewMatrix.multiplyToArray(B.matrixWorldInverse,z.matrixWorld,z._modelViewMatrixArray);z.z=-z._modelViewMatrix.n34}}m.__webglSprites.sort(y);x=0;for(u=m.__webglSprites.length;x<u;x++){z=m.__webglSprites[x];if(z.material===undefined&&z.map&&z.map.image&&z.map.image.width){if(z.useScreenCoordinates){e.uniform1i(J.useScreenCoordinates,1);e.uniform3f(J.screenPosition,(z.position.x-F)/F,(M-z.position.y)/M,z.position.z)}else{e.uniform1i(J.useScreenCoordinates,0);e.uniform1i(J.affectedByDistance,
|
|
|
+z.affectedByDistance?1:0);e.uniformMatrix4fv(J.modelViewMatrix,!1,z._modelViewMatrixArray)}E=z.map.image.width/(z.affectedByDistance?1:ja);P[0]=E*L*z.scale.x;P[1]=E*z.scale.y;e.uniform2f(J.uvScale,z.uvScale.x,z.uvScale.y);e.uniform2f(J.uvOffset,z.uvOffset.x,z.uvOffset.y);e.uniform2f(J.alignment,z.alignment.x,z.alignment.y);e.uniform1f(J.opacity,z.opacity);e.uniform1f(J.rotation,z.rotation);e.uniform2fv(J.scale,P);if(z.mergeWith3D&&!I){e.enable(e.DEPTH_TEST);e.depthMask(!0);I=!0}else if(!z.mergeWith3D&&
|
|
|
+I){e.disable(e.DEPTH_TEST);e.depthMask(z.blending===THREE.NormalBlending?!0:!1);I=!1}e.depthMask(!0);N(z.blending);R(z.map,0);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}}e.enable(e.CULL_FACE);e.enable(e.DEPTH_TEST);e.depthMask(oa)}function G(m,B){var x,u,z=m.__webglLensFlares.length,J,L,E,P=new THREE.Vector3,F=ja/ia,M=ia*0.5,I=ja*0.5,X=16/ja,U=[X*F,X],ya=[1,1,0],va=[1,1],ra=fa.uniforms;x=fa.attributes;e.useProgram(fa.program);xa=fa.program;ga="";e.uniform1i(ra.occlusionMap,0);e.uniform1i(ra.map,
|
|
|
+1);e.bindBuffer(e.ARRAY_BUFFER,fa.vertexBuffer);e.vertexAttribPointer(x.vertex,2,e.FLOAT,!1,16,0);e.vertexAttribPointer(x.uv,2,e.FLOAT,!1,16,8);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,fa.elementBuffer);e.disable(e.CULL_FACE);e.depthMask(!1);e.activeTexture(e.TEXTURE0);e.bindTexture(e.TEXTURE_2D,fa.occlusionTexture);e.activeTexture(e.TEXTURE1);for(u=0;u<z;u++){x=m.__webglLensFlares[u].object;P.set(x.matrixWorld.n14,x.matrixWorld.n24,x.matrixWorld.n34);B.matrixWorldInverse.multiplyVector3(P);B.projectionMatrix.multiplyVector3(P);
|
|
|
+ya[0]=P.x;ya[1]=P.y;ya[2]=P.z;va[0]=ya[0]*M+M;va[1]=ya[1]*I+I;if(va[0]>0&&va[0]<ia&&va[1]>0&&va[1]<ja){e.bindTexture(e.TEXTURE_2D,fa.tempTexture);e.copyTexImage2D(e.TEXTURE_2D,0,e.RGB,va[0]-8,va[1]-8,16,16,0);e.uniform1i(ra.renderType,0);e.uniform2fv(ra.scale,U);e.uniform3fv(ra.screenPosition,ya);e.disable(e.BLEND);e.enable(e.DEPTH_TEST);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0);e.bindTexture(e.TEXTURE_2D,fa.occlusionTexture);e.copyTexImage2D(e.TEXTURE_2D,0,e.RGBA,va[0]-8,va[1]-8,16,16,0);
|
|
|
+e.uniform1i(ra.renderType,1);e.disable(e.DEPTH_TEST);e.bindTexture(e.TEXTURE_2D,fa.tempTexture);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0);x.positionScreen.x=ya[0];x.positionScreen.y=ya[1];x.positionScreen.z=ya[2];x.customUpdateCallback?x.customUpdateCallback(x):x.updateLensFlares();e.uniform1i(ra.renderType,2);e.enable(e.BLEND);J=0;for(L=x.lensFlares.length;J<L;J++){E=x.lensFlares[J];if(E.opacity>0.0010&&E.scale>0.0010){ya[0]=E.x;ya[1]=E.y;ya[2]=E.z;X=E.size*E.scale/ja;U[0]=X*F;U[1]=X;e.uniform3fv(ra.screenPosition,
|
|
|
+ya);e.uniform2fv(ra.scale,U);e.uniform1f(ra.rotation,E.rotation);e.uniform1f(ra.opacity,E.opacity);N(E.blending);R(E.texture,1);e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}}}}e.enable(e.CULL_FACE);e.enable(e.DEPTH_TEST);e.depthMask(oa)}function H(m,B){m._modelViewMatrix.multiplyToArray(B.matrixWorldInverse,m.matrixWorld,m._modelViewMatrixArray);THREE.Matrix4.makeInvert3x3(m._modelViewMatrix).transposeIntoArray(m._normalMatrixArray)}function K(m){var B,x,u,z,J;if(m instanceof THREE.Mesh){x=m.geometry;
|
|
|
+for(B in x.geometryGroups){u=x.geometryGroups[B];J=!1;for(z in u.__webglCustomAttributes)if(u.__webglCustomAttributes[z].needsUpdate){J=!0;break}if(x.__dirtyVertices||x.__dirtyMorphTargets||x.__dirtyElements||x.__dirtyUvs||x.__dirtyNormals||x.__dirtyColors||x.__dirtyTangents||J){J=e.DYNAMIC_DRAW;var L=void 0,E=void 0,P=void 0,F=void 0;P=void 0;var M=void 0,I=void 0,X=void 0,U=void 0,ya=void 0,va=void 0,ra=void 0,Na=void 0,Sa=void 0,Ka=void 0,Ja=void 0,Ia=void 0,Wa=void 0;I=void 0;X=void 0;F=void 0;
|
|
|
+U=void 0;F=void 0;var D=void 0,aa=void 0;I=void 0;D=void 0;aa=void 0;var t=void 0,bb=void 0;D=void 0;aa=void 0;t=void 0;bb=void 0;D=void 0;aa=void 0;t=void 0;bb=void 0;D=void 0;aa=void 0;t=void 0;F=void 0;U=void 0;M=void 0;P=void 0;P=void 0;D=void 0;aa=void 0;t=void 0;var eb=void 0,Ta=0,Qa=0,hb=0,gb=0,cb=0,fb=0,sa=0,Va=0,Pa=0,T=0,Xa=0;aa=D=0;var La=u.__vertexArray,V=u.__uvArray,za=u.__uv2Array,na=u.__normalArray,Y=u.__tangentArray,Ca=u.__colorArray,qa=u.__skinVertexAArray,ha=u.__skinVertexBArray,
|
|
|
+Q=u.__skinIndexArray,Ea=u.__skinWeightArray,ib=u.__morphTargetsArrays,Ya=u.__webglCustomAttributes;t=void 0;var Za=u.__faceArray,db=u.__lineArray,jb=u.__needsSmoothNormals;va=u.__vertexColorType;ya=u.__uvType;ra=u.__normalType;var Ua=m.geometry,sb=Ua.__dirtyVertices,tb=Ua.__dirtyElements,rb=Ua.__dirtyUvs,ub=Ua.__dirtyNormals,vb=Ua.__dirtyTangents,wb=Ua.__dirtyColors,xb=Ua.__dirtyMorphTargets,nb=Ua.vertices,yb=u.faces,Bb=Ua.faces,zb=Ua.faceVertexUvs[0],Ab=Ua.faceVertexUvs[1],ob=Ua.skinVerticesA,pb=
|
|
|
+Ua.skinVerticesB,qb=Ua.skinIndices,lb=Ua.skinWeights,mb=Ua.edgeFaces,kb=Ua.morphTargets;if(Ya)for(eb in Ya){Ya[eb].offset=0;Ya[eb].offsetSrc=0}L=0;for(E=yb.length;L<E;L++){P=yb[L];F=Bb[P];zb&&(Na=zb[P]);Ab&&(Sa=Ab[P]);P=F.vertexNormals;M=F.normal;I=F.vertexColors;X=F.color;U=F.vertexTangents;if(F instanceof THREE.Face3){if(sb){Ka=nb[F.a].position;Ja=nb[F.b].position;Ia=nb[F.c].position;La[Qa]=Ka.x;La[Qa+1]=Ka.y;La[Qa+2]=Ka.z;La[Qa+3]=Ja.x;La[Qa+4]=Ja.y;La[Qa+5]=Ja.z;La[Qa+6]=Ia.x;La[Qa+7]=Ia.y;La[Qa+
|
|
|
+8]=Ia.z;Qa+=9}if(Ya)for(eb in Ya){t=Ya[eb];if(t.needsUpdate){D=t.offset;aa=t.offsetSrc;if(t.size===1){if(t.boundTo===undefined||t.boundTo==="vertices"){t.array[D+0]=t.value[F.a];t.array[D+1]=t.value[F.b];t.array[D+2]=t.value[F.c]}else if(t.boundTo==="faces"){t.array[D+0]=t.value[aa];t.array[D+1]=t.value[aa];t.array[D+2]=t.value[aa];t.offsetSrc++}else if(t.boundTo==="faceVertices"){t.array[D+0]=t.value[aa+0];t.array[D+1]=t.value[aa+1];t.array[D+2]=t.value[aa+2];t.offsetSrc+=3}t.offset+=3}else{if(t.boundTo===
|
|
|
+undefined||t.boundTo==="vertices"){Ka=t.value[F.a];Ja=t.value[F.b];Ia=t.value[F.c]}else if(t.boundTo==="faces"){Ka=t.value[aa];Ja=t.value[aa];Ia=t.value[aa];t.offsetSrc++}else if(t.boundTo==="faceVertices"){Ka=t.value[aa+0];Ja=t.value[aa+1];Ia=t.value[aa+2];t.offsetSrc+=3}if(t.size===2){t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ja.x;t.array[D+3]=Ja.y;t.array[D+4]=Ia.x;t.array[D+5]=Ia.y;t.offset+=6}else if(t.size===3){if(t.type==="c"){t.array[D+0]=Ka.r;t.array[D+1]=Ka.g;t.array[D+2]=Ka.b;t.array[D+
|
|
|
+3]=Ja.r;t.array[D+4]=Ja.g;t.array[D+5]=Ja.b;t.array[D+6]=Ia.r;t.array[D+7]=Ia.g;t.array[D+8]=Ia.b}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ja.x;t.array[D+4]=Ja.y;t.array[D+5]=Ja.z;t.array[D+6]=Ia.x;t.array[D+7]=Ia.y;t.array[D+8]=Ia.z}t.offset+=9}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ka.w;t.array[D+4]=Ja.x;t.array[D+5]=Ja.y;t.array[D+6]=Ja.z;t.array[D+7]=Ja.w;t.array[D+8]=Ia.x;t.array[D+9]=Ia.y;t.array[D+10]=Ia.z;t.array[D+11]=Ia.w;t.offset+=
|
|
|
+12}}}}if(xb){D=0;for(aa=kb.length;D<aa;D++){Ka=kb[D].vertices[F.a].position;Ja=kb[D].vertices[F.b].position;Ia=kb[D].vertices[F.c].position;t=ib[D];t[Xa+0]=Ka.x;t[Xa+1]=Ka.y;t[Xa+2]=Ka.z;t[Xa+3]=Ja.x;t[Xa+4]=Ja.y;t[Xa+5]=Ja.z;t[Xa+6]=Ia.x;t[Xa+7]=Ia.y;t[Xa+8]=Ia.z}Xa+=9}if(lb.length){D=lb[F.a];aa=lb[F.b];t=lb[F.c];Ea[T]=D.x;Ea[T+1]=D.y;Ea[T+2]=D.z;Ea[T+3]=D.w;Ea[T+4]=aa.x;Ea[T+5]=aa.y;Ea[T+6]=aa.z;Ea[T+7]=aa.w;Ea[T+8]=t.x;Ea[T+9]=t.y;Ea[T+10]=t.z;Ea[T+11]=t.w;D=qb[F.a];aa=qb[F.b];t=qb[F.c];Q[T]=D.x;
|
|
|
+Q[T+1]=D.y;Q[T+2]=D.z;Q[T+3]=D.w;Q[T+4]=aa.x;Q[T+5]=aa.y;Q[T+6]=aa.z;Q[T+7]=aa.w;Q[T+8]=t.x;Q[T+9]=t.y;Q[T+10]=t.z;Q[T+11]=t.w;D=ob[F.a];aa=ob[F.b];t=ob[F.c];qa[T]=D.x;qa[T+1]=D.y;qa[T+2]=D.z;qa[T+3]=1;qa[T+4]=aa.x;qa[T+5]=aa.y;qa[T+6]=aa.z;qa[T+7]=1;qa[T+8]=t.x;qa[T+9]=t.y;qa[T+10]=t.z;qa[T+11]=1;D=pb[F.a];aa=pb[F.b];t=pb[F.c];ha[T]=D.x;ha[T+1]=D.y;ha[T+2]=D.z;ha[T+3]=1;ha[T+4]=aa.x;ha[T+5]=aa.y;ha[T+6]=aa.z;ha[T+7]=1;ha[T+8]=t.x;ha[T+9]=t.y;ha[T+10]=t.z;ha[T+11]=1;T+=12}if(wb&&va){if(I.length==
|
|
|
+3&&va==THREE.VertexColors){F=I[0];D=I[1];aa=I[2]}else aa=D=F=X;Ca[Pa]=F.r;Ca[Pa+1]=F.g;Ca[Pa+2]=F.b;Ca[Pa+3]=D.r;Ca[Pa+4]=D.g;Ca[Pa+5]=D.b;Ca[Pa+6]=aa.r;Ca[Pa+7]=aa.g;Ca[Pa+8]=aa.b;Pa+=9}if(vb&&Ua.hasTangents){I=U[0];X=U[1];F=U[2];Y[sa]=I.x;Y[sa+1]=I.y;Y[sa+2]=I.z;Y[sa+3]=I.w;Y[sa+4]=X.x;Y[sa+5]=X.y;Y[sa+6]=X.z;Y[sa+7]=X.w;Y[sa+8]=F.x;Y[sa+9]=F.y;Y[sa+10]=F.z;Y[sa+11]=F.w;sa+=12}if(ub&&ra)if(P.length==3&&jb)for(U=0;U<3;U++){M=P[U];na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}else for(U=0;U<3;U++){na[fb]=
|
|
|
+M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}if(rb&&Na!==undefined&&ya)for(U=0;U<3;U++){P=Na[U];V[hb]=P.u;V[hb+1]=P.v;hb+=2}if(rb&&Sa!==undefined&&ya)for(U=0;U<3;U++){P=Sa[U];za[gb]=P.u;za[gb+1]=P.v;gb+=2}if(tb){Za[cb]=Ta;Za[cb+1]=Ta+1;Za[cb+2]=Ta+2;cb+=3;db[Va]=Ta;db[Va+1]=Ta+1;db[Va+2]=Ta;db[Va+3]=Ta+2;db[Va+4]=Ta+1;db[Va+5]=Ta+2;Va+=6;Ta+=3}}else if(F instanceof THREE.Face4){if(sb){Ka=nb[F.a].position;Ja=nb[F.b].position;Ia=nb[F.c].position;Wa=nb[F.d].position;La[Qa]=Ka.x;La[Qa+1]=Ka.y;La[Qa+2]=Ka.z;La[Qa+
|
|
|
+3]=Ja.x;La[Qa+4]=Ja.y;La[Qa+5]=Ja.z;La[Qa+6]=Ia.x;La[Qa+7]=Ia.y;La[Qa+8]=Ia.z;La[Qa+9]=Wa.x;La[Qa+10]=Wa.y;La[Qa+11]=Wa.z;Qa+=12}if(Ya)for(eb in Ya){t=Ya[eb];if(t.needsUpdate){D=t.offset;aa=t.offsetSrc;if(t.size===1){if(t.boundTo===undefined||t.boundTo==="vertices"){t.array[D+0]=t.value[F.a];t.array[D+1]=t.value[F.b];t.array[D+2]=t.value[F.c];t.array[D+2]=t.value[F.d]}else if(t.boundTo==="faces"){t.array[D+0]=t.value[aa];t.array[D+1]=t.value[aa];t.array[D+2]=t.value[aa];t.array[D+2]=t.value[aa];t.offsetSrc++}else if(t.boundTo===
|
|
|
+"faceVertices"){t.array[D+0]=t.value[aa+0];t.array[D+1]=t.value[aa+1];t.array[D+2]=t.value[aa+2];t.array[D+2]=t.value[aa+3];t.offsetSrc+=4}t.offset+=4}else{if(t.boundTo===undefined||t.boundTo==="vertices"){Ka=t.value[F.a];Ja=t.value[F.b];Ia=t.value[F.c];Wa=t.value[F.d]}else if(t.boundTo==="faces"){Ka=t.value[aa];Ja=t.value[aa];Ia=t.value[aa];Wa=t.value[aa];t.offsetSrc++}else if(t.boundTo==="faceVertices"){Ka=t.value[aa+0];Ja=t.value[aa+1];Ia=t.value[aa+2];Wa=t.value[aa+3];t.offsetSrc+=4}if(t.size===
|
|
|
+2){t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ja.x;t.array[D+3]=Ja.y;t.array[D+4]=Ia.x;t.array[D+5]=Ia.y;t.array[D+6]=Wa.x;t.array[D+7]=Wa.y;t.offset+=8}else if(t.size===3){if(t.type==="c"){t.array[D+0]=Ka.r;t.array[D+1]=Ka.g;t.array[D+2]=Ka.b;t.array[D+3]=Ja.r;t.array[D+4]=Ja.g;t.array[D+5]=Ja.b;t.array[D+6]=Ia.r;t.array[D+7]=Ia.g;t.array[D+8]=Ia.b;t.array[D+9]=Wa.r;t.array[D+10]=Wa.g;t.array[D+11]=Wa.b}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ja.x;t.array[D+
|
|
|
+4]=Ja.y;t.array[D+5]=Ja.z;t.array[D+6]=Ia.x;t.array[D+7]=Ia.y;t.array[D+8]=Ia.z;t.array[D+9]=Wa.x;t.array[D+10]=Wa.y;t.array[D+11]=Wa.z}t.offset+=12}else{t.array[D+0]=Ka.x;t.array[D+1]=Ka.y;t.array[D+2]=Ka.z;t.array[D+3]=Ka.w;t.array[D+4]=Ja.x;t.array[D+5]=Ja.y;t.array[D+6]=Ja.z;t.array[D+7]=Ja.w;t.array[D+8]=Ia.x;t.array[D+9]=Ia.y;t.array[D+10]=Ia.z;t.array[D+11]=Ia.w;t.array[D+12]=Wa.x;t.array[D+13]=Wa.y;t.array[D+14]=Wa.z;t.array[D+15]=Wa.w;t.offset+=16}}}}if(xb){D=0;for(aa=kb.length;D<aa;D++){Ka=
|
|
|
+kb[D].vertices[F.a].position;Ja=kb[D].vertices[F.b].position;Ia=kb[D].vertices[F.c].position;Wa=kb[D].vertices[F.d].position;t=ib[D];t[Xa+0]=Ka.x;t[Xa+1]=Ka.y;t[Xa+2]=Ka.z;t[Xa+3]=Ja.x;t[Xa+4]=Ja.y;t[Xa+5]=Ja.z;t[Xa+6]=Ia.x;t[Xa+7]=Ia.y;t[Xa+8]=Ia.z;t[Xa+9]=Wa.x;t[Xa+10]=Wa.y;t[Xa+11]=Wa.z}Xa+=12}if(lb.length){D=lb[F.a];aa=lb[F.b];t=lb[F.c];bb=lb[F.d];Ea[T]=D.x;Ea[T+1]=D.y;Ea[T+2]=D.z;Ea[T+3]=D.w;Ea[T+4]=aa.x;Ea[T+5]=aa.y;Ea[T+6]=aa.z;Ea[T+7]=aa.w;Ea[T+8]=t.x;Ea[T+9]=t.y;Ea[T+10]=t.z;Ea[T+11]=t.w;
|
|
|
+Ea[T+12]=bb.x;Ea[T+13]=bb.y;Ea[T+14]=bb.z;Ea[T+15]=bb.w;D=qb[F.a];aa=qb[F.b];t=qb[F.c];bb=qb[F.d];Q[T]=D.x;Q[T+1]=D.y;Q[T+2]=D.z;Q[T+3]=D.w;Q[T+4]=aa.x;Q[T+5]=aa.y;Q[T+6]=aa.z;Q[T+7]=aa.w;Q[T+8]=t.x;Q[T+9]=t.y;Q[T+10]=t.z;Q[T+11]=t.w;Q[T+12]=bb.x;Q[T+13]=bb.y;Q[T+14]=bb.z;Q[T+15]=bb.w;D=ob[F.a];aa=ob[F.b];t=ob[F.c];bb=ob[F.d];qa[T]=D.x;qa[T+1]=D.y;qa[T+2]=D.z;qa[T+3]=1;qa[T+4]=aa.x;qa[T+5]=aa.y;qa[T+6]=aa.z;qa[T+7]=1;qa[T+8]=t.x;qa[T+9]=t.y;qa[T+10]=t.z;qa[T+11]=1;qa[T+12]=bb.x;qa[T+13]=bb.y;qa[T+
|
|
|
+14]=bb.z;qa[T+15]=1;D=pb[F.a];aa=pb[F.b];t=pb[F.c];F=pb[F.d];ha[T]=D.x;ha[T+1]=D.y;ha[T+2]=D.z;ha[T+3]=1;ha[T+4]=aa.x;ha[T+5]=aa.y;ha[T+6]=aa.z;ha[T+7]=1;ha[T+8]=t.x;ha[T+9]=t.y;ha[T+10]=t.z;ha[T+11]=1;ha[T+12]=F.x;ha[T+13]=F.y;ha[T+14]=F.z;ha[T+15]=1;T+=16}if(wb&&va){if(I.length==4&&va==THREE.VertexColors){F=I[0];D=I[1];aa=I[2];I=I[3]}else I=aa=D=F=X;Ca[Pa]=F.r;Ca[Pa+1]=F.g;Ca[Pa+2]=F.b;Ca[Pa+3]=D.r;Ca[Pa+4]=D.g;Ca[Pa+5]=D.b;Ca[Pa+6]=aa.r;Ca[Pa+7]=aa.g;Ca[Pa+8]=aa.b;Ca[Pa+9]=I.r;Ca[Pa+10]=I.g;Ca[Pa+
|
|
|
+11]=I.b;Pa+=12}if(vb&&Ua.hasTangents){I=U[0];X=U[1];F=U[2];U=U[3];Y[sa]=I.x;Y[sa+1]=I.y;Y[sa+2]=I.z;Y[sa+3]=I.w;Y[sa+4]=X.x;Y[sa+5]=X.y;Y[sa+6]=X.z;Y[sa+7]=X.w;Y[sa+8]=F.x;Y[sa+9]=F.y;Y[sa+10]=F.z;Y[sa+11]=F.w;Y[sa+12]=U.x;Y[sa+13]=U.y;Y[sa+14]=U.z;Y[sa+15]=U.w;sa+=16}if(ub&&ra)if(P.length==4&&jb)for(U=0;U<4;U++){M=P[U];na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}else for(U=0;U<4;U++){na[fb]=M.x;na[fb+1]=M.y;na[fb+2]=M.z;fb+=3}if(rb&&Na!==undefined&&ya)for(U=0;U<4;U++){P=Na[U];V[hb]=P.u;V[hb+1]=P.v;
|
|
|
+hb+=2}if(rb&&Sa!==undefined&&ya)for(U=0;U<4;U++){P=Sa[U];za[gb]=P.u;za[gb+1]=P.v;gb+=2}if(tb){Za[cb]=Ta;Za[cb+1]=Ta+1;Za[cb+2]=Ta+3;Za[cb+3]=Ta+1;Za[cb+4]=Ta+2;Za[cb+5]=Ta+3;cb+=6;db[Va]=Ta;db[Va+1]=Ta+1;db[Va+2]=Ta;db[Va+3]=Ta+3;db[Va+4]=Ta+1;db[Va+5]=Ta+2;db[Va+6]=Ta+2;db[Va+7]=Ta+3;Va+=8;Ta+=4}}}if(mb){L=0;for(E=mb.length;L<E;L++){Za[cb]=mb[L].a;Za[cb+1]=mb[L].b;Za[cb+2]=mb[L].c;Za[cb+3]=mb[L].a;Za[cb+4]=mb[L].c;Za[cb+5]=mb[L].d;cb+=6}}if(sb){e.bindBuffer(e.ARRAY_BUFFER,u.__webglVertexBuffer);
|
|
|
+e.bufferData(e.ARRAY_BUFFER,La,J)}if(Ya)for(eb in Ya){t=Ya[eb];if(t.needsUpdate){e.bindBuffer(e.ARRAY_BUFFER,t.buffer);e.bufferData(e.ARRAY_BUFFER,t.array,J);t.needsUpdate=!1}}if(xb){D=0;for(aa=kb.length;D<aa;D++){e.bindBuffer(e.ARRAY_BUFFER,u.__webglMorphTargetsBuffers[D]);e.bufferData(e.ARRAY_BUFFER,ib[D],J)}}if(wb&&Pa>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,Ca,J)}if(ub){e.bindBuffer(e.ARRAY_BUFFER,u.__webglNormalBuffer);e.bufferData(e.ARRAY_BUFFER,na,J)}if(vb&&
|
|
|
+Ua.hasTangents){e.bindBuffer(e.ARRAY_BUFFER,u.__webglTangentBuffer);e.bufferData(e.ARRAY_BUFFER,Y,J)}if(rb&&hb>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglUVBuffer);e.bufferData(e.ARRAY_BUFFER,V,J)}if(rb&&gb>0){e.bindBuffer(e.ARRAY_BUFFER,u.__webglUV2Buffer);e.bufferData(e.ARRAY_BUFFER,za,J)}if(tb){e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,u.__webglFaceBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,Za,J);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,u.__webglLineBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,db,J)}if(T>0){e.bindBuffer(e.ARRAY_BUFFER,
|
|
|
+u.__webglSkinVertexABuffer);e.bufferData(e.ARRAY_BUFFER,qa,J);e.bindBuffer(e.ARRAY_BUFFER,u.__webglSkinVertexBBuffer);e.bufferData(e.ARRAY_BUFFER,ha,J);e.bindBuffer(e.ARRAY_BUFFER,u.__webglSkinIndicesBuffer);e.bufferData(e.ARRAY_BUFFER,Q,J);e.bindBuffer(e.ARRAY_BUFFER,u.__webglSkinWeightsBuffer);e.bufferData(e.ARRAY_BUFFER,Ea,J)}}}x.__dirtyVertices=!1;x.__dirtyMorphTargets=!1;x.__dirtyElements=!1;x.__dirtyUvs=!1;x.__dirtyNormals=!1;x.__dirtyTangents=!1;x.__dirtyColors=!1}else if(m instanceof THREE.Ribbon){x=
|
|
|
+m.geometry;if(x.__dirtyVertices||x.__dirtyColors){m=x;B=e.DYNAMIC_DRAW;va=m.vertices;u=m.colors;ra=va.length;J=u.length;Na=m.__vertexArray;L=m.__colorArray;Sa=m.__dirtyColors;if(m.__dirtyVertices){for(E=0;E<ra;E++){ya=va[E].position;z=E*3;Na[z]=ya.x;Na[z+1]=ya.y;Na[z+2]=ya.z}e.bindBuffer(e.ARRAY_BUFFER,m.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,Na,B)}if(Sa){for(E=0;E<J;E++){color=u[E];z=E*3;L[z]=color.r;L[z+1]=color.g;L[z+2]=color.b}e.bindBuffer(e.ARRAY_BUFFER,m.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,
|
|
|
+L,B)}}x.__dirtyVertices=!1;x.__dirtyColors=!1}else if(m instanceof THREE.Line){x=m.geometry;if(x.__dirtyVertices||x.__dirtyColors){m=x;B=e.DYNAMIC_DRAW;va=m.vertices;u=m.colors;ra=va.length;J=u.length;Na=m.__vertexArray;L=m.__colorArray;Sa=m.__dirtyColors;if(m.__dirtyVertices){for(E=0;E<ra;E++){ya=va[E].position;z=E*3;Na[z]=ya.x;Na[z+1]=ya.y;Na[z+2]=ya.z}e.bindBuffer(e.ARRAY_BUFFER,m.__webglVertexBuffer);e.bufferData(e.ARRAY_BUFFER,Na,B)}if(Sa){for(E=0;E<J;E++){color=u[E];z=E*3;L[z]=color.r;L[z+1]=
|
|
|
+color.g;L[z+2]=color.b}e.bindBuffer(e.ARRAY_BUFFER,m.__webglColorBuffer);e.bufferData(e.ARRAY_BUFFER,L,B)}}x.__dirtyVertices=!1;x.__dirtyColors=!1}else if(m instanceof THREE.ParticleSystem){x=m.geometry;(x.__dirtyVertices||x.__dirtyColors||m.sortParticles)&&c(x,e.DYNAMIC_DRAW,m);x.__dirtyVertices=!1;x.__dirtyColors=!1}}function W(m){function B(X){var U=[];x=0;for(u=X.length;x<u;x++)X[x]==undefined?U.push("undefined"):U.push(X[x].id);return U.join("_")}var x,u,z,J,L,E,P,F,M={},I=m.morphTargets!==undefined?
|
|
|
+m.morphTargets.length:0;m.geometryGroups={};z=0;for(J=m.faces.length;z<J;z++){L=m.faces[z];E=L.materials;P=B(E);M[P]==undefined&&(M[P]={hash:P,counter:0});F=M[P].hash+"_"+M[P].counter;m.geometryGroups[F]==undefined&&(m.geometryGroups[F]={faces:[],materials:E,vertices:0,numMorphTargets:I});L=L instanceof THREE.Face3?3:4;if(m.geometryGroups[F].vertices+L>65535){M[P].counter+=1;F=M[P].hash+"_"+M[P].counter;m.geometryGroups[F]==undefined&&(m.geometryGroups[F]={faces:[],materials:E,vertices:0,numMorphTargets:I})}m.geometryGroups[F].faces.push(z);
|
|
|
+m.geometryGroups[F].vertices+=L}}function A(m,B,x){m.push({buffer:B,object:x,opaque:{list:[],count:0},transparent:{list:[],count:0}})}function N(m){if(m!=ga){switch(m){case THREE.AdditiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE);break;case THREE.SubtractiveBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.ONE_MINUS_SRC_COLOR);break;case THREE.MultiplyBlending:e.blendEquation(e.FUNC_ADD);e.blendFunc(e.ZERO,e.SRC_COLOR);break;default:e.blendEquationSeparate(e.FUNC_ADD,
|
|
|
+e.FUNC_ADD);e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA)}ga=m}}function O(m,B,x){if((x.width&x.width-1)==0&&(x.height&x.height-1)==0){e.texParameteri(m,e.TEXTURE_WRAP_S,ca(B.wrapS));e.texParameteri(m,e.TEXTURE_WRAP_T,ca(B.wrapT));e.texParameteri(m,e.TEXTURE_MAG_FILTER,ca(B.magFilter));e.texParameteri(m,e.TEXTURE_MIN_FILTER,ca(B.minFilter));e.generateMipmap(m)}else{e.texParameteri(m,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(m,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);
|
|
|
+e.texParameteri(m,e.TEXTURE_MAG_FILTER,ua(B.magFilter));e.texParameteri(m,e.TEXTURE_MIN_FILTER,ua(B.minFilter))}}function R(m,B){if(m.needsUpdate){if(m.__webglInit){e.bindTexture(e.TEXTURE_2D,m.__webglTexture);e.texSubImage2D(e.TEXTURE_2D,0,0,0,e.RGBA,e.UNSIGNED_BYTE,m.image)}else{m.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,m.__webglTexture);e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,m.image);m.__webglInit=!0}O(e.TEXTURE_2D,m,m.image);e.bindTexture(e.TEXTURE_2D,null);
|
|
|
+m.needsUpdate=!1}e.activeTexture(e.TEXTURE0+B);e.bindTexture(e.TEXTURE_2D,m.__webglTexture)}function Fa(m){if(m&&!m.__webglFramebuffer){if(m.depthBuffer===undefined)m.depthBuffer=!0;if(m.stencilBuffer===undefined)m.stencilBuffer=!0;m.__webglFramebuffer=e.createFramebuffer();m.__webglRenderbuffer=e.createRenderbuffer();m.__webglTexture=e.createTexture();e.bindTexture(e.TEXTURE_2D,m.__webglTexture);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,ca(m.wrapS));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,
|
|
|
+ca(m.wrapT));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,ca(m.magFilter));e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,ca(m.minFilter));e.texImage2D(e.TEXTURE_2D,0,ca(m.format),m.width,m.height,0,ca(m.format),ca(m.type),null);e.bindRenderbuffer(e.RENDERBUFFER,m.__webglRenderbuffer);e.bindFramebuffer(e.FRAMEBUFFER,m.__webglFramebuffer);e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,m.__webglTexture,0);if(m.depthBuffer&&!m.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,
|
|
|
+e.DEPTH_COMPONENT16,m.width,m.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.RENDERBUFFER,m.__webglRenderbuffer)}else if(m.depthBuffer&&m.stencilBuffer){e.renderbufferStorage(e.RENDERBUFFER,e.DEPTH_STENCIL,m.width,m.height);e.framebufferRenderbuffer(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.RENDERBUFFER,m.__webglRenderbuffer)}else e.renderbufferStorage(e.RENDERBUFFER,e.RGBA4,m.width,m.height);e.bindTexture(e.TEXTURE_2D,null);e.bindRenderbuffer(e.RENDERBUFFER,null);e.bindFramebuffer(e.FRAMEBUFFER,
|
|
|
+null)}var B,x;if(m){B=m.__webglFramebuffer;x=m.width;m=m.height}else{B=null;x=ia;m=ja}if(B!=Ha){e.bindFramebuffer(e.FRAMEBUFFER,B);e.viewport(la,Ga,x,m);Ha=B}}function ka(m,B){var x;if(m=="fragment")x=e.createShader(e.FRAGMENT_SHADER);else m=="vertex"&&(x=e.createShader(e.VERTEX_SHADER));e.shaderSource(x,B);e.compileShader(x);if(!e.getShaderParameter(x,e.COMPILE_STATUS)){console.error(e.getShaderInfoLog(x));console.error(B);return null}return x}function ua(m){switch(m){case THREE.NearestFilter:case THREE.NearestMipMapNearestFilter:case THREE.NearestMipMapLinearFilter:return e.NEAREST;
|
|
|
+default:return e.LINEAR}}function ca(m){switch(m){case THREE.RepeatWrapping:return e.REPEAT;case THREE.ClampToEdgeWrapping:return e.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return e.MIRRORED_REPEAT;case THREE.NearestFilter:return e.NEAREST;case THREE.NearestMipMapNearestFilter:return e.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return e.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return e.LINEAR;case THREE.LinearMipMapNearestFilter:return e.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return e.LINEAR_MIPMAP_LINEAR;
|
|
|
+case THREE.ByteType:return e.BYTE;case THREE.UnsignedByteType:return e.UNSIGNED_BYTE;case THREE.ShortType:return e.SHORT;case THREE.UnsignedShortType:return e.UNSIGNED_SHORT;case THREE.IntType:return e.INT;case THREE.UnsignedShortType:return e.UNSIGNED_INT;case THREE.FloatType:return e.FLOAT;case THREE.AlphaFormat:return e.ALPHA;case THREE.RGBFormat:return e.RGB;case THREE.RGBAFormat:return e.RGBA;case THREE.LuminanceFormat:return e.LUMINANCE;case THREE.LuminanceAlphaFormat:return e.LUMINANCE_ALPHA}return 0}
|
|
|
+var e,ea=document.createElement("canvas"),Aa=[],xa=null,Ha=null,oa=!0,da=this,pa=null,Ba=null,ga=null,$=null,la=0,Ga=0,ia=0,ja=0,ta=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4],Ra=new THREE.Matrix4,$a=new Float32Array(16),ab=new Float32Array(16),Oa=new THREE.Vector4,S={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]}},Z=!0,ma=!0,Da=new THREE.Color(0),Ma=0;if(b){if(b.stencil!=
|
|
|
+undefined)Z=b.stencil;if(b.antialias!==undefined)ma=b.antialias;b.clearColor!==undefined&&Da.setHex(b.clearColor);if(b.clearAlpha!==undefined)Ma=b.clearAlpha}this.maxMorphTargets=8;this.domElement=ea;this.autoClear=!0;this.sortObjects=!0;(function(m,B,x,u){try{if(!(e=ea.getContext("experimental-webgl",{antialias:m,stencil:u})))throw"Error creating WebGL context.";}catch(z){console.error(z)}e.clearColor(0,0,0,1);e.clearDepth(1);e.enable(e.DEPTH_TEST);e.depthFunc(e.LEQUAL);e.frontFace(e.CCW);e.cullFace(e.BACK);
|
|
|
+e.enable(e.CULL_FACE);e.enable(e.BLEND);e.blendEquation(e.FUNC_ADD);e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA);e.clearColor(B.r,B.g,B.b,x)})(ma,Da,Ma,Z);this.context=e;if(Z){var wa={};wa.vertices=new Float32Array(12);wa.faces=new Uint16Array(6);wa.darkness=0.5;wa.vertices[0]=-20;wa.vertices[1]=-20;wa.vertices[2]=-1;wa.vertices[3]=20;wa.vertices[4]=-20;wa.vertices[5]=-1;wa.vertices[6]=20;wa.vertices[7]=20;wa.vertices[8]=-1;wa.vertices[9]=-20;wa.vertices[10]=20;wa.vertices[11]=-1;wa.faces[0]=0;
|
|
|
+wa.faces[1]=1;wa.faces[2]=2;wa.faces[3]=0;wa.faces[4]=2;wa.faces[5]=3;wa.vertexBuffer=e.createBuffer();wa.elementBuffer=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,wa.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,wa.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,wa.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,wa.faces,e.STATIC_DRAW);wa.program=e.createProgram();e.attachShader(wa.program,ka("fragment",THREE.ShaderLib.shadowPost.fragmentShader));e.attachShader(wa.program,ka("vertex",
|
|
|
+THREE.ShaderLib.shadowPost.vertexShader));e.linkProgram(wa.program);wa.vertexLocation=e.getAttribLocation(wa.program,"position");wa.projectionLocation=e.getUniformLocation(wa.program,"projectionMatrix");wa.darknessLocation=e.getUniformLocation(wa.program,"darkness")}var fa={};fa.vertices=new Float32Array(16);fa.faces=new Uint16Array(6);b=0;fa.vertices[b++]=-1;fa.vertices[b++]=-1;fa.vertices[b++]=0;fa.vertices[b++]=0;fa.vertices[b++]=1;fa.vertices[b++]=-1;fa.vertices[b++]=1;fa.vertices[b++]=0;fa.vertices[b++]=
|
|
|
+1;fa.vertices[b++]=1;fa.vertices[b++]=1;fa.vertices[b++]=1;fa.vertices[b++]=-1;fa.vertices[b++]=1;fa.vertices[b++]=0;fa.vertices[b++]=1;b=0;fa.faces[b++]=0;fa.faces[b++]=1;fa.faces[b++]=2;fa.faces[b++]=0;fa.faces[b++]=2;fa.faces[b++]=3;fa.vertexBuffer=e.createBuffer();fa.elementBuffer=e.createBuffer();fa.tempTexture=e.createTexture();fa.occlusionTexture=e.createTexture();e.bindBuffer(e.ARRAY_BUFFER,fa.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,fa.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,
|
|
|
+fa.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,fa.faces,e.STATIC_DRAW);e.bindTexture(e.TEXTURE_2D,fa.tempTexture);e.texImage2D(e.TEXTURE_2D,0,e.RGB,16,16,0,e.RGB,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST);e.bindTexture(e.TEXTURE_2D,fa.occlusionTexture);e.texImage2D(e.TEXTURE_2D,
|
|
|
+0,e.RGBA,16,16,0,e.RGBA,e.UNSIGNED_BYTE,null);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST);e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST);if(e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)<=0){fa.hasVertexTexture=!1;fa.program=e.createProgram();e.attachShader(fa.program,ka("fragment",THREE.ShaderLib.lensFlare.fragmentShader));e.attachShader(fa.program,
|
|
|
+ka("vertex",THREE.ShaderLib.lensFlare.vertexShader))}else{fa.hasVertexTexture=!0;fa.program=e.createProgram();e.attachShader(fa.program,ka("fragment",THREE.ShaderLib.lensFlareVertexTexture.fragmentShader));e.attachShader(fa.program,ka("vertex",THREE.ShaderLib.lensFlareVertexTexture.vertexShader))}e.linkProgram(fa.program);fa.attributes={};fa.uniforms={};fa.attributes.vertex=e.getAttribLocation(fa.program,"position");fa.attributes.uv=e.getAttribLocation(fa.program,"UV");fa.uniforms.renderType=e.getUniformLocation(fa.program,
|
|
|
+"renderType");fa.uniforms.map=e.getUniformLocation(fa.program,"map");fa.uniforms.occlusionMap=e.getUniformLocation(fa.program,"occlusionMap");fa.uniforms.opacity=e.getUniformLocation(fa.program,"opacity");fa.uniforms.scale=e.getUniformLocation(fa.program,"scale");fa.uniforms.rotation=e.getUniformLocation(fa.program,"rotation");fa.uniforms.screenPosition=e.getUniformLocation(fa.program,"screenPosition");_sprite={};_sprite.vertices=new Float32Array(16);_sprite.faces=new Uint16Array(6);b=0;_sprite.vertices[b++]=
|
|
|
+-1;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=0;_sprite.vertices[b++]=0;_sprite.vertices[b++]=1;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=0;_sprite.vertices[b++]=1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=-1;_sprite.vertices[b++]=1;_sprite.vertices[b++]=0;_sprite.vertices[b++]=1;b=0;_sprite.faces[b++]=0;_sprite.faces[b++]=1;_sprite.faces[b++]=2;_sprite.faces[b++]=0;_sprite.faces[b++]=2;_sprite.faces[b++]=3;_sprite.vertexBuffer=
|
|
|
+e.createBuffer();_sprite.elementBuffer=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,_sprite.vertexBuffer);e.bufferData(e.ARRAY_BUFFER,_sprite.vertices,e.STATIC_DRAW);e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,_sprite.elementBuffer);e.bufferData(e.ELEMENT_ARRAY_BUFFER,_sprite.faces,e.STATIC_DRAW);_sprite.program=e.createProgram();e.attachShader(_sprite.program,ka("fragment",THREE.ShaderLib.sprite.fragmentShader));e.attachShader(_sprite.program,ka("vertex",THREE.ShaderLib.sprite.vertexShader));e.linkProgram(_sprite.program);
|
|
|
+_sprite.attributes={};_sprite.uniforms={};_sprite.attributes.position=e.getAttribLocation(_sprite.program,"position");_sprite.attributes.uv=e.getAttribLocation(_sprite.program,"uv");_sprite.uniforms.uvOffset=e.getUniformLocation(_sprite.program,"uvOffset");_sprite.uniforms.uvScale=e.getUniformLocation(_sprite.program,"uvScale");_sprite.uniforms.rotation=e.getUniformLocation(_sprite.program,"rotation");_sprite.uniforms.scale=e.getUniformLocation(_sprite.program,"scale");_sprite.uniforms.alignment=
|
|
|
+e.getUniformLocation(_sprite.program,"alignment");_sprite.uniforms.map=e.getUniformLocation(_sprite.program,"map");_sprite.uniforms.opacity=e.getUniformLocation(_sprite.program,"opacity");_sprite.uniforms.useScreenCoordinates=e.getUniformLocation(_sprite.program,"useScreenCoordinates");_sprite.uniforms.affectedByDistance=e.getUniformLocation(_sprite.program,"affectedByDistance");_sprite.uniforms.screenPosition=e.getUniformLocation(_sprite.program,"screenPosition");_sprite.uniforms.modelViewMatrix=
|
|
|
+e.getUniformLocation(_sprite.program,"modelViewMatrix");_sprite.uniforms.projectionMatrix=e.getUniformLocation(_sprite.program,"projectionMatrix");this.setSize=function(m,B){ea.width=m;ea.height=B;this.setViewport(0,0,ea.width,ea.height)};this.setViewport=function(m,B,x,u){la=m;Ga=B;ia=x;ja=u;e.viewport(la,Ga,ia,ja)};this.setScissor=function(m,B,x,u){e.scissor(m,B,x,u)};this.enableScissorTest=function(m){m?e.enable(e.SCISSOR_TEST):e.disable(e.SCISSOR_TEST)};this.enableDepthBufferWrite=function(m){oa=
|
|
|
+m;e.depthMask(m)};this.setClearColorHex=function(m,B){var x=new THREE.Color(m);e.clearColor(x.r,x.g,x.b,B)};this.setClearColor=function(m,B){e.clearColor(m.r,m.g,m.b,B)};this.clear=function(){e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT|e.STENCIL_BUFFER_BIT)};this.setStencilShadowDarkness=function(m){wa.darkness=m};this.initMaterial=function(m,B,x,u){var z,J,L;if(m instanceof THREE.MeshDepthMaterial)L="depth";else if(m instanceof THREE.ShadowVolumeDynamicMaterial)L="shadowVolumeDynamic";else if(m instanceof
|
|
|
+THREE.MeshNormalMaterial)L="normal";else if(m instanceof THREE.MeshBasicMaterial)L="basic";else if(m instanceof THREE.MeshLambertMaterial)L="lambert";else if(m instanceof THREE.MeshPhongMaterial)L="phong";else if(m instanceof THREE.LineBasicMaterial)L="basic";else m instanceof THREE.ParticleBasicMaterial&&(L="particle_basic");if(L){var E=THREE.ShaderLib[L];m.uniforms=Uniforms.clone(E.uniforms);m.vertexShader=E.vertexShader;m.fragmentShader=E.fragmentShader}var P,F,M;P=M=E=0;for(F=B.length;P<F;P++){J=
|
|
|
+B[P];J instanceof THREE.DirectionalLight&&M++;J instanceof THREE.PointLight&&E++}if(E+M<=4)B=M;else{B=Math.ceil(4*M/(E+M));E=4-B}J={directional:B,point:E};M=50;if(u!==undefined&&u instanceof THREE.SkinnedMesh)M=u.bones.length;var I;a:{P=m.fragmentShader;F=m.vertexShader;E=m.uniforms;B=m.attributes;x={map:!!m.map,envMap:!!m.envMap,lightMap:!!m.lightMap,vertexColors:m.vertexColors,fog:x,sizeAttenuation:m.sizeAttenuation,skinning:m.skinning,morphTargets:m.morphTargets,maxMorphTargets:this.maxMorphTargets,
|
|
|
+maxDirLights:J.directional,maxPointLights:J.point,maxBones:M};var X;J=[];if(L)J.push(L);else{J.push(P);J.push(F)}for(X in x){J.push(X);J.push(x[X])}L=J.join();X=0;for(J=Aa.length;X<J;X++)if(Aa[X].code==L){I=Aa[X].program;break a}X=e.createProgram();prefix_fragment=["#ifdef GL_ES\nprecision highp float;\n#endif","#define MAX_DIR_LIGHTS "+x.maxDirLights,"#define MAX_POINT_LIGHTS "+x.maxPointLights,x.fog?"#define USE_FOG":"",x.fog instanceof THREE.FogExp2?"#define FOG_EXP2":"",x.map?"#define USE_MAP":
|
|
|
+"",x.envMap?"#define USE_ENVMAP":"",x.lightMap?"#define USE_LIGHTMAP":"",x.vertexColors?"#define USE_COLOR":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");prefix_vertex=[e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)>0?"#define VERTEX_TEXTURES":"","#define MAX_DIR_LIGHTS "+x.maxDirLights,"#define MAX_POINT_LIGHTS "+x.maxPointLights,"#define MAX_BONES "+x.maxBones,x.map?"#define USE_MAP":"",x.envMap?"#define USE_ENVMAP":"",x.lightMap?"#define USE_LIGHTMAP":"",x.vertexColors?
|
|
|
+"#define USE_COLOR":"",x.skinning?"#define USE_SKINNING":"",x.morphTargets?"#define USE_MORPHTARGETS":"",x.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nuniform mat4 cameraInverseMatrix;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinVertexA;\nattribute vec4 skinVertexB;\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
|
|
|
e.attachShader(X,ka("fragment",prefix_fragment+P));e.attachShader(X,ka("vertex",prefix_vertex+F));e.linkProgram(X);e.getProgramParameter(X,e.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+e.getProgramParameter(X,e.VALIDATE_STATUS)+", gl error ["+e.getError()+"]");X.uniforms={};X.attributes={};var U;P=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(U in E)P.push(U);
|
|
|
U=P;E=0;for(P=U.length;E<P;E++){F=U[E];X.uniforms[F]=e.getUniformLocation(X,F)}P=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(U=0;U<x.maxMorphTargets;U++)P.push("morphTarget"+U);for(I in B)P.push(I);I=P;U=0;for(B=I.length;U<B;U++){x=I[U];X.attributes[x]=e.getAttribLocation(X,x)}Aa.push({program:X,code:L});I=X}m.program=I;I=m.program.attributes;e.enableVertexAttribArray(I.position);I.color>=0&&e.enableVertexAttribArray(I.color);I.normal>=
|
|
|
0&&e.enableVertexAttribArray(I.normal);I.tangent>=0&&e.enableVertexAttribArray(I.tangent);if(m.skinning&&I.skinVertexA>=0&&I.skinVertexB>=0&&I.skinIndex>=0&&I.skinWeight>=0){e.enableVertexAttribArray(I.skinVertexA);e.enableVertexAttribArray(I.skinVertexB);e.enableVertexAttribArray(I.skinIndex);e.enableVertexAttribArray(I.skinWeight)}for(z in m.attributes)I[z]>=0&&e.enableVertexAttribArray(I[z]);if(m.morphTargets){m.numSupportedMorphTargets=0;if(I.morphTarget0>=0){e.enableVertexAttribArray(I.morphTarget0);
|