|
@@ -1257,31 +1257,25 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
// render scene
|
|
// render scene
|
|
|
|
|
|
- if ( camera.isArrayCamera ) {
|
|
|
|
-
|
|
|
|
- var cameras = camera.cameras;
|
|
|
|
|
|
+ var opaqueObjects = currentRenderList.opaque;
|
|
|
|
+ var transparentObjects = currentRenderList.transparent;
|
|
|
|
|
|
- for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
|
|
|
|
|
|
+ if ( scene.overrideMaterial ) {
|
|
|
|
|
|
- var camera2 = cameras[ j ];
|
|
|
|
- var bounds = camera2.bounds;
|
|
|
|
|
|
+ var overrideMaterial = scene.overrideMaterial;
|
|
|
|
|
|
- var x = bounds.x * _width;
|
|
|
|
- var y = bounds.y * _height;
|
|
|
|
- var width = bounds.z * _width;
|
|
|
|
- var height = bounds.w * _height;
|
|
|
|
|
|
+ if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
|
|
|
|
+ if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
|
|
|
|
|
|
- _this.setViewport( x, y, width, height );
|
|
|
|
- _this.setScissor( x, y, width, height );
|
|
|
|
- _this.setScissorTest( true );
|
|
|
|
|
|
+ } else {
|
|
|
|
|
|
- renderScene( currentRenderList, scene, camera2 );
|
|
|
|
|
|
+ // opaque pass (front-to-back order)
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
|
|
|
|
|
|
- } else {
|
|
|
|
|
|
+ // transparent pass (back-to-front order)
|
|
|
|
|
|
- renderScene( currentRenderList, scene, camera );
|
|
|
|
|
|
+ if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1469,46 +1463,46 @@ function WebGLRenderer( parameters ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- function renderScene( renderList, scene, camera ) {
|
|
|
|
-
|
|
|
|
- var opaqueObjects = renderList.opaque;
|
|
|
|
- var transparentObjects = renderList.transparent;
|
|
|
|
-
|
|
|
|
- if ( scene.overrideMaterial ) {
|
|
|
|
|
|
+ function renderObjects( renderList, scene, camera, overrideMaterial ) {
|
|
|
|
|
|
- var overrideMaterial = scene.overrideMaterial;
|
|
|
|
|
|
+ for ( var i = 0, l = renderList.length; i < l; i ++ ) {
|
|
|
|
|
|
- if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
|
|
|
|
- if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
|
|
|
|
|
|
+ var renderItem = renderList[ i ];
|
|
|
|
|
|
- } else {
|
|
|
|
|
|
+ var object = renderItem.object;
|
|
|
|
+ var geometry = renderItem.geometry;
|
|
|
|
+ var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
|
|
|
|
+ var group = renderItem.group;
|
|
|
|
|
|
- // opaque pass (front-to-back order)
|
|
|
|
|
|
+ object.onBeforeRender( _this, scene, camera, geometry, material, group );
|
|
|
|
|
|
- if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
|
|
|
|
|
|
+ if ( camera.isArrayCamera ) {
|
|
|
|
|
|
- // transparent pass (back-to-front order)
|
|
|
|
|
|
+ var cameras = camera.cameras;
|
|
|
|
|
|
- if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
|
|
|
|
|
|
+ for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ var camera2 = cameras[ j ];
|
|
|
|
+ var bounds = camera2.bounds;
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ var x = bounds.x * _width;
|
|
|
|
+ var y = bounds.y * _height;
|
|
|
|
+ var width = bounds.z * _width;
|
|
|
|
+ var height = bounds.w * _height;
|
|
|
|
|
|
- function renderObjects( renderItems, scene, camera, overrideMaterial ) {
|
|
|
|
|
|
+ _this.setViewport( x, y, width, height );
|
|
|
|
+ _this.setScissor( x, y, width, height );
|
|
|
|
+ _this.setScissorTest( true );
|
|
|
|
|
|
- for ( var i = 0, l = renderItems.length; i < l; i ++ ) {
|
|
|
|
|
|
+ renderObject( object, scene, camera2, geometry, material, group );
|
|
|
|
|
|
- var renderItem = renderItems[ i ];
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- var object = renderItem.object;
|
|
|
|
- var geometry = renderItem.geometry;
|
|
|
|
- var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
|
|
|
|
- var group = renderItem.group;
|
|
|
|
|
|
+ } else {
|
|
|
|
|
|
- object.onBeforeRender( _this, scene, camera, geometry, material, group );
|
|
|
|
|
|
+ renderObject( object, scene, camera, geometry, material, group );
|
|
|
|
|
|
- renderObject( object, scene, camera, geometry, material, group );
|
|
|
|
|
|
+ }
|
|
|
|
|
|
object.onAfterRender( _this, scene, camera, geometry, material, group );
|
|
object.onAfterRender( _this, scene, camera, geometry, material, group );
|
|
|
|
|