|
@@ -4509,9 +4509,14 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- if ( object instanceof THREE.Mesh ) {
|
|
|
+ geometry = object.geometry;
|
|
|
+
|
|
|
+ if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
+
|
|
|
+ initDirectBuffers( geometry );
|
|
|
+
|
|
|
+ } else if ( object instanceof THREE.Mesh ) {
|
|
|
|
|
|
- geometry = object.geometry;
|
|
|
material = object.material;
|
|
|
|
|
|
if ( geometry instanceof THREE.Geometry ) {
|
|
@@ -4547,16 +4552,10 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
- } else if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
-
|
|
|
- initDirectBuffers( geometry );
|
|
|
-
|
|
|
}
|
|
|
|
|
|
} else if ( object instanceof THREE.Ribbon ) {
|
|
|
|
|
|
- geometry = object.geometry;
|
|
|
-
|
|
|
if ( ! geometry.__webglVertexBuffer ) {
|
|
|
|
|
|
createRibbonBuffers( geometry );
|
|
@@ -4570,8 +4569,6 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
} else if ( object instanceof THREE.Line ) {
|
|
|
|
|
|
- geometry = object.geometry;
|
|
|
-
|
|
|
if ( ! geometry.__webglVertexBuffer ) {
|
|
|
|
|
|
if ( geometry instanceof THREE.Geometry ) {
|
|
@@ -4583,18 +4580,12 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
geometry.colorsNeedUpdate = true;
|
|
|
geometry.lineDistancesNeedUpdate = true;
|
|
|
|
|
|
- } else if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
-
|
|
|
- initDirectBuffers( geometry );
|
|
|
-
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
} else if ( object instanceof THREE.ParticleSystem ) {
|
|
|
|
|
|
- geometry = object.geometry;
|
|
|
-
|
|
|
if ( ! geometry.__webglVertexBuffer ) {
|
|
|
|
|
|
if ( geometry instanceof THREE.Geometry ) {
|
|
@@ -4605,13 +4596,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
geometry.verticesNeedUpdate = true;
|
|
|
geometry.colorsNeedUpdate = true;
|
|
|
|
|
|
- } else if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
-
|
|
|
- initDirectBuffers( geometry );
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -4699,53 +4684,49 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
var geometry = object.geometry,
|
|
|
geometryGroup, customAttributesDirty, material;
|
|
|
|
|
|
- if ( object instanceof THREE.Mesh ) {
|
|
|
-
|
|
|
- if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
-
|
|
|
- setDirectBuffers( geometry, _gl.DYNAMIC_DRAW, !geometry.dynamic );
|
|
|
+ if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
|
|
|
- } else {
|
|
|
+ setDirectBuffers( geometry, _gl.DYNAMIC_DRAW, !geometry.dynamic );
|
|
|
|
|
|
- // check all geometry groups
|
|
|
+ } else if ( object instanceof THREE.Mesh ) {
|
|
|
|
|
|
- for( var i = 0, il = geometry.geometryGroupsList.length; i < il; i ++ ) {
|
|
|
+ // check all geometry groups
|
|
|
|
|
|
- geometryGroup = geometry.geometryGroupsList[ i ];
|
|
|
+ for( var i = 0, il = geometry.geometryGroupsList.length; i < il; i ++ ) {
|
|
|
|
|
|
- material = getBufferMaterial( object, geometryGroup );
|
|
|
+ geometryGroup = geometry.geometryGroupsList[ i ];
|
|
|
|
|
|
- if ( geometry.buffersNeedUpdate ) {
|
|
|
+ material = getBufferMaterial( object, geometryGroup );
|
|
|
|
|
|
- initMeshBuffers( geometryGroup, object );
|
|
|
+ if ( geometry.buffersNeedUpdate ) {
|
|
|
|
|
|
- }
|
|
|
+ initMeshBuffers( geometryGroup, object );
|
|
|
|
|
|
- customAttributesDirty = material.attributes && areCustomAttributesDirty( material );
|
|
|
+ }
|
|
|
|
|
|
- if ( geometry.verticesNeedUpdate || geometry.morphTargetsNeedUpdate || geometry.elementsNeedUpdate ||
|
|
|
- geometry.uvsNeedUpdate || geometry.normalsNeedUpdate ||
|
|
|
- geometry.colorsNeedUpdate || geometry.tangentsNeedUpdate || customAttributesDirty ) {
|
|
|
+ customAttributesDirty = material.attributes && areCustomAttributesDirty( material );
|
|
|
|
|
|
- setMeshBuffers( geometryGroup, object, _gl.DYNAMIC_DRAW, !geometry.dynamic, material );
|
|
|
+ if ( geometry.verticesNeedUpdate || geometry.morphTargetsNeedUpdate || geometry.elementsNeedUpdate ||
|
|
|
+ geometry.uvsNeedUpdate || geometry.normalsNeedUpdate ||
|
|
|
+ geometry.colorsNeedUpdate || geometry.tangentsNeedUpdate || customAttributesDirty ) {
|
|
|
|
|
|
- }
|
|
|
+ setMeshBuffers( geometryGroup, object, _gl.DYNAMIC_DRAW, !geometry.dynamic, material );
|
|
|
|
|
|
}
|
|
|
|
|
|
- geometry.verticesNeedUpdate = false;
|
|
|
- geometry.morphTargetsNeedUpdate = false;
|
|
|
- geometry.elementsNeedUpdate = false;
|
|
|
- geometry.uvsNeedUpdate = false;
|
|
|
- geometry.normalsNeedUpdate = false;
|
|
|
- geometry.colorsNeedUpdate = false;
|
|
|
- geometry.tangentsNeedUpdate = false;
|
|
|
+ }
|
|
|
|
|
|
- geometry.buffersNeedUpdate = false;
|
|
|
+ geometry.verticesNeedUpdate = false;
|
|
|
+ geometry.morphTargetsNeedUpdate = false;
|
|
|
+ geometry.elementsNeedUpdate = false;
|
|
|
+ geometry.uvsNeedUpdate = false;
|
|
|
+ geometry.normalsNeedUpdate = false;
|
|
|
+ geometry.colorsNeedUpdate = false;
|
|
|
+ geometry.tangentsNeedUpdate = false;
|
|
|
|
|
|
- material.attributes && clearCustomAttributes( material );
|
|
|
+ geometry.buffersNeedUpdate = false;
|
|
|
|
|
|
- }
|
|
|
+ material.attributes && clearCustomAttributes( material );
|
|
|
|
|
|
} else if ( object instanceof THREE.Ribbon ) {
|
|
|
|
|
@@ -4767,54 +4748,39 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
} else if ( object instanceof THREE.Line ) {
|
|
|
|
|
|
- if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
-
|
|
|
- setDirectBuffers( geometry, _gl.DYNAMIC_DRAW, !geometry.dynamic );
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- material = getBufferMaterial( object, geometry );
|
|
|
-
|
|
|
- customAttributesDirty = material.attributes && areCustomAttributesDirty( material );
|
|
|
-
|
|
|
- if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || geometry.lineDistancesNeedUpdate || customAttributesDirty ) {
|
|
|
-
|
|
|
- setLineBuffers( geometry, _gl.DYNAMIC_DRAW );
|
|
|
+ material = getBufferMaterial( object, geometry );
|
|
|
|
|
|
- }
|
|
|
+ customAttributesDirty = material.attributes && areCustomAttributesDirty( material );
|
|
|
|
|
|
- geometry.verticesNeedUpdate = false;
|
|
|
- geometry.colorsNeedUpdate = false;
|
|
|
- geometry.lineDistancesNeedUpdate = false;
|
|
|
+ if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || geometry.lineDistancesNeedUpdate || customAttributesDirty ) {
|
|
|
|
|
|
- material.attributes && clearCustomAttributes( material );
|
|
|
+ setLineBuffers( geometry, _gl.DYNAMIC_DRAW );
|
|
|
|
|
|
}
|
|
|
|
|
|
- } else if ( object instanceof THREE.ParticleSystem ) {
|
|
|
-
|
|
|
- if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
+ geometry.verticesNeedUpdate = false;
|
|
|
+ geometry.colorsNeedUpdate = false;
|
|
|
+ geometry.lineDistancesNeedUpdate = false;
|
|
|
|
|
|
- setDirectBuffers( geometry, _gl.DYNAMIC_DRAW, !geometry.dynamic );
|
|
|
+ material.attributes && clearCustomAttributes( material );
|
|
|
|
|
|
- } else {
|
|
|
|
|
|
- material = getBufferMaterial( object, geometry );
|
|
|
+ } else if ( object instanceof THREE.ParticleSystem ) {
|
|
|
|
|
|
- customAttributesDirty = material.attributes && areCustomAttributesDirty( material );
|
|
|
+ material = getBufferMaterial( object, geometry );
|
|
|
|
|
|
- if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || object.sortParticles || customAttributesDirty ) {
|
|
|
+ customAttributesDirty = material.attributes && areCustomAttributesDirty( material );
|
|
|
|
|
|
- setParticleBuffers( geometry, _gl.DYNAMIC_DRAW, object );
|
|
|
+ if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || object.sortParticles || customAttributesDirty ) {
|
|
|
|
|
|
- }
|
|
|
+ setParticleBuffers( geometry, _gl.DYNAMIC_DRAW, object );
|
|
|
|
|
|
- geometry.verticesNeedUpdate = false;
|
|
|
- geometry.colorsNeedUpdate = false;
|
|
|
+ }
|
|
|
|
|
|
- material.attributes && clearCustomAttributes( material );
|
|
|
+ geometry.verticesNeedUpdate = false;
|
|
|
+ geometry.colorsNeedUpdate = false;
|
|
|
|
|
|
- }
|
|
|
+ material.attributes && clearCustomAttributes( material );
|
|
|
|
|
|
}
|
|
|
|