@@ -1105,7 +1105,7 @@ THREE.WebGLRenderer = function ( parameters ) {
1105
1105
sprites . length = 0 ;
1106
1106
lensFlares . length = 0 ;
1107
1107
1108
- projectObject ( scene ) ;
1108
+ projectObject ( scene , camera ) ;
1109
1109
1110
1110
opaqueObjects . length = opaqueObjectsLastIndex + 1 ;
1111
1111
transparentObjects . length = transparentObjectsLastIndex + 1 ;
@@ -1236,77 +1236,81 @@ THREE.WebGLRenderer = function ( parameters ) {
1236
1236
1237
1237
}
1238
1238
1239
- function projectObject ( object ) {
1239
+ function projectObject ( object , camera ) {
1240
1240
1241
1241
if ( object . visible === false ) return ;
1242
1242
1243
- if ( object instanceof THREE . Light ) {
1243
+ if ( ( object . channels . mask & camera . channels . mask ) !== 0 ) {
1244
1244
1245
- lights . push ( object ) ;
1245
+ if ( object instanceof THREE . Light ) {
1246
1246
1247
- } else if ( object instanceof THREE . Sprite ) {
1247
+ lights . push ( object ) ;
1248
1248
1249
- sprites . push ( object ) ;
1249
+ } else if ( object instanceof THREE . Sprite ) {
1250
1250
1251
- } else if ( object instanceof THREE . LensFlare ) {
1251
+ sprites . push ( object ) ;
1252
1252
1253
- lensFlares . push ( object ) ;
1253
+ } else if ( object instanceof THREE . LensFlare ) {
1254
1254
1255
- } else if ( object instanceof THREE . ImmediateRenderObject ) {
1255
+ lensFlares . push ( object ) ;
1256
1256
1257
- if ( _this . sortObjects === true ) {
1257
+ } else if ( object instanceof THREE . ImmediateRenderObject ) {
1258
1258
1259
- _vector3 . setFromMatrixPosition ( object . matrixWorld ) ;
1260
- _vector3 . applyProjection ( _projScreenMatrix ) ;
1259
+ if ( _this . sortObjects === true ) {
1261
1260
1262
- }
1261
+ _vector3 . setFromMatrixPosition ( object . matrixWorld ) ;
1262
+ _vector3 . applyProjection ( _projScreenMatrix ) ;
1263
1263
1264
- pushRenderItem ( object , null , object . material , _vector3 . z , null ) ;
1264
+ }
1265
1265
1266
- } else if ( object instanceof THREE . Mesh || object instanceof THREE . Line || object instanceof THREE . Points ) {
1266
+ pushRenderItem ( object , null , object . material , _vector3 . z , null ) ;
1267
1267
1268
- if ( object instanceof THREE . SkinnedMesh ) {
1268
+ } else if ( object instanceof THREE . Mesh || object instanceof THREE . Line || object instanceof THREE . Points ) {
1269
1269
1270
- object . skeleton . update ( ) ;
1270
+ if ( object instanceof THREE . SkinnedMesh ) {
1271
1271
1272
- }
1272
+ object . skeleton . update ( ) ;
1273
1273
1274
- if ( object . frustumCulled === false || _frustum . intersectsObject ( object ) === true ) {
1274
+ }
1275
1275
1276
- var material = object . material ;
1276
+ if ( object . frustumCulled === false || _frustum . intersectsObject ( object ) === true ) {
1277
1277
1278
- if ( material . visible === true ) {
1278
+ var material = object . material ;
1279
1279
1280
- if ( _this . sortObjects === true ) {
1280
+ if ( material . visible === true ) {
1281
1281
1282
- _vector3 . setFromMatrixPosition ( object . matrixWorld ) ;
1283
- _vector3 . applyProjection ( _projScreenMatrix ) ;
1282
+ if ( _this . sortObjects === true ) {
1284
1283
1285
- }
1284
+ _vector3 . setFromMatrixPosition ( object . matrixWorld ) ;
1285
+ _vector3 . applyProjection ( _projScreenMatrix ) ;
1286
+
1287
+ }
1286
1288
1287
- var geometry = objects . update ( object ) ;
1289
+ var geometry = objects . update ( object ) ;
1288
1290
1289
- if ( material instanceof THREE . MeshFaceMaterial ) {
1291
+ if ( material instanceof THREE . MeshFaceMaterial ) {
1290
1292
1291
- var groups = geometry . groups ;
1292
- var materials = material . materials ;
1293
+ var groups = geometry . groups ;
1294
+ var materials = material . materials ;
1293
1295
1294
- for ( var i = 0 , l = groups . length ; i < l ; i ++ ) {
1296
+ for ( var i = 0 , l = groups . length ; i < l ; i ++ ) {
1295
1297
1296
- var group = groups [ i ] ;
1297
- var groupMaterial = materials [ group . materialIndex ] ;
1298
+ var group = groups [ i ] ;
1299
+ var groupMaterial = materials [ group . materialIndex ] ;
1298
1300
1299
- if ( groupMaterial . visible === true ) {
1301
+ if ( groupMaterial . visible === true ) {
1300
1302
1301
- pushRenderItem ( object , geometry , groupMaterial , _vector3 . z , group ) ;
1303
+ pushRenderItem ( object , geometry , groupMaterial , _vector3 . z , group ) ;
1304
+
1305
+ }
1302
1306
1303
1307
}
1304
1308
1305
- }
1309
+ } else {
1306
1310
1307
- } else {
1311
+ pushRenderItem ( object , geometry , material , _vector3 . z , null ) ;
1308
1312
1309
- pushRenderItem ( object , geometry , material , _vector3 . z , null ) ;
1313
+ }
1310
1314
1311
1315
}
1312
1316
@@ -1320,7 +1324,7 @@ THREE.WebGLRenderer = function ( parameters ) {
1320
1324
1321
1325
for ( var i = 0 , l = children . length ; i < l ; i ++ ) {
1322
1326
1323
- projectObject ( children [ i ] ) ;
1327
+ projectObject ( children [ i ] , camera ) ;
1324
1328
1325
1329
}
1326
1330
@@ -2846,7 +2850,7 @@ THREE.WebGLRenderer = function ( parameters ) {
2846
2850
}
2847
2851
2848
2852
uploadTexture ( textureProperties , texture , slot ) ;
2849
-
2853
+
2850
2854
return ;
2851
2855
2852
2856
}
0 commit comments