提交 23688daf 编写于 作者: M Mr.doob

Added WIP materials example (showing all at once).

上级 fbfa375d
......@@ -87,15 +87,15 @@ na=E.positionScreen.x;N=E.positionScreen.y;if(x.opacity!=I)h.globalAlpha=I=x.opa
else if(x instanceof THREE.MeshLambertMaterial){if(Da){ba.r=ga.r;ba.g=ga.g;ba.b=ga.b;a(R,Q,ba);P.r=x.color.r*ba.r;P.g=x.color.g*ba.g;P.b=x.color.b*ba.b;P.updateStyleString()}else P.__styleString=x.color.__styleString;d(S,V,Y,D,W,M,Z,B,P,x.wireframe,x.wireframe_linewidth)}else if(x instanceof THREE.MeshDepthMaterial){qa=x.__2near;ra=x.__farPlusNear;sa=x.__farMinusNear;T=~~((1-qa/(ra-C.positionScreen.z*sa))*255);ha=~~((1-qa/(ra-K.positionScreen.z*sa))*255);ma=~~((1-qa/(ra-G.positionScreen.z*sa))*255);
Ea=~~((1-qa/(ra-H.positionScreen.z*sa))*255);fa=r([T,T,T],[ha,ha,ha],[Ea,Ea,Ea],[ma,ma,ma]);da.u=0;da.v=0;$.u=ka;$.v=0;ea.u=ka;ea.v=ka;ia.u=0;ia.v=ka;m(fa,S,V,Y,D,Z,B,da.u,da.v,$.u,$.v,ia.u,ia.v);m(fa,z,X,W,M,na,N,$.u,$.v,ea.u,ea.v,ia.u,ia.v)}else if(x instanceof THREE.MeshNormalMaterial){P.r=e(Q.normalWorld.x);P.g=e(Q.normalWorld.y);P.b=e(Q.normalWorld.z);P.updateStyleString();d(S,V,Y,D,W,M,Z,B,P,x.wireframe,x.wireframe_linewidth)}}function c(C,K,G,H,j,E,Q,x,R){h.beginPath();h.moveTo(C,K);h.lineTo(G,
H);h.lineTo(j,E);h.lineTo(C,K);h.closePath();if(x){if(U!=R)h.lineWidth=U=R;if(w!=Q.__styleString)h.strokeStyle=w=Q.__styleString;h.stroke();aa.inflate(R*2)}else{if(F!=Q.__styleString)h.fillStyle=F=Q.__styleString;h.fill()}}function d(C,K,G,H,j,E,Q,x,R,A,ca){h.beginPath();h.moveTo(C,K);h.lineTo(G,H);h.lineTo(j,E);h.lineTo(Q,x);h.lineTo(C,K);h.closePath();if(A){if(U!=ca)h.lineWidth=U=ca;if(w!=R.__styleString)h.strokeStyle=w=R.__styleString;h.stroke();aa.inflate(ca*2)}else{if(F!=R.__styleString)h.fillStyle=
F=R.__styleString;h.fill()}}function m(C,K,G,H,j,E,Q,x,R,A,ca,la,ta){h.beginPath();h.moveTo(K,G);h.lineTo(H,j);h.lineTo(E,Q);h.closePath();H-=K;j-=G;E-=K;Q-=G;A-=x;ca-=R;la-=x;ta-=R;var ua=1/(A*ta-la*ca),za=(ta*H-ca*E)*ua;ca=(ta*j-ca*Q)*ua;H=(A*E-la*H)*ua;j=(A*Q-la*j)*ua;K=K-za*x-H*R;G=G-ca*x-j*R;h.save();h.transform(za,ca,H,j,K,G);h.clip();h.drawImage(C,0,0);h.restore()}function n(C){switch(C){case 0:h.globalCompositeOperation="source-over";break;case 1:h.globalCompositeOperation="lighter";break;
case 2:h.globalCompositeOperation="darker"}v=C}function r(C,K,G,H){ja[0]=C[0];ja[1]=C[1];ja[2]=C[2];ja[4]=K[0];ja[5]=K[1];ja[6]=K[2];ja[8]=G[0];ja[9]=G[1];ja[10]=G[2];ja[12]=H[0];ja[13]=H[1];ja[14]=H[2];Aa.putImageData(Ia,0,0);Fa.drawImage(Ba,0,0);return Ca}function e(C){return C<0?Math.min((1+C)*0.5,0.5):0.5+Math.min(C*0.5,0.5)}function g(C,K){var G=K.x-C.x,H=K.y-C.y,j=1/Math.sqrt(G*G+H*H);G*=j;H*=j;K.x+=G;K.y+=H;C.x-=G;C.y-=H}var k=null,i=new THREE.Projector,l=document.createElement("canvas"),o,
s,q,u,h=l.getContext("2d"),I=1,v=0,w=null,F=null,U=1,p,y,t,O,J=new THREE.Vertex,L=new THREE.Vertex,S,V,Y,D,W,M,Z,B,z,X,na,N,T,ha,ma,Ea,qa,ra,sa,fa,oa,pa,wa=new THREE.Rectangle,va=new THREE.Rectangle,aa=new THREE.Rectangle,Da=false,P=new THREE.Color(4294967295),ba=new THREE.Color(4294967295),ga=new THREE.Color(4278190080),xa=new THREE.Color(4278190080),ya=new THREE.Color(4278190080),Ma=Math.PI*2,Ha=new THREE.Vector3,da=new THREE.UV,$=new THREE.UV,ea=new THREE.UV,ia=new THREE.UV,Ba,Aa,Ia,ja,Ca,Fa,ka=
16;Ba=document.createElement("canvas");Ba.width=Ba.height=2;Aa=Ba.getContext("2d");Aa.fillStyle="rgba(0,0,0,1)";Aa.fillRect(0,0,2,2);Ia=Aa.getImageData(0,0,2,2);ja=Ia.data;Ca=document.createElement("canvas");Ca.width=Ca.height=ka;Fa=Ca.getContext("2d");Fa.translate(-ka/2,-ka/2);Fa.scale(ka,ka);ka--;this.domElement=l;this.autoClear=true;this.setSize=function(C,K){o=C;s=K;q=o/2;u=s/2;l.width=o;l.height=s;h.lineJoin="round";h.lineCap="round";wa.set(-q,-u,q,u)};this.clear=function(){if(!va.isEmpty()){va.inflate(1);
va.minSelf(wa);h.setTransform(1,0,0,-1,q,u);h.clearRect(va.getX(),va.getY(),va.getWidth(),va.getHeight());va.empty()}};this.render=function(C,K){var G,H,j,E,Q,x,R,A;this.autoClear&&this.clear();k=i.projectScene(C,K);h.setTransform(1,0,0,-1,q,u);if(Da=C.lights.length>0){Q=C.lights;ga.setRGBA(0,0,0,1);xa.setRGBA(0,0,0,1);ya.setRGBA(0,0,0,1);G=0;for(H=Q.length;G<H;G++){j=Q[G];E=j.color;if(j instanceof THREE.AmbientLight){ga.r+=E.r;ga.g+=E.g;ga.b+=E.b}else if(j instanceof THREE.DirectionalLight){xa.r+=
E.r;xa.g+=E.g;xa.b+=E.b}else if(j instanceof THREE.PointLight){ya.r+=E.r;ya.g+=E.g;ya.b+=E.b}}}G=0;for(H=k.length;G<H;G++){j=k[G];aa.empty();if(j instanceof THREE.RenderableParticle){p=j;p.x*=q;p.y*=u;E=0;for(Q=j.material.length;E<Q;E++)if(A=j.material[E]){x=p;R=j;A=A;var ca=void 0,la=void 0,ta=void 0,ua=void 0,za=void 0,Ja=void 0,Ga=void 0,Ka=void 0,La=void 0;if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=v&&n(A.blending);if(A instanceof THREE.ParticleBasicMaterial){Ga=A.bitmap;Ka=Ga.width/
2;La=Ga.height/2;ta=R.scale.x*q;ua=R.scale.y*u;ca=ta*Ka;la=ua*La;za=A.offset.x*ta;Ja=A.offset.y*ua;aa.set(x.x+za-ca,x.y+Ja-la,x.x+za+ca,x.y+Ja+la);if(wa.instersects(aa)){h.save();h.translate(x.x,x.y);h.rotate(-R.rotation);h.scale(ta,-ua);h.translate(-Ka+A.offset.x,-La-A.offset.y);h.drawImage(Ga,0,0);h.restore()}}else if(A instanceof THREE.ParticleCircleMaterial){if(Da){ba.r=ga.r+xa.r+ya.r;ba.g=ga.g+xa.g+ya.g;ba.b=ga.b+xa.b+ya.b;P.r=A.color.r*ba.r;P.g=A.color.g*ba.g;P.b=A.color.b*ba.b;P.updateStyleString()}else P.__styleString=
A.color.__styleString;ca=R.scale.x*q;la=R.scale.y*u;aa.set(x.x-ca,x.y-la,x.x+ca,x.y+la);if(wa.instersects(aa)){if(F!==P.__styleString)h.fillStyle=F=P.__styleString;h.save();h.translate(x.x,x.y);h.rotate(-R.rotation);h.scale(ca,la);h.beginPath();h.arc(0,0,1,0,Ma,true);h.closePath();h.fill();h.restore()}}}}else if(j instanceof THREE.RenderableLine){p=j.v1;y=j.v2;p.positionScreen.x*=q;p.positionScreen.y*=u;y.positionScreen.x*=q;y.positionScreen.y*=u;aa.addPoint(p.positionScreen.x,p.positionScreen.y);
aa.addPoint(y.positionScreen.x,y.positionScreen.y);if(!wa.instersects(aa))continue;E=0;for(Q=j.material.length;E<Q;)if(A=j.material[E++]){x=p;R=y;A=A;if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=v&&n(A.blending);h.beginPath();h.moveTo(x.positionScreen.x,x.positionScreen.y);h.lineTo(R.positionScreen.x,R.positionScreen.y);h.closePath();if(A instanceof THREE.LineBasicMaterial){P.__styleString=A.color.__styleString;if(U!=A.linewidth)h.lineWidth=U=A.linewidth;if(w!=P.__styleString)h.strokeStyle=
F=R.__styleString;h.fill()}}function m(C,K,G,H,j,E,Q,x,R,A,ca,la,ta){h.beginPath();h.moveTo(K,G);h.lineTo(H,j);h.lineTo(E,Q);h.closePath();H-=K;j-=G;E-=K;Q-=G;A-=x;ca-=R;la-=x;ta-=R;var ua=1/(A*ta-la*ca),za=(ta*H-ca*E)*ua;ca=(ta*j-ca*Q)*ua;H=(A*E-la*H)*ua;j=(A*Q-la*j)*ua;K=K-za*x-H*R;G=G-ca*x-j*R;h.save();h.transform(za,ca,H,j,K,G);h.clip();h.drawImage(C,0,0);h.restore()}function n(C){switch(C){case THREE.NormalBlending:h.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:h.globalCompositeOperation=
"lighter";break;case THREE.SubtractiveBlending:h.globalCompositeOperation="darker"}v=C}function r(C,K,G,H){ja[0]=C[0];ja[1]=C[1];ja[2]=C[2];ja[4]=K[0];ja[5]=K[1];ja[6]=K[2];ja[8]=G[0];ja[9]=G[1];ja[10]=G[2];ja[12]=H[0];ja[13]=H[1];ja[14]=H[2];Aa.putImageData(Ia,0,0);Fa.drawImage(Ba,0,0);return Ca}function e(C){return C<0?Math.min((1+C)*0.5,0.5):0.5+Math.min(C*0.5,0.5)}function g(C,K){var G=K.x-C.x,H=K.y-C.y,j=1/Math.sqrt(G*G+H*H);G*=j;H*=j;K.x+=G;K.y+=H;C.x-=G;C.y-=H}var k=null,i=new THREE.Projector,
l=document.createElement("canvas"),o,s,q,u,h=l.getContext("2d"),I=1,v=0,w=null,F=null,U=1,p,y,t,O,J=new THREE.Vertex,L=new THREE.Vertex,S,V,Y,D,W,M,Z,B,z,X,na,N,T,ha,ma,Ea,qa,ra,sa,fa,oa,pa,wa=new THREE.Rectangle,va=new THREE.Rectangle,aa=new THREE.Rectangle,Da=false,P=new THREE.Color(4294967295),ba=new THREE.Color(4294967295),ga=new THREE.Color(4278190080),xa=new THREE.Color(4278190080),ya=new THREE.Color(4278190080),Ma=Math.PI*2,Ha=new THREE.Vector3,da=new THREE.UV,$=new THREE.UV,ea=new THREE.UV,
ia=new THREE.UV,Ba,Aa,Ia,ja,Ca,Fa,ka=16;Ba=document.createElement("canvas");Ba.width=Ba.height=2;Aa=Ba.getContext("2d");Aa.fillStyle="rgba(0,0,0,1)";Aa.fillRect(0,0,2,2);Ia=Aa.getImageData(0,0,2,2);ja=Ia.data;Ca=document.createElement("canvas");Ca.width=Ca.height=ka;Fa=Ca.getContext("2d");Fa.translate(-ka/2,-ka/2);Fa.scale(ka,ka);ka--;this.domElement=l;this.autoClear=true;this.setSize=function(C,K){o=C;s=K;q=o/2;u=s/2;l.width=o;l.height=s;h.lineJoin="round";h.lineCap="round";wa.set(-q,-u,q,u)};this.clear=
function(){if(!va.isEmpty()){va.inflate(1);va.minSelf(wa);h.setTransform(1,0,0,-1,q,u);h.clearRect(va.getX(),va.getY(),va.getWidth(),va.getHeight());va.empty()}};this.render=function(C,K){var G,H,j,E,Q,x,R,A;this.autoClear&&this.clear();k=i.projectScene(C,K);h.setTransform(1,0,0,-1,q,u);if(Da=C.lights.length>0){Q=C.lights;ga.setRGBA(0,0,0,1);xa.setRGBA(0,0,0,1);ya.setRGBA(0,0,0,1);G=0;for(H=Q.length;G<H;G++){j=Q[G];E=j.color;if(j instanceof THREE.AmbientLight){ga.r+=E.r;ga.g+=E.g;ga.b+=E.b}else if(j instanceof
THREE.DirectionalLight){xa.r+=E.r;xa.g+=E.g;xa.b+=E.b}else if(j instanceof THREE.PointLight){ya.r+=E.r;ya.g+=E.g;ya.b+=E.b}}}G=0;for(H=k.length;G<H;G++){j=k[G];aa.empty();if(j instanceof THREE.RenderableParticle){p=j;p.x*=q;p.y*=u;E=0;for(Q=j.material.length;E<Q;E++)if(A=j.material[E]){x=p;R=j;A=A;var ca=void 0,la=void 0,ta=void 0,ua=void 0,za=void 0,Ja=void 0,Ga=void 0,Ka=void 0,La=void 0;if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=v&&n(A.blending);if(A instanceof THREE.ParticleBasicMaterial){Ga=
A.bitmap;Ka=Ga.width/2;La=Ga.height/2;ta=R.scale.x*q;ua=R.scale.y*u;ca=ta*Ka;la=ua*La;za=A.offset.x*ta;Ja=A.offset.y*ua;aa.set(x.x+za-ca,x.y+Ja-la,x.x+za+ca,x.y+Ja+la);if(wa.instersects(aa)){h.save();h.translate(x.x,x.y);h.rotate(-R.rotation);h.scale(ta,-ua);h.translate(-Ka+A.offset.x,-La-A.offset.y);h.drawImage(Ga,0,0);h.restore()}}else if(A instanceof THREE.ParticleCircleMaterial){if(Da){ba.r=ga.r+xa.r+ya.r;ba.g=ga.g+xa.g+ya.g;ba.b=ga.b+xa.b+ya.b;P.r=A.color.r*ba.r;P.g=A.color.g*ba.g;P.b=A.color.b*
ba.b;P.updateStyleString()}else P.__styleString=A.color.__styleString;ca=R.scale.x*q;la=R.scale.y*u;aa.set(x.x-ca,x.y-la,x.x+ca,x.y+la);if(wa.instersects(aa)){if(F!==P.__styleString)h.fillStyle=F=P.__styleString;h.save();h.translate(x.x,x.y);h.rotate(-R.rotation);h.scale(ca,la);h.beginPath();h.arc(0,0,1,0,Ma,true);h.closePath();h.fill();h.restore()}}}}else if(j instanceof THREE.RenderableLine){p=j.v1;y=j.v2;p.positionScreen.x*=q;p.positionScreen.y*=u;y.positionScreen.x*=q;y.positionScreen.y*=u;aa.addPoint(p.positionScreen.x,
p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);if(!wa.instersects(aa))continue;E=0;for(Q=j.material.length;E<Q;)if(A=j.material[E++]){x=p;R=y;A=A;if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=v&&n(A.blending);h.beginPath();h.moveTo(x.positionScreen.x,x.positionScreen.y);h.lineTo(R.positionScreen.x,R.positionScreen.y);h.closePath();if(A instanceof THREE.LineBasicMaterial){P.__styleString=A.color.__styleString;if(U!=A.linewidth)h.lineWidth=U=A.linewidth;if(w!=P.__styleString)h.strokeStyle=
w=P.__styleString;h.stroke();aa.inflate(A.linewidth*2)}}}else if(j instanceof THREE.RenderableFace3){p=j.v1;y=j.v2;t=j.v3;p.positionScreen.x*=q;p.positionScreen.y*=u;y.positionScreen.x*=q;y.positionScreen.y*=u;t.positionScreen.x*=q;t.positionScreen.y*=u;if(j.overdraw){g(p.positionScreen,y.positionScreen);g(y.positionScreen,t.positionScreen);g(t.positionScreen,p.positionScreen)}aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);aa.addPoint(t.positionScreen.x,
t.positionScreen.y);if(!wa.instersects(aa))continue;E=0;for(Q=j.meshMaterial.length;E<Q;){A=j.meshMaterial[E++];if(A instanceof THREE.MeshFaceMaterial){x=0;for(R=j.faceMaterial.length;x<R;)(A=j.faceMaterial[x++])&&b(p,y,t,j,A,C)}else A&&b(p,y,t,j,A,C)}}else if(j instanceof THREE.RenderableFace4){p=j.v1;y=j.v2;t=j.v3;O=j.v4;p.positionScreen.x*=q;p.positionScreen.y*=u;y.positionScreen.x*=q;y.positionScreen.y*=u;t.positionScreen.x*=q;t.positionScreen.y*=u;O.positionScreen.x*=q;O.positionScreen.y*=u;
J.positionScreen.copy(y.positionScreen);L.positionScreen.copy(O.positionScreen);if(j.overdraw){g(p.positionScreen,y.positionScreen);g(y.positionScreen,O.positionScreen);g(O.positionScreen,p.positionScreen)}if(j.overdraw){g(t.positionScreen,J.positionScreen);g(t.positionScreen,L.positionScreen)}aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);aa.addPoint(t.positionScreen.x,t.positionScreen.y);aa.addPoint(O.positionScreen.x,O.positionScreen.y);if(!wa.instersects(aa))continue;
......
......@@ -87,20 +87,20 @@ pa=E.positionScreen.x;N=E.positionScreen.y;if(u.opacity!=I)h.globalAlpha=I=u.opa
else if(u instanceof THREE.MeshLambertMaterial){if(Da){ba.r=ga.r;ba.g=ga.g;ba.b=ga.b;a(R,Q,ba);P.r=u.color.r*ba.r;P.g=u.color.g*ba.g;P.b=u.color.b*ba.b;P.updateStyleString()}else P.__styleString=u.color.__styleString;d(S,V,Y,D,W,M,Z,B,P,u.wireframe,u.wireframe_linewidth)}else if(u instanceof THREE.MeshDepthMaterial){sa=u.__2near;ta=u.__farPlusNear;ua=u.__farMinusNear;T=~~((1-sa/(ta-C.positionScreen.z*ua))*255);ha=~~((1-sa/(ta-K.positionScreen.z*ua))*255);na=~~((1-sa/(ta-G.positionScreen.z*ua))*255);
Ea=~~((1-sa/(ta-H.positionScreen.z*ua))*255);fa=r([T,T,T],[ha,ha,ha],[Ea,Ea,Ea],[na,na,na]);da.u=0;da.v=0;$.u=la;$.v=0;ea.u=la;ea.v=la;ia.u=0;ia.v=la;m(fa,S,V,Y,D,Z,B,da.u,da.v,$.u,$.v,ia.u,ia.v);m(fa,z,X,W,M,pa,N,$.u,$.v,ea.u,ea.v,ia.u,ia.v)}else if(u instanceof THREE.MeshNormalMaterial){P.r=e(Q.normalWorld.x);P.g=e(Q.normalWorld.y);P.b=e(Q.normalWorld.z);P.updateStyleString();d(S,V,Y,D,W,M,Z,B,P,u.wireframe,u.wireframe_linewidth)}}function c(C,K,G,H,j,E,Q,u,R){h.beginPath();h.moveTo(C,K);h.lineTo(G,
H);h.lineTo(j,E);h.lineTo(C,K);h.closePath();if(u){if(U!=R)h.lineWidth=U=R;if(x!=Q.__styleString)h.strokeStyle=x=Q.__styleString;h.stroke();aa.inflate(R*2)}else{if(F!=Q.__styleString)h.fillStyle=F=Q.__styleString;h.fill()}}function d(C,K,G,H,j,E,Q,u,R,A,ca){h.beginPath();h.moveTo(C,K);h.lineTo(G,H);h.lineTo(j,E);h.lineTo(Q,u);h.lineTo(C,K);h.closePath();if(A){if(U!=ca)h.lineWidth=U=ca;if(x!=R.__styleString)h.strokeStyle=x=R.__styleString;h.stroke();aa.inflate(ca*2)}else{if(F!=R.__styleString)h.fillStyle=
F=R.__styleString;h.fill()}}function m(C,K,G,H,j,E,Q,u,R,A,ca,ma,va){h.beginPath();h.moveTo(K,G);h.lineTo(H,j);h.lineTo(E,Q);h.closePath();H-=K;j-=G;E-=K;Q-=G;A-=u;ca-=R;ma-=u;va-=R;var wa=1/(A*va-ma*ca),za=(va*H-ca*E)*wa;ca=(va*j-ca*Q)*wa;H=(A*E-ma*H)*wa;j=(A*Q-ma*j)*wa;K=K-za*u-H*R;G=G-ca*u-j*R;h.save();h.transform(za,ca,H,j,K,G);h.clip();h.drawImage(C,0,0);h.restore()}function n(C){switch(C){case 0:h.globalCompositeOperation="source-over";break;case 1:h.globalCompositeOperation="lighter";break;
case 2:h.globalCompositeOperation="darker"}w=C}function r(C,K,G,H){ja[0]=C[0];ja[1]=C[1];ja[2]=C[2];ja[4]=K[0];ja[5]=K[1];ja[6]=K[2];ja[8]=G[0];ja[9]=G[1];ja[10]=G[2];ja[12]=H[0];ja[13]=H[1];ja[14]=H[2];Aa.putImageData(Ia,0,0);Fa.drawImage(Ba,0,0);return Ca}function e(C){return C<0?Math.min((1+C)*0.5,0.5):0.5+Math.min(C*0.5,0.5)}function g(C,K){var G=K.x-C.x,H=K.y-C.y,j=1/Math.sqrt(G*G+H*H);G*=j;H*=j;K.x+=G;K.y+=H;C.x-=G;C.y-=H}var k=null,i=new THREE.Projector,l=document.createElement("canvas"),o,
s,q,v,h=l.getContext("2d"),I=1,w=0,x=null,F=null,U=1,p,y,t,O,J=new THREE.Vertex,L=new THREE.Vertex,S,V,Y,D,W,M,Z,B,z,X,pa,N,T,ha,na,Ea,sa,ta,ua,fa,qa,ra,oa=new THREE.Rectangle,ka=new THREE.Rectangle,aa=new THREE.Rectangle,Da=false,P=new THREE.Color(4294967295),ba=new THREE.Color(4294967295),ga=new THREE.Color(4278190080),xa=new THREE.Color(4278190080),ya=new THREE.Color(4278190080),Ma=Math.PI*2,Ha=new THREE.Vector3,da=new THREE.UV,$=new THREE.UV,ea=new THREE.UV,ia=new THREE.UV,Ba,Aa,Ia,ja,Ca,Fa,la=
16;Ba=document.createElement("canvas");Ba.width=Ba.height=2;Aa=Ba.getContext("2d");Aa.fillStyle="rgba(0,0,0,1)";Aa.fillRect(0,0,2,2);Ia=Aa.getImageData(0,0,2,2);ja=Ia.data;Ca=document.createElement("canvas");Ca.width=Ca.height=la;Fa=Ca.getContext("2d");Fa.translate(-la/2,-la/2);Fa.scale(la,la);la--;this.domElement=l;this.autoClear=true;this.setSize=function(C,K){o=C;s=K;q=o/2;v=s/2;l.width=o;l.height=s;h.lineJoin="round";h.lineCap="round";oa.set(-q,-v,q,v)};this.clear=function(){if(!ka.isEmpty()){ka.inflate(1);
ka.minSelf(oa);h.setTransform(1,0,0,-1,q,v);h.clearRect(ka.getX(),ka.getY(),ka.getWidth(),ka.getHeight());ka.empty()}};this.render=function(C,K){var G,H,j,E,Q,u,R,A;this.autoClear&&this.clear();k=i.projectScene(C,K);h.setTransform(1,0,0,-1,q,v);h.fillStyle="rgba(0, 255, 255, 0.5)";h.fillRect(oa.getX(),oa.getY(),oa.getWidth(),oa.getHeight());if(Da=C.lights.length>0){Q=C.lights;ga.setRGBA(0,0,0,1);xa.setRGBA(0,0,0,1);ya.setRGBA(0,0,0,1);G=0;for(H=Q.length;G<H;G++){j=Q[G];E=j.color;if(j instanceof THREE.AmbientLight){ga.r+=
E.r;ga.g+=E.g;ga.b+=E.b}else if(j instanceof THREE.DirectionalLight){xa.r+=E.r;xa.g+=E.g;xa.b+=E.b}else if(j instanceof THREE.PointLight){ya.r+=E.r;ya.g+=E.g;ya.b+=E.b}}}G=0;for(H=k.length;G<H;G++){j=k[G];aa.empty();if(j instanceof THREE.RenderableParticle){p=j;p.x*=q;p.y*=v;E=0;for(Q=j.material.length;E<Q;E++)if(A=j.material[E]){u=p;R=j;A=A;var ca=void 0,ma=void 0,va=void 0,wa=void 0,za=void 0,Ja=void 0,Ga=void 0,Ka=void 0,La=void 0;if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=w&&n(A.blending);
if(A instanceof THREE.ParticleBasicMaterial){Ga=A.bitmap;Ka=Ga.width/2;La=Ga.height/2;va=R.scale.x*q;wa=R.scale.y*v;ca=va*Ka;ma=wa*La;za=A.offset.x*va;Ja=A.offset.y*wa;aa.set(u.x+za-ca,u.y+Ja-ma,u.x+za+ca,u.y+Ja+ma);if(oa.instersects(aa)){h.save();h.translate(u.x,u.y);h.rotate(-R.rotation);h.scale(va,-wa);h.translate(-Ka+A.offset.x,-La-A.offset.y);h.drawImage(Ga,0,0);h.restore();h.beginPath();h.moveTo(u.x-10,u.y);h.lineTo(u.x+10,u.y);h.moveTo(u.x,u.y-10);h.lineTo(u.x,u.y+10);h.closePath();h.strokeStyle=
"rgb(255,255,0)";h.stroke()}}else if(A instanceof THREE.ParticleCircleMaterial){if(Da){ba.r=ga.r+xa.r+ya.r;ba.g=ga.g+xa.g+ya.g;ba.b=ga.b+xa.b+ya.b;P.r=A.color.r*ba.r;P.g=A.color.g*ba.g;P.b=A.color.b*ba.b;P.updateStyleString()}else P.__styleString=A.color.__styleString;ca=R.scale.x*q;ma=R.scale.y*v;aa.set(u.x-ca,u.y-ma,u.x+ca,u.y+ma);if(oa.instersects(aa)){if(F!==P.__styleString)h.fillStyle=F=P.__styleString;h.save();h.translate(u.x,u.y);h.rotate(-R.rotation);h.scale(ca,ma);h.beginPath();h.arc(0,0,
1,0,Ma,true);h.closePath();h.fill();h.restore()}}}}else if(j instanceof THREE.RenderableLine){p=j.v1;y=j.v2;p.positionScreen.x*=q;p.positionScreen.y*=v;y.positionScreen.x*=q;y.positionScreen.y*=v;aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);if(!oa.instersects(aa))continue;E=0;for(Q=j.material.length;E<Q;)if(A=j.material[E++]){u=p;R=y;A=A;if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=w&&n(A.blending);h.beginPath();h.moveTo(u.positionScreen.x,
u.positionScreen.y);h.lineTo(R.positionScreen.x,R.positionScreen.y);h.closePath();if(A instanceof THREE.LineBasicMaterial){P.__styleString=A.color.__styleString;if(U!=A.linewidth)h.lineWidth=U=A.linewidth;if(x!=P.__styleString)h.strokeStyle=x=P.__styleString;h.stroke();aa.inflate(A.linewidth*2)}}}else if(j instanceof THREE.RenderableFace3){p=j.v1;y=j.v2;t=j.v3;p.positionScreen.x*=q;p.positionScreen.y*=v;y.positionScreen.x*=q;y.positionScreen.y*=v;t.positionScreen.x*=q;t.positionScreen.y*=v;if(j.overdraw){g(p.positionScreen,
y.positionScreen);g(y.positionScreen,t.positionScreen);g(t.positionScreen,p.positionScreen)}aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);aa.addPoint(t.positionScreen.x,t.positionScreen.y);if(!oa.instersects(aa))continue;E=0;for(Q=j.meshMaterial.length;E<Q;){A=j.meshMaterial[E++];if(A instanceof THREE.MeshFaceMaterial){u=0;for(R=j.faceMaterial.length;u<R;)(A=j.faceMaterial[u++])&&b(p,y,t,j,A,C)}else A&&b(p,y,t,j,A,C)}}else if(j instanceof THREE.RenderableFace4){p=
j.v1;y=j.v2;t=j.v3;O=j.v4;p.positionScreen.x*=q;p.positionScreen.y*=v;y.positionScreen.x*=q;y.positionScreen.y*=v;t.positionScreen.x*=q;t.positionScreen.y*=v;O.positionScreen.x*=q;O.positionScreen.y*=v;J.positionScreen.copy(y.positionScreen);L.positionScreen.copy(O.positionScreen);if(j.overdraw){g(p.positionScreen,y.positionScreen);g(y.positionScreen,O.positionScreen);g(O.positionScreen,p.positionScreen)}if(j.overdraw){g(t.positionScreen,J.positionScreen);g(t.positionScreen,L.positionScreen)}aa.addPoint(p.positionScreen.x,
p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);aa.addPoint(t.positionScreen.x,t.positionScreen.y);aa.addPoint(O.positionScreen.x,O.positionScreen.y);if(!oa.instersects(aa))continue;E=0;for(Q=j.meshMaterial.length;E<Q;){A=j.meshMaterial[E++];if(A instanceof THREE.MeshFaceMaterial){u=0;for(R=j.faceMaterial.length;u<R;)(A=j.faceMaterial[u++])&&f(p,y,t,O,J,L,j,A,C)}else A&&f(p,y,t,O,J,L,j,A,C)}}ka.addRectangle(aa)}h.lineWidth=1;h.strokeStyle="rgba( 255, 0, 0, 0.5 )";h.strokeRect(ka.getX(),
ka.getY(),ka.getWidth(),ka.getHeight());h.setTransform(1,0,0,1,0,0)}};
F=R.__styleString;h.fill()}}function m(C,K,G,H,j,E,Q,u,R,A,ca,ma,va){h.beginPath();h.moveTo(K,G);h.lineTo(H,j);h.lineTo(E,Q);h.closePath();H-=K;j-=G;E-=K;Q-=G;A-=u;ca-=R;ma-=u;va-=R;var wa=1/(A*va-ma*ca),za=(va*H-ca*E)*wa;ca=(va*j-ca*Q)*wa;H=(A*E-ma*H)*wa;j=(A*Q-ma*j)*wa;K=K-za*u-H*R;G=G-ca*u-j*R;h.save();h.transform(za,ca,H,j,K,G);h.clip();h.drawImage(C,0,0);h.restore()}function n(C){switch(C){case THREE.NormalBlending:h.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:h.globalCompositeOperation=
"lighter";break;case THREE.SubtractiveBlending:h.globalCompositeOperation="darker"}w=C}function r(C,K,G,H){ja[0]=C[0];ja[1]=C[1];ja[2]=C[2];ja[4]=K[0];ja[5]=K[1];ja[6]=K[2];ja[8]=G[0];ja[9]=G[1];ja[10]=G[2];ja[12]=H[0];ja[13]=H[1];ja[14]=H[2];Aa.putImageData(Ia,0,0);Fa.drawImage(Ba,0,0);return Ca}function e(C){return C<0?Math.min((1+C)*0.5,0.5):0.5+Math.min(C*0.5,0.5)}function g(C,K){var G=K.x-C.x,H=K.y-C.y,j=1/Math.sqrt(G*G+H*H);G*=j;H*=j;K.x+=G;K.y+=H;C.x-=G;C.y-=H}var k=null,i=new THREE.Projector,
l=document.createElement("canvas"),o,s,q,v,h=l.getContext("2d"),I=1,w=0,x=null,F=null,U=1,p,y,t,O,J=new THREE.Vertex,L=new THREE.Vertex,S,V,Y,D,W,M,Z,B,z,X,pa,N,T,ha,na,Ea,sa,ta,ua,fa,qa,ra,oa=new THREE.Rectangle,ka=new THREE.Rectangle,aa=new THREE.Rectangle,Da=false,P=new THREE.Color(4294967295),ba=new THREE.Color(4294967295),ga=new THREE.Color(4278190080),xa=new THREE.Color(4278190080),ya=new THREE.Color(4278190080),Ma=Math.PI*2,Ha=new THREE.Vector3,da=new THREE.UV,$=new THREE.UV,ea=new THREE.UV,
ia=new THREE.UV,Ba,Aa,Ia,ja,Ca,Fa,la=16;Ba=document.createElement("canvas");Ba.width=Ba.height=2;Aa=Ba.getContext("2d");Aa.fillStyle="rgba(0,0,0,1)";Aa.fillRect(0,0,2,2);Ia=Aa.getImageData(0,0,2,2);ja=Ia.data;Ca=document.createElement("canvas");Ca.width=Ca.height=la;Fa=Ca.getContext("2d");Fa.translate(-la/2,-la/2);Fa.scale(la,la);la--;this.domElement=l;this.autoClear=true;this.setSize=function(C,K){o=C;s=K;q=o/2;v=s/2;l.width=o;l.height=s;h.lineJoin="round";h.lineCap="round";oa.set(-q,-v,q,v)};this.clear=
function(){if(!ka.isEmpty()){ka.inflate(1);ka.minSelf(oa);h.setTransform(1,0,0,-1,q,v);h.clearRect(ka.getX(),ka.getY(),ka.getWidth(),ka.getHeight());ka.empty()}};this.render=function(C,K){var G,H,j,E,Q,u,R,A;this.autoClear&&this.clear();k=i.projectScene(C,K);h.setTransform(1,0,0,-1,q,v);h.fillStyle="rgba(0, 255, 255, 0.5)";h.fillRect(oa.getX(),oa.getY(),oa.getWidth(),oa.getHeight());if(Da=C.lights.length>0){Q=C.lights;ga.setRGBA(0,0,0,1);xa.setRGBA(0,0,0,1);ya.setRGBA(0,0,0,1);G=0;for(H=Q.length;G<
H;G++){j=Q[G];E=j.color;if(j instanceof THREE.AmbientLight){ga.r+=E.r;ga.g+=E.g;ga.b+=E.b}else if(j instanceof THREE.DirectionalLight){xa.r+=E.r;xa.g+=E.g;xa.b+=E.b}else if(j instanceof THREE.PointLight){ya.r+=E.r;ya.g+=E.g;ya.b+=E.b}}}G=0;for(H=k.length;G<H;G++){j=k[G];aa.empty();if(j instanceof THREE.RenderableParticle){p=j;p.x*=q;p.y*=v;E=0;for(Q=j.material.length;E<Q;E++)if(A=j.material[E]){u=p;R=j;A=A;var ca=void 0,ma=void 0,va=void 0,wa=void 0,za=void 0,Ja=void 0,Ga=void 0,Ka=void 0,La=void 0;
if(A.opacity!=I)h.globalAlpha=I=A.opacity;A.blending!=w&&n(A.blending);if(A instanceof THREE.ParticleBasicMaterial){Ga=A.bitmap;Ka=Ga.width/2;La=Ga.height/2;va=R.scale.x*q;wa=R.scale.y*v;ca=va*Ka;ma=wa*La;za=A.offset.x*va;Ja=A.offset.y*wa;aa.set(u.x+za-ca,u.y+Ja-ma,u.x+za+ca,u.y+Ja+ma);if(oa.instersects(aa)){h.save();h.translate(u.x,u.y);h.rotate(-R.rotation);h.scale(va,-wa);h.translate(-Ka+A.offset.x,-La-A.offset.y);h.drawImage(Ga,0,0);h.restore();h.beginPath();h.moveTo(u.x-10,u.y);h.lineTo(u.x+
10,u.y);h.moveTo(u.x,u.y-10);h.lineTo(u.x,u.y+10);h.closePath();h.strokeStyle="rgb(255,255,0)";h.stroke()}}else if(A instanceof THREE.ParticleCircleMaterial){if(Da){ba.r=ga.r+xa.r+ya.r;ba.g=ga.g+xa.g+ya.g;ba.b=ga.b+xa.b+ya.b;P.r=A.color.r*ba.r;P.g=A.color.g*ba.g;P.b=A.color.b*ba.b;P.updateStyleString()}else P.__styleString=A.color.__styleString;ca=R.scale.x*q;ma=R.scale.y*v;aa.set(u.x-ca,u.y-ma,u.x+ca,u.y+ma);if(oa.instersects(aa)){if(F!==P.__styleString)h.fillStyle=F=P.__styleString;h.save();h.translate(u.x,
u.y);h.rotate(-R.rotation);h.scale(ca,ma);h.beginPath();h.arc(0,0,1,0,Ma,true);h.closePath();h.fill();h.restore()}}}}else if(j instanceof THREE.RenderableLine){p=j.v1;y=j.v2;p.positionScreen.x*=q;p.positionScreen.y*=v;y.positionScreen.x*=q;y.positionScreen.y*=v;aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);if(!oa.instersects(aa))continue;E=0;for(Q=j.material.length;E<Q;)if(A=j.material[E++]){u=p;R=y;A=A;if(A.opacity!=I)h.globalAlpha=I=A.opacity;
A.blending!=w&&n(A.blending);h.beginPath();h.moveTo(u.positionScreen.x,u.positionScreen.y);h.lineTo(R.positionScreen.x,R.positionScreen.y);h.closePath();if(A instanceof THREE.LineBasicMaterial){P.__styleString=A.color.__styleString;if(U!=A.linewidth)h.lineWidth=U=A.linewidth;if(x!=P.__styleString)h.strokeStyle=x=P.__styleString;h.stroke();aa.inflate(A.linewidth*2)}}}else if(j instanceof THREE.RenderableFace3){p=j.v1;y=j.v2;t=j.v3;p.positionScreen.x*=q;p.positionScreen.y*=v;y.positionScreen.x*=q;y.positionScreen.y*=
v;t.positionScreen.x*=q;t.positionScreen.y*=v;if(j.overdraw){g(p.positionScreen,y.positionScreen);g(y.positionScreen,t.positionScreen);g(t.positionScreen,p.positionScreen)}aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);aa.addPoint(t.positionScreen.x,t.positionScreen.y);if(!oa.instersects(aa))continue;E=0;for(Q=j.meshMaterial.length;E<Q;){A=j.meshMaterial[E++];if(A instanceof THREE.MeshFaceMaterial){u=0;for(R=j.faceMaterial.length;u<R;)(A=j.faceMaterial[u++])&&
b(p,y,t,j,A,C)}else A&&b(p,y,t,j,A,C)}}else if(j instanceof THREE.RenderableFace4){p=j.v1;y=j.v2;t=j.v3;O=j.v4;p.positionScreen.x*=q;p.positionScreen.y*=v;y.positionScreen.x*=q;y.positionScreen.y*=v;t.positionScreen.x*=q;t.positionScreen.y*=v;O.positionScreen.x*=q;O.positionScreen.y*=v;J.positionScreen.copy(y.positionScreen);L.positionScreen.copy(O.positionScreen);if(j.overdraw){g(p.positionScreen,y.positionScreen);g(y.positionScreen,O.positionScreen);g(O.positionScreen,p.positionScreen)}if(j.overdraw){g(t.positionScreen,
J.positionScreen);g(t.positionScreen,L.positionScreen)}aa.addPoint(p.positionScreen.x,p.positionScreen.y);aa.addPoint(y.positionScreen.x,y.positionScreen.y);aa.addPoint(t.positionScreen.x,t.positionScreen.y);aa.addPoint(O.positionScreen.x,O.positionScreen.y);if(!oa.instersects(aa))continue;E=0;for(Q=j.meshMaterial.length;E<Q;){A=j.meshMaterial[E++];if(A instanceof THREE.MeshFaceMaterial){u=0;for(R=j.faceMaterial.length;u<R;)(A=j.faceMaterial[u++])&&f(p,y,t,O,J,L,j,A,C)}else A&&f(p,y,t,O,J,L,j,A,C)}}ka.addRectangle(aa)}h.lineWidth=
1;h.strokeStyle="rgba( 255, 0, 0, 0.5 )";h.strokeRect(ka.getX(),ka.getY(),ka.getWidth(),ka.getHeight());h.setTransform(1,0,0,1,0,0)}};
THREE.SVGRenderer=function(){function a(D,W,M){var Z,B,z,X;Z=0;for(B=D.lights.length;Z<B;Z++){z=D.lights[Z];if(z instanceof THREE.DirectionalLight){X=W.normalWorld.dot(z.position)*z.intensity;if(X>0){M.r+=z.color.r*X;M.g+=z.color.g*X;M.b+=z.color.b*X}}else if(z instanceof THREE.PointLight){t.sub(z.position,W.centroidWorld);t.normalize();X=W.normalWorld.dot(t)*z.intensity;if(X>0){M.r+=z.color.r*X;M.g+=z.color.g*X;M.b+=z.color.b*X}}}}function b(D,W,M,Z,B,z){L=c(S++);L.setAttribute("d","M "+D.positionScreen.x+
" "+D.positionScreen.y+" L "+W.positionScreen.x+" "+W.positionScreen.y+" L "+M.positionScreen.x+","+M.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)w.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(I){x.r=F.r;x.g=F.g;x.b=F.b;a(z,Z,x);w.r=B.color.r*x.r;w.g=B.color.g*x.g;w.b=B.color.b*x.b;w.updateStyleString()}else w.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){y=1-B.__2near/(B.__farPlusNear-Z.z*B.__farMinusNear);
w.setRGBA(y,y,y,1)}else B instanceof THREE.MeshNormalMaterial&&w.setRGBA(d(Z.normalWorld.x),d(Z.normalWorld.y),d(Z.normalWorld.z),1);B.wireframe?L.setAttribute("style","fill: none; stroke: "+w.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: round; stroke-linejoin: round"):L.setAttribute("style","fill: "+w.__styleString+"; fill-opacity: "+B.opacity);r.appendChild(L)}function f(D,W,M,Z,B,z,X){L=c(S++);L.setAttribute("d","M "+D.positionScreen.x+
......
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>three.js - geometry - materials</title>
<meta charset="utf-8">
<style type="text/css">
body {
font-family: Monospace;
background-color: #202020;
margin: 0px;
overflow: hidden;
}
</style>
</head>
<body>
<script type="text/javascript" src="../build/Three.js"></script>
<script type="text/javascript" src="../src/extras/primitives/Sphere.js"></script>
<script type="text/javascript" src="../src/extras/primitives/Plane.js"></script>
<script type="text/javascript" src="js/Stats.js"></script>
<script type="text/javascript">
var container, stats;
var camera, scene, renderer, objects;
var particleLight, pointLight;
init();
setInterval( loop, 1000 / 60 );
function init() {
container = document.createElement('div');
document.body.appendChild(container);
camera = new THREE.Camera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
camera.position.y = 200;
camera.position.z = 800;
scene = new THREE.Scene();
// Grid
var geometry = new THREE.Geometry();
geometry.vertices.push( new THREE.Vertex( new THREE.Vector3( - 500, 0, 0 ) ) );
geometry.vertices.push( new THREE.Vertex( new THREE.Vector3( 500, 0, 0 ) ) );
for ( var i = 0; i <= 10; i ++ ) {
var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0xffffff, opacity: 0.2 } ) );
line.position.y = - 120;
line.position.z = ( i * 100 ) - 500;
scene.addObject( line );
var line = new THREE.Line( geometry, new THREE.LineBasicMaterial( { color: 0xffffff, opacity: 0.2 } ) );
line.position.x = ( i * 100 ) - 500;
line.position.y = - 120;
line.rotation.y = 90 * Math.PI / 180;
scene.addObject( line );
}
// Spheres
var geometry = new Sphere( 100, 16, 8 );
var materials = [];
materials.push( new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, blending: THREE.AdditiveBlending } ) );
materials.push( new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff, wireframe: true } ) );
materials.push( new THREE.MeshLambertMaterial( { color: 0xffffff } ) );
materials.push( new THREE.MeshDepthMaterial( { near: 1, far: 2000 } ) );
materials.push( new THREE.MeshNormalMaterial( ) );
materials.push( new THREE.MeshBasicMaterial( { map: new THREE.Texture( generateTexture() ) } ) );
objects = [];
for ( var i = 0, l = materials.length; i < l; i ++ ) {
var sphere = new THREE.Mesh( geometry, materials[ i ] );
sphere.overdraw = true;
sphere.position.x = ( i % 5 ) * 200 - 400;
sphere.position.z = Math.floor( i / 5 ) * 200 - 200;
sphere.rotation.x = Math.random() * 200 - 100;
sphere.rotation.y = Math.random() * 200 - 100;
sphere.rotation.z = Math.random() * 200 - 100;
objects.push( sphere );
scene.addObject( sphere );
}
particleLight = new THREE.Particle( new THREE.ParticleCircleMaterial( { color: 0xff0000 } ) );
particleLight.scale.x = particleLight.scale.y = particleLight.scale.z = 5;
scene.addObject( particleLight );
// Lights
scene.addLight( new THREE.AmbientLight( Math.random() * 0x202020 ) );
var directionalLight = new THREE.DirectionalLight( Math.random() * 0xffffff );
directionalLight.position.x = Math.random() - 0.5;
directionalLight.position.y = Math.random() - 0.5;
directionalLight.position.z = Math.random() - 0.5;
directionalLight.position.normalize();
scene.addLight( directionalLight );
pointLight = new THREE.PointLight( 0xff0000, 1 );
scene.addLight( pointLight );
renderer = new THREE.CanvasRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
var debugCanvas = document.createElement( 'canvas' );
debugCanvas.width = 512;
debugCanvas.height = 512;
debugCanvas.style.position = 'absolute';
debugCanvas.style.top = '0px';
debugCanvas.style.left = '0px';
container.appendChild( debugCanvas );
debugContext = debugCanvas.getContext( '2d' );
debugContext.setTransform( 1, 0, 0, 1, 256, 256 );
debugContext.strokeStyle = '#000000';
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.top = '0px';
container.appendChild(stats.domElement);
}
function generateTexture() {
var canvas = document.createElement( 'canvas' );
canvas.width = 256;
canvas.height = 256;
var context = canvas.getContext( '2d' );
var image = context.getImageData( 0, 0, 256, 256 );
var x = 0, y = 0;
for ( var i = 0, j = 0, l = image.data.length; i < l; i += 4, j ++ ) {
x = j % 256;
y = x == 0 ? y + 1 : y;
image.data[ i + 2 ] = Math.floor( x ^ y );
image.data[ i + 3 ] = 255;
}
context.putImageData( image, 0, 0 );
return canvas;
}
//
function loop() {
var timer = new Date().getTime() * 0.0001;
camera.position.x = Math.cos( timer ) * 1000;
camera.position.z = Math.sin( timer ) * 1000;
for ( var i = 0, l = objects.length; i < l; i++ ) {
var object = objects[ i ];
object.rotation.x += 0.01;
object.rotation.y += 0.005;
}
particleLight.position.x = Math.sin( timer * 7 ) * 300;
particleLight.position.y = Math.cos( timer * 5 ) * 400;
particleLight.position.z = Math.cos( timer * 3 ) * 300;
pointLight.position.x = particleLight.position.x;
pointLight.position.y = particleLight.position.y;
pointLight.position.z = particleLight.position.z;
renderer.render( scene, camera );
stats.update();
}
</script>
</body>
</html>
......@@ -17,7 +17,7 @@ THREE.ParticleCircleMaterial = function ( parameters ) {
if ( parameters ) {
if ( parameters.color !== undefined ) this.color.setHex( parameters.color );
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
}
......
......@@ -873,16 +873,24 @@ THREE.CanvasRenderer = function () {
function setBlending( blending ) {
switch( blending ) {
switch ( blending ) {
case THREE.NormalBlending:
_context.globalCompositeOperation = 'source-over';
case 0: // THREE.NormalBlending
_context.globalCompositeOperation = "source-over";
break;
case 1: // THREE.AdditiveBlending
_context.globalCompositeOperation = "lighter";
case THREE.AdditiveBlending:
_context.globalCompositeOperation = 'lighter';
break;
case 2: // THREE.SubtractiveBlending
_context.globalCompositeOperation = "darker";
case THREE.SubtractiveBlending:
_context.globalCompositeOperation = 'darker';
break;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册