Skip to content

Commit 431eb69

Browse files
committed
Much cleaner rendering function, skipping invalid faces
1 parent 3e133c9 commit 431eb69

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

src/gameobjects/mesh/MeshWebGLRenderer.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,15 @@ var GetCalcMatrix = require('../GetCalcMatrix');
2222
*/
2323
var 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

Comments
 (0)