提交 830bf1e2 编写于 作者: A alteredq

Merge remote-tracking branch 'remotes/mrdoob/master' into dev

......@@ -153,12 +153,12 @@ THREE.DOMRenderer=function(){THREE.Renderer.call(this);var b=null,c=new THREE.Pr
THREE.CanvasRenderer=function(b){function c(b){if(y!=b)x.globalAlpha=y=b}function e(b){if(F!=b){switch(b){case THREE.NormalBlending:x.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:x.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:x.globalCompositeOperation="darker"}F=b}}function f(b){if(w!=b.hex)w=b.hex,x.strokeStyle="#"+k(w.toString(16))}function g(b){if(H!=b.hex)H=b.hex,x.fillStyle="#"+k(H.toString(16))}function k(b){for(;b.length<6;)b="0"+b;return b}
var h=this,m=null,n=new THREE.Projector,b=b||{},p=b.canvas!==void 0?b.canvas:document.createElement("canvas"),o,t,u,v,x=p.getContext("2d"),B=new THREE.Color(0),A=0,y=1,F=0,w=null,H=null,E=null,D=null,S=null,J,G,U,W,M=new THREE.RenderableVertex,X=new THREE.RenderableVertex,T,R,j,fa,P,da,ca,Y,ea,ga,la,pa,N=new THREE.Color(0),ia=new THREE.Color(0),Z=new THREE.Color(0),ma=new THREE.Color(0),$=new THREE.Color(0),I,V,oa,ha,na,wa,Aa,va,ya,Ma,sa=new THREE.Rectangle,ra=new THREE.Rectangle,qa=new THREE.Rectangle,
Ba=!1,aa=new THREE.Color,L=new THREE.Color,ua=new THREE.Color,Q=new THREE.Color,ka=new THREE.Vector3,ja,Pa,Va,xa,Qa,Ra,b=16;ja=document.createElement("canvas");ja.width=ja.height=2;Pa=ja.getContext("2d");Pa.fillStyle="rgba(0,0,0,1)";Pa.fillRect(0,0,2,2);Va=Pa.getImageData(0,0,2,2);xa=Va.data;Qa=document.createElement("canvas");Qa.width=Qa.height=b;Ra=Qa.getContext("2d");Ra.translate(-b/2,-b/2);Ra.scale(b,b);b--;this.domElement=p;this.sortElements=this.sortObjects=this.autoClear=!0;this.data={vertices:0,
faces:0};this.setSize=function(b,e){o=b;t=e;u=o/2;v=t/2;p.width=o;p.height=t;sa.set(-u,-v,u,v);ra.set(-u,-v,u,v);y=1;F=0;S=D=E=H=w=null};this.setClearColor=function(b,e){B=b;A=e};this.setClearColorHex=function(b,e){B.setHex(b);A=e};this.clear=function(){x.setTransform(1,0,0,-1,u,v);if(!ra.isEmpty())ra.inflate(1),ra.minSelf(sa),B.hex==0&&A==0?x.clearRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight()):(e(THREE.NormalBlending),c(1),x.fillStyle="rgba("+Math.floor(B.r*255)+","+Math.floor(B.g*255)+","+
Math.floor(B.b*255)+","+A+")",x.fillRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight())),ra.empty()};this.render=function(b,k){function p(b){var e,c,f,g=b.lights;L.setRGB(0,0,0);ua.setRGB(0,0,0);Q.setRGB(0,0,0);b=0;for(e=g.length;b<e;b++)c=g[b],f=c.color,c instanceof THREE.AmbientLight?(L.r+=f.r,L.g+=f.g,L.b+=f.b):c instanceof THREE.DirectionalLight?(ua.r+=f.r,ua.g+=f.g,ua.b+=f.b):c instanceof THREE.PointLight&&(Q.r+=f.r,Q.g+=f.g,Q.b+=f.b)}function o(b,e,c,f){var g,j,h,k,m=b.lights,b=0;for(g=m.length;b<
g;b++)j=m[b],h=j.color,j instanceof THREE.DirectionalLight?(k=c.dot(j.position),k<=0||(k*=j.intensity,f.r+=h.r*k,f.g+=h.g*k,f.b+=h.b*k)):j instanceof THREE.PointLight&&(k=c.dot(ka.sub(j.position,e).normalize()),k<=0||(k*=j.distance==0?1:1-Math.min(e.distanceTo(j.position)/j.distance,1),k!=0&&(k*=j.intensity,f.r+=h.r*k,f.g+=h.g*k,f.b+=h.b*k)))}function t(b,j,h){c(h.opacity);e(h.blending);var k,m,p,n,o,ja;if(h instanceof THREE.ParticleBasicMaterial){if(h.map)n=h.map.image,o=n.width>>1,ja=n.height>>
1,h=j.scale.x*u,p=j.scale.y*v,k=h*o,m=p*ja,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(x.save(),x.translate(b.x,b.y),x.rotate(-j.rotation),x.scale(h,-p),x.translate(-o,-ja),x.drawImage(n,0,0),x.restore())}else h instanceof THREE.ParticleCanvasMaterial&&(k=j.scale.x*u,m=j.scale.y*v,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(f(h.color),g(h.color),x.save(),x.translate(b.x,b.y),x.rotate(-j.rotation),x.scale(k,m),h.program(x),x.restore()))}function y(b,g,j,h){c(h.opacity);e(h.blending);
x.beginPath();x.moveTo(b.positionScreen.x,b.positionScreen.y);x.lineTo(g.positionScreen.x,g.positionScreen.y);x.closePath();if(h instanceof THREE.LineBasicMaterial){b=h.linewidth;if(E!=b)x.lineWidth=E=b;b=h.linecap;if(D!=b)x.lineCap=D=b;b=h.linejoin;if(S!=b)x.lineJoin=S=b;f(h.color);x.stroke();qa.inflate(h.linewidth*2)}}function A(b,f,g,m,p,n,ja,t,u){h.data.vertices+=3;h.data.faces++;c(t.opacity);e(t.blending);T=b.positionScreen.x;R=b.positionScreen.y;j=f.positionScreen.x;fa=f.positionScreen.y;P=
g.positionScreen.x;da=g.positionScreen.y;B(T,R,j,fa,P,da);if(t instanceof THREE.MeshBasicMaterial)if(t.map)t.map.mapping instanceof THREE.UVMapping&&(ha=ja.uvs[0],Ca(T,R,j,fa,P,da,t.map.image,ha[m].u,ha[m].v,ha[p].u,ha[p].v,ha[n].u,ha[n].v));else if(t.envMap){if(t.envMap.mapping instanceof THREE.SphericalReflectionMapping)b=k.matrixWorldInverse,ka.copy(ja.vertexNormalsWorld[0]),na=(ka.x*b.n11+ka.y*b.n12+ka.z*b.n13)*0.5+0.5,wa=-(ka.x*b.n21+ka.y*b.n22+ka.z*b.n23)*0.5+0.5,ka.copy(ja.vertexNormalsWorld[1]),
faces:0};this.setSize=function(b,e){o=b;t=e;u=o/2;v=t/2;p.width=o;p.height=t;sa.set(-u,-v,u,v);ra.set(-u,-v,u,v);y=1;F=0;S=D=E=H=w=null};this.setClearColor=function(b,e){B=b;A=e;ra.set(-u,-v,u,v)};this.setClearColorHex=function(b,e){B.setHex(b);A=e;ra.set(-u,-v,u,v)};this.clear=function(){x.setTransform(1,0,0,-1,u,v);if(!ra.isEmpty())ra.inflate(1),ra.minSelf(sa),B.hex==0&&A==0?x.clearRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight()):(e(THREE.NormalBlending),c(1),x.fillStyle="rgba("+Math.floor(B.r*
255)+","+Math.floor(B.g*255)+","+Math.floor(B.b*255)+","+A+")",x.fillRect(ra.getX(),ra.getY(),ra.getWidth(),ra.getHeight())),ra.empty()};this.render=function(b,k){function p(b){var e,c,f,g=b.lights;L.setRGB(0,0,0);ua.setRGB(0,0,0);Q.setRGB(0,0,0);b=0;for(e=g.length;b<e;b++)c=g[b],f=c.color,c instanceof THREE.AmbientLight?(L.r+=f.r,L.g+=f.g,L.b+=f.b):c instanceof THREE.DirectionalLight?(ua.r+=f.r,ua.g+=f.g,ua.b+=f.b):c instanceof THREE.PointLight&&(Q.r+=f.r,Q.g+=f.g,Q.b+=f.b)}function o(b,e,c,f){var g,
j,h,k,m=b.lights,b=0;for(g=m.length;b<g;b++)j=m[b],h=j.color,j instanceof THREE.DirectionalLight?(k=c.dot(j.position),k<=0||(k*=j.intensity,f.r+=h.r*k,f.g+=h.g*k,f.b+=h.b*k)):j instanceof THREE.PointLight&&(k=c.dot(ka.sub(j.position,e).normalize()),k<=0||(k*=j.distance==0?1:1-Math.min(e.distanceTo(j.position)/j.distance,1),k!=0&&(k*=j.intensity,f.r+=h.r*k,f.g+=h.g*k,f.b+=h.b*k)))}function t(b,j,h){c(h.opacity);e(h.blending);var k,m,p,n,o,ja;if(h instanceof THREE.ParticleBasicMaterial){if(h.map)n=
h.map.image,o=n.width>>1,ja=n.height>>1,h=j.scale.x*u,p=j.scale.y*v,k=h*o,m=p*ja,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(x.save(),x.translate(b.x,b.y),x.rotate(-j.rotation),x.scale(h,-p),x.translate(-o,-ja),x.drawImage(n,0,0),x.restore())}else h instanceof THREE.ParticleCanvasMaterial&&(k=j.scale.x*u,m=j.scale.y*v,qa.set(b.x-k,b.y-m,b.x+k,b.y+m),sa.instersects(qa)&&(f(h.color),g(h.color),x.save(),x.translate(b.x,b.y),x.rotate(-j.rotation),x.scale(k,m),h.program(x),x.restore()))}function y(b,
g,j,h){c(h.opacity);e(h.blending);x.beginPath();x.moveTo(b.positionScreen.x,b.positionScreen.y);x.lineTo(g.positionScreen.x,g.positionScreen.y);x.closePath();if(h instanceof THREE.LineBasicMaterial){b=h.linewidth;if(E!=b)x.lineWidth=E=b;b=h.linecap;if(D!=b)x.lineCap=D=b;b=h.linejoin;if(S!=b)x.lineJoin=S=b;f(h.color);x.stroke();qa.inflate(h.linewidth*2)}}function A(b,f,g,m,p,n,ja,t,u){h.data.vertices+=3;h.data.faces++;c(t.opacity);e(t.blending);T=b.positionScreen.x;R=b.positionScreen.y;j=f.positionScreen.x;
fa=f.positionScreen.y;P=g.positionScreen.x;da=g.positionScreen.y;B(T,R,j,fa,P,da);if(t instanceof THREE.MeshBasicMaterial)if(t.map)t.map.mapping instanceof THREE.UVMapping&&(ha=ja.uvs[0],Ca(T,R,j,fa,P,da,t.map.image,ha[m].u,ha[m].v,ha[p].u,ha[p].v,ha[n].u,ha[n].v));else if(t.envMap){if(t.envMap.mapping instanceof THREE.SphericalReflectionMapping)b=k.matrixWorldInverse,ka.copy(ja.vertexNormalsWorld[0]),na=(ka.x*b.n11+ka.y*b.n12+ka.z*b.n13)*0.5+0.5,wa=-(ka.x*b.n21+ka.y*b.n22+ka.z*b.n23)*0.5+0.5,ka.copy(ja.vertexNormalsWorld[1]),
Aa=(ka.x*b.n11+ka.y*b.n12+ka.z*b.n13)*0.5+0.5,va=-(ka.x*b.n21+ka.y*b.n22+ka.z*b.n23)*0.5+0.5,ka.copy(ja.vertexNormalsWorld[2]),ya=(ka.x*b.n11+ka.y*b.n12+ka.z*b.n13)*0.5+0.5,Ma=-(ka.x*b.n21+ka.y*b.n22+ka.z*b.n23)*0.5+0.5,Ca(T,R,j,fa,P,da,t.envMap.image,na,wa,Aa,va,ya,Ma)}else t.wireframe?H(t.color,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(t.color);else if(t instanceof THREE.MeshLambertMaterial)t.map&&!t.wireframe&&(t.map.mapping instanceof THREE.UVMapping&&(ha=ja.uvs[0],Ca(T,
R,j,fa,P,da,t.map.image,ha[m].u,ha[m].v,ha[p].u,ha[p].v,ha[n].u,ha[n].v)),e(THREE.SubtractiveBlending)),Ba?!t.wireframe&&t.shading==THREE.SmoothShading&&ja.vertexNormalsWorld.length==3?(ia.r=Z.r=ma.r=L.r,ia.g=Z.g=ma.g=L.g,ia.b=Z.b=ma.b=L.b,o(u,ja.v1.positionWorld,ja.vertexNormalsWorld[0],ia),o(u,ja.v2.positionWorld,ja.vertexNormalsWorld[1],Z),o(u,ja.v3.positionWorld,ja.vertexNormalsWorld[2],ma),$.r=(Z.r+ma.r)*0.5,$.g=(Z.g+ma.g)*0.5,$.b=(Z.b+ma.b)*0.5,oa=Sa(ia,Z,ma,$),Ca(T,R,j,fa,P,da,oa,0,0,1,0,0,
1)):(aa.r=L.r,aa.g=L.g,aa.b=L.b,o(u,ja.centroidWorld,ja.normalWorld,aa),N.r=Math.max(0,Math.min(t.color.r*aa.r,1)),N.g=Math.max(0,Math.min(t.color.g*aa.g,1)),N.b=Math.max(0,Math.min(t.color.b*aa.b,1)),N.updateHex(),t.wireframe?H(N,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(N)):t.wireframe?H(t.color,t.wireframeLinewidth,t.wireframeLinecap,t.wireframeLinejoin):Ea(t.color);else if(t instanceof THREE.MeshDepthMaterial)I=k.near,V=k.far,ia.r=ia.g=ia.b=1-Ia(b.positionScreen.z,I,V),Z.r=
......
此差异已折叠。
......@@ -120,6 +120,8 @@ THREE.CanvasRenderer = function ( parameters ) {
_clearColor = color;
_clearOpacity = opacity;
_clearRect.set( - _canvasWidthHalf, - _canvasHeightHalf, _canvasWidthHalf, _canvasHeightHalf );
};
this.setClearColorHex = function( hex, opacity ) {
......@@ -127,6 +129,8 @@ THREE.CanvasRenderer = function ( parameters ) {
_clearColor.setHex( hex );
_clearOpacity = opacity;
_clearRect.set( - _canvasWidthHalf, - _canvasHeightHalf, _canvasWidthHalf, _canvasHeightHalf );
};
this.clear = function () {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册