Skip to content

Commit b254d08

Browse files
committed
All of the WebGL Graphics draw ops have been split out, tidied up and merged.
1 parent 97b1ac9 commit b254d08

5 files changed

Lines changed: 909 additions & 104 deletions

File tree

build/config.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,19 @@
205205
<script src="$path/src/renderer/canvas/gameobjects/Stage.js"></script>
206206
207207
<script src="$path/src/renderer/webgl/WebGLRenderer.js"></script>
208-
<script src="$path/src/renderer/webgl/ShaderManager.js"></script>
209-
<script src="$path/src/renderer/webgl/StencilManager.js"></script>
210-
<script src="$path/src/renderer/webgl/FilterTexture.js"></script>
211208
<script src="$path/src/renderer/webgl/FilterManager.js"></script>
209+
<script src="$path/src/renderer/webgl/FilterTexture.js"></script>
210+
<script src="$path/src/renderer/webgl/ShaderManager.js"></script>
212211
<script src="$path/src/renderer/webgl/SpriteBatch.js"></script>
212+
<script src="$path/src/renderer/webgl/StencilManager.js"></script>
213+
<script src="$path/src/renderer/webgl/shaders/ComplexPrimitiveGraphics.js"></script>
214+
<script src="$path/src/renderer/webgl/shaders/PrimitiveGraphics.js"></script>
213215
<script src="$path/src/renderer/webgl/shaders/Sprite.js"></script>
214216
<script src="$path/src/renderer/webgl/shaders/SpriteBatch.js"></script>
215217
<script src="$path/src/renderer/webgl/shaders/Strip.js"></script>
216-
<script src="$path/src/renderer/webgl/shaders/PrimitiveGraphics.js"></script>
217-
<script src="$path/src/renderer/webgl/shaders/ComplexPrimitiveGraphics.js"></script>
218218
<script src="$path/src/renderer/webgl/gameobjects/Container.js"></script>
219219
<script src="$path/src/renderer/webgl/gameobjects/Sprite.js"></script>
220+
<script src="$path/src/renderer/webgl/gameobjects/SpriteBatch.js"></script>
220221
<script src="$path/src/renderer/webgl/gameobjects/Stage.js"></script>
221222
222223
@@ -265,6 +266,7 @@
265266
<script src="$path/src/gameobjects/Graphics.js"></script>
266267
<script src="$path/src/renderer/canvas/gameobjects/Graphics.js"></script>
267268
<script src="$path/src/renderer/webgl/gameobjects/Graphics.js"></script>
269+
<script src="$path/src/renderer/webgl/gameobjects/GraphicsData.js"></script>
268270
269271
270272
EOL;

src/renderer/webgl/FilterManager.js

Lines changed: 44 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,48 @@ Phaser.Renderer.WebGL.FilterManager.prototype = {
5959

6060
this.texturePool = [];
6161

62-
this.initShaderBuffers();
62+
// Initialises the shader buffers
63+
64+
this.vertexBuffer = gl.createBuffer();
65+
this.uvBuffer = gl.createBuffer();
66+
this.colorBuffer = gl.createBuffer();
67+
this.indexBuffer = gl.createBuffer();
68+
69+
// bind and upload the vertex data
70+
this.vertexArray = new Float32Array([
71+
0.0, 0.0,
72+
1.0, 0.0,
73+
0.0, 1.0,
74+
1.0, 1.0
75+
]);
76+
77+
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer);
78+
gl.bufferData(gl.ARRAY_BUFFER, this.vertexArray, gl.STATIC_DRAW);
79+
80+
// bind and upload the uv buffer
81+
this.uvArray = new Float32Array([
82+
0.0, 0.0,
83+
1.0, 0.0,
84+
0.0, 1.0,
85+
1.0, 1.0
86+
]);
87+
88+
gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer);
89+
gl.bufferData(gl.ARRAY_BUFFER, this.uvArray, gl.STATIC_DRAW);
90+
91+
this.colorArray = new Float32Array([
92+
1.0, 0xFFFFFF,
93+
1.0, 0xFFFFFF,
94+
1.0, 0xFFFFFF,
95+
1.0, 0xFFFFFF
96+
]);
97+
98+
gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer);
99+
gl.bufferData(gl.ARRAY_BUFFER, this.colorArray, gl.STATIC_DRAW);
100+
101+
// bind and upload the index
102+
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
103+
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([ 0, 1, 2, 1, 3, 2 ]), gl.STATIC_DRAW);
63104
},
64105

65106
/**
@@ -365,7 +406,7 @@ Phaser.Renderer.WebGL.FilterManager.prototype = {
365406
applyFilterPass: function (filter, filterArea, width, height)
366407
{
367408
var gl = this.gl;
368-
var shader = filter.shaders[gl.id];
409+
var shader = filter.shaders;
369410

370411
if (!shader)
371412
{
@@ -375,7 +416,7 @@ Phaser.Renderer.WebGL.FilterManager.prototype = {
375416
shader.uniforms = filter.uniforms;
376417
shader.init(true);
377418

378-
filter.shaders[gl.id] = shader;
419+
filter.shaders = shader;
379420
}
380421

381422
this.renderer.shaderManager.setShader(shader);
@@ -409,58 +450,6 @@ Phaser.Renderer.WebGL.FilterManager.prototype = {
409450
this.renderer.drawCount++;
410451
},
411452

412-
/**
413-
* Initialises the shader buffers.
414-
*
415-
* @method initShaderBuffers
416-
*/
417-
initShaderBuffers: function ()
418-
{
419-
var gl = this.gl;
420-
421-
this.vertexBuffer = gl.createBuffer();
422-
this.uvBuffer = gl.createBuffer();
423-
this.colorBuffer = gl.createBuffer();
424-
this.indexBuffer = gl.createBuffer();
425-
426-
// bind and upload the vertex data
427-
this.vertexArray = new Float32Array([
428-
0.0, 0.0,
429-
1.0, 0.0,
430-
0.0, 1.0,
431-
1.0, 1.0
432-
]);
433-
434-
gl.bindBuffer(gl.ARRAY_BUFFER, this.vertexBuffer);
435-
gl.bufferData(gl.ARRAY_BUFFER, this.vertexArray, gl.STATIC_DRAW);
436-
437-
// bind and upload the uv buffer
438-
this.uvArray = new Float32Array([
439-
0.0, 0.0,
440-
1.0, 0.0,
441-
0.0, 1.0,
442-
1.0, 1.0
443-
]);
444-
445-
gl.bindBuffer(gl.ARRAY_BUFFER, this.uvBuffer);
446-
gl.bufferData(gl.ARRAY_BUFFER, this.uvArray, gl.STATIC_DRAW);
447-
448-
this.colorArray = new Float32Array([
449-
1.0, 0xFFFFFF,
450-
1.0, 0xFFFFFF,
451-
1.0, 0xFFFFFF,
452-
1.0, 0xFFFFFF
453-
]);
454-
455-
gl.bindBuffer(gl.ARRAY_BUFFER, this.colorBuffer);
456-
gl.bufferData(gl.ARRAY_BUFFER, this.colorArray, gl.STATIC_DRAW);
457-
458-
// bind and upload the index
459-
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this.indexBuffer);
460-
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint16Array([ 0, 1, 2, 1, 3, 2 ]), gl.STATIC_DRAW);
461-
462-
},
463-
464453
/**
465454
* Destroys the filter and removes it from the filter stack.
466455
*

src/renderer/webgl/WebGLRenderer.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ Phaser.Renderer.WebGL = function (game)
6767
*/
6868
this.height = game.height * game.resolution;
6969

70+
this.resolution = game.resolution;
71+
7072
/**
7173
* The canvas element that everything is drawn to.
7274
*
@@ -75,6 +77,13 @@ Phaser.Renderer.WebGL = function (game)
7577
*/
7678
this.view = game.canvas;
7779

80+
/**
81+
* The number of points beyond which the renderer swaps to using the Stencil Buffer to render the Graphics.
82+
*
83+
* @type {number}
84+
*/
85+
this.stencilBufferLimit = 6;
86+
7887
// WebGL specific from here
7988

8089
this.enableMultiTextureToggle = false;
@@ -199,8 +208,8 @@ Phaser.Renderer.WebGL.prototype = {
199208

200209
this.shaderManager.init();
201210
this.spriteBatch.init();
202-
// this.filterManager.setContext(gl);
203-
// this.stencilManager.setContext(gl);
211+
this.filterManager.init();
212+
this.stencilManager.init();
204213

205214
this.resize(this.width, this.height);
206215

0 commit comments

Comments
 (0)