@@ -36,11 +36,6 @@ THREE.WebGLRenderer = function ( parameters ) {
3636 var transparentObjects = [ ] ;
3737 var transparentObjectsLastIndex = - 1 ;
3838
39- var opaqueImmediateObjects = [ ] ;
40- var opaqueImmediateObjectsLastIndex = - 1 ;
41- var transparentImmediateObjects = [ ] ;
42- var transparentImmediateObjectsLastIndex = - 1 ;
43-
4439 var morphInfluences = new Float32Array ( 8 ) ;
4540
4641
@@ -1101,9 +1096,6 @@ THREE.WebGLRenderer = function ( parameters ) {
11011096 opaqueObjectsLastIndex = - 1 ;
11021097 transparentObjectsLastIndex = - 1 ;
11031098
1104- opaqueImmediateObjectsLastIndex = - 1 ;
1105- transparentImmediateObjectsLastIndex = - 1 ;
1106-
11071099 sprites . length = 0 ;
11081100 lensFlares . length = 0 ;
11091101
@@ -1112,9 +1104,6 @@ THREE.WebGLRenderer = function ( parameters ) {
11121104 opaqueObjects . length = opaqueObjectsLastIndex + 1 ;
11131105 transparentObjects . length = transparentObjectsLastIndex + 1 ;
11141106
1115- opaqueImmediateObjects . length = opaqueImmediateObjectsLastIndex + 1 ;
1116- transparentImmediateObjects . length = transparentImmediateObjectsLastIndex + 1 ;
1117-
11181107 if ( _this . sortObjects === true ) {
11191108
11201109 opaqueObjects . sort ( painterSortStable ) ;
@@ -1150,22 +1139,16 @@ THREE.WebGLRenderer = function ( parameters ) {
11501139 renderObjects ( opaqueObjects , camera , lights , fog , overrideMaterial ) ;
11511140 renderObjects ( transparentObjects , camera , lights , fog , overrideMaterial ) ;
11521141
1153- renderObjectsImmediate ( opaqueImmediateObjects , camera , lights , fog , overrideMaterial ) ;
1154- renderObjectsImmediate ( transparentImmediateObjects , camera , lights , fog , overrideMaterial ) ;
1155-
11561142 } else {
11571143
11581144 // opaque pass (front-to-back order)
11591145
11601146 state . setBlending ( THREE . NoBlending ) ;
1161-
11621147 renderObjects ( opaqueObjects , camera , lights , fog ) ;
1163- renderObjectsImmediate ( opaqueImmediateObjects , camera , lights , fog ) ;
11641148
11651149 // transparent pass (back-to-front order)
11661150
11671151 renderObjects ( transparentObjects , camera , lights , fog ) ;
1168- renderObjectsImmediate ( transparentImmediateObjects , camera , lights , fog ) ;
11691152
11701153 }
11711154
@@ -1192,40 +1175,6 @@ THREE.WebGLRenderer = function ( parameters ) {
11921175
11931176 } ;
11941177
1195- function pushImmediateRenderItem ( object ) {
1196-
1197- var array , index ;
1198-
1199- // allocate the next position in the appropriate array
1200-
1201- if ( object . material . transparent ) {
1202-
1203- array = transparentImmediateObjects ;
1204- index = ++ transparentImmediateObjectsLastIndex ;
1205-
1206- } else {
1207-
1208- array = opaqueImmediateObjects ;
1209- index = ++ opaqueImmediateObjectsLastIndex ;
1210-
1211- }
1212-
1213- // recycle existing position or grow the array
1214-
1215- if ( index < array . length ) {
1216-
1217- array [ index ] = object ;
1218-
1219- } else {
1220-
1221- // assert( index === array.length );
1222- array . push ( object ) ;
1223-
1224- }
1225-
1226-
1227- }
1228-
12291178 function pushRenderItem ( object , geometry , material , z , group ) {
12301179
12311180 var array , index ;
@@ -1293,7 +1242,14 @@ THREE.WebGLRenderer = function ( parameters ) {
12931242
12941243 } else if ( object instanceof THREE . ImmediateRenderObject ) {
12951244
1296- pushImmediateRenderItem ( object ) ;
1245+ if ( _this . sortObjects === true ) {
1246+
1247+ _vector3 . setFromMatrixPosition ( object . matrixWorld ) ;
1248+ _vector3 . applyProjection ( _projScreenMatrix ) ;
1249+
1250+ }
1251+
1252+ pushRenderItem ( object , null , object . material , _vector3 . z , null ) ;
12971253
12981254 } else if ( object instanceof THREE . Mesh || object instanceof THREE . Line || object instanceof THREE . Points ) {
12991255
@@ -1372,36 +1328,25 @@ THREE.WebGLRenderer = function ( parameters ) {
13721328 object . modelViewMatrix . multiplyMatrices ( camera . matrixWorldInverse , object . matrixWorld ) ;
13731329 object . normalMatrix . getNormalMatrix ( object . modelViewMatrix ) ;
13741330
1375- _this . renderBufferDirect ( camera , lights , fog , geometry , material , object , group ) ;
1376-
1377- }
1378-
1379- }
1331+ if ( object instanceof THREE . ImmediateRenderObject ) {
13801332
1381- function renderObjectsImmediate ( renderList , camera , lights , fog , overrideMaterial ) {
1333+ setMaterial ( material ) ;
13821334
1383- var material = overrideMaterial ;
1335+ var program = setProgram ( camera , lights , fog , material , object ) ;
13841336
1385- for ( var i = 0 , l = renderList . length ; i < l ; i ++ ) {
1337+ _currentGeometryProgram = '' ;
13861338
1387- var object = renderList [ i ] ;
1339+ object . render ( function ( object ) {
13881340
1389- object . modelViewMatrix . multiplyMatrices ( camera . matrixWorldInverse , object . matrixWorld ) ;
1390- object . normalMatrix . getNormalMatrix ( object . modelViewMatrix ) ;
1341+ _this . renderBufferImmediate ( object , program , material ) ;
13911342
1392- if ( overrideMaterial === undefined ) material = object . material ;
1343+ } ) ;
13931344
1394- setMaterial ( material ) ;
1395-
1396- var program = setProgram ( camera , lights , fog , material , object ) ;
1397-
1398- _currentGeometryProgram = '' ;
1399-
1400- object . render ( function ( object ) {
1345+ } else {
14011346
1402- _this . renderBufferImmediate ( object , program , material ) ;
1347+ _this . renderBufferDirect ( camera , lights , fog , geometry , material , object , group ) ;
14031348
1404- } ) ;
1349+ }
14051350
14061351 }
14071352
0 commit comments