Skip to content

Commit ae13ac7

Browse files
committed
The Canvas and WebGL Renderers are now included based on Webpack feature flags, allowing us to build a 'WebGL only' or 'Canvas only' version of Phaser 3.
1 parent 405cef0 commit ae13ac7

18 files changed

Lines changed: 251 additions & 38 deletions

File tree

v3/.eslintrc.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
},
77
"extends": "eslint:recommended",
88
"globals": {
9+
"WEBGL_RENDERER": true,
10+
"CANVAS_RENDERER": true,
911
"Phaser": true,
1012
"p2": true
1113
},

v3/src/boot/CreateRenderer.js

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
var CONST = require('../const');
22
var CanvasPool = require('../dom/CanvasPool');
33
var Features = require('../device/Features');
4-
var CanvasRenderer = require('../renderer/canvas/CanvasRenderer');
5-
var WebGLRenderer = require('../renderer/webgl/WebGLRenderer');
64
var CanvasInterpolation = require('../dom/CanvasInterpolation');
75

86
var CreateRenderer = function (game)
@@ -64,19 +62,45 @@ var CreateRenderer = function (game)
6462
game.canvas.style.height = (config.height * config.zoom).toString() + 'px';
6563
}
6664

67-
// Create the renderer
68-
if (config.renderType === CONST.WEBGL)
65+
var CanvasRenderer;
66+
var WebGLRenderer;
67+
68+
if (WEBGL_RENDERER && CANVAS_RENDERER)
69+
{
70+
CanvasRenderer = require('../renderer/canvas/CanvasRenderer');
71+
WebGLRenderer = require('../renderer/webgl/WebGLRenderer');
72+
73+
// Let the config pick the renderer type, both are included
74+
if (config.renderType === CONST.WEBGL)
75+
{
76+
game.renderer = new WebGLRenderer(game);
77+
game.context = null;
78+
}
79+
else
80+
{
81+
game.renderer = new CanvasRenderer(game);
82+
game.context = game.renderer.gameContext;
83+
}
84+
}
85+
86+
if (WEBGL_RENDERER && !CANVAS_RENDERER)
6987
{
88+
WebGLRenderer = require('../renderer/webgl/WebGLRenderer');
89+
90+
// Force the type to WebGL, regardless what was requested
91+
config.renderType = CONST.WEBGL;
7092
game.renderer = new WebGLRenderer(game);
7193
game.context = null;
7294
}
73-
else
95+
96+
if (!WEBGL_RENDERER && CANVAS_RENDERER)
7497
{
98+
CanvasRenderer = require('../renderer/canvas/CanvasRenderer');
99+
100+
// Force the type to Canvas, regardless what was requested
101+
config.renderType = CONST.CANVAS;
75102
game.renderer = new CanvasRenderer(game);
76103
game.context = game.renderer.gameContext;
77-
78-
// debug
79-
game.canvas.id = 'game';
80104
}
81105
};
82106

v3/src/boot/Game.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ var Game = new Class({
6666

6767
this.config.preBoot();
6868

69-
DebugHeader(this);
70-
7169
CreateRenderer(this);
7270

71+
DebugHeader(this);
72+
7373
AddToDOM(this.canvas, this.config.parent);
7474

7575
this.anims.boot(this.textures);
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../../utils/NOOP');
2+
var renderCanvas = require('../../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./DynamicBitmapTextWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./DynamicBitmapTextCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./DynamicBitmapTextCanvasRenderer'),
4-
renderWebGL: require('./DynamicBitmapTextWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../../utils/NOOP');
2+
var renderCanvas = require('../../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./BitmapTextWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./BitmapTextCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./BitmapTextCanvasRenderer'),
4-
renderWebGL: require('./BitmapTextWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../utils/NOOP');
2+
var renderCanvas = require('../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./BlitterWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./BlitterCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./BlitterCanvasRenderer'),
4-
renderWebGL: require('./BlitterWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../utils/NOOP');
2+
var renderCanvas = require('../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./EffectLayerWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./EffectLayerCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./EffectLayerCanvasRenderer'),
4-
renderWebGL: require('./EffectLayerWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../utils/NOOP');
2+
var renderCanvas = require('../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./GraphicsWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./GraphicsCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./GraphicsCanvasRenderer'),
4-
renderWebGL: require('./GraphicsWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../utils/NOOP');
2+
var renderCanvas = require('../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./ImageWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./ImageCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./ImageCanvasRenderer'),
4-
renderWebGL: require('./ImageWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};
Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
var renderWebGL = require('../../utils/NOOP');
2+
var renderCanvas = require('../../utils/NOOP');
3+
4+
if (WEBGL_RENDERER)
5+
{
6+
renderWebGL = require('./LightLayerWebGLRenderer');
7+
}
8+
9+
if (CANVAS_RENDERER)
10+
{
11+
renderCanvas = require('./LightLayerCanvasRenderer');
12+
}
13+
114
module.exports = {
215

3-
renderCanvas: require('./LightLayerCanvasRenderer'),
4-
renderWebGL: require('./LightLayerWebGLRenderer')
16+
renderWebGL: renderWebGL,
17+
renderCanvas: renderCanvas
518

619
};

0 commit comments

Comments
 (0)