|
@@ -4196,7 +4196,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
// Geometry splitting
|
|
// Geometry splitting
|
|
|
|
|
|
- function sortFacesByMaterial ( geometry ) {
|
|
|
|
|
|
+ function sortFacesByMaterial ( geometry, material ) {
|
|
|
|
|
|
var f, fl, face, materialIndex, vertices,
|
|
var f, fl, face, materialIndex, vertices,
|
|
materialHash, groupHash,
|
|
materialHash, groupHash,
|
|
@@ -4205,12 +4205,14 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
var numMorphTargets = geometry.morphTargets.length;
|
|
var numMorphTargets = geometry.morphTargets.length;
|
|
var numMorphNormals = geometry.morphNormals.length;
|
|
var numMorphNormals = geometry.morphNormals.length;
|
|
|
|
|
|
|
|
+ var usesFaceMaterial = material instanceof THREE.MeshFaceMaterial;
|
|
|
|
+
|
|
geometry.geometryGroups = {};
|
|
geometry.geometryGroups = {};
|
|
|
|
|
|
for ( f = 0, fl = geometry.faces.length; f < fl; f ++ ) {
|
|
for ( f = 0, fl = geometry.faces.length; f < fl; f ++ ) {
|
|
|
|
|
|
face = geometry.faces[ f ];
|
|
face = geometry.faces[ f ];
|
|
- materialIndex = face.materialIndex;
|
|
|
|
|
|
+ materialIndex = usesFaceMaterial ? face.materialIndex : undefined;
|
|
|
|
|
|
materialHash = ( materialIndex !== undefined ) ? materialIndex : -1;
|
|
materialHash = ( materialIndex !== undefined ) ? materialIndex : -1;
|
|
|
|
|
|
@@ -4310,7 +4312,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
function addObject ( object, scene ) {
|
|
function addObject ( object, scene ) {
|
|
|
|
|
|
- var g, geometry, geometryGroup;
|
|
|
|
|
|
+ var g, geometry, material, geometryGroup;
|
|
|
|
|
|
if ( ! object.__webglInit ) {
|
|
if ( ! object.__webglInit ) {
|
|
|
|
|
|
@@ -4322,12 +4324,13 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
if ( object instanceof THREE.Mesh ) {
|
|
if ( object instanceof THREE.Mesh ) {
|
|
|
|
|
|
geometry = object.geometry;
|
|
geometry = object.geometry;
|
|
|
|
+ material = object.material;
|
|
|
|
|
|
if ( geometry instanceof THREE.Geometry ) {
|
|
if ( geometry instanceof THREE.Geometry ) {
|
|
|
|
|
|
if ( geometry.geometryGroups === undefined ) {
|
|
if ( geometry.geometryGroups === undefined ) {
|
|
|
|
|
|
- sortFacesByMaterial( geometry );
|
|
|
|
|
|
+ sortFacesByMaterial( geometry, material );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|