提交 8af4dd49 编写于 作者: M Mr.doob

WebGLRenderer now uses material.transparent to determine whether a material is transparent or not.

Moved materials/RenderTarget.js ⟶ renderer/WebGLRenderTarget.js
上级 1b98dbb0
此差异已折叠。
此差异已折叠。
...@@ -48,7 +48,7 @@ b,c)}};THREE.Quaternion=function(a,b,c,e){this.set(a||0,b||0,c||0,e!==undefined? ...@@ -48,7 +48,7 @@ b,c)}};THREE.Quaternion=function(a,b,c,e){this.set(a||0,b||0,c||0,e!==undefined?
THREE.Quaternion.prototype={set:function(a,b,c,e){this.x=a;this.y=b;this.z=c;this.w=e;return this},setFromEuler:function(a){var b=0.5*Math.PI/360,c=a.x*b,e=a.y*b,d=a.z*b;a=Math.cos(e);e=Math.sin(e);b=Math.cos(-d);d=Math.sin(-d);var g=Math.cos(c);c=Math.sin(c);var f=a*b,i=e*d;this.w=f*g-i*c;this.x=f*c+i*g;this.y=e*b*g+a*d*c;this.z=a*d*g-e*b*c;return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*= THREE.Quaternion.prototype={set:function(a,b,c,e){this.x=a;this.y=b;this.z=c;this.w=e;return this},setFromEuler:function(a){var b=0.5*Math.PI/360,c=a.x*b,e=a.y*b,d=a.z*b;a=Math.cos(e);e=Math.sin(e);b=Math.cos(-d);d=Math.sin(-d);var g=Math.cos(c);c=Math.sin(c);var f=a*b,i=e*d;this.w=f*g-i*c;this.x=f*c+i*g;this.y=e*b*g+a*d*c;this.z=a*d*g-e*b*c;return this},calculateW:function(){this.w=-Math.sqrt(Math.abs(1-this.x*this.x-this.y*this.y-this.z*this.z));return this},inverse:function(){this.x*=-1;this.y*=
-1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);if(a==0)this.w=this.z=this.y=this.x=0;else{a=1/a;this.x*=a;this.y*=a;this.z*=a;this.w*=a}return this},multiplySelf:function(a){var b=this.x,c=this.y,e=this.z,d=this.w,g=a.x,f=a.y,i=a.z;a=a.w;this.x=b*a+d*g+c*i-e*f;this.y=c*a+d*f+e*g-b*i;this.z=e*a+d*i+b*f-c*g;this.w=d*a-b*g-c*f-e*i;return this}, -1;this.z*=-1;return this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},normalize:function(){var a=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w);if(a==0)this.w=this.z=this.y=this.x=0;else{a=1/a;this.x*=a;this.y*=a;this.z*=a;this.w*=a}return this},multiplySelf:function(a){var b=this.x,c=this.y,e=this.z,d=this.w,g=a.x,f=a.y,i=a.z;a=a.w;this.x=b*a+d*g+c*i-e*f;this.y=c*a+d*f+e*g-b*i;this.z=e*a+d*i+b*f-c*g;this.w=d*a-b*g-c*f-e*i;return this},
multiplyVector3:function(a,b){b||(b=a);var c=a.x,e=a.y,d=a.z,g=this.x,f=this.y,i=this.z,h=this.w,j=h*c+f*d-i*e,m=h*e+i*c-g*d,l=h*d+g*e-f*c;c=-g*c-f*e-i*d;b.x=j*h+c*-g+m*-i-l*-f;b.y=m*h+c*-f+l*-g-j*-i;b.z=l*h+c*-i+j*-f-m*-g;return b}}; multiplyVector3:function(a,b){b||(b=a);var c=a.x,e=a.y,d=a.z,g=this.x,f=this.y,i=this.z,h=this.w,j=h*c+f*d-i*e,m=h*e+i*c-g*d,l=h*d+g*e-f*c;c=-g*c-f*e-i*d;b.x=j*h+c*-g+m*-i-l*-f;b.y=m*h+c*-f+l*-g-j*-i;b.z=l*h+c*-i+j*-f-m*-g;return b}};
THREE.Quaternion.slerp=function(a,b,c,e){var d=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(d)>=1){c.w=a.w;c.x=a.x;c.y=a.y;c.z=a.z;return c}var g=Math.acos(d),f=Math.sqrt(1-d*d);if(Math.abs(f)<0.0010){c.w=0.5*(a.w+b.w);c.x=0.5*(a.x+b.x);c.y=0.5*(a.y+b.y);c.z=0.5*(a.z+b.z);return c}d=Math.sin((1-e)*g)/f;e=Math.sin(e*g)/f;c.w=a.w*d+b.w*e;c.x=a.x*d+b.x*e;c.y=a.y*d+b.y*e;c.z=a.z*d+b.z*e;return c};THREE.Vertex=function(a){this.position=a||new THREE.Vector3}; THREE.Quaternion.slerp=function(a,b,c,e){var d=a.w*b.w+a.x*b.x+a.y*b.y+a.z*b.z;if(Math.abs(d)>=1){c.w=a.w;c.x=a.x;c.y=a.y;c.z=a.z;return c}var g=Math.acos(d),f=Math.sqrt(1-d*d);if(Math.abs(f)<0.001){c.w=0.5*(a.w+b.w);c.x=0.5*(a.x+b.x);c.y=0.5*(a.y+b.y);c.z=0.5*(a.z+b.z);return c}d=Math.sin((1-e)*g)/f;e=Math.sin(e*g)/f;c.w=a.w*d+b.w*e;c.x=a.x*d+b.x*e;c.y=a.y*d+b.y*e;c.z=a.z*d+b.z*e;return c};THREE.Vertex=function(a){this.position=a||new THREE.Vector3};
THREE.Face3=function(a,b,c,e,d,g){this.a=a;this.b=b;this.c=c;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=d instanceof THREE.Color?d:new THREE.Color;this.vertexColors=d instanceof Array?d:[];this.vertexTangents=[];this.materials=g instanceof Array?g:[g];this.centroid=new THREE.Vector3}; THREE.Face3=function(a,b,c,e,d,g){this.a=a;this.b=b;this.c=c;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.color=d instanceof THREE.Color?d:new THREE.Color;this.vertexColors=d instanceof Array?d:[];this.vertexTangents=[];this.materials=g instanceof Array?g:[g];this.centroid=new THREE.Vector3};
THREE.Face4=function(a,b,c,e,d,g,f){this.a=a;this.b=b;this.c=c;this.d=e;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=f instanceof Array?f:[f];this.centroid=new THREE.Vector3};THREE.UV=function(a,b){this.set(a||0,b||0)}; THREE.Face4=function(a,b,c,e,d,g,f){this.a=a;this.b=b;this.c=c;this.d=e;this.normal=d instanceof THREE.Vector3?d:new THREE.Vector3;this.vertexNormals=d instanceof Array?d:[];this.color=g instanceof THREE.Color?g:new THREE.Color;this.vertexColors=g instanceof Array?g:[];this.vertexTangents=[];this.materials=f instanceof Array?f:[f];this.centroid=new THREE.Vector3};THREE.UV=function(a,b){this.set(a||0,b||0)};
THREE.UV.prototype={set:function(a,b){this.u=a;this.v=b;return this},copy:function(a){this.set(a.u,a.v);return this}}; THREE.UV.prototype={set:function(a,b){this.u=a;this.v=b;return this},copy:function(a){this.set(a.u,a.v);return this}};
...@@ -72,7 +72,7 @@ THREE.Animation.prototype.getPrevKeyWith=function(a,b,c){var e=this.data.hierarc ...@@ -72,7 +72,7 @@ THREE.Animation.prototype.getPrevKeyWith=function(a,b,c){var e=this.data.hierarc
THREE.Camera=function(a,b,c,e,d){THREE.Object3D.call(this);this.fov=a||50;this.aspect=b||1;this.near=c||0.1;this.far=e||2E3;this.target=d||new THREE.Object3D;this.useTarget=!0;this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=null;this.updateProjectionMatrix()};THREE.Camera.prototype=new THREE.Object3D;THREE.Camera.prototype.constructor=THREE.Camera;THREE.Camera.prototype.supr=THREE.Object3D.prototype; THREE.Camera=function(a,b,c,e,d){THREE.Object3D.call(this);this.fov=a||50;this.aspect=b||1;this.near=c||0.1;this.far=e||2E3;this.target=d||new THREE.Object3D;this.useTarget=!0;this.matrixWorldInverse=new THREE.Matrix4;this.projectionMatrix=null;this.updateProjectionMatrix()};THREE.Camera.prototype=new THREE.Object3D;THREE.Camera.prototype.constructor=THREE.Camera;THREE.Camera.prototype.supr=THREE.Object3D.prototype;
THREE.Camera.prototype.translate=function(a,b){this.matrix.rotateAxis(b);this.position.addSelf(b.multiplyScalar(a));this.target.position.addSelf(b.multiplyScalar(a))};THREE.Camera.prototype.updateProjectionMatrix=function(){this.projectionMatrix=THREE.Matrix4.makePerspective(this.fov,this.aspect,this.near,this.far)};THREE.Camera.prototype.updateMatrix=function(){this.update(undefined,!0)}; THREE.Camera.prototype.translate=function(a,b){this.matrix.rotateAxis(b);this.position.addSelf(b.multiplyScalar(a));this.target.position.addSelf(b.multiplyScalar(a))};THREE.Camera.prototype.updateProjectionMatrix=function(){this.projectionMatrix=THREE.Matrix4.makePerspective(this.fov,this.aspect,this.near,this.far)};THREE.Camera.prototype.updateMatrix=function(){this.update(undefined,!0)};
THREE.Camera.prototype.update=function(a,b,c){if(this.useTarget){this.matrix.lookAt(this.position,this.target.position,this.up);this.matrix.setPosition(this.position);a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix);THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse);b=!0}else{this.matrixAutoUpdate&&(b|=this.updateMatrix());if(b||this.matrixWorldNeedsUpdate){a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix);this.matrixWorldNeedsUpdate= THREE.Camera.prototype.update=function(a,b,c){if(this.useTarget){this.matrix.lookAt(this.position,this.target.position,this.up);this.matrix.setPosition(this.position);a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix);THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse);b=!0}else{this.matrixAutoUpdate&&(b|=this.updateMatrix());if(b||this.matrixWorldNeedsUpdate){a?this.matrixWorld.multiply(a,this.matrix):this.matrixWorld.copy(this.matrix);this.matrixWorldNeedsUpdate=
!1;b=!0;THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse)}}for(a=0;a<this.children.length;a++)this.children[a].update(this.matrixWorld,b,c)};THREE.ParticleDOMMaterial=function(a){this.id=THREE.MaterialCounter.value++;this.domElement=a};THREE.Particle=function(a){THREE.Object3D.call(this);this.materials=a instanceof Array?a:[a];this.matrixAutoUpdate=!1};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle; !1;b=!0;THREE.Matrix4.makeInvert(this.matrixWorld,this.matrixWorldInverse)}}for(a=0;a<this.children.length;a++)this.children[a].update(this.matrixWorld,b,c)};THREE.ParticleDOMMaterial=function(a){THREE.Material.call(this);this.domElement=a};THREE.Particle=function(a){THREE.Object3D.call(this);this.materials=a instanceof Array?a:[a];this.matrixAutoUpdate=!1};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle;
THREE.Bone=function(a){THREE.Object3D.call(this);this.skin=a;this.skinMatrix=new THREE.Matrix4;this.hasNoneBoneChildren=!1};THREE.Bone.prototype=new THREE.Object3D;THREE.Bone.prototype.constructor=THREE.Bone;THREE.Bone.prototype.supr=THREE.Object3D.prototype; THREE.Bone=function(a){THREE.Object3D.call(this);this.skin=a;this.skinMatrix=new THREE.Matrix4;this.hasNoneBoneChildren=!1};THREE.Bone.prototype=new THREE.Object3D;THREE.Bone.prototype.constructor=THREE.Bone;THREE.Bone.prototype.supr=THREE.Object3D.prototype;
THREE.Bone.prototype.update=function(a,b,c){this.matrixAutoUpdate&&(b|=this.updateMatrix());if(b||this.matrixWorldNeedsUpdate){a?this.skinMatrix.multiply(a,this.matrix):this.skinMatrix.copy(this.matrix);this.matrixWorldNeedsUpdate=!1;b=!0}var e,d=this.children.length;if(this.hasNoneBoneChildren){this.matrixWorld.multiply(this.skin.matrixWorld,this.skinMatrix);for(e=0;e<d;e++){a=this.children[e];a instanceof THREE.Bone?a.update(this.skinMatrix,b,c):a.update(this.matrixWorld,!0,c)}}else for(e=0;e<d;e++)this.children[e].update(this.skinMatrix, THREE.Bone.prototype.update=function(a,b,c){this.matrixAutoUpdate&&(b|=this.updateMatrix());if(b||this.matrixWorldNeedsUpdate){a?this.skinMatrix.multiply(a,this.matrix):this.skinMatrix.copy(this.matrix);this.matrixWorldNeedsUpdate=!1;b=!0}var e,d=this.children.length;if(this.hasNoneBoneChildren){this.matrixWorld.multiply(this.skin.matrixWorld,this.skinMatrix);for(e=0;e<d;e++){a=this.children[e];a instanceof THREE.Bone?a.update(this.skinMatrix,b,c):a.update(this.matrixWorld,!0,c)}}else for(e=0;e<d;e++)this.children[e].update(this.skinMatrix,
b,c)};THREE.Bone.prototype.addChild=function(a){if(this.children.indexOf(a)===-1){a.parent!==undefined&&a.parent.removeChild(a);a.parent=this;this.children.push(a);if(!(a instanceof THREE.Bone))this.hasNoneBoneChildren=!0}}; b,c)};THREE.Bone.prototype.addChild=function(a){if(this.children.indexOf(a)===-1){a.parent!==undefined&&a.parent.removeChild(a);a.parent=this;this.children.push(a);if(!(a instanceof THREE.Bone))this.hasNoneBoneChildren=!0}};
......
...@@ -24,7 +24,7 @@ value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.00195 ...@@ -24,7 +24,7 @@ value:0,texture:null},uImageIncrement:{type:"v2",value:new THREE.Vector2(0.00195
film:{uniforms:{tDiffuse:{type:"t",value:0,texture:null},time:{type:"f",value:0},nIntensity:{type:"f",value:0.5},sIntensity:{type:"f",value:0.05},sCount:{type:"f",value:4096},grayscale:{type:"i",value:1}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform float time;\nuniform bool grayscale;\nuniform float nIntensity;\nuniform float sIntensity;\nuniform float sCount;\nvoid main() {\nvec4 cTextureScreen = texture2D( tDiffuse, vUv );\nfloat x = vUv.x * vUv.y * time * 1000.0;\nx = mod( x, 13.0 ) * mod( x, 123.0 );\nfloat dx = mod( x, 0.01 );\nvec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );\nvec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );\ncResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;\ncResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );\nif( grayscale ) {\ncResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );\n}\ngl_FragColor = vec4( cResult, cTextureScreen.a );\n}"}, film:{uniforms:{tDiffuse:{type:"t",value:0,texture:null},time:{type:"f",value:0},nIntensity:{type:"f",value:0.5},sIntensity:{type:"f",value:0.05},sCount:{type:"f",value:4096},grayscale:{type:"i",value:1}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform float time;\nuniform bool grayscale;\nuniform float nIntensity;\nuniform float sIntensity;\nuniform float sCount;\nvoid main() {\nvec4 cTextureScreen = texture2D( tDiffuse, vUv );\nfloat x = vUv.x * vUv.y * time * 1000.0;\nx = mod( x, 13.0 ) * mod( x, 123.0 );\nfloat dx = mod( x, 0.01 );\nvec3 cResult = cTextureScreen.rgb + cTextureScreen.rgb * clamp( 0.1 + dx * 100.0, 0.0, 1.0 );\nvec2 sc = vec2( sin( vUv.y * sCount ), cos( vUv.y * sCount ) );\ncResult += cTextureScreen.rgb * vec3( sc.x, sc.y, sc.x ) * sIntensity;\ncResult = cTextureScreen.rgb + clamp( nIntensity, 0.0,1.0 ) * ( cResult - cTextureScreen.rgb );\nif( grayscale ) {\ncResult = vec3( cResult.r * 0.3 + cResult.g * 0.59 + cResult.b * 0.11 );\n}\ngl_FragColor = vec4( cResult, cTextureScreen.a );\n}"},
screen:{uniforms:{tDiffuse:{type:"t",value:0,texture:null},opacity:{type:"f",value:1}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform float opacity;\nvoid main() {\nvec4 texel = texture2D( tDiffuse, vUv );\ngl_FragColor = opacity * texel;\n}"},basic:{uniforms:{},vertexShader:"void main() {\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}", screen:{uniforms:{tDiffuse:{type:"t",value:0,texture:null},opacity:{type:"f",value:1}},vertexShader:"varying vec2 vUv;\nvoid main() {\nvUv = vec2( uv.x, 1.0 - uv.y );\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",fragmentShader:"varying vec2 vUv;\nuniform sampler2D tDiffuse;\nuniform float opacity;\nvoid main() {\nvec4 texel = texture2D( tDiffuse, vUv );\ngl_FragColor = opacity * texel;\n}"},basic:{uniforms:{},vertexShader:"void main() {\ngl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",
fragmentShader:"void main() {\ngl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );\n}"}},buildKernel:function(a){var e,b,c,d,f=2*Math.ceil(a*3)+1;f>25&&(f=25);d=(f-1)*0.5;b=Array(f);for(e=c=0;e<f;++e){b[e]=Math.exp(-((e-d)*(e-d))/(2*a*a));c+=b[e]}for(e=0;e<f;++e)b[e]/=c;return b}}; fragmentShader:"void main() {\ngl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );\n}"}},buildKernel:function(a){var e,b,c,d,f=2*Math.ceil(a*3)+1;f>25&&(f=25);d=(f-1)*0.5;b=Array(f);for(e=c=0;e<f;++e){b[e]=Math.exp(-((e-d)*(e-d))/(2*a*a));c+=b[e]}for(e=0;e<f;++e)b[e]/=c;return b}};
THREE.QuakeCamera=function(a){function e(b,c){return function(){c.apply(b,arguments)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.movementSpeed=1;this.lookSpeed=0.0050;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.domElement=document;if(a){if(a.movementSpeed!==undefined)this.movementSpeed=a.movementSpeed;if(a.lookSpeed!==undefined)this.lookSpeed=a.lookSpeed;if(a.noFly!==undefined)this.noFly= THREE.QuakeCamera=function(a){function e(b,c){return function(){c.apply(b,arguments)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.movementSpeed=1;this.lookSpeed=0.005;this.noFly=!1;this.lookVertical=!0;this.autoForward=!1;this.activeLook=!0;this.heightSpeed=!1;this.heightCoef=1;this.heightMin=0;this.domElement=document;if(a){if(a.movementSpeed!==undefined)this.movementSpeed=a.movementSpeed;if(a.lookSpeed!==undefined)this.lookSpeed=a.lookSpeed;if(a.noFly!==undefined)this.noFly=
a.noFly;if(a.lookVertical!==undefined)this.lookVertical=a.lookVertical;if(a.autoForward!==undefined)this.autoForward=a.autoForward;if(a.activeLook!==undefined)this.activeLook=a.activeLook;if(a.heightSpeed!==undefined)this.heightSpeed=a.heightSpeed;if(a.heightCoef!==undefined)this.heightCoef=a.heightCoef;if(a.heightMin!==undefined)this.heightMin=a.heightMin;if(a.heightMax!==undefined)this.heightMax=a.heightMax;if(a.domElement!==undefined)this.domElement=a.domElement}this.theta=this.phi=this.lon=this.lat= a.noFly;if(a.lookVertical!==undefined)this.lookVertical=a.lookVertical;if(a.autoForward!==undefined)this.autoForward=a.autoForward;if(a.activeLook!==undefined)this.activeLook=a.activeLook;if(a.heightSpeed!==undefined)this.heightSpeed=a.heightSpeed;if(a.heightCoef!==undefined)this.heightCoef=a.heightCoef;if(a.heightMin!==undefined)this.heightMin=a.heightMin;if(a.heightMax!==undefined)this.heightMax=a.heightMax;if(a.domElement!==undefined)this.domElement=a.domElement}this.theta=this.phi=this.lon=this.lat=
this.mouseY=this.mouseX=this.autoSpeedFactor=0;this.moveForward=!1;this.moveBackward=!1;this.moveLeft=!1;this.moveRight=!1;this.mouseDragOn=!1;this.windowHalfX=window.innerWidth/2;this.windowHalfY=window.innerHeight/2;this.onMouseDown=function(b){b.preventDefault();b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward=!0;break;case 2:this.moveBackward=!0}this.mouseDragOn=!0};this.onMouseUp=function(b){b.preventDefault();b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward= this.mouseY=this.mouseX=this.autoSpeedFactor=0;this.moveForward=!1;this.moveBackward=!1;this.moveLeft=!1;this.moveRight=!1;this.mouseDragOn=!1;this.windowHalfX=window.innerWidth/2;this.windowHalfY=window.innerHeight/2;this.onMouseDown=function(b){b.preventDefault();b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward=!0;break;case 2:this.moveBackward=!0}this.mouseDragOn=!0};this.onMouseUp=function(b){b.preventDefault();b.stopPropagation();if(this.activeLook)switch(b.button){case 0:this.moveForward=
!1;break;case 2:this.moveBackward=!1}this.mouseDragOn=!1};this.onMouseMove=function(b){this.mouseX=b.clientX-this.windowHalfX;this.mouseY=b.clientY-this.windowHalfY};this.onKeyDown=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=!0;break;case 37:case 65:this.moveLeft=!0;break;case 40:case 83:this.moveBackward=!0;break;case 39:case 68:this.moveRight=!0}};this.onKeyUp=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=!1;break;case 37:case 65:this.moveLeft=!1;break;case 40:case 83:this.moveBackward= !1;break;case 2:this.moveBackward=!1}this.mouseDragOn=!1};this.onMouseMove=function(b){this.mouseX=b.clientX-this.windowHalfX;this.mouseY=b.clientY-this.windowHalfY};this.onKeyDown=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=!0;break;case 37:case 65:this.moveLeft=!0;break;case 40:case 83:this.moveBackward=!0;break;case 39:case 68:this.moveRight=!0}};this.onKeyUp=function(b){switch(b.keyCode){case 38:case 87:this.moveForward=!1;break;case 37:case 65:this.moveLeft=!1;break;case 40:case 83:this.moveBackward=
...@@ -34,7 +34,7 @@ var b=this.lookSpeed;this.activeLook||(b=0);this.lon+=this.mouseX*b;this.lookVer ...@@ -34,7 +34,7 @@ var b=this.lookSpeed;this.activeLook||(b=0);this.lon+=this.mouseX*b;this.lookVer
THREE.QuakeCamera.prototype.translate=function(a,e){this.matrix.rotateAxis(e);if(this.noFly)e.y=0;this.position.addSelf(e.multiplyScalar(a));this.target.position.addSelf(e.multiplyScalar(a))}; THREE.QuakeCamera.prototype.translate=function(a,e){this.matrix.rotateAxis(e);if(this.noFly)e.y=0;this.position.addSelf(e.multiplyScalar(a));this.target.position.addSelf(e.multiplyScalar(a))};
THREE.PathCamera=function(a){function e(k,j,m,p){var w={name:m,fps:0.6,length:p,hierarchy:[]},t,z=j.getControlPointsArray(),y=j.getLength(),A=z.length,C=0;t=A-1;j={parent:-1,keys:[]};j.keys[0]={time:0,pos:z[0],rot:[0,0,0,1],scl:[1,1,1]};j.keys[t]={time:p,pos:z[t],rot:[0,0,0,1],scl:[1,1,1]};for(t=1;t<A-1;t++){C=p*y.chunks[t]/y.total;j.keys[t]={time:C,pos:z[t]}}w.hierarchy[0]=j;THREE.AnimationHandler.add(w);return new THREE.Animation(k,m,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function b(k,j){var m, THREE.PathCamera=function(a){function e(k,j,m,p){var w={name:m,fps:0.6,length:p,hierarchy:[]},t,z=j.getControlPointsArray(),y=j.getLength(),A=z.length,C=0;t=A-1;j={parent:-1,keys:[]};j.keys[0]={time:0,pos:z[0],rot:[0,0,0,1],scl:[1,1,1]};j.keys[t]={time:p,pos:z[t],rot:[0,0,0,1],scl:[1,1,1]};for(t=1;t<A-1;t++){C=p*y.chunks[t]/y.total;j.keys[t]={time:C,pos:z[t]}}w.hierarchy[0]=j;THREE.AnimationHandler.add(w);return new THREE.Animation(k,m,THREE.AnimationHandler.CATMULLROM_FORWARD,!1)}function b(k,j){var m,
p,w=new THREE.Geometry;for(m=0;m<k.points.length*j;m++){p=m/(k.points.length*j);p=k.getPoint(p);w.vertices[m]=new THREE.Vertex(new THREE.Vector3(p.x,p.y,p.z))}return w}function c(k,j){var m=b(j,10),p=b(j,10),w=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(m,w);particleObj=new THREE.ParticleSystem(p,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);k.addChild(lineObj);particleObj.scale.set(1,1,1);k.addChild(particleObj);p=new Sphere(1, p,w=new THREE.Geometry;for(m=0;m<k.points.length*j;m++){p=m/(k.points.length*j);p=k.getPoint(p);w.vertices[m]=new THREE.Vertex(new THREE.Vector3(p.x,p.y,p.z))}return w}function c(k,j){var m=b(j,10),p=b(j,10),w=new THREE.LineBasicMaterial({color:16711680,linewidth:3});lineObj=new THREE.Line(m,w);particleObj=new THREE.ParticleSystem(p,new THREE.ParticleBasicMaterial({color:16755200,size:3}));lineObj.scale.set(1,1,1);k.addChild(lineObj);particleObj.scale.set(1,1,1);k.addChild(particleObj);p=new Sphere(1,
16,8);w=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<j.points.length;i++){m=new THREE.Mesh(p,w);m.position.copy(j.points[i]);m.updateMatrix();k.addChild(m)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.0050;this.lookVertical= 16,8);w=new THREE.MeshBasicMaterial({color:65280});for(i=0;i<j.points.length;i++){m=new THREE.Mesh(p,w);m.position.copy(j.points[i]);m.updateMatrix();k.addChild(m)}}THREE.Camera.call(this,a.fov,a.aspect,a.near,a.far,a.target);this.id="PathCamera"+THREE.PathCameraIdCounter++;this.duration=1E4;this.waypoints=[];this.useConstantSpeed=!0;this.resamplingCoef=50;this.debugPath=new THREE.Object3D;this.debugDummy=new THREE.Object3D;this.animationParent=new THREE.Object3D;this.lookSpeed=0.005;this.lookVertical=
!0;this.lookHorizontal=!0;this.verticalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.horizontalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.domElement=document;if(a){if(a.duration!==undefined)this.duration=a.duration*1E3;if(a.waypoints!==undefined)this.waypoints=a.waypoints;if(a.useConstantSpeed!==undefined)this.useConstantSpeed=a.useConstantSpeed;if(a.resamplingCoef!==undefined)this.resamplingCoef=a.resamplingCoef;if(a.createDebugPath!==undefined)this.createDebugPath=a.createDebugPath; !0;this.lookHorizontal=!0;this.verticalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.horizontalAngleMap={srcRange:[0,6.28],dstRange:[0,6.28]};this.domElement=document;if(a){if(a.duration!==undefined)this.duration=a.duration*1E3;if(a.waypoints!==undefined)this.waypoints=a.waypoints;if(a.useConstantSpeed!==undefined)this.useConstantSpeed=a.useConstantSpeed;if(a.resamplingCoef!==undefined)this.resamplingCoef=a.resamplingCoef;if(a.createDebugPath!==undefined)this.createDebugPath=a.createDebugPath;
if(a.createDebugDummy!==undefined)this.createDebugDummy=a.createDebugDummy;if(a.lookSpeed!==undefined)this.lookSpeed=a.lookSpeed;if(a.lookVertical!==undefined)this.lookVertical=a.lookVertical;if(a.lookHorizontal!==undefined)this.lookHorizontal=a.lookHorizontal;if(a.verticalAngleMap!==undefined)this.verticalAngleMap=a.verticalAngleMap;if(a.horizontalAngleMap!==undefined)this.horizontalAngleMap=a.horizontalAngleMap;if(a.domElement!==undefined)this.domElement=a.domElement}this.theta=this.phi=this.lon= if(a.createDebugDummy!==undefined)this.createDebugDummy=a.createDebugDummy;if(a.lookSpeed!==undefined)this.lookSpeed=a.lookSpeed;if(a.lookVertical!==undefined)this.lookVertical=a.lookVertical;if(a.lookHorizontal!==undefined)this.lookHorizontal=a.lookHorizontal;if(a.verticalAngleMap!==undefined)this.verticalAngleMap=a.verticalAngleMap;if(a.horizontalAngleMap!==undefined)this.horizontalAngleMap=a.horizontalAngleMap;if(a.domElement!==undefined)this.domElement=a.domElement}this.theta=this.phi=this.lon=
this.lat=this.mouseY=this.mouseX=0;this.windowHalfX=window.innerWidth/2;this.windowHalfY=window.innerHeight/2;var d=Math.PI*2,f=Math.PI/180;this.update=function(k,j,m){var p,w;this.lookHorizontal&&(this.lon+=this.mouseX*this.lookSpeed);this.lookVertical&&(this.lat-=this.mouseY*this.lookSpeed);this.lon=Math.max(0,Math.min(360,this.lon));this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*f;this.theta=this.lon*f;p=this.phi%d;this.phi=p>=0?p:p+d;p=this.verticalAngleMap.srcRange;w=this.verticalAngleMap.dstRange; this.lat=this.mouseY=this.mouseX=0;this.windowHalfX=window.innerWidth/2;this.windowHalfY=window.innerHeight/2;var d=Math.PI*2,f=Math.PI/180;this.update=function(k,j,m){var p,w;this.lookHorizontal&&(this.lon+=this.mouseX*this.lookSpeed);this.lookVertical&&(this.lat-=this.mouseY*this.lookSpeed);this.lon=Math.max(0,Math.min(360,this.lon));this.lat=Math.max(-85,Math.min(85,this.lat));this.phi=(90-this.lat)*f;this.theta=this.lon*f;p=this.phi%d;this.phi=p>=0?p:p+d;p=this.verticalAngleMap.srcRange;w=this.verticalAngleMap.dstRange;
...@@ -50,7 +50,7 @@ for(c=a+a/2;c<2*a;c++)h.faces.push(new THREE.Face4(2*a+1,(2*c-2*a+2)%a+a,(2*c-2* ...@@ -50,7 +50,7 @@ for(c=a+a/2;c<2*a;c++)h.faces.push(new THREE.Face4(2*a+1,(2*c-2*a+2)%a+a,(2*c-2*
var Icosahedron=function(a){function e(m,p,w){var t=Math.sqrt(m*m+p*p+w*w);return d.vertices.push(new THREE.Vertex(new THREE.Vector3(m/t,p/t,w/t)))-1}function b(m,p,w,t){t.faces.push(new THREE.Face3(m,p,w))}function c(m,p){var w=d.vertices[m].position,t=d.vertices[p].position;return e((w.x+t.x)/2,(w.y+t.y)/2,(w.z+t.z)/2)}var d=this,f=new THREE.Geometry,g;this.subdivisions=a||0;THREE.Geometry.call(this);a=(1+Math.sqrt(5))/2;e(-1,a,0);e(1,a,0);e(-1,-a,0);e(1,-a,0);e(0,-1,a);e(0,1,a);e(0,-1,-a);e(0, var Icosahedron=function(a){function e(m,p,w){var t=Math.sqrt(m*m+p*p+w*w);return d.vertices.push(new THREE.Vertex(new THREE.Vector3(m/t,p/t,w/t)))-1}function b(m,p,w,t){t.faces.push(new THREE.Face3(m,p,w))}function c(m,p){var w=d.vertices[m].position,t=d.vertices[p].position;return e((w.x+t.x)/2,(w.y+t.y)/2,(w.z+t.z)/2)}var d=this,f=new THREE.Geometry,g;this.subdivisions=a||0;THREE.Geometry.call(this);a=(1+Math.sqrt(5))/2;e(-1,a,0);e(1,a,0);e(-1,-a,0);e(1,-a,0);e(0,-1,a);e(0,1,a);e(0,-1,-a);e(0,
1,-a);e(a,0,-1);e(a,0,1);e(-a,0,-1);e(-a,0,1);b(0,11,5,f);b(0,5,1,f);b(0,1,7,f);b(0,7,10,f);b(0,10,11,f);b(1,5,9,f);b(5,11,4,f);b(11,10,2,f);b(10,7,6,f);b(7,1,8,f);b(3,9,4,f);b(3,4,2,f);b(3,2,6,f);b(3,6,8,f);b(3,8,9,f);b(4,9,5,f);b(2,4,11,f);b(6,2,10,f);b(8,6,7,f);b(9,8,1,f);for(a=0;a<this.subdivisions;a++){g=new THREE.Geometry;for(var h in f.faces){var l=c(f.faces[h].a,f.faces[h].b),k=c(f.faces[h].b,f.faces[h].c),j=c(f.faces[h].c,f.faces[h].a);b(f.faces[h].a,l,j,g);b(f.faces[h].b,k,l,g);b(f.faces[h].c, 1,-a);e(a,0,-1);e(a,0,1);e(-a,0,-1);e(-a,0,1);b(0,11,5,f);b(0,5,1,f);b(0,1,7,f);b(0,7,10,f);b(0,10,11,f);b(1,5,9,f);b(5,11,4,f);b(11,10,2,f);b(10,7,6,f);b(7,1,8,f);b(3,9,4,f);b(3,4,2,f);b(3,2,6,f);b(3,6,8,f);b(3,8,9,f);b(4,9,5,f);b(2,4,11,f);b(6,2,10,f);b(8,6,7,f);b(9,8,1,f);for(a=0;a<this.subdivisions;a++){g=new THREE.Geometry;for(var h in f.faces){var l=c(f.faces[h].a,f.faces[h].b),k=c(f.faces[h].b,f.faces[h].c),j=c(f.faces[h].c,f.faces[h].a);b(f.faces[h].a,l,j,g);b(f.faces[h].b,k,l,g);b(f.faces[h].c,
j,k,g);b(l,k,j,g)}f.faces=g.faces}d.faces=f.faces;delete f;delete g;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};Icosahedron.prototype=new THREE.Geometry;Icosahedron.prototype.constructor=Icosahedron; j,k,g);b(l,k,j,g)}f.faces=g.faces}d.faces=f.faces;delete f;delete g;this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()};Icosahedron.prototype=new THREE.Geometry;Icosahedron.prototype.constructor=Icosahedron;
function Lathe(a,e,b){THREE.Geometry.call(this);this.steps=e||12;this.angle=b||2*Math.PI;e=this.angle/this.steps;for(var c=[],d=[],f=[],g=[],h=0;h<a.length;h++){this.vertices.push(new THREE.Vertex(a[h]));c[h]=a[h].clone();d[h]=this.vertices.length-1}for(var l=(new THREE.Matrix4).setRotationZ(e),k=0;k<=this.angle+0.0010;k+=e){for(h=0;h<c.length;h++)if(k<this.angle){c[h]=l.multiplyVector3(c[h].clone());this.vertices.push(new THREE.Vertex(c[h]));f[h]=this.vertices.length-1}else f=g;k==0&&(g=d);for(h= function Lathe(a,e,b){THREE.Geometry.call(this);this.steps=e||12;this.angle=b||2*Math.PI;e=this.angle/this.steps;for(var c=[],d=[],f=[],g=[],h=0;h<a.length;h++){this.vertices.push(new THREE.Vertex(a[h]));c[h]=a[h].clone();d[h]=this.vertices.length-1}for(var l=(new THREE.Matrix4).setRotationZ(e),k=0;k<=this.angle+0.001;k+=e){for(h=0;h<c.length;h++)if(k<this.angle){c[h]=l.multiplyVector3(c[h].clone());this.vertices.push(new THREE.Vertex(c[h]));f[h]=this.vertices.length-1}else f=g;k==0&&(g=d);for(h=
0;h<d.length-1;h++){this.faces.push(new THREE.Face4(f[h],f[h+1],d[h+1],d[h]));this.faceVertexUvs[0].push([new THREE.UV(k/b,h/a.length),new THREE.UV(k/b,(h+1)/a.length),new THREE.UV((k-e)/b,(h+1)/a.length),new THREE.UV((k-e)/b,h/a.length)])}d=f;f=[]}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()}Lathe.prototype=new THREE.Geometry;Lathe.prototype.constructor=Lathe; 0;h<d.length-1;h++){this.faces.push(new THREE.Face4(f[h],f[h+1],d[h+1],d[h]));this.faceVertexUvs[0].push([new THREE.UV(k/b,h/a.length),new THREE.UV(k/b,(h+1)/a.length),new THREE.UV((k-e)/b,(h+1)/a.length),new THREE.UV((k-e)/b,h/a.length)])}d=f;f=[]}this.computeCentroids();this.computeFaceNormals();this.computeVertexNormals()}Lathe.prototype=new THREE.Geometry;Lathe.prototype.constructor=Lathe;
var Plane=function(a,e,b,c){THREE.Geometry.call(this);var d,f=a/2,g=e/2;b=b||1;c=c||1;var h=b+1,l=c+1;a/=b;var k=e/c;for(d=0;d<l;d++)for(e=0;e<h;e++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(e*a-f,-(d*k-g),0)));for(d=0;d<c;d++)for(e=0;e<b;e++){this.faces.push(new THREE.Face4(e+h*d,e+h*(d+1),e+1+h*(d+1),e+1+h*d));this.faceVertexUvs[0].push([new THREE.UV(e/b,d/c),new THREE.UV(e/b,(d+1)/c),new THREE.UV((e+1)/b,(d+1)/c),new THREE.UV((e+1)/b,d/c)])}this.computeCentroids();this.computeFaceNormals()}; var Plane=function(a,e,b,c){THREE.Geometry.call(this);var d,f=a/2,g=e/2;b=b||1;c=c||1;var h=b+1,l=c+1;a/=b;var k=e/c;for(d=0;d<l;d++)for(e=0;e<h;e++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(e*a-f,-(d*k-g),0)));for(d=0;d<c;d++)for(e=0;e<b;e++){this.faces.push(new THREE.Face4(e+h*d,e+h*(d+1),e+1+h*(d+1),e+1+h*d));this.faceVertexUvs[0].push([new THREE.UV(e/b,d/c),new THREE.UV(e/b,(d+1)/c),new THREE.UV((e+1)/b,(d+1)/c),new THREE.UV((e+1)/b,d/c)])}this.computeCentroids();this.computeFaceNormals()};
Plane.prototype=new THREE.Geometry;Plane.prototype.constructor=Plane; Plane.prototype=new THREE.Geometry;Plane.prototype.constructor=Plane;
......
此差异已折叠。
此差异已折叠。
...@@ -161,9 +161,9 @@ ...@@ -161,9 +161,9 @@
postprocessing.camera.position.z = 100; postprocessing.camera.position.z = 100;
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter }; var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
postprocessing.rtTexture1 = new THREE.RenderTarget( window.innerWidth, window.innerHeight, pars ); postprocessing.rtTexture1 = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
postprocessing.rtTexture2 = new THREE.RenderTarget( 512, 512, pars ); postprocessing.rtTexture2 = new THREE.WebGLRenderTarget( 512, 512, pars );
postprocessing.rtTexture3 = new THREE.RenderTarget( 512, 512, pars ); postprocessing.rtTexture3 = new THREE.WebGLRenderTarget( 512, 512, pars );
var screen_shader = ShaderUtils.lib["screen"]; var screen_shader = ShaderUtils.lib["screen"];
var screen_uniforms = Uniforms.clone( screen_shader.uniforms ); var screen_uniforms = Uniforms.clone( screen_shader.uniforms );
...@@ -176,7 +176,8 @@ ...@@ -176,7 +176,8 @@
uniforms: screen_uniforms, uniforms: screen_uniforms,
vertexShader: screen_shader.vertexShader, vertexShader: screen_shader.vertexShader,
fragmentShader: screen_shader.fragmentShader, fragmentShader: screen_shader.fragmentShader,
blending: THREE.AdditiveBlending blending: THREE.AdditiveBlending,
transparent: true
} ); } );
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
// roll-over helpers // roll-over helpers
rollOverGeo = new Cube( 50, 50, 50 ); rollOverGeo = new Cube( 50, 50, 50 );
rollOverMaterial = new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5 } ); rollOverMaterial = new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5, transparent: true } );
rollOverMesh = new THREE.Mesh( rollOverGeo, rollOverMaterial ); rollOverMesh = new THREE.Mesh( rollOverGeo, rollOverMaterial );
scene.addObject( rollOverMesh ); scene.addObject( rollOverMesh );
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
// cubes // cubes
cubeGeo = new Cube( 50, 50, 50 ); cubeGeo = new Cube( 50, 50, 50 );
cubeMaterial = new THREE.MeshLambertMaterial( { color: 0x00ff80, opacity: 1, shading: THREE.FlatShading, map: ImageUtils.loadTexture( "textures/square-outline-textured.png" ) } ); cubeMaterial = new THREE.MeshLambertMaterial( { color: 0x00ff80, shading: THREE.FlatShading, map: ImageUtils.loadTexture( "textures/square-outline-textured.png" ) } );
cubeMaterial.color.setHSV( 0.1, 0.7, 1.0 ); cubeMaterial.color.setHSV( 0.1, 0.7, 1.0 );
// picking // picking
......
...@@ -141,9 +141,9 @@ ...@@ -141,9 +141,9 @@
sceneScreen = new THREE.Scene(); sceneScreen = new THREE.Scene();
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter }; var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
rtTexture1 = new THREE.RenderTarget( window.innerWidth, window.innerHeight, pars ); rtTexture1 = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
rtTexture2 = new THREE.RenderTarget( 512, 512, pars ); rtTexture2 = new THREE.WebGLRenderTarget( 512, 512, pars );
rtTexture3 = new THREE.RenderTarget( 512, 512, pars ); rtTexture3 = new THREE.WebGLRenderTarget( 512, 512, pars );
var screen_shader = ShaderUtils.lib["screen"]; var screen_shader = ShaderUtils.lib["screen"];
var screen_uniforms = Uniforms.clone( screen_shader.uniforms ); var screen_uniforms = Uniforms.clone( screen_shader.uniforms );
...@@ -156,7 +156,8 @@ ...@@ -156,7 +156,8 @@
uniforms: screen_uniforms, uniforms: screen_uniforms,
vertexShader: screen_shader.vertexShader, vertexShader: screen_shader.vertexShader,
fragmentShader: screen_shader.fragmentShader, fragmentShader: screen_shader.fragmentShader,
blending: THREE.AdditiveBlending blending: THREE.AdditiveBlending,
transparent: true
} ); } );
......
...@@ -92,9 +92,9 @@ ...@@ -92,9 +92,9 @@
// lines // lines
var line, p, scale = 0.3, d = 125, c1 = 0x553300, c2 = 0x555555, c3 = 0x992800, g1 = geometry, var line, p, scale = 0.3, d = 125, c1 = 0x553300, c2 = 0x555555, c3 = 0x992800, g1 = geometry,
m1 = new THREE.LineBasicMaterial( { color: c1, opacity: 1, blending: THREE.AdditiveBlending } ), m1 = new THREE.LineBasicMaterial( { color: c1, opacity: 1, blending: THREE.AdditiveBlending, transparent: true } ),
m2 = new THREE.LineBasicMaterial( { color: c2, opacity: 1, blending: THREE.AdditiveBlending } ), m2 = new THREE.LineBasicMaterial( { color: c2, opacity: 1, blending: THREE.AdditiveBlending, transparent: true } ),
m3 = new THREE.LineBasicMaterial( { color: c3, opacity: 1, blending: THREE.AdditiveBlending } ), m3 = new THREE.LineBasicMaterial( { color: c3, opacity: 1, blending: THREE.AdditiveBlending, transparent: true } ),
parameters = [ [ m3, scale*0.5, [0,0,0], g1 ], [ m2, scale*0.5, [d, 0, 0], g1 ], [ m2, scale*0.5, [-d, 0, 0], g1 ], parameters = [ [ m3, scale*0.5, [0,0,0], g1 ], [ m2, scale*0.5, [d, 0, 0], g1 ], [ m2, scale*0.5, [-d, 0, 0], g1 ],
[ m2, scale*0.5, [0,d,0], g1 ], [ m2, scale*0.5, [d, d, 0], g1 ], [ m2, scale*0.5, [-d, d, 0], g1 ], [ m2, scale*0.5, [0,d,0], g1 ], [ m2, scale*0.5, [d, d, 0], g1 ], [ m2, scale*0.5, [-d, d, 0], g1 ],
[ m2, scale*0.5, [0,-d,0], g1 ], [ m2, scale*0.5, [d, -d, 0], g1 ], [ m2, scale*0.5, [-d, -d, 0], g1 ], [ m2, scale*0.5, [0,-d,0], g1 ], [ m2, scale*0.5, [d, -d, 0], g1 ], [ m2, scale*0.5, [-d, -d, 0], g1 ],
......
...@@ -154,9 +154,9 @@ ...@@ -154,9 +154,9 @@
sceneScreen = new THREE.Scene(); sceneScreen = new THREE.Scene();
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter }; var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
rtTexture1 = new THREE.RenderTarget( window.innerWidth, window.innerHeight, pars ); rtTexture1 = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
rtTexture2 = new THREE.RenderTarget( 512, 512, pars ); rtTexture2 = new THREE.WebGLRenderTarget( 512, 512, pars );
rtTexture3 = new THREE.RenderTarget( 512, 512, pars ); rtTexture3 = new THREE.WebGLRenderTarget( 512, 512, pars );
var screen_shader = ShaderUtils.lib["screen"]; var screen_shader = ShaderUtils.lib["screen"];
var screen_uniforms = Uniforms.clone( screen_shader.uniforms ); var screen_uniforms = Uniforms.clone( screen_shader.uniforms );
......
...@@ -248,17 +248,17 @@ ...@@ -248,17 +248,17 @@
"Dark chrome": new THREE.MeshLambertMaterial( { color: 0x444444, envMap: textureCube } ), "Dark chrome": new THREE.MeshLambertMaterial( { color: 0x444444, envMap: textureCube } ),
"Darker chrome":new THREE.MeshLambertMaterial( { color: 0x222222, envMap: textureCube } ), "Darker chrome":new THREE.MeshLambertMaterial( { color: 0x222222, envMap: textureCube } ),
"Black glass": new THREE.MeshLambertMaterial( { color: 0x101016, envMap: textureCube, opacity: 0.975 } ), "Black glass": new THREE.MeshLambertMaterial( { color: 0x101016, envMap: textureCube, opacity: 0.975, transparent: true } ),
"Dark glass": new THREE.MeshLambertMaterial( { color: 0x101046, envMap: textureCube, opacity: 0.25 } ), "Dark glass": new THREE.MeshLambertMaterial( { color: 0x101046, envMap: textureCube, opacity: 0.25, transparent: true } ),
"Blue glass": new THREE.MeshLambertMaterial( { color: 0x668899, envMap: textureCube, opacity: 0.75 } ), "Blue glass": new THREE.MeshLambertMaterial( { color: 0x668899, envMap: textureCube, opacity: 0.75, transparent: true } ),
"Light glass": new THREE.MeshBasicMaterial( { color: 0x223344, envMap: textureCube, opacity: 0.25, combine: THREE.MixOperation, reflectivity: 0.25 } ), "Light glass": new THREE.MeshBasicMaterial( { color: 0x223344, envMap: textureCube, opacity: 0.25, transparent: true, combine: THREE.MixOperation, reflectivity: 0.25 } ),
"Red glass": new THREE.MeshLambertMaterial( { color: 0xff0000, opacity: 0.75 } ), "Red glass": new THREE.MeshLambertMaterial( { color: 0xff0000, opacity: 0.75, transparent: true } ),
"Yellow glass": new THREE.MeshLambertMaterial( { color: 0xffffaa, opacity: 0.75 } ), "Yellow glass": new THREE.MeshLambertMaterial( { color: 0xffffaa, opacity: 0.75, transparent: true } ),
"Orange glass": new THREE.MeshLambertMaterial( { color: 0x995500, opacity: 0.75 } ), "Orange glass": new THREE.MeshLambertMaterial( { color: 0x995500, opacity: 0.75, transparent: true } ),
"Orange glass 50": new THREE.MeshLambertMaterial( { color: 0xffbb00, opacity: 0.5 } ), "Orange glass 50": new THREE.MeshLambertMaterial( { color: 0xffbb00, opacity: 0.5, transparent: true } ),
"Red glass 50": new THREE.MeshLambertMaterial( { color: 0xff0000, opacity: 0.5 } ), "Red glass 50": new THREE.MeshLambertMaterial( { color: 0xff0000, opacity: 0.5, transparent: true } ),
"Fullblack rough": new THREE.MeshLambertMaterial( { color: 0x000000 } ), "Fullblack rough": new THREE.MeshLambertMaterial( { color: 0x000000 } ),
"Black rough": new THREE.MeshLambertMaterial( { color: 0x050505 } ), "Black rough": new THREE.MeshLambertMaterial( { color: 0x050505 } ),
......
...@@ -126,7 +126,7 @@ ...@@ -126,7 +126,7 @@
body: [], body: [],
chrome: new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: textureCube } ), chrome: new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: textureCube } ),
darkchrome: new THREE.MeshLambertMaterial( { color: 0x444444, envMap: textureCube } ), darkchrome: new THREE.MeshLambertMaterial( { color: 0x444444, envMap: textureCube } ),
glass: new THREE.MeshBasicMaterial( { color: 0x223344, envMap: textureCube, opacity: 0.25, combine: THREE.MixOperation, reflectivity: 0.25 } ), glass: new THREE.MeshBasicMaterial( { color: 0x223344, envMap: textureCube, opacity: 0.25, combine: THREE.MixOperation, reflectivity: 0.25, transparent: true } ),
tire: new THREE.MeshLambertMaterial( { color: 0x050505 } ), tire: new THREE.MeshLambertMaterial( { color: 0x050505 } ),
interior: new THREE.MeshPhongMaterial( { color: 0x050505, shininess: 20 } ), interior: new THREE.MeshPhongMaterial( { color: 0x050505, shininess: 20 } ),
black: new THREE.MeshLambertMaterial( { color: 0x000000 } ) black: new THREE.MeshLambertMaterial( { color: 0x000000 } )
......
...@@ -204,9 +204,9 @@ ...@@ -204,9 +204,9 @@
postprocessing.camera.position.z = 100; postprocessing.camera.position.z = 100;
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter }; var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
postprocessing.rtTexture1 = new THREE.RenderTarget( window.innerWidth, window.innerHeight, pars ); postprocessing.rtTexture1 = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
postprocessing.rtTexture2 = new THREE.RenderTarget( 512, 512, pars ); postprocessing.rtTexture2 = new THREE.WebGLRenderTarget( 512, 512, pars );
postprocessing.rtTexture3 = new THREE.RenderTarget( 512, 512, pars ); postprocessing.rtTexture3 = new THREE.WebGLRenderTarget( 512, 512, pars );
var screen_shader = ShaderUtils.lib["screen"]; var screen_shader = ShaderUtils.lib["screen"];
var screen_uniforms = Uniforms.clone( screen_shader.uniforms ); var screen_uniforms = Uniforms.clone( screen_shader.uniforms );
...@@ -219,7 +219,8 @@ ...@@ -219,7 +219,8 @@
uniforms: screen_uniforms, uniforms: screen_uniforms,
vertexShader: screen_shader.vertexShader, vertexShader: screen_shader.vertexShader,
fragmentShader: screen_shader.fragmentShader, fragmentShader: screen_shader.fragmentShader,
blending: THREE.AdditiveBlending blending: THREE.AdditiveBlending,
transparent: true
} ); } );
......
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
sprite = parameters[i][1]; sprite = parameters[i][1];
size = parameters[i][2]; size = parameters[i][2];
materials[i] = new THREE.ParticleBasicMaterial( { size: size, map: sprite, blending: THREE.AdditiveBlending, depthTest: false } ); materials[i] = new THREE.ParticleBasicMaterial( { size: size, map: sprite, blending: THREE.AdditiveBlending, depthTest: false, transparent : true } );
materials[i].color.setHSV( color[0], color[1], color[2] ); materials[i].color.setHSV( color[0], color[1], color[2] );
particles = new THREE.ParticleSystem( geometry, materials[i] ); particles = new THREE.ParticleSystem( geometry, materials[i] );
......
...@@ -107,9 +107,9 @@ ...@@ -107,9 +107,9 @@
directionalLight.position.normalize(); directionalLight.position.normalize();
sceneModel.addLight( directionalLight ); sceneModel.addLight( directionalLight );
rtTexture1 = new THREE.RenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter } ); rtTexture1 = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter } );
rtTexture2 = new THREE.RenderTarget( 256, 512, { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter } ); rtTexture2 = new THREE.WebGLRenderTarget( 256, 512, { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter } );
rtTexture3 = new THREE.RenderTarget( 512, 256, { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter } ); rtTexture3 = new THREE.WebGLRenderTarget( 512, 256, { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter } );
materialColor = new THREE.MeshShaderMaterial( { materialColor = new THREE.MeshShaderMaterial( {
...@@ -131,7 +131,8 @@ ...@@ -131,7 +131,8 @@
uniforms: screen_uniforms, uniforms: screen_uniforms,
vertexShader: screen_shader.vertexShader, vertexShader: screen_shader.vertexShader,
fragmentShader: screen_shader.fragmentShader, fragmentShader: screen_shader.fragmentShader,
blending: THREE.AdditiveBlending blending: THREE.AdditiveBlending,
transparent: true
} ); } );
......
...@@ -241,8 +241,8 @@ ...@@ -241,8 +241,8 @@
postprocessing.camera.position.z = 100; postprocessing.camera.position.z = 100;
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter }; var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
postprocessing.rtTextureDepth = new THREE.RenderTarget( window.innerWidth, height, pars ); postprocessing.rtTextureDepth = new THREE.WebGLRenderTarget( window.innerWidth, height, pars );
postprocessing.rtTextureColor = new THREE.RenderTarget( window.innerWidth, height, pars ); postprocessing.rtTextureColor = new THREE.WebGLRenderTarget( window.innerWidth, height, pars );
var bokeh_shader = ShaderExtras["bokeh"]; var bokeh_shader = ShaderExtras["bokeh"];
......
...@@ -232,9 +232,9 @@ ...@@ -232,9 +232,9 @@
postprocessing.camera.position.z = 100; postprocessing.camera.position.z = 100;
var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter }; var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter };
postprocessing.rtTexture1 = new THREE.RenderTarget( window.innerWidth, window.innerHeight, pars ); postprocessing.rtTexture1 = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
postprocessing.rtTexture2 = new THREE.RenderTarget( 512, 512, pars ); postprocessing.rtTexture2 = new THREE.WebGLRenderTarget( 512, 512, pars );
postprocessing.rtTexture3 = new THREE.RenderTarget( 512, 512, pars ); postprocessing.rtTexture3 = new THREE.WebGLRenderTarget( 512, 512, pars );
var screen_shader = ShaderUtils.lib["screen"]; var screen_shader = ShaderUtils.lib["screen"];
var screen_uniforms = Uniforms.clone( screen_shader.uniforms ); var screen_uniforms = Uniforms.clone( screen_shader.uniforms );
...@@ -247,7 +247,8 @@ ...@@ -247,7 +247,8 @@
uniforms: screen_uniforms, uniforms: screen_uniforms,
vertexShader: screen_shader.vertexShader, vertexShader: screen_shader.vertexShader,
fragmentShader: screen_shader.fragmentShader, fragmentShader: screen_shader.fragmentShader,
blending: THREE.AdditiveBlending blending: THREE.AdditiveBlending,
transparent: true
} ); } );
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
light.position.z = 1; light.position.z = 1;
light.position.normalize(); light.position.normalize();
sceneRTT.addLight( light ); sceneRTT.addLight( light );
light = new THREE.DirectionalLight( 0xffaaaa, 1.5 ); light = new THREE.DirectionalLight( 0xffaaaa, 1.5 );
light.position.x = 0; light.position.x = 0;
light.position.y = 0; light.position.y = 0;
...@@ -130,7 +130,7 @@ ...@@ -130,7 +130,7 @@
light.position.normalize(); light.position.normalize();
sceneRTT.addLight( light ); sceneRTT.addLight( light );
rtTexture = new THREE.RenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter } ); rtTexture = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter } );
material = new THREE.MeshShaderMaterial( { material = new THREE.MeshShaderMaterial( {
......
...@@ -74,7 +74,6 @@ ...@@ -74,7 +74,6 @@
<script type="text/javascript" src="../src/materials/ParticleCanvasMaterial.js"></script> <script type="text/javascript" src="../src/materials/ParticleCanvasMaterial.js"></script>
<script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script> <script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script>
<script type="text/javascript" src="../src/materials/Texture.js"></script> <script type="text/javascript" src="../src/materials/Texture.js"></script>
<script type="text/javascript" src="../src/materials/RenderTarget.js"></script>
<script type="text/javascript" src="../src/materials/Uniforms.js"></script> <script type="text/javascript" src="../src/materials/Uniforms.js"></script>
<script type="text/javascript" src="../src/objects/Particle.js"></script> <script type="text/javascript" src="../src/objects/Particle.js"></script>
<script type="text/javascript" src="../src/objects/ParticleSystem.js"></script> <script type="text/javascript" src="../src/objects/ParticleSystem.js"></script>
...@@ -95,6 +94,7 @@ ...@@ -95,6 +94,7 @@
<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script> <script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
<script type="text/javascript" src="../src/renderers/WebGLShaders.js"></script> <script type="text/javascript" src="../src/renderers/WebGLShaders.js"></script>
<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script> <script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
<script type="text/javascript" src="../src/renderers/WebGLRenderTarget.js"></script>
<script type="text/javascript" src="../src/renderers/SoundRenderer.js"></script> <script type="text/javascript" src="../src/renderers/SoundRenderer.js"></script>
<script type="text/javascript" src="../src/renderers/renderables/RenderableVertex.js"></script> <script type="text/javascript" src="../src/renderers/renderables/RenderableVertex.js"></script>
<script type="text/javascript" src="../src/renderers/renderables/RenderableFace3.js"></script> <script type="text/javascript" src="../src/renderers/renderables/RenderableFace3.js"></script>
......
...@@ -19,34 +19,19 @@ ...@@ -19,34 +19,19 @@
THREE.LineBasicMaterial = function ( parameters ) { THREE.LineBasicMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff ); parameters = parameters || {};
this.opacity = 1.0;
this.blending = THREE.NormalBlending; this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.depthTest = true;
this.linewidth = 1.0; this.linewidth = parameters.linewidth !== undefined ? parameters.linewidth : 1;
this.linecap = 'round'; // implemented just in CanvasRenderer this.linecap = parameters.linecap !== undefined ? parameters.linecap : 'round';
this.linejoin = 'round'; // implemented just in CanvasRenderer this.linejoin = parameters.linejoin !== undefined ? parameters.linejoin : 'round';
this.vertexColors = false; this.vertexColors = parameters.vertexColors ? parameters.vertexColors : false;
if ( parameters ) {
if ( parameters.color !== undefined ) this.color.setHex( parameters.color );
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.linewidth !== undefined ) this.linewidth = parameters.linewidth;
if ( parameters.linecap !== undefined ) this.linecap = parameters.linecap;
if ( parameters.linejoin !== undefined ) this.linejoin = parameters.linejoin;
if ( parameters.vertexColors !== undefined ) this.vertexColors = parameters.vertexColors;
}
}; };
THREE.LineBasicMaterial.prototype = new THREE.Material();
THREE.LineBasicMaterial.prototype.constructor = THREE.LineBasicMaterial;
...@@ -2,6 +2,21 @@ ...@@ -2,6 +2,21 @@
* @author mr.doob / http://mrdoob.com/ * @author mr.doob / http://mrdoob.com/
*/ */
THREE.Material = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++;
parameters = parameters || {};
this.opacity = parameters.opacity !== undefined ? parameters.opacity : 1;
this.transparent = parameters.transparent !== undefined ? parameters.transparent : false;
this.blending = parameters.blending !== undefined ? parameters.blending : THREE.NormalBlending;
this.depthTest = parameters.depthTest !== undefined ? parameters.depthTest : true;
}
THREE.NoShading = 0; THREE.NoShading = 0;
THREE.FlatShading = 1; THREE.FlatShading = 1;
THREE.SmoothShading = 2; THREE.SmoothShading = 2;
......
...@@ -6,21 +6,21 @@ ...@@ -6,21 +6,21 @@
* color: <hex>, * color: <hex>,
* opacity: <float>, * opacity: <float>,
* map: new THREE.Texture( <Image> ), * map: new THREE.Texture( <Image> ),
*
* lightMap: new THREE.Texture( <Image> ), * lightMap: new THREE.Texture( <Image> ),
*
* envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ), * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),
* combine: THREE.Multiply, * combine: THREE.Multiply,
* reflectivity: <float>, * reflectivity: <float>,
* refractionRatio: <float>, * refractionRatio: <float>,
*
* shading: THREE.SmoothShading, * shading: THREE.SmoothShading,
* blending: THREE.NormalBlending, * blending: THREE.NormalBlending,
* depthTest: <bool>, * depthTest: <bool>,
*
* wireframe: <boolean>, * wireframe: <boolean>,
* wireframeLinewidth: <float>, * wireframeLinewidth: <float>,
*
* vertexColors: false / THREE.VertexColors / THREE.FaceColors, * vertexColors: false / THREE.VertexColors / THREE.FaceColors,
* skinning: <bool> * skinning: <bool>
* } * }
...@@ -28,63 +28,36 @@ ...@@ -28,63 +28,36 @@
THREE.MeshBasicMaterial = function ( parameters ) { THREE.MeshBasicMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff );
this.opacity = 1.0;
this.map = null;
this.lightMap = null; parameters = parameters || {};
this.envMap = null; this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.combine = THREE.MultiplyOperation;
this.reflectivity = 1.0;
this.refractionRatio = 0.98;
this.fog = true; // implemented just in WebGLRenderer2 this.map = parameters.map !== undefined ? parameters.map : null;
this.shading = THREE.SmoothShading; this.lightMap = parameters.lightMap !== undefined ? parameters.lightMap : null;
this.blending = THREE.NormalBlending;
this.depthTest = true;
this.wireframe = false; this.envMap = parameters.envMap !== undefined ? parameters.envMap : null;
this.wireframeLinewidth = 1.0; this.combine = parameters.combine !== undefined ? parameters.combine : THREE.MultiplyOperation;
this.wireframeLinecap = 'round'; // implemented just in CanvasRenderer this.reflectivity = parameters.reflectivity !== undefined ? parameters.reflectivity : 1;
this.wireframeLinejoin = 'round'; // implemented just in CanvasRenderer this.refractionRatio = parameters.refractionRatio !== undefined ? parameters.refractionRatio : 0.98;
this.vertexColors = false; // this.enableFog = parameters.enableFog ? parameters.enableFog : true;
this.skinning = false; this.shading = parameters.shading !== undefined ? parameters.shading : THREE.SmoothShading;
this.morphTargets = false;
if ( parameters ) { this.wireframe = parameters.wireframe !== undefined ? parameters.wireframe : false;
this.wireframeLinewidth = parameters.wireframeLinewidth !== undefined ? parameters.wireframeLinewidth : 1;
this.wireframeLinecap = parameters.wireframeLinecap !== undefined ? parameters.wireframeLinecap : 'round';
this.wireframeLinejoin = parameters.wireframeLinejoin !== undefined ? parameters.wireframeLinejoin : 'round';
if ( parameters.color !== undefined ) this.color.setHex( parameters.color ); this.vertexColors = parameters.vertexColors !== undefined ? parameters.vertexColors : false;
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.map !== undefined ) this.map = parameters.map;
if ( parameters.lightMap !== undefined ) this.lightMap = parameters.lightMap; this.skinning = parameters.skinning !== undefined ? parameters.skinning : false;
this.morphTargets = parameters.morphTargets !== undefined ? parameters.morphTargets : false;
if ( parameters.envMap !== undefined ) this.envMap = parameters.envMap;
if ( parameters.combine !== undefined ) this.combine = parameters.combine;
if ( parameters.reflectivity !== undefined ) this.reflectivity = parameters.reflectivity;
if ( parameters.refractionRatio !== undefined ) this.refractionRatio = parameters.refractionRatio;
if ( parameters.fog !== undefined ) this.fog = parameters.fog;
if ( parameters.shading !== undefined ) this.shading = parameters.shading;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
if ( parameters.wireframeLinewidth !== undefined ) this.wireframeLinewidth = parameters.wireframeLinewidth;
if ( parameters.wireframeLinecap !== undefined ) this.wireframeLinecap = parameters.wireframeLinecap;
if ( parameters.wireframeLinejoin !== undefined ) this.wireframeLinejoin = parameters.wireframeLinejoin;
if ( parameters.vertexColors !== undefined ) this.vertexColors = parameters.vertexColors;
if ( parameters.skinning !== undefined ) this.skinning = parameters.skinning;
if ( parameters.morphTargets !== undefined ) this.morphTargets = parameters.morphTargets;
}
}; };
THREE.MeshBasicMaterial.prototype = new THREE.Material();
THREE.MeshBasicMaterial.prototype.constructor = THREE.MeshBasicMaterial;
...@@ -15,28 +15,16 @@ ...@@ -15,28 +15,16 @@
THREE.MeshDepthMaterial = function ( parameters ) { THREE.MeshDepthMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.opacity = 1.0; parameters = parameters || {};
this.shading = THREE.SmoothShading; // doesn't really apply here, normals are not used this.shading = parameters.shading !== undefined ? parameters.shading : THREE.SmoothShading; // doesn't really apply here, normals are not used
this.blending = THREE.NormalBlending;
this.depthTest = true;
this.wireframe = false; this.wireframe = parameters.wireframe !== undefined ? parameters.wireframe : false;
this.wireframeLinewidth = 1.0; this.wireframeLinewidth = parameters.wireframeLinewidth !== undefined ? parameters.wireframeLinewidth : 1;
if ( parameters ) {
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.shading !== undefined ) this.shading = parameters.shading;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
if ( parameters.wireframeLinewidth !== undefined ) this.wireframeLinewidth = parameters.wireframeLinewidth;
}
}; };
THREE.MeshDepthMaterial.prototype = new THREE.Material();
THREE.MeshDepthMaterial.prototype.constructor = THREE.MeshDepthMaterial;
...@@ -6,84 +6,58 @@ ...@@ -6,84 +6,58 @@
* color: <hex>, * color: <hex>,
* opacity: <float>, * opacity: <float>,
* map: new THREE.Texture( <Image> ), * map: new THREE.Texture( <Image> ),
*
* lightMap: new THREE.Texture( <Image> ), * lightMap: new THREE.Texture( <Image> ),
*
* envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ), * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),
* combine: THREE.Multiply, * combine: THREE.Multiply,
* reflectivity: <float>, * reflectivity: <float>,
* refractionRatio: <float>, * refractionRatio: <float>,
*
* shading: THREE.SmoothShading, * shading: THREE.SmoothShading,
* blending: THREE.NormalBlending, * blending: THREE.NormalBlending,
* depthTest: <bool>, * depthTest: <bool>,
*
* wireframe: <boolean>, * wireframe: <boolean>,
* wireframeLinewidth: <float>, * wireframeLinewidth: <float>,
*
* vertexColors: <bool>, * vertexColors: false / THREE.VertexColors / THREE.FaceColors,
* skinning: <bool> * skinning: <bool>
* } * }
*/ */
THREE.MeshLambertMaterial = function ( parameters ) { THREE.MeshLambertMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff );
this.opacity = 1.0;
this.map = null;
this.lightMap = null; parameters = parameters || {};
this.envMap = null; this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.combine = THREE.MultiplyOperation;
this.reflectivity = 1.0;
this.refractionRatio = 0.98;
this.fog = true; // implemented just in WebGLRenderer2 this.map = parameters.map !== undefined ? parameters.map : null;
this.shading = THREE.SmoothShading; this.lightMap = parameters.lightMap !== undefined ? parameters.lightMap : null;
this.blending = THREE.NormalBlending;
this.depthTest = true;
this.wireframe = false; this.envMap = parameters.envMap !== undefined ? parameters.envMap : null;
this.wireframeLinewidth = 1.0; this.combine = parameters.combine !== undefined ? parameters.combine : THREE.MultiplyOperation;
this.wireframeLinecap = 'round'; // implemented just in CanvasRenderer this.reflectivity = parameters.reflectivity !== undefined ? parameters.reflectivity : 1;
this.wireframeLinejoin = 'round'; // implemented just in CanvasRenderer this.refractionRatio = parameters.refractionRatio !== undefined ? parameters.refractionRatio : 0.98;
this.vertexColors = false; // this.enableFog = parameters.enableFog ? parameters.enableFog : true;
this.skinning = false;
this.morphTargets = false;
if ( parameters ) { this.shading = parameters.shading !== undefined ? parameters.shading : THREE.SmoothShading;
if ( parameters.color !== undefined ) this.color.setHex( parameters.color ); this.wireframe = parameters.wireframe !== undefined ? parameters.wireframe : false;
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity; this.wireframeLinewidth = parameters.wireframeLinewidth !== undefined ? parameters.wireframeLinewidth : 1;
if ( parameters.map !== undefined ) this.map = parameters.map; this.wireframeLinecap = parameters.wireframeLinecap !== undefined ? parameters.wireframeLinecap : 'round';
this.wireframeLinejoin = parameters.wireframeLinejoin !== undefined ? parameters.wireframeLinejoin : 'round';
if ( parameters.lightMap !== undefined ) this.lightMap = parameters.lightMap; this.vertexColors = parameters.vertexColors !== undefined ? parameters.vertexColors : false;
if ( parameters.envMap !== undefined ) this.envMap = parameters.envMap; this.skinning = parameters.skinning !== undefined ? parameters.skinning : false;
if ( parameters.combine !== undefined ) this.combine = parameters.combine; this.morphTargets = parameters.morphTargets !== undefined ? parameters.morphTargets : false;
if ( parameters.reflectivity !== undefined ) this.reflectivity = parameters.reflectivity;
if ( parameters.refractionRatio !== undefined ) this.refractionRatio = parameters.refractionRatio;
if ( parameters.fog !== undefined ) this.fog = parameters.fog;
if ( parameters.shading !== undefined ) this.shading = parameters.shading;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
if ( parameters.wireframeLinewidth !== undefined ) this.wireframeLinewidth = parameters.wireframeLinewidth;
if ( parameters.wireframeLinecap !== undefined ) this.wireframeLinecap = parameters.wireframeLinecap;
if ( parameters.wireframeLinejoin !== undefined ) this.wireframeLinejoin = parameters.wireframeLinejoin;
if ( parameters.vertexColors !== undefined ) this.vertexColors = parameters.vertexColors;
if ( parameters.skinning !== undefined ) this.skinning = parameters.skinning;
if ( parameters.morphTargets !== undefined ) this.morphTargets = parameters.morphTargets;
}
}; };
THREE.MeshLambertMaterial.prototype = new THREE.Material();
THREE.MeshLambertMaterial.prototype.constructor = THREE.MeshLambertMaterial;
...@@ -15,28 +15,16 @@ ...@@ -15,28 +15,16 @@
THREE.MeshNormalMaterial = function ( parameters ) { THREE.MeshNormalMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.opacity = 1.0; parameters = parameters || {};
this.shading = THREE.FlatShading; this.shading = parameters.shading ? parameters.shading : THREE.FlatShading;
this.blending = THREE.NormalBlending;
this.depthTest = true;
this.wireframe = false; this.wireframe = parameters.wireframe ? parameters.wireframe : false;
this.wireframeLinewidth = 1.0; this.wireframeLinewidth = parameters.wireframeLinewidth ? parameters.wireframeLinewidth : 1;
if ( parameters ) {
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.shading !== undefined ) this.shading = parameters.shading;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
if ( parameters.wireframeLinewidth !== undefined ) this.wireframeLinewidth = parameters.wireframeLinewidth;
}
}; };
THREE.MeshNormalMaterial.prototype = new THREE.Material();
THREE.MeshNormalMaterial.prototype.constructor = THREE.MeshNormalMaterial;
...@@ -8,94 +8,63 @@ ...@@ -8,94 +8,63 @@
* specular: <hex>, * specular: <hex>,
* shininess: <float>, * shininess: <float>,
* opacity: <float>, * opacity: <float>,
*
* map: new THREE.Texture( <Image> ), * map: new THREE.Texture( <Image> ),
*
* lightMap: new THREE.Texture( <Image> ), * lightMap: new THREE.Texture( <Image> ),
*
* envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ), * envMap: new THREE.TextureCube( [posx, negx, posy, negy, posz, negz] ),
* combine: THREE.Multiply, * combine: THREE.Multiply,
* reflectivity: <float>, * reflectivity: <float>,
* refractionRatio: <float>, * refractionRatio: <float>,
*
* shading: THREE.SmoothShading, * shading: THREE.SmoothShading,
* blending: THREE.NormalBlending, * blending: THREE.NormalBlending,
* depthTest: <bool>, * depthTest: <bool>,
*
* wireframe: <boolean>, * wireframe: <boolean>,
* wireframeLinewidth: <float>, * wireframeLinewidth: <float>,
*
* vertexColors: <bool>, * vertexColors: false / THREE.VertexColors / THREE.FaceColors,
* skinning: <bool> * skinning: <bool>
* } * }
*/ */
THREE.MeshPhongMaterial = function ( parameters ) { THREE.MeshPhongMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff ); parameters = parameters || {};
this.ambient = new THREE.Color( 0x050505 );
this.specular = new THREE.Color( 0x111111 );
this.shininess = 30.0;
this.opacity = 1.0;
this.map = null; this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.ambient = parameters.ambient !== undefined ? new THREE.Color( parameters.ambient ) : new THREE.Color( 0x050505 );
this.specular = parameters.specular !== undefined ? new THREE.Color( parameters.specular ) : new THREE.Color( 0x111111 );
this.shininess = parameters.shininess !== undefined ? parameters.shininess : 30;
this.lightMap = null; this.map = parameters.map !== undefined ? parameters.map : null;
this.envMap = null; this.lightMap = parameters.lightMap !== undefined ? parameters.lightMap : null;
this.combine = THREE.MultiplyOperation;
this.reflectivity = 1.0;
this.refractionRatio = 0.98;
this.fog = true; // implemented just in WebGLRenderer2 this.envMap = parameters.envMap !== undefined ? parameters.envMap : null;
this.combine = parameters.combine !== undefined ? parameters.combine : THREE.MultiplyOperation;
this.reflectivity = parameters.reflectivity !== undefined ? parameters.reflectivity : 1;
this.refractionRatio = parameters.refractionRatio !== undefined ? parameters.refractionRatio : 0.98;
this.shading = THREE.SmoothShading; // this.enableFog = parameters.enableFog ? parameters.enableFog : true;
this.blending = THREE.NormalBlending;
this.depthTest = true;
this.wireframe = false; this.shading = parameters.shading !== undefined ? parameters.shading : THREE.SmoothShading;
this.wireframeLinewidth = 1.0;
this.wireframeLinecap = 'round'; // implemented just in CanvasRenderer
this.wireframeLinejoin = 'round'; // implemented just in CanvasRenderer
this.vertexColors = false; this.wireframe = parameters.wireframe !== undefined ? parameters.wireframe : false;
this.skinning = false; this.wireframeLinewidth = parameters.wireframeLinewidth !== undefined ? parameters.wireframeLinewidth : 1;
this.morphTargets = false; this.wireframeLinecap = parameters.wireframeLinecap !== undefined ? parameters.wireframeLinecap : 'round';
this.wireframeLinejoin = parameters.wireframeLinejoin !== undefined ? parameters.wireframeLinejoin : 'round';
if ( parameters ) { this.vertexColors = parameters.vertexColors !== undefined ? parameters.vertexColors : false;
if ( parameters.color !== undefined ) this.color = new THREE.Color( parameters.color ); this.skinning = parameters.skinning !== undefined ? parameters.skinning : false;
if ( parameters.ambient !== undefined ) this.ambient = new THREE.Color( parameters.ambient ); this.morphTargets = parameters.morphTargets !== undefined ? parameters.morphTargets : false;
if ( parameters.specular !== undefined ) this.specular = new THREE.Color( parameters.specular );
if ( parameters.shininess !== undefined ) this.shininess = parameters.shininess;
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.lightMap !== undefined ) this.lightMap = parameters.lightMap;
if ( parameters.map !== undefined ) this.map = parameters.map;
if ( parameters.envMap !== undefined ) this.envMap = parameters.envMap;
if ( parameters.combine !== undefined ) this.combine = parameters.combine;
if ( parameters.reflectivity !== undefined ) this.reflectivity = parameters.reflectivity;
if ( parameters.refractionRatio !== undefined ) this.refractionRatio = parameters.refractionRatio;
if ( parameters.fog !== undefined ) this.fog = parameters.fog;
if ( parameters.shading !== undefined ) this.shading = parameters.shading;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
if ( parameters.wireframeLinewidth !== undefined ) this.wireframeLinewidth = parameters.wireframeLinewidth;
if ( parameters.wireframeLinecap !== undefined ) this.wireframeLinecap = parameters.wireframeLinecap;
if ( parameters.wireframeLinejoin !== undefined ) this.wireframeLinejoin = parameters.wireframeLinejoin;
if ( parameters.vertexColors !== undefined ) this.vertexColors = parameters.vertexColors;
if ( parameters.skinning !== undefined ) this.skinning = parameters.skinning;
if ( parameters.morphTargets !== undefined ) this.morphTargets = parameters.morphTargets;
}
}; };
THREE.MeshPhongMaterial.prototype = new THREE.Material();
THREE.MeshPhongMaterial.prototype.constructor = THREE.MeshPhongMaterial;
...@@ -23,51 +23,25 @@ ...@@ -23,51 +23,25 @@
THREE.MeshShaderMaterial = function ( parameters ) { THREE.MeshShaderMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.fragmentShader = "void main() {}"; parameters = parameters || {};
this.vertexShader = "void main() {}";
this.uniforms = {};
this.opacity = 1.0; // set to < 1.0 to renderer in transparent batch this.fragmentShader = parameters.fragmentShader !== undefined ? parameters.fragmentShader : "void main() {}";
this.vertexShader = parameters.vertexShader !== undefined ? parameters.vertexShader : "void main() {}";
this.uniforms = parameters.uniforms !== undefined ? parameters.uniforms : {};
this.shading = THREE.SmoothShading; this.shading = parameters.shading !== undefined ? parameters.shading : THREE.SmoothShading;
this.blending = THREE.NormalBlending;
this.depthTest = true;
this.wireframe = false; this.wireframe = parameters.wireframe !== undefined ? parameters.wireframe : false;
this.wireframeLinewidth = 1.0; this.wireframeLinewidth = parameters.wireframeLinewidth !== undefined ? parameters.wireframeLinewidth : 1;
this.wireframeLinecap = 'round'; // doesn't make sense here
this.wireframeLinejoin = 'round'; // not implemented in WebGLRenderer (and this material doesn't make sense in CanvasRenderer)
this.lights = false; // set to use scene lights this.lights = parameters.lights !== undefined ? parameters.lights : false; // set to use scene lights
this.vertexColors = false; // set to use "color" attribute stream this.vertexColors = parameters.vertexColors !== undefined ? parameters.vertexColors : false; // set to use "color" attribute stream
this.skinning = false; // set to use skinning attribute streams this.skinning = parameters.skinning !== undefined ? parameters.skinning : false; // set to use skinning attribute streams
this.morphTargets = false; // set to use morph targets this.morphTargets = parameters.morphTargets !== undefined ? parameters.morphTargets : false; // set to use morph targets
if ( parameters ) {
if ( parameters.fragmentShader !== undefined ) this.fragmentShader = parameters.fragmentShader;
if ( parameters.vertexShader !== undefined ) this.vertexShader = parameters.vertexShader;
if ( parameters.uniforms !== undefined ) this.uniforms = parameters.uniforms;
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.shading !== undefined ) this.shading = parameters.shading;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.wireframe !== undefined ) this.wireframe = parameters.wireframe;
if ( parameters.wireframeLinewidth !== undefined ) this.wireframeLinewidth = parameters.wireframeLinewidth;
if ( parameters.wireframeLinecap !== undefined ) this.wireframeLinecap = parameters.wireframeLinecap;
if ( parameters.wireframeLinejoin !== undefined ) this.wireframeLinejoin = parameters.wireframeLinejoin;
if ( parameters.lights !== undefined ) this.lights = parameters.lights;
if ( parameters.vertexColors !== undefined ) this.vertexColors = parameters.vertexColors;
if ( parameters.skinning !== undefined ) this.skinning = parameters.skinning;
if ( parameters.morphTargets !== undefined ) this.morphTargets = parameters.morphTargets;
}
}; };
THREE.MeshShaderMaterial.prototype = new THREE.Material();
THREE.MeshShaderMaterial.prototype.constructor = THREE.MeshShaderMaterial;
...@@ -18,36 +18,20 @@ ...@@ -18,36 +18,20 @@
THREE.ParticleBasicMaterial = function ( parameters ) { THREE.ParticleBasicMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff ); parameters = parameters || {};
this.opacity = 1.0;
this.map = null;
this.size = 1.0; this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.sizeAttenuation = true;
this.blending = THREE.NormalBlending; this.map = parameters.map !== undefined ? parameters.map : null;
this.depthTest = true;
this.offset = new THREE.Vector2(); // TODO: expose to parameters (implemented just in CanvasRenderer) this.size = parameters.size !== undefined ? parameters.size : 1;
this.sizeAttenuation = parameters.sizeAttenuation !== undefined ? parameters.sizeAttenuation : true;
this.vertexColors = false; this.vertexColors = parameters.vertexColors !== undefined ? parameters.vertexColors : false;
if ( parameters ) {
if ( parameters.color !== undefined ) this.color.setHex( parameters.color );
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.map !== undefined ) this.map = parameters.map;
if ( parameters.size !== undefined ) this.size = parameters.size;
if ( parameters.sizeAttenuation !== undefined ) this.sizeAttenuation = parameters.sizeAttenuation;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
if ( parameters.depthTest !== undefined ) this.depthTest = parameters.depthTest;
if ( parameters.vertexColors !== undefined ) this.vertexColors = parameters.vertexColors;
}
}; };
THREE.ParticleBasicMaterial.prototype = new THREE.Material();
THREE.ParticleBasicMaterial.prototype.constructor = THREE.ParticleBasicMaterial;
...@@ -11,20 +11,14 @@ ...@@ -11,20 +11,14 @@
THREE.ParticleCanvasMaterial = function ( parameters ) { THREE.ParticleCanvasMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff ); parameters = parameters || {};
this.program = function ( context, color ) {};
this.opacity = 1;
this.blending = THREE.NormalBlending;
if ( parameters ) { this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.program = parameters.program !== undefined ? parameters.program : function ( context, color ) {};
if ( parameters.color !== undefined ) this.color.setHex( parameters.color );
if ( parameters.program !== undefined ) this.program = parameters.program;
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
if ( parameters.blending !== undefined ) this.blending = parameters.blending;
}
}; };
THREE.ParticleCanvasMaterial.prototype = new THREE.Material();
THREE.ParticleCanvasMaterial.prototype.constructor = THREE.ParticleCanvasMaterial;
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
THREE.ParticleDOMMaterial = function ( domElement ) { THREE.ParticleDOMMaterial = function ( domElement ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this );
this.domElement = domElement; this.domElement = domElement;
......
...@@ -28,32 +28,36 @@ ...@@ -28,32 +28,36 @@
THREE.ShadowVolumeDynamicMaterial = function ( parameters ) { THREE.ShadowVolumeDynamicMaterial = function ( parameters ) {
this.id = THREE.MaterialCounter.value ++; THREE.Material.call( this, parameters );
this.color = new THREE.Color( 0xffffff ); parameters = parameters || {};
this.opacity = 1.0;
this.map = null;
this.lightMap = null; this.color = parameters.color !== undefined ? new THREE.Color( parameters.color ) : new THREE.Color( 0xffffff );
this.envMap = null; this.map = parameters.map !== undefined ? parameters.map : null;
this.combine = THREE.MultiplyOperation;
this.reflectivity = 1.0;
this.refractionRatio = 0.98;
this.fog = true; // implemented just in WebGLRenderer2 this.lightMap = parameters.lightMap !== undefined ? parameters.lightMap : null;
this.shading = THREE.FlatShading; this.envMap = parameters.envMap !== undefined ? parameters.envMap : null;
this.blending = THREE.NormalBlending; this.combine = parameters.combine !== undefined ? parameters.combine : THREE.MultiplyOperation;
this.depthTest = true; this.reflectivity = parameters.reflectivity !== undefined ? parameters.reflectivity : 1;
this.refractionRatio = parameters.refractionRatio !== undefined ? parameters.refractionRatio : 0.98;
this.wireframe = false; // this.enableFog = parameters.enableFog ? parameters.enableFog : true;
this.wireframeLinewidth = 1.0;
this.wireframeLinecap = 'round'; // implemented just in CanvasRenderer
this.wireframeLinejoin = 'round'; // implemented just in CanvasRenderer
this.vertexColors = false; this.shading = parameters.shading !== undefined ? parameters.shading : THREE.SmoothShading;
this.skinning = false;
this.morphTargets = false; this.wireframe = parameters.wireframe !== undefined ? parameters.wireframe : false;
this.wireframeLinewidth = parameters.wireframeLinewidth !== undefined ? parameters.wireframeLinewidth : 1;
this.wireframeLinecap = parameters.wireframeLinecap !== undefined ? parameters.wireframeLinecap : 'round';
this.wireframeLinejoin = parameters.wireframeLinejoin !== undefined ? parameters.wireframeLinejoin : 'round';
this.vertexColors = parameters.vertexColors !== undefined ? parameters.vertexColors : false;
this.skinning = parameters.skinning !== undefined ? parameters.skinning : false;
this.morphTargets = parameters.morphTargets !== undefined ? parameters.morphTargets : false;
}; };
THREE.ShadowVolumeDynamicMaterial.prototype = new THREE.Material();
THREE.ShadowVolumeDynamicMaterial.prototype.constructor = THREE.ShadowVolumeDynamicMaterial;
...@@ -63,11 +63,10 @@ THREE.Mesh.prototype.supr = THREE.Object3D.prototype; ...@@ -63,11 +63,10 @@ THREE.Mesh.prototype.supr = THREE.Object3D.prototype;
THREE.Mesh.prototype.getMorphTargetIndexByName = function( name ) { THREE.Mesh.prototype.getMorphTargetIndexByName = function( name ) {
if( this.morphTargetDictionary[ name ] !== undefined ) { if ( this.morphTargetDictionary[ name ] !== undefined ) {
return this.morphTargetDictionary[ name ]; return this.morphTargetDictionary[ name ];
} }
console.log( "THREE.Mesh.getMorphTargetIndexByName: morph target " + name + " does not exist. Returning 0." ); console.log( "THREE.Mesh.getMorphTargetIndexByName: morph target " + name + " does not exist. Returning 0." );
return 0; return 0;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @author szimek / https://github.com/szimek/ * @author szimek / https://github.com/szimek/
*/ */
THREE.RenderTarget = function ( width, height, options ) { THREE.WebGLRenderTarget = function ( width, height, options ) {
this.width = width; this.width = width;
this.height = height; this.height = height;
......
...@@ -2376,11 +2376,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2376,11 +2376,7 @@ THREE.WebGLRenderer = function ( parameters ) {
for ( m = 0, ml = object.materials.length; m < ml; m++ ) { for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
material = object.materials[ m ]; material = object.materials[ m ];
material.transparent ? addToFixedArray( transparent, material ) : addToFixedArray( opaque, material );
if ( ( material.opacity && material.opacity < 1.0 ) || material.blending != THREE.NormalBlending )
addToFixedArray( transparent, material );
else
addToFixedArray( opaque, material );
} }
...@@ -2406,31 +2402,14 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2406,31 +2402,14 @@ THREE.WebGLRenderer = function ( parameters ) {
for ( i = 0, l = buffer.materials.length; i < l; i++ ) { for ( i = 0, l = buffer.materials.length; i < l; i++ ) {
material = buffer.materials[ i ]; material = buffer.materials[ i ];
if ( material ) material.transparent ? addToFixedArray( transparent, material ) : addToFixedArray( opaque, material );
if ( material ) {
if ( ( material.opacity && material.opacity < 1.0 ) || material.blending != THREE.NormalBlending )
addToFixedArray( transparent, material );
else
addToFixedArray( opaque, material );
}
} }
} else { } else {
material = meshMaterial; material = meshMaterial;
if ( material ) material.transparent ? addToFixedArray( transparent, material ) : addToFixedArray( opaque, material );
if ( ( material.opacity && material.opacity < 1.0 ) || material.blending != THREE.NormalBlending ) {
addToFixedArray( transparent, material );
} else {
addToFixedArray( opaque, material );
}
} }
...@@ -2549,7 +2528,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2549,7 +2528,7 @@ THREE.WebGLRenderer = function ( parameters ) {
setBlending( THREE.NormalBlending ); setBlending( THREE.NormalBlending );
for ( o = 0; o < ol; o++ ) { for ( o = 0; o < ol; o ++ ) {
webglObject = scene.__webglObjects[ o ]; webglObject = scene.__webglObjects[ o ];
...@@ -2561,7 +2540,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2561,7 +2540,7 @@ THREE.WebGLRenderer = function ( parameters ) {
setObjectFaces( object ); setObjectFaces( object );
for( i = 0; i < opaque.count; i++ ) { for ( i = 0; i < opaque.count; i ++ ) {
material = opaque.list[ i ]; material = opaque.list[ i ];
...@@ -2604,7 +2583,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2604,7 +2583,7 @@ THREE.WebGLRenderer = function ( parameters ) {
// transparent pass // transparent pass
for ( o = 0; o < ol; o++ ) { for ( o = 0; o < ol; o ++ ) {
webglObject = scene.__webglObjects[ o ]; webglObject = scene.__webglObjects[ o ];
...@@ -2616,7 +2595,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2616,7 +2595,7 @@ THREE.WebGLRenderer = function ( parameters ) {
setObjectFaces( object ); setObjectFaces( object );
for( i = 0; i < transparent.count; i++ ) { for ( i = 0; i < transparent.count; i ++ ) {
material = transparent.list[ i ]; material = transparent.list[ i ];
...@@ -2644,7 +2623,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2644,7 +2623,7 @@ THREE.WebGLRenderer = function ( parameters ) {
setObjectFaces( object ); setObjectFaces( object );
for( i = 0; i < transparent.count; i++ ) { for ( i = 0; i < transparent.count; i ++ ) {
material = transparent.list[ i ]; material = transparent.list[ i ];
...@@ -2662,18 +2641,18 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2662,18 +2641,18 @@ THREE.WebGLRenderer = function ( parameters ) {
// render stencil shadows // render stencil shadows
if( stencil && scene.__webglShadowVolumes.length && scene.lights.length ) { if ( stencil && scene.__webglShadowVolumes.length && scene.lights.length ) {
renderStencilShadows( scene ); renderStencilShadows( scene );
} }
// render lens flares // render lens flares
if( scene.__webglLensFlares.length ) { if ( scene.__webglLensFlares.length ) {
renderLensFlares( scene, camera ); renderLensFlares( scene, camera );
} }
...@@ -2688,8 +2667,6 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2688,8 +2667,6 @@ THREE.WebGLRenderer = function ( parameters ) {
}; };
/* /*
* Stencil Shadows * Stencil Shadows
...@@ -2701,7 +2678,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2701,7 +2678,7 @@ THREE.WebGLRenderer = function ( parameters ) {
*/ */
function renderStencilShadows( scene ) { function renderStencilShadows( scene ) {
// setup stencil // setup stencil
_gl.enable( _gl.POLYGON_OFFSET_FILL ); _gl.enable( _gl.POLYGON_OFFSET_FILL );
...@@ -2709,40 +2686,39 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2709,40 +2686,39 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.enable( _gl.STENCIL_TEST ); _gl.enable( _gl.STENCIL_TEST );
_gl.depthMask( false ); _gl.depthMask( false );
_gl.colorMask( false, false, false, false ); _gl.colorMask( false, false, false, false );
_gl.stencilFunc( _gl.ALWAYS, 1, 0xFF ); _gl.stencilFunc( _gl.ALWAYS, 1, 0xFF );
_gl.stencilOpSeparate( _gl.BACK, _gl.KEEP, _gl.INCR, _gl.KEEP ); _gl.stencilOpSeparate( _gl.BACK, _gl.KEEP, _gl.INCR, _gl.KEEP );
_gl.stencilOpSeparate( _gl.FRONT, _gl.KEEP, _gl.DECR, _gl.KEEP ); _gl.stencilOpSeparate( _gl.FRONT, _gl.KEEP, _gl.DECR, _gl.KEEP );
// loop through all directional lights // loop through all directional lights
var l, ll = scene.lights.length; var l, ll = scene.lights.length;
var p; var p;
var light, lights = scene.lights; var light, lights = scene.lights;
var dirLight = []; var dirLight = [];
var object, geometryGroup, material; var object, geometryGroup, material;
var program; var program;
var p_uniforms; var p_uniforms;
var m_uniforms; var m_uniforms;
var attributes; var attributes;
var o, ol = scene.__webglShadowVolumes.length; var o, ol = scene.__webglShadowVolumes.length;
for( l = 0; l < ll; l++ ) { for ( l = 0; l < ll; l++ ) {
light = scene.lights[ l ]; light = scene.lights[ l ];
if( light instanceof THREE.DirectionalLight ) { if ( light instanceof THREE.DirectionalLight ) {
dirLight[ 0 ] = -light.position.x; dirLight[ 0 ] = -light.position.x;
dirLight[ 1 ] = -light.position.y; dirLight[ 1 ] = -light.position.y;
dirLight[ 2 ] = -light.position.z; dirLight[ 2 ] = -light.position.z;
// render all volumes // render all volumes
for( o = 0; o < ol; o++ ) { for ( o = 0; o < ol; o++ ) {
object = scene.__webglShadowVolumes[ o ].object; object = scene.__webglShadowVolumes[ o ].object;
geometryGroup = scene.__webglShadowVolumes[ o ].buffer; geometryGroup = scene.__webglShadowVolumes[ o ].buffer;
material = object.materials[ 0 ]; material = object.materials[ 0 ];
...@@ -2751,12 +2727,11 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2751,12 +2727,11 @@ THREE.WebGLRenderer = function ( parameters ) {
program = material.program, program = material.program,
p_uniforms = program.uniforms, p_uniforms = program.uniforms,
m_uniforms = material.uniforms, m_uniforms = material.uniforms,
attributes = program.attributes; attributes = program.attributes;
if ( _currentProgram !== program ) {
if( _currentProgram !== program ) {
_gl.useProgram( program ); _gl.useProgram( program );
_currentProgram = program; _currentProgram = program;
...@@ -2783,7 +2758,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2783,7 +2758,7 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.cullFace( _gl.BACK ); _gl.cullFace( _gl.BACK );
_gl.drawElements( _gl.TRIANGLES, geometryGroup.__webglFaceCount, _gl.UNSIGNED_SHORT, 0 ); _gl.drawElements( _gl.TRIANGLES, geometryGroup.__webglFaceCount, _gl.UNSIGNED_SHORT, 0 );
} }
} }
...@@ -2797,10 +2772,10 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2797,10 +2772,10 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.colorMask( true, true, true, true ); _gl.colorMask( true, true, true, true );
_gl.stencilFunc( _gl.NOTEQUAL, 0, 0xFF ); _gl.stencilFunc( _gl.NOTEQUAL, 0, 0xFF );
_gl.stencilOp( _gl.KEEP, _gl.KEEP, _gl.KEEP ); _gl.stencilOp( _gl.KEEP, _gl.KEEP, _gl.KEEP );
_gl.disable( _gl.DEPTH_TEST ); _gl.disable( _gl.DEPTH_TEST );
// draw darkening polygon // draw darkening polygon
_oldBlending = ""; _oldBlending = "";
_currentProgram = _stencilShadow.program; _currentProgram = _stencilShadow.program;
...@@ -2808,23 +2783,24 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2808,23 +2783,24 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.useProgram( _stencilShadow.program ); _gl.useProgram( _stencilShadow.program );
_gl.uniformMatrix4fv( _stencilShadow.projectionLocation, false, _projectionMatrixArray ); _gl.uniformMatrix4fv( _stencilShadow.projectionLocation, false, _projectionMatrixArray );
_gl.uniform1f( _stencilShadow.darknessLocation, _stencilShadow.darkness ); _gl.uniform1f( _stencilShadow.darknessLocation, _stencilShadow.darkness );
_gl.bindBuffer( _gl.ARRAY_BUFFER, _stencilShadow.vertexBuffer ); _gl.bindBuffer( _gl.ARRAY_BUFFER, _stencilShadow.vertexBuffer );
_gl.vertexAttribPointer( _stencilShadow.vertexLocation, 3, _gl.FLOAT, false, 0, 0 ); _gl.vertexAttribPointer( _stencilShadow.vertexLocation, 3, _gl.FLOAT, false, 0, 0 );
_gl.enableVertexAttribArray( _stencilShadow.vertexLocation ); _gl.enableVertexAttribArray( _stencilShadow.vertexLocation );
_gl.blendFunc( _gl.ONE, _gl.ONE_MINUS_SRC_ALPHA ); _gl.blendFunc( _gl.ONE, _gl.ONE_MINUS_SRC_ALPHA );
_gl.blendEquation( _gl.FUNC_ADD ); _gl.blendEquation( _gl.FUNC_ADD );
_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, _stencilShadow.elementBuffer ); _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, _stencilShadow.elementBuffer );
_gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 ); _gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 );
// disable stencil // disable stencil
_gl.disable ( _gl.STENCIL_TEST ); _gl.disable( _gl.STENCIL_TEST );
_gl.enable ( _gl.DEPTH_TEST ); _gl.enable( _gl.DEPTH_TEST );
_gl.depthMask( _currentDepthMask ); _gl.depthMask( _currentDepthMask );
} }
/* /*
...@@ -2837,7 +2813,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2837,7 +2813,7 @@ THREE.WebGLRenderer = function ( parameters ) {
*/ */
function renderLensFlares( scene, camera ) { function renderLensFlares( scene, camera ) {
var object, objectZ, geometryGroup, material; var object, objectZ, geometryGroup, material;
var o, ol = scene.__webglLensFlares.length; var o, ol = scene.__webglLensFlares.length;
var f, fl, flare; var f, fl, flare;
...@@ -2869,7 +2845,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2869,7 +2845,7 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.uniform1i( uniforms.map, 0 ); _gl.uniform1i( uniforms.map, 0 );
_gl.activeTexture( _gl.TEXTURE0 ); _gl.activeTexture( _gl.TEXTURE0 );
_gl.uniform1f( uniforms.opacity, 1 ); _gl.uniform1f( uniforms.opacity, 1 );
_gl.uniform1f( uniforms.rotation, 0 ); _gl.uniform1f( uniforms.rotation, 0 );
_gl.uniform2fv( uniforms.scale, scale ); _gl.uniform2fv( uniforms.scale, scale );
...@@ -2886,34 +2862,34 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2886,34 +2862,34 @@ THREE.WebGLRenderer = function ( parameters ) {
_gl.depthMask( false ); _gl.depthMask( false );
for( o = 0; o < ol; o++ ) { for ( o = 0; o < ol; o ++ ) {
// calc object screen position // calc object screen position
object = scene.__webglLensFlares[ o ].object; object = scene.__webglLensFlares[ o ].object;
tempPosition.set( object.matrixWorld.n14, object.matrixWorld.n24, object.matrixWorld.n34 ); tempPosition.set( object.matrixWorld.n14, object.matrixWorld.n24, object.matrixWorld.n34 );
camera.matrixWorldInverse.multiplyVector3( tempPosition ); camera.matrixWorldInverse.multiplyVector3( tempPosition );
objectZ = tempPosition.z; objectZ = tempPosition.z;
camera.projectionMatrix.multiplyVector3( tempPosition ); camera.projectionMatrix.multiplyVector3( tempPosition );
// setup arrays for gl programs // setup arrays for gl programs
screenPosition[ 0 ] = tempPosition.x; screenPosition[ 0 ] = tempPosition.x;
screenPosition[ 1 ] = tempPosition.y; screenPosition[ 1 ] = tempPosition.y;
screenPosition[ 2 ] = tempPosition.z; screenPosition[ 2 ] = tempPosition.z;
screenPositionPixels[ 0 ] = screenPosition[ 0 ] * halfViewportWidth + halfViewportWidth; screenPositionPixels[ 0 ] = screenPosition[ 0 ] * halfViewportWidth + halfViewportWidth;
screenPositionPixels[ 1 ] = screenPosition[ 1 ] * halfViewportHeight + halfViewportHeight; screenPositionPixels[ 1 ] = screenPosition[ 1 ] * halfViewportHeight + halfViewportHeight;
// save current RGB to temp texture // save current RGB to temp texture
_gl.copyTexSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, screenPositionPixels[ 0 ] - 8, screenPositionPixels[ 1 ] - 8, 16, 16 ); _gl.copyTexSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, screenPositionPixels[ 0 ] - 8, screenPositionPixels[ 1 ] - 8, 16, 16 );
// render pink quad // render pink quad
_gl.uniform3fv( uniforms.screenPosition, screenPosition ); _gl.uniform3fv( uniforms.screenPosition, screenPosition );
...@@ -2927,17 +2903,16 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2927,17 +2903,16 @@ THREE.WebGLRenderer = function ( parameters ) {
// read back // read back
try { try {
_gl.readPixels( screenPositionPixels[ 0 ] - 8, screenPositionPixels[ 1 ] - 8, 16, 16, _gl.RGBA, _gl.UNSIGNED_BYTE, _lensFlare.readBackPixels ); _gl.readPixels( screenPositionPixels[ 0 ] - 8, screenPositionPixels[ 1 ] - 8, 16, 16, _gl.RGBA, _gl.UNSIGNED_BYTE, _lensFlare.readBackPixels );
} } catch( error ) {
catch( error ) {
console.log( "WebGLRenderer.renderLensFlare: readPixels failed!" ); console.log( "WebGLRenderer.renderLensFlare: readPixels failed!" );
} }
if( _gl.getError()) { if ( _gl.getError() ) {
console.log( "WebGLRenderer.renderLensFlare: readPixels failed!" ); console.log( "WebGLRenderer.renderLensFlare: readPixels failed!" );
} }
...@@ -2953,99 +2928,98 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -2953,99 +2928,98 @@ THREE.WebGLRenderer = function ( parameters ) {
sampleIndex = ( sampleMidX - sampleX ) + ( sampleMidY - sampleY ); // upper left sampleIndex = ( sampleMidX - sampleX ) + ( sampleMidY - sampleY ); // upper left
if( _lensFlare.readBackPixels[ sampleIndex + 0 ] === 255 && if( _lensFlare.readBackPixels[ sampleIndex + 0 ] === 255 &&
_lensFlare.readBackPixels[ sampleIndex + 1 ] === 0 && _lensFlare.readBackPixels[ sampleIndex + 1 ] === 0 &&
_lensFlare.readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2; _lensFlare.readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2;
sampleIndex = ( sampleMidX + sampleX ) + ( sampleMidY - sampleY ); // upper right sampleIndex = ( sampleMidX + sampleX ) + ( sampleMidY - sampleY ); // upper right
if( readBackPixels[ sampleIndex + 0 ] === 255 && if( readBackPixels[ sampleIndex + 0 ] === 255 &&
readBackPixels[ sampleIndex + 1 ] === 0 && readBackPixels[ sampleIndex + 1 ] === 0 &&
readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2; readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2;
sampleIndex = ( sampleMidX + sampleX ) + ( sampleMidY + sampleY ); // lower right sampleIndex = ( sampleMidX + sampleX ) + ( sampleMidY + sampleY ); // lower right
if( readBackPixels[ sampleIndex + 0 ] === 255 && if( readBackPixels[ sampleIndex + 0 ] === 255 &&
readBackPixels[ sampleIndex + 1 ] === 0 && readBackPixels[ sampleIndex + 1 ] === 0 &&
readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2; readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2;
sampleIndex = ( sampleMidX - sampleX ) + ( sampleMidY + sampleY ); // lower left sampleIndex = ( sampleMidX - sampleX ) + ( sampleMidY + sampleY ); // lower left
if( readBackPixels[ sampleIndex + 0 ] === 255 && if( readBackPixels[ sampleIndex + 0 ] === 255 &&
readBackPixels[ sampleIndex + 1 ] === 0 && readBackPixels[ sampleIndex + 1 ] === 0 &&
readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2; readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2;
sampleIndex = sampleMidX + sampleMidY; // center sampleIndex = sampleMidX + sampleMidY; // center
if( readBackPixels[ sampleIndex + 0 ] === 255 && if( readBackPixels[ sampleIndex + 0 ] === 255 &&
readBackPixels[ sampleIndex + 1 ] === 0 && readBackPixels[ sampleIndex + 1 ] === 0 &&
readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2; readBackPixels[ sampleIndex + 2 ] === 255 ) visibility += 0.2;
object.positionScreen.x = screenPosition[ 0 ]; object.positionScreen.x = screenPosition[ 0 ];
object.positionScreen.y = screenPosition[ 1 ]; object.positionScreen.y = screenPosition[ 1 ];
object.positionScreen.z = screenPosition[ 2 ]; object.positionScreen.z = screenPosition[ 2 ];
if( object.customUpdateCallback ) { if ( object.customUpdateCallback ) {
object.customUpdateCallback( visibility, object ); object.customUpdateCallback( visibility, object );
} else { } else {
object.updateLensFlares( visibility ); object.updateLensFlares( visibility );
} }
// restore graphics // restore graphics
_gl.uniform1i( uniforms.renderPink, 0 ); _gl.uniform1i( uniforms.renderPink, 0 );
_gl.disable( _gl.DEPTH_TEST ); _gl.disable( _gl.DEPTH_TEST );
_gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 ); _gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 );
} }
// loop through all lens flares and draw their flares // loop through all lens flares and draw their flares
// setup gl // setup gl
for( o = 0; o < ol; o++ ) { for ( o = 0; o < ol; o ++ ) {
object = scene.__webglLensFlares[ o ].object; object = scene.__webglLensFlares[ o ].object;
for( f = 0, fl = object.lensFlares.length; f < fl; f++ ) { for ( f = 0, fl = object.lensFlares.length; f < fl; f ++ ) {
flare = object.lensFlares[ f ]; flare = object.lensFlares[ f ];
if( flare.opacity > 0.001 && flare.scale > 0.001 ) { if ( flare.opacity > 0.001 && flare.scale > 0.001 ) {
screenPosition[ 0 ] = flare.x; screenPosition[ 0 ] = flare.x;
screenPosition[ 1 ] = flare.y; screenPosition[ 1 ] = flare.y;
screenPosition[ 2 ] = flare.z; screenPosition[ 2 ] = flare.z;
size = flare.size * flare.scale / _viewportHeight; size = flare.size * flare.scale / _viewportHeight;
scale[ 0 ] = size * invAspect; scale[ 0 ] = size * invAspect;
scale[ 1 ] = size; scale[ 1 ] = size;
_gl.uniform3fv( uniforms.screenPosition, screenPosition ); _gl.uniform3fv( uniforms.screenPosition, screenPosition );
_gl.uniform1f( uniforms.rotation, flare.rotation ); _gl.uniform1f( uniforms.rotation, flare.rotation );
_gl.uniform2fv( uniforms.scale, scale ); _gl.uniform2fv( uniforms.scale, scale );
_gl.uniform1f( uniforms.opacity, flare.opacity ); _gl.uniform1f( uniforms.opacity, flare.opacity );
setBlending( flare.blending ); setBlending( flare.blending );
setTexture( flare.texture, 0 ); setTexture( flare.texture, 0 );
// todo: only draw if loaded // todo: only draw if loaded
_gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 ); _gl.drawElements( _gl.TRIANGLES, 6, _gl.UNSIGNED_SHORT, 0 );
} }
} }
} }
// restore gl // restore gl
_gl.enable( _gl.CULL_FACE ); _gl.enable( _gl.CULL_FACE );
_gl.enable( _gl.DEPTH_TEST ); _gl.enable( _gl.DEPTH_TEST );
_gl.depthMask( _currentDepthMask ); _gl.depthMask( _currentDepthMask );
}
}
function setupMatrices ( object, camera ) { function setupMatrices ( object, camera ) {
...@@ -3053,7 +3027,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3053,7 +3027,7 @@ THREE.WebGLRenderer = function ( parameters ) {
object._modelViewMatrix.multiplyToArray( camera.matrixWorldInverse, object.matrixWorld, object._modelViewMatrixArray ); object._modelViewMatrix.multiplyToArray( camera.matrixWorldInverse, object.matrixWorld, object._modelViewMatrixArray );
THREE.Matrix4.makeInvert3x3( object._modelViewMatrix ).transposeIntoArray( object._normalMatrixArray ); THREE.Matrix4.makeInvert3x3( object._modelViewMatrix ).transposeIntoArray( object._normalMatrixArray );
}; }
this.initWebGLObjects = function ( scene ) { this.initWebGLObjects = function ( scene ) {
...@@ -3092,7 +3066,7 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3092,7 +3066,7 @@ THREE.WebGLRenderer = function ( parameters ) {
updateObject( scene.__webglShadowVolumes[ o ].object, scene ); updateObject( scene.__webglShadowVolumes[ o ].object, scene );
} }
for ( var o = 0, ol = scene.__webglLensFlares.length; o < ol; o ++ ) { for ( var o = 0, ol = scene.__webglLensFlares.length; o < ol; o ++ ) {
updateObject( scene.__webglLensFlares[ o ].object, scene ); updateObject( scene.__webglLensFlares[ o ].object, scene );
...@@ -3165,9 +3139,9 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3165,9 +3139,9 @@ THREE.WebGLRenderer = function ( parameters ) {
} }
} else if ( object instanceof THREE.LensFlare ) { } else if ( object instanceof THREE.LensFlare ) {
addBuffer( scene.__webglLensFlares, undefined, object ); addBuffer( scene.__webglLensFlares, undefined, object );
} else if ( object instanceof THREE.Ribbon ) { } else if ( object instanceof THREE.Ribbon ) {
geometry = object.geometry; geometry = object.geometry;
...@@ -3404,19 +3378,21 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3404,19 +3378,21 @@ THREE.WebGLRenderer = function ( parameters ) {
function addBuffer ( objlist, buffer, object ) { function addBuffer ( objlist, buffer, object ) {
objlist.push( { buffer: buffer, object: object, objlist.push( {
opaque: { list: [], count: 0 }, buffer: buffer, object: object,
transparent: { list: [], count: 0 } opaque: { list: [], count: 0 },
} ); transparent: { list: [], count: 0 }
} );
}; };
function addBufferImmediate ( objlist, object ) { function addBufferImmediate ( objlist, object ) {
objlist.push( { object: object, objlist.push( {
opaque: { list: [], count: 0 }, object: object,
transparent: { list: [], count: 0 } opaque: { list: [], count: 0 },
} ); transparent: { list: [], count: 0 }
} );
}; };
...@@ -3566,13 +3542,13 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3566,13 +3542,13 @@ THREE.WebGLRenderer = function ( parameters ) {
"attribute vec2 uv2;", "attribute vec2 uv2;",
"#ifdef USE_COLOR", "#ifdef USE_COLOR",
"attribute vec3 color;", "attribute vec3 color;",
"#endif", "#endif",
"#ifdef USE_MORPHTARGETS", "#ifdef USE_MORPHTARGETS",
"attribute vec3 morphTarget0;", "attribute vec3 morphTarget0;",
"attribute vec3 morphTarget1;", "attribute vec3 morphTarget1;",
"attribute vec3 morphTarget2;", "attribute vec3 morphTarget2;",
...@@ -3581,18 +3557,18 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3581,18 +3557,18 @@ THREE.WebGLRenderer = function ( parameters ) {
"attribute vec3 morphTarget5;", "attribute vec3 morphTarget5;",
"attribute vec3 morphTarget6;", "attribute vec3 morphTarget6;",
"attribute vec3 morphTarget7;", "attribute vec3 morphTarget7;",
"#endif", "#endif",
"#ifdef USE_SKINNING", "#ifdef USE_SKINNING",
"attribute vec4 skinVertexA;", "attribute vec4 skinVertexA;",
"attribute vec4 skinVertexB;", "attribute vec4 skinVertexB;",
"attribute vec4 skinIndex;", "attribute vec4 skinIndex;",
"attribute vec4 skinWeight;", "attribute vec4 skinWeight;",
"#endif", "#endif",
"" ""
].join("\n"); ].join("\n");
...@@ -3705,10 +3681,10 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3705,10 +3681,10 @@ THREE.WebGLRenderer = function ( parameters ) {
switch ( blending ) { switch ( blending ) {
case THREE.AdditiveAlphaBlending: case THREE.AdditiveAlphaBlending:
_gl.blendEquation( _gl.FUNC_ADD ); _gl.blendEquation( _gl.FUNC_ADD );
_gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE ); _gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE );
break; break;
case THREE.AdditiveBlending: case THREE.AdditiveBlending:
......
...@@ -52,7 +52,6 @@ COMMON_FILES = [ ...@@ -52,7 +52,6 @@ COMMON_FILES = [
'materials/ParticleCanvasMaterial.js', 'materials/ParticleCanvasMaterial.js',
'materials/ParticleDOMMaterial.js', 'materials/ParticleDOMMaterial.js',
'materials/Texture.js', 'materials/Texture.js',
'materials/RenderTarget.js',
'materials/Uniforms.js', 'materials/Uniforms.js',
'objects/Particle.js', 'objects/Particle.js',
'objects/ParticleSystem.js', 'objects/ParticleSystem.js',
...@@ -73,6 +72,7 @@ COMMON_FILES = [ ...@@ -73,6 +72,7 @@ COMMON_FILES = [
'renderers/SVGRenderer.js', 'renderers/SVGRenderer.js',
'renderers/WebGLShaders.js', 'renderers/WebGLShaders.js',
'renderers/WebGLRenderer.js', 'renderers/WebGLRenderer.js',
'renderers/WebGLRenderTarget.js',
'renderers/SoundRenderer.js', 'renderers/SoundRenderer.js',
'renderers/renderables/RenderableVertex.js', 'renderers/renderables/RenderableVertex.js',
'renderers/renderables/RenderableFace3.js', 'renderers/renderables/RenderableFace3.js',
...@@ -273,7 +273,6 @@ WEBGL_FILES = [ ...@@ -273,7 +273,6 @@ WEBGL_FILES = [
'materials/ParticleBasicMaterial.js', 'materials/ParticleBasicMaterial.js',
'materials/ShadowVolumeDynamicMaterial.js', 'materials/ShadowVolumeDynamicMaterial.js',
'materials/Texture.js', 'materials/Texture.js',
'materials/RenderTarget.js',
'materials/Uniforms.js', 'materials/Uniforms.js',
'objects/Particle.js', 'objects/Particle.js',
'objects/ParticleSystem.js', 'objects/ParticleSystem.js',
...@@ -291,7 +290,8 @@ WEBGL_FILES = [ ...@@ -291,7 +290,8 @@ WEBGL_FILES = [
'renderers/Projector.js', 'renderers/Projector.js',
'renderers/SoundRenderer.js', 'renderers/SoundRenderer.js',
'renderers/WebGLShaders.js', 'renderers/WebGLShaders.js',
'renderers/WebGLRenderer.js' 'renderers/WebGLRenderer.js',
'renderers/WebGLRenderTarget.js'
] ]
def merge(files): def merge(files):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册