Просмотр исходного кода

WebGLRenderer: Moved objects.update( object ) outside of renderBufferDirect.

Mr.doob 10 лет назад
Родитель
Сommit
33b37b79e7
2 измененных файлов с 8 добавлено и 6 удалено
  1. 4 4
      src/renderers/WebGLRenderer.js
  2. 4 2
      src/renderers/webgl/WebGLShadowMap.js

+ 4 - 4
src/renderers/WebGLRenderer.js

@@ -773,7 +773,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	};
 
-	this.renderBufferDirect = function ( camera, lights, fog, material, object ) {
+	this.renderBufferDirect = function ( camera, lights, fog, geometry, material, object ) {
 
 		if ( material instanceof THREE.MeshFaceMaterial ) {
 
@@ -785,7 +785,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 				if ( material === null || material.visible === false ) continue;
 
-				_this.renderBufferDirect( camera, lights, fog, material, object );
+				_this.renderBufferDirect( camera, lights, fog, geometry, material, object );
 
 			}
 
@@ -795,7 +795,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		setMaterial( material );
 
-		var geometry = objects.update( object );
 		var program = setProgram( camera, lights, fog, material, object );
 
 		var updateBuffers = false;
@@ -1732,12 +1731,13 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			var webglObject = renderList[ i ];
 			var object = webglObject.object;
+			var geometry = objects.update( object );
 
 			setupMatrices( object, camera );
 
 			if ( overrideMaterial === undefined ) material = object.material;
 
-			_this.renderBufferDirect( camera, lights, fog, material, object );
+			_this.renderBufferDirect( camera, lights, fog, geometry, material, object );
 
 		}
 

+ 4 - 2
src/renderers/webgl/WebGLShadowMap.js

@@ -198,7 +198,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
 
 			// render regular objects
 
-			var webglObject, object, material;
+			var webglObject, object, geometry, material;
 			var objectMaterial, useMorphing, useSkinning;
 
 			for ( var j = 0, jl = _renderList.length; j < jl; j ++ ) {
@@ -206,6 +206,8 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
 				webglObject = _renderList[ j ];
 
 				object = webglObject.object;
+				geometry = _objects.update( object );
+
 				objectMaterial = object.material;
 
 				if ( objectMaterial instanceof THREE.MeshFaceMaterial ) {
@@ -242,7 +244,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
 
 				material.wireframe = objectMaterial.wireframe;
 
-				_renderer.renderBufferDirect( shadowCamera, _lights, null, material, object );
+				_renderer.renderBufferDirect( shadowCamera, _lights, null, geometry, material, object );
 
 			}