@@ -22,7 +22,15 @@ var GetCalcMatrix = require('../GetCalcMatrix');
2222 */
2323var MeshWebGLRenderer = function ( renderer , src , camera , parentMatrix )
2424{
25- var pipeline = renderer . pipelines . set ( this . pipeline , src ) ;
25+ var faces = src . faces ;
26+ var totalFaces = faces . length ;
27+
28+ if ( totalFaces === 0 )
29+ {
30+ return ;
31+ }
32+
33+ var pipeline = renderer . pipelines . set ( src . pipeline , src ) ;
2634
2735 var calcMatrix = GetCalcMatrix ( src , camera , parentMatrix ) . calc ;
2836
@@ -33,7 +41,6 @@ var MeshWebGLRenderer = function (renderer, src, camera, parentMatrix)
3341
3442 var vertexOffset = ( pipeline . vertexCount * pipeline . vertexComponentCount ) - 1 ;
3543
36- var faces = src . faces ;
3744 var tintEffect = src . tintFill ;
3845
3946 var debugCallback = src . debugCallback ;
@@ -48,18 +55,24 @@ var MeshWebGLRenderer = function (renderer, src, camera, parentMatrix)
4855
4956 var roundPixels = camera . roundPixels ;
5057 var alpha = camera . alpha * src . alpha ;
58+ var hideCCW = src . hideCCW ;
5159
52- for ( var i = 0 ; i < faces . length ; i ++ )
60+ for ( var i = 0 ; i < totalFaces ; i ++ )
5361 {
62+ var face = faces [ i ] ;
63+
64+ if ( hideCCW && ! face . isCounterClockwise ( ) )
65+ {
66+ continue ;
67+ }
68+
5469 if ( pipeline . shouldFlush ( 3 ) )
5570 {
5671 pipeline . flush ( ) ;
5772
5873 vertexOffset = 0 ;
5974 }
6075
61- var face = faces [ i ] ;
62-
6376 vertexOffset = face . vertex1 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f , roundPixels ) ;
6477 vertexOffset = face . vertex2 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f , roundPixels ) ;
6578 vertexOffset = face . vertex3 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f , roundPixels ) ;
0 commit comments