From 2ff76eb4b599243e331366dfdf922268d1f64b9b Mon Sep 17 00:00:00 2001 From: Richard Davey Date: Thu, 25 Apr 2019 12:13:09 +0100 Subject: [PATCH] Removed un-needed Quad Pipeline and shaders --- src/renderer/webgl/WebGLRenderer.js | 2 - .../webgl/pipelines/QuadShaderPipeline.js | 238 ------------------ src/renderer/webgl/pipelines/index.js | 1 - src/renderer/webgl/shaders/QuadShader-frag.js | 43 ---- src/renderer/webgl/shaders/QuadShader-vert.js | 23 -- .../webgl/shaders/src/QuadShader.frag | 40 --- .../webgl/shaders/src/QuadShader.vert | 20 -- 7 files changed, 367 deletions(-) delete mode 100644 src/renderer/webgl/pipelines/QuadShaderPipeline.js delete mode 100644 src/renderer/webgl/shaders/QuadShader-frag.js delete mode 100644 src/renderer/webgl/shaders/QuadShader-vert.js delete mode 100644 src/renderer/webgl/shaders/src/QuadShader.frag delete mode 100644 src/renderer/webgl/shaders/src/QuadShader.vert diff --git a/src/renderer/webgl/WebGLRenderer.js b/src/renderer/webgl/WebGLRenderer.js index a66ac4ef6..b4f42eb49 100644 --- a/src/renderer/webgl/WebGLRenderer.js +++ b/src/renderer/webgl/WebGLRenderer.js @@ -19,7 +19,6 @@ var WebGLSnapshot = require('../snapshot/WebGLSnapshot'); // Default Pipelines var BitmapMaskPipeline = require('./pipelines/BitmapMaskPipeline'); var ForwardDiffuseLightPipeline = require('./pipelines/ForwardDiffuseLightPipeline'); -var QuadShaderPipeline = require('./pipelines/QuadShaderPipeline'); var TextureTintPipeline = require('./pipelines/TextureTintPipeline'); /** @@ -605,7 +604,6 @@ var WebGLRenderer = new Class({ this.addPipeline('TextureTintPipeline', new TextureTintPipeline({ game: game, renderer: this })); this.addPipeline('BitmapMaskPipeline', new BitmapMaskPipeline({ game: game, renderer: this })); this.addPipeline('Light2D', new ForwardDiffuseLightPipeline({ game: game, renderer: this, maxLights: config.maxLights })); - this.addPipeline('QuadShaderPipeline', new QuadShaderPipeline({ game: game, renderer: this })); this.setBlendMode(CONST.BlendModes.NORMAL); diff --git a/src/renderer/webgl/pipelines/QuadShaderPipeline.js b/src/renderer/webgl/pipelines/QuadShaderPipeline.js deleted file mode 100644 index 1b5e08c4c..000000000 --- a/src/renderer/webgl/pipelines/QuadShaderPipeline.js +++ /dev/null @@ -1,238 +0,0 @@ -/** - * @author Richard Davey - * @copyright 2019 Photon Storm Ltd. - * @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License} - */ - -var Class = require('../../../utils/Class'); -var ModelViewProjection = require('./components/ModelViewProjection'); -var ShaderSourceFS = require('../shaders/QuadShader-frag.js'); -var ShaderSourceVS = require('../shaders/QuadShader-vert.js'); -var TransformMatrix = require('../../../gameobjects/components/TransformMatrix'); -var WebGLPipeline = require('../WebGLPipeline'); - -/** - * @classdesc - * - * A single quad with its own custom shader applied to it. - * The quad can have a size, position, rotation and scale. - * - * Once the quad is drawn the batch is flushed. There is no batching of these objects. - * - * @class QuadShaderPipeline - * @extends Phaser.Renderer.WebGL.WebGLPipeline - * @memberof Phaser.Renderer.WebGL.Pipelines - * @constructor - * @since 3.17.0 - * - * @param {object} config - The configuration options for this Pipeline, as described above. - */ -var QuadShaderPipeline = new Class({ - - Extends: WebGLPipeline, - - Mixins: [ - ModelViewProjection - ], - - initialize: - - function QuadShaderPipeline (config) - { - WebGLPipeline.call(this, { - game: config.game, - renderer: config.renderer, - gl: config.renderer.gl, - topology: config.renderer.gl.TRIANGLES, - vertShader: ShaderSourceVS, - fragShader: ShaderSourceFS, - vertexCapacity: 6, - vertexSize: Float32Array.BYTES_PER_ELEMENT * 2, - attributes: [ - { - name: 'inPosition', - size: 2, - type: config.renderer.gl.FLOAT, - normalized: false, - offset: 0 - } - ] - }); - - /** - * Float32 view of the array buffer containing the pipeline's vertices. - * - * @name Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#vertexViewF32 - * @type {Float32Array} - * @since 3.17.0 - */ - this.vertexViewF32 = new Float32Array(this.vertexData); - - /** - * A temporary Transform Matrix, re-used internally during batching. - * - * @name Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#_tempMatrix1 - * @private - * @type {Phaser.GameObjects.Components.TransformMatrix} - * @since 3.17.0 - */ - this._tempMatrix1 = new TransformMatrix(); - - /** - * A temporary Transform Matrix, re-used internally during batching. - * - * @name Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#_tempMatrix2 - * @private - * @type {Phaser.GameObjects.Components.TransformMatrix} - * @since 3.17.0 - */ - this._tempMatrix2 = new TransformMatrix(); - - /** - * A temporary Transform Matrix, re-used internally during batching. - * - * @name Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#_tempMatrix3 - * @private - * @type {Phaser.GameObjects.Components.TransformMatrix} - * @since 3.17.0 - */ - this._tempMatrix3 = new TransformMatrix(); - - /** - * A temporary Transform Matrix, re-used internally during batching. - * - * @name Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#_tempMatrix4 - * @private - * @type {Phaser.GameObjects.Components.TransformMatrix} - * @since 3.17.0 - */ - this._tempMatrix4 = new TransformMatrix(); - - this.defaultProgram = this.program; - - this.mvpInit(); - }, - - /** - * Called every time the pipeline needs to be used. - * It binds all necessary resources. - * - * @method Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#bind - * @since 3.17.0 - * - * @return {this} This WebGLPipeline instance. - */ - // bind: function () - // { - // WebGLPipeline.prototype.bind.call(this); - // }, - - /** - * Resizes this pipeline and updates the projection. - * - * @method Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#resize - * @since 3.17.0 - * - * @param {number} width - The new width. - * @param {number} height - The new height. - * @param {number} resolution - The resolution. - * - * @return {this} This WebGLPipeline instance. - */ - resize: function (width, height, resolution) - { - WebGLPipeline.prototype.resize.call(this, width, height, resolution); - - this.projOrtho(0, this.width, this.height, 0, -1000.0, 1000.0); - - return this; - }, - - /** - * Uploads the vertex data and emits a draw call for the current batch of vertices. - * - * @method Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#flush - * @since 3.17.0 - * - * @return {this} This WebGLPipeline instance. - */ - flush: function () - { - if (this.flushLocked) - { - return this; - } - - var gl = this.gl; - var vertexCount = 6; - var topology = this.topology; - var vertexSize = this.vertexSize; - - gl.bufferSubData(gl.ARRAY_BUFFER, 0, this.bytes.subarray(0, vertexCount * vertexSize)); - - // 0 = first batch index - // 6 = batchVertexCount - gl.drawArrays(topology, 0, vertexCount); - - return this; - }, - - /** - * Renders a single quad using the current shader and then flushes the batch. - * - * @method Phaser.Renderer.WebGL.Pipelines.QuadShaderPipeline#draw - * @since 3.17.0 - * - * @param {number} x - Horizontal top left coordinate of the rectangle. - * @param {number} y - Vertical top left coordinate of the rectangle. - * @param {number} width - Width of the rectangle. - * @param {number} height - Height of the rectangle. - * @param {Phaser.GameObjects.Components.TransformMatrix} currentMatrix - The current transform. - * @param {Phaser.GameObjects.Components.TransformMatrix} parentMatrix - The parent transform. - */ - draw: function (x, y, width, height, currentMatrix, parentMatrix) - { - var calcMatrix = this._tempMatrix3; - - // Multiply and store result in calcMatrix, only if the parentMatrix is set, otherwise we'll use whatever values are already in the calcMatrix - if (parentMatrix) - { - parentMatrix.multiply(currentMatrix, calcMatrix); - } - - var xw = x + width; - var yh = y + height; - - var x0 = calcMatrix.getX(x, y); - var y0 = calcMatrix.getY(x, y); - - var x1 = calcMatrix.getX(x, yh); - var y1 = calcMatrix.getY(x, yh); - - var x2 = calcMatrix.getX(xw, yh); - var y2 = calcMatrix.getY(xw, yh); - - var x3 = calcMatrix.getX(xw, y); - var y3 = calcMatrix.getY(xw, y); - - var vertexViewF32 = this.vertexViewF32; - - vertexViewF32[0] = x0; - vertexViewF32[1] = y0; - vertexViewF32[2] = x1; - vertexViewF32[3] = y1; - vertexViewF32[4] = x2; - vertexViewF32[5] = y2; - vertexViewF32[6] = x0; - vertexViewF32[7] = y0; - vertexViewF32[8] = x2; - vertexViewF32[9] = y2; - vertexViewF32[10] = x3; - vertexViewF32[11] = y3; - - this.flush(); - } - -}); - -module.exports = QuadShaderPipeline; diff --git a/src/renderer/webgl/pipelines/index.js b/src/renderer/webgl/pipelines/index.js index 1e088e4fb..0de0d5ded 100644 --- a/src/renderer/webgl/pipelines/index.js +++ b/src/renderer/webgl/pipelines/index.js @@ -12,7 +12,6 @@ module.exports = { BitmapMaskPipeline: require('./BitmapMaskPipeline'), ForwardDiffuseLightPipeline: require('./ForwardDiffuseLightPipeline'), - QuadShaderPipeline: require('./QuadShaderPipeline'), TextureTintPipeline: require('./TextureTintPipeline'), ModelViewProjection: require('./components/ModelViewProjection') diff --git a/src/renderer/webgl/shaders/QuadShader-frag.js b/src/renderer/webgl/shaders/QuadShader-frag.js deleted file mode 100644 index 9c824f44e..000000000 --- a/src/renderer/webgl/shaders/QuadShader-frag.js +++ /dev/null @@ -1,43 +0,0 @@ -module.exports = [ - '#define SHADER_NAME PHASER_QUAD_SHADER_FS', - '', - 'precision mediump float;', - '', - 'uniform float time;', - 'uniform vec2 resolution;', - 'uniform vec2 mouse;', - '', - 'varying vec2 fragCoord;', - '', - 'vec3 hsv2rgb (vec3 c)', - '{', - ' vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);', - ' vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);', - ' return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);', - '}', - '', - 'void main (void)', - '{', - ' // Normalized pixel coordinates (from 0 to 1)', - ' // vec2 uv = fragCoord / resolution.xy;', - '', - ' // Time varying pixel color', - ' // vec3 col = 0.5 + 0.5 * cos(time + uv.xyx + vec3(0,2,4));', - '', - ' // gl_FragColor = vec4(col, 1.0);', - '', - ' // vec2 gg = gl_FragCoord.xy;', - ' vec2 gg = fragCoord.xy;', - ' float bins = 10.0;', - ' vec2 pos = (gg / resolution.xy);', - '', - ' // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/gl_FragCoord.xhtml', - '', - ' // vec2 pos = vec2(resolution.x / gl_FragCoord.x, resolution.y / gl_FragCoord.y);', - '', - ' float bin = floor(pos.x * bins);', - '', - ' gl_FragColor = vec4(hsv2rgb(vec3(bin/bins, 0.5, 1.0)), 1.0);', - '}', - '' -].join('\n'); diff --git a/src/renderer/webgl/shaders/QuadShader-vert.js b/src/renderer/webgl/shaders/QuadShader-vert.js deleted file mode 100644 index c41681333..000000000 --- a/src/renderer/webgl/shaders/QuadShader-vert.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = [ - '#define SHADER_NAME PHASER_QUAD_SHADER_VS', - '', - 'precision mediump float;', - '', - '// These are set in ModelViewProjection.mvpUpdate', - 'uniform mat4 uProjectionMatrix;', - 'uniform mat4 uViewMatrix;', - 'uniform mat4 uModelMatrix;', - '', - '// These are set in QuadShaderPipeline', - 'attribute vec2 inPosition;', - '', - 'varying vec2 fragCoord;', - '', - 'void main ()', - '{', - ' gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(inPosition, 1.0, 1.0);', - '', - ' fragCoord = inPosition;', - '}', - '' -].join('\n'); diff --git a/src/renderer/webgl/shaders/src/QuadShader.frag b/src/renderer/webgl/shaders/src/QuadShader.frag deleted file mode 100644 index 0adc2bbd8..000000000 --- a/src/renderer/webgl/shaders/src/QuadShader.frag +++ /dev/null @@ -1,40 +0,0 @@ -#define SHADER_NAME PHASER_QUAD_SHADER_FS - -precision mediump float; - -uniform float time; -uniform vec2 resolution; -uniform vec2 mouse; - -varying vec2 fragCoord; - -vec3 hsv2rgb (vec3 c) -{ - vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); - vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); - return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); -} - -void main (void) -{ - // Normalized pixel coordinates (from 0 to 1) - // vec2 uv = fragCoord / resolution.xy; - - // Time varying pixel color - // vec3 col = 0.5 + 0.5 * cos(time + uv.xyx + vec3(0,2,4)); - - // gl_FragColor = vec4(col, 1.0); - - // vec2 gg = gl_FragCoord.xy; - vec2 gg = fragCoord.xy; - float bins = 10.0; - vec2 pos = (gg / resolution.xy); - - // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/gl_FragCoord.xhtml - - // vec2 pos = vec2(resolution.x / gl_FragCoord.x, resolution.y / gl_FragCoord.y); - - float bin = floor(pos.x * bins); - - gl_FragColor = vec4(hsv2rgb(vec3(bin/bins, 0.5, 1.0)), 1.0); -} diff --git a/src/renderer/webgl/shaders/src/QuadShader.vert b/src/renderer/webgl/shaders/src/QuadShader.vert deleted file mode 100644 index 6e49dd21d..000000000 --- a/src/renderer/webgl/shaders/src/QuadShader.vert +++ /dev/null @@ -1,20 +0,0 @@ -#define SHADER_NAME PHASER_QUAD_SHADER_VS - -precision mediump float; - -// These are set in ModelViewProjection.mvpUpdate -uniform mat4 uProjectionMatrix; -uniform mat4 uViewMatrix; -uniform mat4 uModelMatrix; - -// These are set in QuadShaderPipeline -attribute vec2 inPosition; - -varying vec2 fragCoord; - -void main () -{ - gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(inPosition, 1.0, 1.0); - - fragCoord = inPosition; -}