@@ -22,13 +22,13 @@ var GetCalcMatrix = require('../GetCalcMatrix');
2222 */
2323var MeshWebGLRenderer = function ( renderer , src , camera , parentMatrix )
2424{
25- var faces = src . faces ;
26- var totalFaces = faces . length ;
25+ // var faces = src.faces;
26+ // var totalFaces = faces.length;
2727
28- if ( totalFaces === 0 )
29- {
30- return ;
31- }
28+ // if (totalFaces === 0)
29+ // {
30+ // return;
31+ // }
3232
3333 var pipeline = renderer . pipelines . set ( src . pipeline , src ) ;
3434
@@ -53,49 +53,68 @@ var MeshWebGLRenderer = function (renderer, src, camera, parentMatrix)
5353 var e = calcMatrix . e ;
5454 var f = calcMatrix . f ;
5555
56- var roundPixels = camera . roundPixels ;
57- var alpha = camera . alpha * src . alpha ;
58- var hideCCW = src . hideCCW ;
56+ var globalAlpha = camera . alpha * src . alpha ;
57+
58+ var models = src . models ;
5959
60- for ( var i = 0 ; i < totalFaces ; i ++ )
60+ for ( var m = 0 ; m < models . length ; m ++ )
6161 {
62- var face = faces [ i ] ;
62+ var model = models [ m ] ;
6363
64- if ( hideCCW && ! face . isCounterClockwise ( ) )
64+ var faces = model . faces ;
65+ var totalFaces = faces . length ;
66+ var alpha = globalAlpha * model . alpha ;
67+
68+ if ( totalFaces === 0 || ! model . visible || alpha <= 0 )
6569 {
6670 continue ;
6771 }
6872
69- if ( pipeline . shouldFlush ( 3 ) )
73+ if ( pipeline . shouldFlush ( model . getVertexCount ( ) ) )
7074 {
7175 pipeline . flush ( ) ;
7276
7377 vertexOffset = 0 ;
7478 }
7579
76- vertexOffset = face . vertex1 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f , roundPixels ) ;
77- vertexOffset = face . vertex2 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f , roundPixels ) ;
78- vertexOffset = face . vertex3 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f , roundPixels ) ;
80+ if ( debugCallback )
81+ {
82+ debugVerts = [ ] ;
83+ }
7984
80- pipeline . vertexCount += 3 ;
85+ for ( var i = 0 ; i < totalFaces ; i ++ )
86+ {
87+ var face = faces [ i ] ;
88+
89+ if ( model . hideCCW && ! face . isCounterClockwise ( ) )
90+ {
91+ continue ;
92+ }
93+
94+ vertexOffset = face . vertex1 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f ) ;
95+ vertexOffset = face . vertex2 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f ) ;
96+ vertexOffset = face . vertex3 . load ( F32 , U32 , vertexOffset , textureUnit , tintEffect , alpha , a , b , c , d , e , f ) ;
97+
98+ pipeline . vertexCount += 3 ;
99+
100+ if ( debugCallback )
101+ {
102+ debugVerts . push (
103+ F32 [ vertexOffset - 20 ] ,
104+ F32 [ vertexOffset - 19 ] ,
105+ F32 [ vertexOffset - 13 ] ,
106+ F32 [ vertexOffset - 12 ] ,
107+ F32 [ vertexOffset - 6 ] ,
108+ F32 [ vertexOffset - 5 ]
109+ ) ;
110+ }
111+ }
81112
82113 if ( debugCallback )
83114 {
84- debugVerts . push (
85- F32 [ vertexOffset - 20 ] ,
86- F32 [ vertexOffset - 19 ] ,
87- F32 [ vertexOffset - 13 ] ,
88- F32 [ vertexOffset - 12 ] ,
89- F32 [ vertexOffset - 6 ] ,
90- F32 [ vertexOffset - 5 ]
91- ) ;
115+ debugCallback . call ( src , src , debugVerts ) ;
92116 }
93117 }
94-
95- if ( debugCallback )
96- {
97- debugCallback . call ( src , src , src . vertices . length * 2 , debugVerts ) ;
98- }
99118} ;
100119
101120module . exports = MeshWebGLRenderer ;
0 commit comments