Skip to content

Commit de4b308

Browse files
committed
Light2D update
1 parent 4ec30b8 commit de4b308

12 files changed

Lines changed: 442 additions & 232 deletions

File tree

src/gameobjects/components/Pipeline.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ var Pipeline = {
1313
{
1414
this.defaultPipeline = renderer.getPipeline(pipelineName);
1515
this.pipeline = this.defaultPipeline;
16+
return true;
1617
}
1718

18-
return this;
19+
return false;
1920
},
2021

2122
setPipeline: function (pipelineName)
@@ -25,15 +26,16 @@ var Pipeline = {
2526
if (renderer.gl && renderer.hasPipeline(pipelineName))
2627
{
2728
this.pipeline = renderer.getPipeline(pipelineName);
29+
return true;
2830
}
2931

30-
return this;
32+
return false;
3133
},
3234

3335
resetPipeline: function ()
3436
{
3537
this.pipeline = this.defaultPipeline;
36-
return this;
38+
return (this.pipeline !== null);
3739
}
3840

3941
};

src/gameobjects/text/static/TextWebGLRenderer.js

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,7 @@ var TextWebGLRenderer = function (renderer, text, interpolationPercentage, camer
1414
text.dirty = false;
1515
}
1616

17-
var getTint = Utils.getTintAppendFloatAlpha;
18-
19-
this.pipeline.batchTexture(
20-
text.canvasTexture,
21-
text.canvasTexture.width, text.canvasTexture.height,
22-
text.x, text.y,
23-
text.canvasTexture.width, text.canvasTexture.height,
24-
text.scaleX, text.scaleY,
25-
text.rotation,
26-
text.flipX, text.flipY,
27-
text.scrollFactorX, text.scrollFactorY,
28-
text.displayOriginX, text.displayOriginY,
29-
0, 0, text.canvasTexture.width, text.canvasTexture.height,
30-
getTint(text._tintTL, text._alphaTL),
31-
getTint(text._tintTR, text._alphaTR),
32-
getTint(text._tintBL, text._alphaBL),
33-
getTint(text._tintBR, text._alphaBR),
34-
0, 0,
35-
camera
36-
);
17+
this.pipeline.batchText(this, camera);
3718
};
3819

3920
module.exports = TextWebGLRenderer;

src/gameobjects/tilemap/dynamiclayer/DynamicTilemapLayerWebGLRenderer.js

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -9,50 +9,7 @@ var DynamicTilemapLayerWebGLRenderer = function (renderer, tilemapLayer, interpo
99
}
1010

1111
tilemapLayer.cull(camera);
12-
13-
var renderTiles = tilemapLayer.culledTiles;
14-
var length = renderTiles.length;
15-
var texture = tilemapLayer.tileset.image.get().source.glTexture;
16-
var tileset = tilemapLayer.tileset;
17-
var scrollFactorX = tilemapLayer.scrollFactorX;
18-
var scrollFactorY = tilemapLayer.scrollFactorY;
19-
var alpha = tilemapLayer.alpha;
20-
var x = tilemapLayer.x;
21-
var y = tilemapLayer.y;
22-
var sx = tilemapLayer.scaleX;
23-
var sy = tilemapLayer.scaleY;
24-
var getTint = Utils.getTintAppendFloatAlpha;
25-
var pipeline = this.pipeline;
26-
27-
for (var index = 0; index < length; ++index)
28-
{
29-
var tile = renderTiles[index];
30-
31-
var tileTexCoords = tileset.getTileTextureCoordinates(tile.index);
32-
if (tileTexCoords === null) { continue; }
33-
34-
var frameWidth = tile.width * (tile.flipX ? -1 : 1);
35-
var frameHeight = tile.height * (tile.flipY ? -1 : 1);
36-
var frameX = tileTexCoords.x + (tile.flipX ? tile.width : 0);
37-
var frameY = tileTexCoords.y + (tile.flipY ? tile.height : 0);
38-
var tint = getTint(tile.tint, alpha * tile.alpha);
39-
40-
pipeline.batchTexture(
41-
texture,
42-
texture.width, texture.height,
43-
x + tile.pixelX * sx, y + tile.pixelY * sy,
44-
tile.width * sx, tile.height * sy,
45-
1, 1,
46-
0,
47-
false, false,
48-
scrollFactorX, scrollFactorY,
49-
0, 0,
50-
frameX, frameY, frameWidth, frameHeight,
51-
tint, tint, tint, tint,
52-
0, 0,
53-
camera
54-
);
55-
}
12+
this.pipeline.batchDynamicTilemapLayer(tilemapLayer, camera);
5613
};
5714

5815
module.exports = DynamicTilemapLayerWebGLRenderer;

src/gameobjects/tilesprite/TileSpriteWebGLRenderer.js

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,7 @@ var TileSpriteWebGLRenderer = function (renderer, tileSprite, interpolationPerce
99
}
1010

1111
tileSprite.updateTileTexture();
12-
13-
var getTint = Utils.getTintAppendFloatAlpha;
14-
15-
this.pipeline.batchTexture(
16-
tileSprite.tileTexture,
17-
tileSprite.frame.width, tileSprite.frame.height,
18-
tileSprite.x, tileSprite.y,
19-
tileSprite.width, tileSprite.height,
20-
tileSprite.scaleX, tileSprite.scaleY,
21-
tileSprite.rotation,
22-
tileSprite.flipX, tileSprite.flipY,
23-
tileSprite.scrollFactorX, tileSprite.scrollFactorY,
24-
tileSprite.originX * tileSprite.width, tileSprite.originY * tileSprite.height,
25-
0, 0, tileSprite.width, tileSprite.height,
26-
getTint(tileSprite._tintTL, tileSprite._alphaTL),
27-
getTint(tileSprite._tintTR, tileSprite._alphaTR),
28-
getTint(tileSprite._tintBL, tileSprite._alphaBL),
29-
getTint(tileSprite._tintBR, tileSprite._alphaBR),
30-
tileSprite.tilePositionX / tileSprite.frame.width,
31-
tileSprite.tilePositionY / tileSprite.frame.height,
32-
camera
33-
);
12+
this.pipeline.batchTileSprite(this, camera);
3413
};
3514

3615
module.exports = TileSpriteWebGLRenderer;

src/renderer/webgl/WebGLPipeline.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ var WebGLPipeline = new Class({
2323
this.attributes = config.attributes;
2424
this.vertexSize = config.vertexSize;
2525
this.topology = config.topology;
26-
this.currentProgram = this.program;
2726
this.bytes = new Uint8Array(this.vertexData);
2827
// This will store the amount of components of 32 bit length
2928
this.vertexComponentCount = Utils.getComponentCount(config.attributes);
@@ -41,12 +40,12 @@ var WebGLPipeline = new Class({
4140
return this;
4241
},
4342

44-
bind: function (overrideProgram)
43+
bind: function ()
4544
{
4645
var gl = this.gl;
4746
var vertexBuffer = this.vertexBuffer;
4847
var attributes = this.attributes;
49-
var program = (!overrideProgram ? this.program : overrideProgram);
48+
var program = this.program;
5049
var renderer = this.renderer;
5150
var vertexSize = this.vertexSize;
5251

@@ -69,8 +68,6 @@ var WebGLPipeline = new Class({
6968
}
7069
}
7170

72-
this.currentProgram = program;
73-
7471
return this;
7572
},
7673

src/renderer/webgl/WebGLRenderer.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ var WebGLRenderer = new Class({
134134
this.addPipeline('TextureTintPipeline', new TextureTintPipeline(this.game, gl, this));
135135
this.addPipeline('FlatTintPipeline', new FlatTintPipeline(this.game, gl, this));
136136
this.addPipeline('BitmapMaskPipeline', new BitmapMaskPipeline(this.game, gl, this));
137-
this.addPipeline('LightPipeline', new ForwardDiffuseLightPipeline(this.game, gl, this));
137+
this.addPipeline('Light2D', new ForwardDiffuseLightPipeline(this.game, gl, this));
138138

139139
this.setBlendMode(CONST.BlendModes.NORMAL);
140140
this.resize(this.width, this.height, this.game.config.resolution);
@@ -302,14 +302,15 @@ var WebGLRenderer = new Class({
302302
return this;
303303
},
304304

305-
setPipeline: function (pipelineInstance, overrideProgram)
305+
setPipeline: function (pipelineInstance)
306306
{
307307
if (this.currentPipeline !== pipelineInstance ||
308-
this.currentPipeline.vertexBuffer !== this.currentVertexBuffer)
308+
this.currentPipeline.vertexBuffer !== this.currentVertexBuffer ||
309+
this.currentPipeline.program !== this.currentProgram)
309310
{
310311
this.flush();
311312
this.currentPipeline = pipelineInstance;
312-
this.currentPipeline.bind(overrideProgram);
313+
this.currentPipeline.bind();
313314
}
314315

315316
this.currentPipeline.onBind();

src/renderer/webgl/pipelines/BitmapMaskPipeline.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ var BitmapMaskPipeline = new Class({
5050
WebGLPipeline.prototype.onBind.call(this);
5151

5252
var renderer = this.renderer;
53-
var program = this.currentProgram;
53+
var program = this.program;
5454

55-
if (this.resolutionDirty || (this.currentProgram !== this.program))
55+
if (this.resolutionDirty)
5656
{
5757
renderer.setFloat2(program, 'uResolution', this.width, this.height);
5858
renderer.setInt1(program, 'uMainSampler', 0);

src/renderer/webgl/pipelines/FlatTintPipeline.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,48 @@ var FlatTintPipeline = new Class({
814814
break;
815815
}
816816
}
817+
},
818+
819+
// Stubs
820+
821+
drawStaticTilemapLayer: function (tilemap, camera)
822+
{
823+
},
824+
825+
drawEmitterManager: function (emitterManager, camera)
826+
{
827+
},
828+
829+
drawBlitter: function (blitter, camera)
830+
{
831+
},
832+
833+
batchSprite: function (sprite, camera)
834+
{
835+
},
836+
837+
batchMesh: function (mesh, camera)
838+
{
839+
},
840+
841+
batchBitmapText: function (bitmapText, camera)
842+
{
843+
},
844+
845+
batchDynamicBitmapText: function (bitmapText, camera)
846+
{
847+
},
817848

849+
batchText: function (text, camera)
850+
{
851+
},
852+
853+
batchDynamicTilemapLayer: function (tilemapLayer, camera)
854+
{
855+
},
856+
857+
batchTileSprite: function (tileSprite, camera)
858+
{
818859
}
819860

820861
});

0 commit comments

Comments
 (0)