Skip to content

Commit 961f00a

Browse files
committed
BlitterPipeline added
1 parent e861073 commit 961f00a

7 files changed

Lines changed: 426 additions & 139 deletions

File tree

src/gameobjects/blitter/BlitterWebGLRenderer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var BlitterWebGLRenderer = function (renderer, gameObject, interpolationPercenta
77
return;
88
}
99

10-
renderer.blitterBatch.drawBlitter(gameObject, camera)
10+
renderer.pipelines.BlitterPipeline.drawBlitter(gameObject, camera);
1111
};
1212

1313
module.exports = BlitterWebGLRenderer;

src/gameobjects/index.js

Lines changed: 56 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -11,85 +11,81 @@ var GameObjects = {
1111

1212
Components: require('./components'),
1313

14-
BitmapText: require('./bitmaptext/static/BitmapText'),
14+
//BitmapText: require('./bitmaptext/static/BitmapText'),
1515
Blitter: require('./blitter/Blitter'),
16-
Container: require('./container/Container'),
17-
DynamicBitmapText: require('./bitmaptext/dynamic/DynamicBitmapText'),
18-
DynamicTilemapLayer: require('./tilemap/dynamiclayer/DynamicTilemapLayer'),
19-
Graphics: require('./graphics/Graphics.js'),
20-
Group: require('./group/Group'),
21-
Image: require('./image/Image'),
22-
Particles: require('./particles/ParticleEmitterManager'),
23-
PathFollower: require('./pathfollower/PathFollower'),
24-
Sprite3D: require('./sprite3d/Sprite3D'),
25-
Sprite: require('./sprite/Sprite'),
26-
StaticTilemapLayer: require('./tilemap/staticlayer/StaticTilemapLayer'),
27-
Text: require('./text/static/Text'),
28-
Tile: require('./tilemap/Tile'),
29-
Tilemap: require('./tilemap/Tilemap'),
30-
Tileset: require('./tilemap/Tileset'),
31-
TileSprite: require('./tilesprite/TileSprite'),
32-
Zone: require('./zone/Zone'),
16+
//Container: require('./container/Container'),
17+
//DynamicBitmapText: require('./bitmaptext/dynamic/DynamicBitmapText'),
18+
//DynamicTilemapLayer: require('./tilemap/dynamiclayer/DynamicTilemapLayer'),
19+
//Graphics: require('./graphics/Graphics.js'),
20+
//Group: require('./group/Group'),
21+
//Image: require('./image/Image'),
22+
//Particles: require('./particles/ParticleEmitterManager'),
23+
//PathFollower: require('./pathfollower/PathFollower'),
24+
//Sprite3D: require('./sprite3d/Sprite3D'),
25+
//Sprite: require('./sprite/Sprite'),
26+
//StaticTilemapLayer: require('./tilemap/staticlayer/StaticTilemapLayer'),
27+
//Text: require('./text/static/Text'),
28+
//Tile: require('./tilemap/Tile'),
29+
//Tilemap: require('./tilemap/Tilemap'),
30+
//Tileset: require('./tilemap/Tileset'),
31+
//TileSprite: require('./tilesprite/TileSprite'),
32+
//Zone: require('./zone/Zone'),
3333

3434
// Game Object Factories
3535

3636
Factories: {
3737
Blitter: require('./blitter/BlitterFactory'),
38-
Container: require('./container/ContainerFactory'),
39-
DynamicBitmapText: require('./bitmaptext/dynamic/DynamicBitmapTextFactory'),
40-
Graphics: require('./graphics/GraphicsFactory'),
41-
Group: require('./group/GroupFactory'),
42-
Image: require('./image/ImageFactory'),
43-
Particles: require('./particles/ParticleManagerFactory'),
44-
PathFollower: require('./pathfollower/PathFollowerFactory'),
45-
Sprite: require('./sprite/SpriteFactory'),
46-
Sprite3D: require('./sprite3d/Sprite3DFactory'),
47-
StaticBitmapText: require('./bitmaptext/static/BitmapTextFactory'),
48-
Text: require('./text/static/TextFactory'),
49-
Tilemap: require('./tilemap/TilemapFactory'),
50-
TileSprite: require('./tilesprite/TileSpriteFactory'),
51-
Zone: require('./zone/ZoneFactory')
38+
//Container: require('./container/ContainerFactory'),
39+
//DynamicBitmapText: require('./bitmaptext/dynamic/DynamicBitmapTextFactory'),
40+
//Graphics: require('./graphics/GraphicsFactory'),
41+
//Group: require('./group/GroupFactory'),
42+
//Image: require('./image/ImageFactory'),
43+
//Particles: require('./particles/ParticleManagerFactory'),
44+
//PathFollower: require('./pathfollower/PathFollowerFactory'),
45+
//Sprite: require('./sprite/SpriteFactory'),
46+
//Sprite3D: require('./sprite3d/Sprite3DFactory'),
47+
//StaticBitmapText: require('./bitmaptext/static/BitmapTextFactory'),
48+
//Text: require('./text/static/TextFactory'),
49+
//Tilemap: require('./tilemap/TilemapFactory'),
50+
//TileSprite: require('./tilesprite/TileSpriteFactory'),
51+
//Zone: require('./zone/ZoneFactory')
5252
},
5353

5454
Creators: {
5555
Blitter: require('./blitter/BlitterCreator'),
56-
Container: require('./container/ContainerCreator'),
57-
DynamicBitmapText: require('./bitmaptext/dynamic/DynamicBitmapTextCreator'),
58-
Graphics: require('./graphics/GraphicsCreator'),
59-
Group: require('./group/GroupCreator'),
60-
Image: require('./image/ImageCreator'),
61-
Particles: require('./particles/ParticleManagerCreator'),
62-
Sprite: require('./sprite/SpriteCreator'),
63-
Sprite3D: require('./sprite3d/Sprite3DCreator'),
64-
StaticBitmapText: require('./bitmaptext/static/BitmapTextCreator'),
65-
Text: require('./text/static/TextCreator'),
66-
Tilemap: require('./tilemap/TilemapCreator'),
67-
TileSprite: require('./tilesprite/TileSpriteCreator'),
68-
Zone: require('./zone/ZoneCreator')
56+
//Container: require('./container/ContainerCreator'),
57+
//DynamicBitmapText: require('./bitmaptext/dynamic/DynamicBitmapTextCreator'),
58+
//Graphics: require('./graphics/GraphicsCreator'),
59+
//Group: require('./group/GroupCreator'),
60+
//Image: require('./image/ImageCreator'),
61+
//Particles: require('./particles/ParticleManagerCreator'),
62+
//Sprite: require('./sprite/SpriteCreator'),
63+
//Sprite3D: require('./sprite3d/Sprite3DCreator'),
64+
//StaticBitmapText: require('./bitmaptext/static/BitmapTextCreator'),
65+
//Text: require('./text/static/TextCreator'),
66+
//Tilemap: require('./tilemap/TilemapCreator'),
67+
//TileSprite: require('./tilesprite/TileSpriteCreator'),
68+
//Zone: require('./zone/ZoneCreator')
6969
}
7070

7171
};
7272

7373
if (WEBGL_RENDERER)
7474
{
7575
// WebGL only Game Objects
76-
GameObjects.EffectLayer = require('./effectlayer/EffectLayer');
77-
GameObjects.LightLayer = require('./lightlayer/LightLayer');
78-
GameObjects.Mesh = require('./mesh/Mesh');
79-
GameObjects.Quad = require('./quad/Quad');
80-
GameObjects.RenderPass = require('./renderpass/RenderPass.js');
76+
//GameObjects.LightLayer = require('./lightlayer/LightLayer');
77+
//GameObjects.Mesh = require('./mesh/Mesh');
78+
//GameObjects.Quad = require('./quad/Quad');
8179

82-
GameObjects.Factories.EffectLayer = require('./effectlayer/EffectLayerFactory');
83-
GameObjects.Factories.LightLayer = require('./lightlayer/LightLayerFactory');
84-
GameObjects.Factories.Mesh = require('./mesh/MeshFactory');
85-
GameObjects.Factories.Quad = require('./quad/QuadFactory');
86-
GameObjects.Factories.RenderPass = require('./renderpass/RenderPassFactory');
80+
//GameObjects.Factories.EffectLayer = require('./effectlayer/EffectLayerFactory');
81+
//GameObjects.Factories.LightLayer = require('./lightlayer/LightLayerFactory');
82+
//GameObjects.Factories.Mesh = require('./mesh/MeshFactory');
83+
//GameObjects.Factories.Quad = require('./quad/QuadFactory');
8784

88-
GameObjects.Creators.EffectLayer = require('./effectlayer/EffectLayerCreator');
89-
GameObjects.Creators.LightLayer = require('./lightlayer/LightLayerCreator');
90-
GameObjects.Creators.Mesh = require('./mesh/MeshCreator');
91-
GameObjects.Creators.Quad = require('./quad/QuadCreator');
92-
GameObjects.Creators.RenderPass = require('./renderpass/RenderPassCreator');
85+
//GameObjects.Creators.EffectLayer = require('./effectlayer/EffectLayerCreator');
86+
//GameObjects.Creators.LightLayer = require('./lightlayer/LightLayerCreator');
87+
//GameObjects.Creators.Mesh = require('./mesh/MeshCreator');
88+
//GameObjects.Creators.Quad = require('./quad/QuadCreator');
9389
}
9490

9591
module.exports = GameObjects;

src/renderer/webgl/WebGLPipeline.js

Lines changed: 8 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ var WebGLPipeline = new Class({
1717
this.vertexCapacity = config.vertexCapacity;
1818
this.renderer = config.renderer;
1919
this.vertexData = new ArrayBuffer(config.vertexCapacity * config.vertexSize);
20-
this.vertexBuffer = renderer.createVertexBuffer(this.vertexData.byteLength, gl.STREAM_DRAW);
21-
this.program = renderer.createProgram(config.shader.vert, config.shader.frag);
20+
this.vertexBuffer = this.renderer.createVertexBuffer(this.vertexData.byteLength, this.gl.STREAM_DRAW);
21+
this.program = this.renderer.createProgram(config.shader.vert, config.shader.frag);
2222
this.attributes = config.attributes;
2323
this.vertexSize = config.vertexSize;
2424
this.topology = config.topology;
25+
this.currentProgram = this.program;
26+
this.bytes = new Uint8Array(this.vertexData);
2527
},
2628

2729
shouldFlush: function ()
@@ -64,6 +66,8 @@ var WebGLPipeline = new Class({
6466
}
6567
}
6668

69+
this.currentProgram = program;
70+
6771
return this;
6872
},
6973

@@ -74,10 +78,11 @@ var WebGLPipeline = new Class({
7478
var vertexBuffer = this.vertexBuffer;
7579
var vertexData = this.vertexData;
7680
var topology = this.topology;
81+
var vertexSize = this.vertexSize;
7782

7883
if (vertexCount === 0) return;
7984

80-
gl.bufferSubData(gl.ARRAY_BUFFER, 0, vertexData);
85+
gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.bytes.subarray(0, vertexCount * vertexSize));
8186
gl.drawArrays(topology, 0, vertexCount);
8287

8388
this.vertexCount = 0;
@@ -95,72 +100,6 @@ var WebGLPipeline = new Class({
95100
this.program = null;
96101
this.vertexBuffer = null;
97102

98-
return this;
99-
},
100-
101-
setFloat1: function (name, x)
102-
{
103-
this.gl.uniform1f(this.gl.getUniformLocation(this.program, name), x);
104-
return this;
105-
},
106-
107-
setFloat2: function (name, x, y)
108-
{
109-
this.gl.uniform2f(this.gl.getUniformLocation(this.program, name), x, y);
110-
return this;
111-
},
112-
113-
setFloat3: function (name, x, y, z)
114-
{
115-
this.gl.uniform3f(this.gl.getUniformLocation(this.program, name), x, y, z);
116-
return this;
117-
},
118-
119-
setFloat4: function (name, x, y, z, w)
120-
{
121-
this.gl.uniform4f(this.gl.getUniformLocation(this.program, name), x, y, z, w);
122-
return this;
123-
},
124-
125-
setInt1: function (name, x)
126-
{
127-
this.gl.uniform1i(this.gl.getUniformLocation(this.program, name), x);
128-
return this;
129-
},
130-
131-
setInt2: function (name, x, y)
132-
{
133-
this.gl.uniform2i(this.gl.getUniformLocation(this.program, name), x, y);
134-
return this;
135-
},
136-
137-
setInt3: function (name, x, y, z)
138-
{
139-
this.gl.uniform3i(this.gl.getUniformLocation(this.program, name), x, y, z);
140-
return this;
141-
},
142-
143-
setInt4: function (name, x, y, z, w)
144-
{
145-
this.gl.uniform4i(this.gl.getUniformLocation(this.program, name), x, y, z, w);
146-
return this;
147-
},
148-
149-
setMatrix2: function (name, transpose, matrix)
150-
{
151-
this.gl.uniformMatrix2fv(this.gl.getUniformLocation(this.program, name), transpose, matrix);
152-
return this;
153-
},
154-
155-
setMatrix3: function (name, transpose, matrix)
156-
{
157-
this.gl.uniformMatrix2fv(this.gl.getUniformLocation(this.program, name), transpose, matrix);
158-
return this;
159-
},
160-
161-
setMatrix4: function (name, transpose, matrix)
162-
{
163-
this.gl.uniformMatrix2fv(this.gl.getUniformLocation(this.program, name), transpose, matrix);
164103
return this;
165104
}
166105

0 commit comments

Comments
 (0)