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

`*.material`→ `*.materials`

上级 309fffe9
此差异已折叠。
此差异已折叠。
此差异已折叠。
......@@ -407,7 +407,7 @@
bird = birds[ i ];
color = bird.material[0].color;
color = bird.materials[ 0 ].color;
color.r = color.g = color.b = ( 500 - bird.position.z ) / 1000;
color.updateStyleString();
......
......@@ -54,7 +54,7 @@
info.innerHTML = 'Drag to spin the cube';
container.appendChild( info );
camera = new THREE.Camera( 70, window.innerWidth / window.innerHeight, 1, 10000 );
camera = new THREE.Camera( 70, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.y = 150;
camera.position.z = 500;
camera.target.position.y = 150;
......
......@@ -93,7 +93,7 @@
if ( intersects.length > 0 ) {
intersects[ 0 ].object.material[ 0 ].color.setHex( Math.random() * 0xffffff | 0x80000000 );
intersects[ 0 ].object.materials[ 0 ].color.setHex( Math.random() * 0xffffff );
var particle = new THREE.Particle( new THREE.ParticleCircleMaterial( { color: 0x000000 } ) );
particle.position = intersects[ 0 ].point;
......
......@@ -205,14 +205,14 @@
if ( intersects[ 0 ].face != rollOveredFace ) {
if ( rollOveredFace ) rollOveredFace.material = [];
if ( rollOveredFace ) rollOveredFace.materials = [];
rollOveredFace = intersects[ 0 ].face;
rollOveredFace.material = [ new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5 } ) ];
rollOveredFace.materials = [ new THREE.MeshBasicMaterial( { color: 0xff0000, opacity: 0.5 } ) ];
}
} else if ( rollOveredFace ) {
rollOveredFace.material = [];
rollOveredFace.materials = [];
rollOveredFace = null;
}
......
......@@ -158,6 +158,16 @@
];
for ( var i = 0, l = geometry.faces.length; i < l; i ++ ) {
var face = geometry.faces[ i ];
if ( Math.random() > 0.5 ) face.material = [ materials[ Math.floor( Math.random() * materials.length ) ] ];
}
materials.push( new THREE.MeshFaceMaterial() );
for ( var i = 0; i < 5000; i ++ ) {
var mesh = new THREE.Mesh( geometry, materials[ Math.floor( Math.random() * materials.length ) ] );
......
......@@ -2,7 +2,7 @@
* @author mr.doob / http://mrdoob.com/
*/
THREE.Face3 = function ( a, b, c, normal, material ) {
THREE.Face3 = function ( a, b, c, normal, materials ) {
this.a = a;
this.b = b;
......@@ -12,7 +12,7 @@ THREE.Face3 = function ( a, b, c, normal, material ) {
this.normal = normal instanceof THREE.Vector3 ? normal : new THREE.Vector3();
this.vertexNormals = normal instanceof Array ? normal : [];
this.material = material instanceof Array ? material : [ material ];
this.materials = materials instanceof Array ? materials : [ materials ];
};
......@@ -24,4 +24,4 @@ THREE.Face3.prototype = {
}
}
};
......@@ -2,7 +2,7 @@
* @author mr.doob / http://mrdoob.com/
*/
THREE.Face4 = function ( a, b, c, d, normal, material ) {
THREE.Face4 = function ( a, b, c, d, normal, materials ) {
this.a = a;
this.b = b;
......@@ -13,7 +13,7 @@ THREE.Face4 = function ( a, b, c, d, normal, material ) {
this.normal = normal instanceof THREE.Vector3 ? normal : new THREE.Vector3();
this.vertexNormals = normal instanceof Array ? normal : [];
this.material = material instanceof Array ? material : [ material ];
this.materials = materials instanceof Array ? materials : [ materials ];
};
......@@ -26,4 +26,4 @@ THREE.Face4.prototype = {
}
}
};
......@@ -293,7 +293,7 @@ THREE.Geometry.prototype = {
if ( this.vertices.length > 0 ) {
this.bbox = { 'x': [ this.vertices[ 0 ].position.x, this.vertices[ 0 ].position.x ],
this.boundingBox = { 'x': [ this.vertices[ 0 ].position.x, this.vertices[ 0 ].position.x ],
'y': [ this.vertices[ 0 ].position.y, this.vertices[ 0 ].position.y ],
'z': [ this.vertices[ 0 ].position.z, this.vertices[ 0 ].position.z ] };
......@@ -301,33 +301,33 @@ THREE.Geometry.prototype = {
vertex = this.vertices[ v ];
if ( vertex.position.x < this.bbox.x[ 0 ] ) {
if ( vertex.position.x < this.boundingBox.x[ 0 ] ) {
this.bbox.x[ 0 ] = vertex.position.x;
this.boundingBox.x[ 0 ] = vertex.position.x;
} else if ( vertex.position.x > this.bbox.x[ 1 ] ) {
} else if ( vertex.position.x > this.boundingBox.x[ 1 ] ) {
this.bbox.x[ 1 ] = vertex.position.x;
this.boundingBox.x[ 1 ] = vertex.position.x;
}
if ( vertex.position.y < this.bbox.y[ 0 ] ) {
if ( vertex.position.y < this.boundingBox.y[ 0 ] ) {
this.bbox.y[ 0 ] = vertex.position.y;
this.boundingBox.y[ 0 ] = vertex.position.y;
} else if ( vertex.position.y > this.bbox.y[ 1 ] ) {
} else if ( vertex.position.y > this.boundingBox.y[ 1 ] ) {
this.bbox.y[ 1 ] = vertex.position.y;
this.boundingBox.y[ 1 ] = vertex.position.y;
}
if ( vertex.position.z < this.bbox.z[ 0 ] ) {
if ( vertex.position.z < this.boundingBox.z[ 0 ] ) {
this.bbox.z[ 0 ] = vertex.position.z;
this.boundingBox.z[ 0 ] = vertex.position.z;
} else if ( vertex.position.z > this.bbox.z[ 1 ] ) {
} else if ( vertex.position.z > this.boundingBox.z[ 1 ] ) {
this.bbox.z[ 1 ] = vertex.position.z;
this.boundingBox.z[ 1 ] = vertex.position.z;
}
......@@ -385,9 +385,9 @@ THREE.Geometry.prototype = {
for ( f = 0, fl = this.faces.length; f < fl; f++ ) {
face = this.faces[ f ];
material = face.material;
materials = face.materials;
mhash = materialHash( material );
mhash = materialHash( materials );
if ( hash_map[ mhash ] == undefined ) {
......@@ -399,7 +399,7 @@ THREE.Geometry.prototype = {
if ( this.geometryChunks[ ghash ] == undefined ) {
this.geometryChunks[ ghash ] = { 'faces': [], 'material': material, 'vertices': 0 };
this.geometryChunks[ ghash ] = { 'faces': [], 'materials': materials, 'vertices': 0 };
}
......@@ -412,7 +412,7 @@ THREE.Geometry.prototype = {
if ( this.geometryChunks[ ghash ] == undefined ) {
this.geometryChunks[ ghash ] = { 'faces': [], 'material': material, 'vertices': 0 };
this.geometryChunks[ ghash ] = { 'faces': [], 'materials': materials, 'vertices': 0 };
}
......
......@@ -53,7 +53,7 @@ var GeometryUtils = {
}
faceCopy.material = face.material.slice();
faceCopy.materials = face.materials.slice();
faces1.push( faceCopy );
......
......@@ -28,7 +28,11 @@ THREE.LineBasicMaterial = function ( parameters ) {
if ( parameters.linejoin !== undefined ) this.linejoin = parameters.linejoin;
}
this.toString = function () {
};
THREE.LineBasicMaterial.prototype = {
toString: function () {
return 'THREE.LineBasicMaterial (<br/>' +
'color: ' + this.color + '<br/>' +
......@@ -39,6 +43,6 @@ THREE.LineBasicMaterial = function ( parameters ) {
'linejoin: ' + this.linejoin +'<br/>' +
')';
};
}
};
}
......@@ -65,7 +65,11 @@ THREE.MeshBasicMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.MeshBasicMaterial.prototype = {
toString: function () {
return 'THREE.MeshBasicMaterial (<br/>' +
'id: ' + this.id + '<br/>' +
......@@ -86,8 +90,8 @@ THREE.MeshBasicMaterial = function ( parameters ) {
'wireframe_linejoin: ' + this.wireframe_linejoin +'<br/>' +
')';
};
}
}
};
THREE.MeshBasicMaterialCounter = { value: 0 };
......@@ -36,10 +36,14 @@ THREE.MeshDepthMaterial = function ( parameters ) {
this.__farPlusNear = this.far + this.near;
this.__farMinusNear = this.far - this.near;
this.toString = function () {
};
THREE.MeshDepthMaterial.prototype = {
toString: function () {
return 'THREE.MeshDepthMaterial';
};
}
}
};
......@@ -4,10 +4,14 @@
THREE.MeshFaceMaterial = function () {
this.toString = function () {
};
THREE.MeshFaceMaterial.prototype = {
toString: function () {
return 'THREE.MeshFaceMaterial';
};
}
};
......@@ -65,7 +65,11 @@ THREE.MeshLambertMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.MeshLambertMaterial.prototype = {
toString: function () {
return 'THREE.MeshLambertMaterial (<br/>' +
'id: ' + this.id + '<br/>' +
......@@ -87,7 +91,7 @@ THREE.MeshLambertMaterial = function ( parameters ) {
'wireframe_linejoin: ' + this.wireframe_linejoin +'<br/>' +
' )';
};
}
};
......
......@@ -14,7 +14,6 @@ THREE.MeshNormalMaterial = function ( parameters ) {
this.shading = THREE.FlatShading;
this.blending = THREE.NormalBlending;
if ( parameters ) {
if ( parameters.opacity !== undefined ) this.opacity = parameters.opacity;
......@@ -23,10 +22,14 @@ THREE.MeshNormalMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.MeshNormalMaterial.prototype = {
toString: function () {
return 'THREE.MeshNormalMaterial';
};
}
}
};
......@@ -80,7 +80,11 @@ THREE.MeshPhongMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.MeshPhongMaterial.prototype = {
toString: function () {
return 'THREE.MeshPhongMaterial (<br/>' +
'id: ' + this.id + '<br/>' +
......@@ -104,9 +108,9 @@ THREE.MeshPhongMaterial = function ( parameters ) {
'wireframe_linewidth: ' + this.wireframe_linewidth + '<br/>' +
'wireframe_linecap: ' + this.wireframe_linecap +'<br/>' +
'wireframe_linejoin: ' + this.wireframe_linejoin +'<br/>' +
+ ')';
')';
};
}
};
......
......@@ -5,7 +5,6 @@
* fragment_shader: <string>,
* vertex_shader: <string>,
* uniforms: { "parameter1": { type: "f", value: 1.0 }, "parameter2": { type: "i" value2: 2 } },
* shading: THREE.SmoothShading,
* blending: THREE.NormalBlending,
* wireframe: <boolean>,
......@@ -47,7 +46,11 @@ THREE.MeshShaderMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.MeshShaderMaterial.prototype = {
toString: function () {
return 'THREE.MeshShaderMaterial (<br/>' +
'id: ' + this.id + '<br/>' +
......@@ -59,8 +62,8 @@ THREE.MeshShaderMaterial = function ( parameters ) {
'wireframe_linejoin: ' + this.wireframe_linejoin +'<br/>' +
')';
};
}
}
};
THREE.MeshShaderMaterialCounter = { value: 0 };
......@@ -27,7 +27,11 @@ THREE.ParticleBasicMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.ParticleBasicMaterial.prototype = {
toString: function () {
return 'THREE.ParticleBasicMaterial (<br/>' +
'color: ' + this.color + '<br/>' +
......@@ -36,6 +40,6 @@ THREE.ParticleBasicMaterial = function ( parameters ) {
'blending: ' + this.blending + '<br/>' +
')';
};
}
};
......@@ -22,7 +22,11 @@ THREE.ParticleCircleMaterial = function ( parameters ) {
}
this.toString = function () {
};
THREE.ParticleCircleMaterial.prototype = {
toString: function () {
return 'THREE.ParticleCircleMaterial (<br/>' +
'color: ' + this.color + '<br/>' +
......@@ -30,6 +34,6 @@ THREE.ParticleCircleMaterial = function ( parameters ) {
'blending: ' + this.blending + '<br/>' +
')';
};
}
};
......@@ -6,10 +6,15 @@ THREE.ParticleDOMMaterial = function ( domElement ) {
this.domElement = domElement;
this.toString = function () {
};
THREE.ParticleDOMMaterial.prototype = {
toString: function () {
return 'THREE.ParticleDOMMaterial ( domElement: ' + this.domElement + ' )';
};
}
};
......@@ -15,7 +15,11 @@ THREE.Texture = function ( image, mapping, wrap_s, wrap_t, mag_filter, min_filte
this.mag_filter = mag_filter !== undefined ? mag_filter : THREE.LinearFilter;
this.min_filter = min_filter !== undefined ? min_filter : THREE.LinearMipMapLinearFilter;
this.toString = function () {
};
THREE.Texture.prototype = {
toString: function () {
return 'THREE.Texture (<br/>' +
'image: ' + this.image + '<br/>' +
......@@ -25,7 +29,7 @@ THREE.Texture = function ( image, mapping, wrap_s, wrap_t, mag_filter, min_filte
'min_filter: ' + this.min_filter + '<br/>' +
')';
};
}
};
......
......@@ -2,12 +2,12 @@
* @author mr.doob / http://mrdoob.com/
*/
THREE.Line = function ( geometry, material ) {
THREE.Line = function ( geometry, materials ) {
THREE.Object3D.call( this );
this.geometry = geometry;
this.material = material instanceof Array ? material : [ material ];
this.materials = materials instanceof Array ? materials : [ materials ];
};
......
......@@ -3,50 +3,21 @@
* @author alteredq / http://alteredqualia.com/
*/
THREE.Mesh = function ( geometry, material/*, normUVs*/ ) {
THREE.Mesh = function ( geometry, materials ) {
THREE.Object3D.call( this );
this.geometry = geometry;
this.material = material instanceof Array ? material : [ material ];
this.materials = materials instanceof Array ? materials : [ materials ];
this.flipSided = false;
this.doubleSided = false;
this.overdraw = false;
this.overdraw = false; // TODO: Move to material?
// if ( normUVs ) this.normalizeUVs();
// this.geometry.boundingBox ||this.geometry.computeBoundingBox();
this.geometry.boundingSphere || this.geometry.computeBoundingSphere();
};
THREE.Mesh.prototype = new THREE.Object3D();
THREE.Mesh.prototype.constructor = THREE.Mesh;
/*
TODO: This doesn't completely fix the issue. Needs to be handled directly in the CanvasRenderer
THREE.Mesh.prototype.normalizeUVs = function () {
var i, il, j, jl, uvs;
for ( i = 0, il = this.geometry.uvs.length; i < il; i++ ) {
uvs = this.geometry.uvs[ i ];
for ( j = 0, jl = uvs.length; j < jl; j++ ) {
// texture repeat
// (WebGL does this by default but canvas renderer needs to do it explicitly)
if( uvs[ j ].u != 1.0 ) uvs[ j ].u = uvs[ j ].u - Math.floor( uvs[ j ].u );
if( uvs[ j ].v != 1.0 ) uvs[ j ].v = uvs[ j ].v - Math.floor( uvs[ j ].v );
}
}
};
*/
......@@ -2,7 +2,7 @@
* @author mr.doob / http://mrdoob.com/
*/
THREE.Object3D = function ( material ) {
THREE.Object3D = function () {
this.id = THREE.Object3DCounter.value ++;
......@@ -17,10 +17,14 @@ THREE.Object3D = function ( material ) {
this.screen = new THREE.Vector3();
this.visible = true;
this.autoUpdateMatrix = true;
this.visible = true;
};
THREE.Object3D.prototype = {
this.updateMatrix = function () {
updateMatrix: function () {
this.matrixPosition = THREE.Matrix4.translationMatrix( this.position.x, this.position.y, this.position.z );
......@@ -34,7 +38,7 @@ THREE.Object3D = function ( material ) {
this.matrix.multiplySelf( this.rotationMatrix );
this.matrix.multiplySelf( this.scaleMatrix );
};
}
};
......
......@@ -2,11 +2,12 @@
* @author mr.doob / http://mrdoob.com/
*/
THREE.Particle = function ( material ) {
THREE.Particle = function ( materials ) {
THREE.Object3D.call( this );
this.material = material instanceof Array ? material : [ material ];
this.materials = materials instanceof Array ? materials : [ materials ];
this.autoUpdateMatrix = false;
};
......
......@@ -110,7 +110,7 @@ THREE.CanvasRenderer = function () {
_renderList = _projector.projectScene( scene, camera, this.sortElements );
/* DEBUG
_context.fillStyle = 'rgba(0, 255, 255, 0.5)';
_context.fillStyle = 'rgba( 0, 255, 255, 0.5 )';
_context.fillRect( _clipRect.getX(), _clipRect.getY(), _clipRect.getWidth(), _clipRect.getHeight() );
*/
......@@ -133,9 +133,9 @@ THREE.CanvasRenderer = function () {
_v1 = element;
_v1.x *= _canvasWidthHalf; _v1.y *= _canvasHeightHalf;
for ( m = 0, ml = element.material.length; m < ml; m++ ) {
for ( m = 0, ml = element.materials.length; m < ml; m++ ) {
renderParticle( _v1, element, element.material[ m ], scene );
renderParticle( _v1, element, element.materials[ m ], scene );
}
......@@ -151,11 +151,11 @@ THREE.CanvasRenderer = function () {
if ( _clipRect.instersects( _bboxRect ) ) {
m = 0; ml = element.material.length;
m = 0; ml = element.materials.length;
while ( m < ml ) {
renderLine( _v1, _v2, element, element.material[ m ++ ], scene );
renderLine( _v1, _v2, element, element.materials[ m ++ ], scene );
}
......@@ -184,19 +184,19 @@ THREE.CanvasRenderer = function () {
if ( _clipRect.instersects( _bboxRect ) ) {
m = 0; ml = element.meshMaterial.length;
m = 0; ml = element.meshMaterials.length;
while ( m < ml ) {
material = element.meshMaterial[ m ++ ];
material = element.meshMaterials[ m ++ ];
if ( material instanceof THREE.MeshFaceMaterial ) {
fm = 0; fml = element.faceMaterial.length;
fm = 0; fml = element.faceMaterials.length;
while ( fm < fml ) {
material = element.faceMaterial[ fm ++ ];
material = element.faceMaterials[ fm ++ ];
material && renderFace3( _v1, _v2, _v3, element, material, scene );
}
......
......@@ -66,7 +66,7 @@ THREE.Projector = function() {
var renderList = [],
o, ol, v, vl, f, fl, n, nl, objects, object,
objectMatrix, objectRotationMatrix, objectMaterial, objectOverdraw,
objectMatrix, objectRotationMatrix, objectMaterials, objectOverdraw,
geometry, vertices, vertex, vertexPositionScreen,
faces, face, faceVertexNormals, normal, v1, v2, v3, v4;
......@@ -88,7 +88,7 @@ THREE.Projector = function() {
objectMatrix = object.matrix;
objectRotationMatrix = object.rotationMatrix;
objectMaterial = object.material;
objectMaterials = object.materials;
objectOverdraw = object.overdraw;
if ( object instanceof THREE.Mesh ) {
......@@ -169,8 +169,8 @@ THREE.Projector = function() {
_face3.z = _face3.centroidScreen.z;
_face3.meshMaterial = objectMaterial;
_face3.faceMaterial = face.material;
_face3.meshMaterials = objectMaterials;
_face3.faceMaterials = face.materials;
_face3.overdraw = objectOverdraw;
if ( object.geometry.uvs[ f ] ) {
......@@ -224,8 +224,8 @@ THREE.Projector = function() {
_face3.z = _face3.centroidScreen.z;
_face3.meshMaterial = objectMaterial;
_face3.faceMaterial = face.material;
_face3.meshMaterials = objectMaterials;
_face3.faceMaterials = face.materials;
_face3.overdraw = objectOverdraw;
if ( object.geometry.uvs[ f ] ) {
......@@ -260,8 +260,8 @@ THREE.Projector = function() {
_face32.z = _face32.centroidScreen.z;
_face32.meshMaterial = objectMaterial;
_face32.faceMaterial = face.material;
_face32.meshMaterials = objectMaterials;
_face32.faceMaterials = face.materials;
_face32.overdraw = objectOverdraw;
if ( object.geometry.uvs[ f ] ) {
......@@ -318,7 +318,7 @@ THREE.Projector = function() {
_line.z = Math.max( _clippedVertex1PositionScreen.z, _clippedVertex2PositionScreen.z );
_line.material = object.material;
_line.materials = object.materials;
renderList.push( _line );
......@@ -346,7 +346,7 @@ THREE.Projector = function() {
_particle.scale.x = object.scale.x * Math.abs( _particle.x - ( _vector4.x + camera.projectionMatrix.n11 ) / ( _vector4.w + camera.projectionMatrix.n14 ) );
_particle.scale.y = object.scale.y * Math.abs( _particle.y - ( _vector4.y + camera.projectionMatrix.n22 ) / ( _vector4.w + camera.projectionMatrix.n24 ) );
_particle.material = object.material;
_particle.materials = object.materials;
renderList.push( _particle );
......
......@@ -101,9 +101,9 @@ THREE.SVGRenderer = function () {
_v1 = element;
_v1.x *= _svgWidthHalf; _v1.y *= -_svgHeightHalf;
for ( m = 0, ml = element.material.length; m < ml; m++ ) {
for ( m = 0, ml = element.materials.length; m < ml; m++ ) {
material = element.material[ m ];
material = element.materials[ m ];
material && renderParticle( _v1, element, material, scene );
}
......@@ -124,11 +124,11 @@ THREE.SVGRenderer = function () {
}
m = 0; ml = element.material.length;
m = 0; ml = element.materials.length;
while ( m < ml ) {
material = element.material[ m ++ ];
material = element.materials[ m ++ ];
material && renderLine( _v1, _v2, element, material, scene );
}
......@@ -151,19 +151,19 @@ THREE.SVGRenderer = function () {
}
m = 0; ml = element.meshMaterial.length;
m = 0; ml = element.meshMaterials.length;
while ( m < ml ) {
material = element.meshMaterial[ m ++ ];
material = element.meshMaterials[ m ++ ];
if ( material instanceof THREE.MeshFaceMaterial ) {
fm = 0; fml = element.faceMaterial.length;
fm = 0; fml = element.faceMaterials.length;
while ( fm < fml ) {
material = element.faceMaterial[ fm ++ ];
material = element.faceMaterials[ fm ++ ];
material && renderFace3( _v1, _v2, _v3, element, material, scene );
}
......@@ -196,19 +196,19 @@ THREE.SVGRenderer = function () {
}
m = 0; ml = element.meshMaterial.length;
m = 0; ml = element.meshMaterials.length;
while ( m < ml ) {
material = element.meshMaterial[ m ++ ];
material = element.meshMaterials[ m ++ ];
if ( material instanceof THREE.MeshFaceMaterial ) {
fm = 0; fml = element.faceMaterial.length;
fm = 0; fml = element.faceMaterials.length;
while ( fm < fml ) {
material = element.faceMaterial[ fm ++ ];
material = element.faceMaterials[ fm ++ ];
material && renderFace4( _v1, _v2, _v3, _v4, element, material, scene );
}
......
......@@ -606,15 +606,16 @@ THREE.WebGLRenderer = function ( scene, antialias ) {
var i, l, m, ml, material, meshMaterial;
for ( m = 0, ml = object.material.length; m < ml; m++ ) {
for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
meshMaterial = object.material[ m ];
meshMaterial = object.materials[ m ];
if ( meshMaterial instanceof THREE.MeshFaceMaterial ) {
for ( i = 0, l = geometryChunk.material.length; i < l; i++ ) {
for ( i = 0, l = geometryChunk.materials.length; i < l; i++ ) {
material = geometryChunk.materials[ i ];
material = geometryChunk.material[ i ];
if ( material && material.blending == blending && ( material.opacity < 1.0 == transparent ) ) {
this.setBlending( material.blending );
......@@ -1539,15 +1540,15 @@ THREE.WebGLRenderer = function ( scene, antialias ) {
var m, ml, i, l, needsSmoothNormals = false;
for ( m = 0, ml = object.material.length; m < ml; m++ ) {
for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
meshMaterial = object.material[ m ];
meshMaterial = object.materials[ m ];
if ( meshMaterial instanceof THREE.MeshFaceMaterial ) {
for ( i = 0, l = geometryChunk.material.length; i < l; i++ ) {
for ( i = 0, l = geometryChunk.materials.length; i < l; i++ ) {
if ( materialNeedsSmoothNormals( geometryChunk.material[ i ] ) ) {
if ( materialNeedsSmoothNormals( geometryChunk.materials[ i ] ) ) {
needsSmoothNormals = true;
break;
......
......@@ -101,7 +101,7 @@ THREE.WebGLRenderer2 = function ( antialias ) {
function renderObject( object ) {
var geometry, material, m, nl,
program, attributes;
program, uniforms, attributes;
object.autoUpdateMatrix && object.updateMatrix();
......@@ -125,9 +125,9 @@ THREE.WebGLRenderer2 = function ( antialias ) {
}
for ( m = 0, ml = object.material.length; m < ml; m ++ ) {
for ( m = 0, ml = object.materials.length; m < ml; m ++ ) {
material = object.material[ m ];
material = object.materials[ m ];
if ( material.__webglProgram == undefined ) {
......@@ -136,6 +136,7 @@ THREE.WebGLRenderer2 = function ( antialias ) {
}
program = material.__webglProgram;
uniforms = program.uniforms;
attributes = program.attributes;
if( program != _currentProgram ) {
......@@ -148,54 +149,54 @@ THREE.WebGLRenderer2 = function ( antialias ) {
if ( scene.fog ) {
_gl.uniform1f( program.uniforms.fog, 1 );
_gl.uniform1f( program.uniforms.fogDensity, scene.fog.density );
_gl.uniform3f( program.uniforms.fogColor, scene.fog.color.r, scene.fog.color.g, scene.fog.color.b );
_gl.uniform1f( uniforms.fog, 1 );
_gl.uniform1f( uniforms.fogDensity, scene.fog.density );
_gl.uniform3f( uniforms.fogColor, scene.fog.color.r, scene.fog.color.g, scene.fog.color.b );
} else {
_gl.uniform1f( program.uniforms.fog, 0 );
_gl.uniform1f( uniforms.fog, 0 );
}
}
// materials
// material
if ( material instanceof THREE.MeshBasicMaterial ||
material instanceof THREE.MeshLambertMaterial ||
material instanceof THREE.MeshPhongMaterial ) {
_gl.uniform3f( program.uniforms.mColor, material.color.r, material.color.g, material.color.b );
_gl.uniform1f( program.uniforms.mOpacity, material.opacity );
_gl.uniform3f( uniforms.mColor, material.color.r, material.color.g, material.color.b );
_gl.uniform1f( uniforms.mOpacity, material.opacity );
if ( material.map ) {
setTexture( material.map, 0 );
_gl.uniform1i( program.uniforms.tMap, 0 );
_gl.uniform1i( uniforms.tMap, 0 );
}
} else if ( material instanceof THREE.MeshNormalMaterial ) {
_gl.uniform1f( program.uniforms.mOpacity, material.opacity );
_gl.uniform1f( uniforms.mOpacity, material.opacity );
} else if ( material instanceof THREE.MeshDepthMaterial ) {
_gl.uniform1f( program.uniforms.m2Near, material.__2near );
_gl.uniform1f( program.uniforms.mFarPlusNear, material.__farPlusNear );
_gl.uniform1f( program.uniforms.mFarMinusNear, material.__farMinusNear );
_gl.uniform1f( program.uniforms.mOpacity, material.opacity );
_gl.uniform1f( uniforms.m2Near, material.__2near );
_gl.uniform1f( uniforms.mFarPlusNear, material.__farPlusNear );
_gl.uniform1f( uniforms.mFarMinusNear, material.__farMinusNear );
_gl.uniform1f( uniforms.mOpacity, material.opacity );
}
_gl.uniform3f( program.uniforms.cameraPosition, camera.position.x, camera.position.y, camera.position.z );
_gl.uniform3f( uniforms.cameraPosition, camera.position.x, camera.position.y, camera.position.z );
_gl.uniformMatrix4fv( uniforms.viewMatrix, false, _viewMatrixArray );
_gl.uniformMatrix4fv( uniforms.projectionMatrix, false, _projectionMatrixArray );
}
_gl.uniformMatrix4fv( program.uniforms.viewMatrix, false, _viewMatrixArray );
_gl.uniformMatrix4fv( program.uniforms.projectionMatrix, false, _projectionMatrixArray );
_gl.uniformMatrix4fv( program.uniforms.objectMatrix, false, _objectMatrixArray );
_gl.uniformMatrix4fv( program.uniforms.modelViewMatrix, false, _modelViewMatrixArray );
_gl.uniformMatrix3fv( program.uniforms.normalMatrix, false, _normalMatrixArray );
_gl.uniformMatrix4fv( uniforms.objectMatrix, false, _objectMatrixArray );
_gl.uniformMatrix4fv( uniforms.modelViewMatrix, false, _modelViewMatrixArray );
_gl.uniformMatrix3fv( uniforms.normalMatrix, false, _normalMatrixArray );
var buffer, buffers = geometry.__webglBuffers;
......
......@@ -16,8 +16,8 @@ THREE.RenderableFace3 = function () {
this.normalWorld = new THREE.Vector3();
this.vertexNormalsWorld = [];
this.meshMaterial = null;
this.faceMaterial = null;
this.meshMaterials = null;
this.faceMaterials = null;
this.overdraw = false;
this.uvs = [ null, null, null ];
......
......@@ -9,6 +9,6 @@ THREE.RenderableLine = function () {
this.v1 = new THREE.Vertex();
this.v2 = new THREE.Vertex();
this.material = null;
this.materials = null;
};
......@@ -11,6 +11,6 @@ THREE.RenderableParticle = function () {
this.rotation = null;
this.scale = new THREE.Vector2();
this.material = null;
this.materials = null;
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册