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

Updated builds.

上级 06d98a36
......@@ -9978,67 +9978,6 @@ THREE.Geometry.prototype = {
},
// Geometry splitting
makeGroups: ( function () {
var geometryGroupCounter = 0;
return function ( usesFaceMaterial, maxVerticesInGroup ) {
var f, fl, face, materialIndex,
groupHash, hash_map = {},geometryGroup;
var numMorphTargets = this.morphTargets.length;
var numMorphNormals = this.morphNormals.length;
this.geometryGroups = {};
this.geometryGroupsList = [];
for ( f = 0, fl = this.faces.length; f < fl; f ++ ) {
face = this.faces[ f ];
materialIndex = usesFaceMaterial ? face.materialIndex : 0;
if ( ! ( materialIndex in hash_map ) ) {
hash_map[ materialIndex ] = { 'hash': materialIndex, 'counter': 0 };
}
groupHash = hash_map[ materialIndex ].hash + '_' + hash_map[ materialIndex ].counter;
if ( ! ( groupHash in this.geometryGroups ) ) {
geometryGroup = { 'id': geometryGroupCounter++, 'faces3': [], 'materialIndex': materialIndex, 'vertices': 0, 'numMorphTargets': numMorphTargets, 'numMorphNormals': numMorphNormals };
this.geometryGroups[ groupHash ] = geometryGroup;
this.geometryGroupsList.push(geometryGroup);
}
if ( this.geometryGroups[ groupHash ].vertices + 3 > maxVerticesInGroup ) {
hash_map[ materialIndex ].counter += 1;
groupHash = hash_map[ materialIndex ].hash + '_' + hash_map[ materialIndex ].counter;
if ( ! ( groupHash in this.geometryGroups ) ) {
geometryGroup = { 'id': geometryGroupCounter++, 'faces3': [], 'materialIndex': materialIndex, 'vertices': 0, 'numMorphTargets': numMorphTargets, 'numMorphNormals': numMorphNormals };
this.geometryGroups[ groupHash ] = geometryGroup;
this.geometryGroupsList.push(geometryGroup);
}
}
this.geometryGroups[ groupHash ].faces3.push( f );
this.geometryGroups[ groupHash ].vertices += 3;
}
};
} )(),
toJSON: function () {
var output = {
......@@ -18321,11 +18260,13 @@ THREE.WebGLRenderer = function ( parameters ) {
} else {
if ( geometry.geometryGroups !== undefined ) {
var geometryGroupsList = geometryGroups[ geometry.id ];
if ( geometryGroupsList !== undefined ) {
for ( var i = 0,l = geometry.geometryGroupsList.length; i<l;i++ ) {
for ( var i = 0,l = geometryGroupsList.length; i < l; i ++ ) {
var geometryGroup = geometry.geometryGroupsList[ i ];
var geometryGroup = geometryGroupsList[ i ];
if ( geometryGroup.numMorphTargets !== undefined ) {
......@@ -20829,7 +20770,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
// Sorting
......@@ -20849,7 +20790,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function reversePainterSortStable ( a, b ) {
......@@ -20863,13 +20804,13 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function numericalSort ( a, b ) {
return b[ 0 ] - a[ 0 ];
};
}
// Rendering
......@@ -21095,7 +21036,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function renderObjects( renderList, camera, lights, fog, useBlending, overrideMaterial ) {
......@@ -21142,7 +21083,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function renderObjectsImmediate ( renderList, materialType, camera, lights, fog, useBlending, overrideMaterial ) {
......@@ -21179,7 +21120,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
this.renderImmediateObject = function ( camera, lights, fog, material, object ) {
......@@ -21218,7 +21159,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function unrollBufferMaterial ( globject ) {
......@@ -21262,7 +21203,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
function initObject( object, scene ) {
......@@ -21336,9 +21277,11 @@ THREE.WebGLRenderer = function ( parameters ) {
} else if ( geometry instanceof THREE.Geometry ) {
for ( var i = 0,l = geometry.geometryGroupsList.length; i < l; i ++ ) {
var geometryGroupsList = geometryGroups[ geometry.id ];
for ( var i = 0,l = geometryGroupsList.length; i < l; i ++ ) {
addBuffer( _webglObjects, geometry.geometryGroupsList[ i ], object );
addBuffer( _webglObjects, geometryGroupsList[ i ], object );
}
......@@ -21356,26 +21299,106 @@ THREE.WebGLRenderer = function ( parameters ) {
}
};
}
// Geometry splitting
var geometryGroups = {};
var geometryGroupCounter = 0;
function makeGroups( geometry, usesFaceMaterial, maxVerticesInGroup ) {
var groupHash, hash_map = {};
var numMorphTargets = geometry.morphTargets.length;
var numMorphNormals = geometry.morphNormals.length;
var group;
var groups = {};
var groupsList = [];
for ( var f = 0, fl = geometry.faces.length; f < fl; f ++ ) {
var face = geometry.faces[ f ];
var materialIndex = usesFaceMaterial ? face.materialIndex : 0;
if ( ! ( materialIndex in hash_map ) ) {
hash_map[ materialIndex ] = { hash: materialIndex, counter: 0 };
}
groupHash = hash_map[ materialIndex ].hash + '_' + hash_map[ materialIndex ].counter;
if ( ! ( groupHash in groups ) ) {
group = {
id: geometryGroupCounter ++,
faces3: [],
materialIndex: materialIndex,
vertices: 0,
numMorphTargets: numMorphTargets,
numMorphNormals: numMorphNormals
};
groups[ groupHash ] = group;
groupsList.push( group );
}
if ( groups[ groupHash ].vertices + 3 > maxVerticesInGroup ) {
hash_map[ materialIndex ].counter += 1;
groupHash = hash_map[ materialIndex ].hash + '_' + hash_map[ materialIndex ].counter;
if ( ! ( groupHash in groups ) ) {
group = {
id: geometryGroupCounter ++,
faces3: [],
materialIndex: materialIndex,
vertices: 0,
numMorphTargets: numMorphTargets,
numMorphNormals: numMorphNormals
};
groups[ groupHash ] = group;
groupsList.push( group );
}
}
groups[ groupHash ].faces3.push( f );
groups[ groupHash ].vertices += 3;
}
return groupsList;
}
function initGeometryGroups( scene, object, geometry ) {
var g, geometryGroup, material = object.material, addBuffers = false;
var material = object.material, addBuffers = false;
if ( geometry.geometryGroups === undefined || geometry.groupsNeedUpdate === true ) {
if ( geometryGroups[ geometry.id ] === undefined || geometry.groupsNeedUpdate === true ) {
delete _webglObjects[ object.id ];
geometry.makeGroups( material instanceof THREE.MeshFaceMaterial, _glExtensionElementIndexUint ? 4294967296 : 65535 );
geometryGroups[ geometry.id ] = makeGroups( geometry, material instanceof THREE.MeshFaceMaterial, _glExtensionElementIndexUint ? 4294967296 : 65535 );
geometry.groupsNeedUpdate = false;
}
var geometryGroupsList = geometryGroups[ geometry.id ];
// create separate VBOs per geometry chunk
for ( var i = 0, il = geometry.geometryGroupsList.length; i < il; i ++ ) {
for ( var i = 0, il = geometryGroupsList.length; i < il; i ++ ) {
geometryGroup = geometry.geometryGroupsList[ i ];
var geometryGroup = geometryGroupsList[ i ];
// initialise VBO on the first access
......@@ -21446,8 +21469,7 @@ THREE.WebGLRenderer = function ( parameters ) {
function updateObject( object, scene ) {
var geometry = object.geometry,
geometryGroup, customAttributesDirty, material;
var geometry = object.geometry, customAttributesDirty, material;
if ( geometry instanceof THREE.BufferGeometry ) {
......@@ -21463,9 +21485,11 @@ THREE.WebGLRenderer = function ( parameters ) {
}
for ( var i = 0, il = geometry.geometryGroupsList.length; i < il; i ++ ) {
var geometryGroupsList = geometryGroups[ geometry.id ];
for ( var i = 0, il = geometryGroupsList.length; i < il; i ++ ) {
geometryGroup = geometry.geometryGroupsList[ i ];
var geometryGroup = geometryGroupsList[ i ];
material = getBufferMaterial( object, geometryGroup );
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册