diff --git a/src/core/renderers/webgl/managers/WebGLFilterManager.js b/src/core/renderers/webgl/managers/WebGLFilterManager.js index 292cc05..5671f54 100644 --- a/src/core/renderers/webgl/managers/WebGLFilterManager.js +++ b/src/core/renderers/webgl/managers/WebGLFilterManager.js @@ -1,10 +1,9 @@ var WebGLManager = require('./WebGLManager'), FilterTexture = require('../utils/FilterTexture'), - RenderTarget = require('../utils/RenderTarget'); - DefaultShader = require('../shaders/DefaultShader'), - + RenderTarget = require('../utils/RenderTarget'), + TextureShader = require('../shaders/TextureShader'), Quad = require('./Quad'), - math = require('../../../math'); + math = require('../../../math'); /** * @class @@ -44,12 +43,11 @@ FilterManager.prototype.constructor = FilterManager; module.exports = FilterManager; - FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; this.initShaderBuffers(); -} +}; /** * @param renderer {WebGLRenderer} @@ -122,7 +120,7 @@ // if (!shader) { - shader = new DefaultShader(this, + shader = new TextureShader(this, filter.vertexSrc, filter.fragmentSrc, filter.uniforms, @@ -156,7 +154,7 @@ gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true)); - var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite) + var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite); /// m.ty = 0.1; //m.translate(0.5,0.5) // m.a = 2; @@ -263,7 +261,7 @@ // transform.scale( translateScaleX , translateScaleY ); // return transform; -} +}; FilterManager.prototype.capFilterArea = function (filterArea) { @@ -288,8 +286,7 @@ { filterArea.height = this.textureSize.height - filterArea.y; } -} - +}; /** * Initialises the shader buffers. diff --git a/src/core/renderers/webgl/managers/WebGLFilterManager.js b/src/core/renderers/webgl/managers/WebGLFilterManager.js index 292cc05..5671f54 100644 --- a/src/core/renderers/webgl/managers/WebGLFilterManager.js +++ b/src/core/renderers/webgl/managers/WebGLFilterManager.js @@ -1,10 +1,9 @@ var WebGLManager = require('./WebGLManager'), FilterTexture = require('../utils/FilterTexture'), - RenderTarget = require('../utils/RenderTarget'); - DefaultShader = require('../shaders/DefaultShader'), - + RenderTarget = require('../utils/RenderTarget'), + TextureShader = require('../shaders/TextureShader'), Quad = require('./Quad'), - math = require('../../../math'); + math = require('../../../math'); /** * @class @@ -44,12 +43,11 @@ FilterManager.prototype.constructor = FilterManager; module.exports = FilterManager; - FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; this.initShaderBuffers(); -} +}; /** * @param renderer {WebGLRenderer} @@ -122,7 +120,7 @@ // if (!shader) { - shader = new DefaultShader(this, + shader = new TextureShader(this, filter.vertexSrc, filter.fragmentSrc, filter.uniforms, @@ -156,7 +154,7 @@ gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true)); - var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite) + var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite); /// m.ty = 0.1; //m.translate(0.5,0.5) // m.a = 2; @@ -263,7 +261,7 @@ // transform.scale( translateScaleX , translateScaleY ); // return transform; -} +}; FilterManager.prototype.capFilterArea = function (filterArea) { @@ -288,8 +286,7 @@ { filterArea.height = this.textureSize.height - filterArea.y; } -} - +}; /** * Initialises the shader buffers. diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 69b86e3..fd544b3 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -30,7 +30,7 @@ WebGLManager.prototype.destroy = function () { - this.renderer.off('context', _onContextChangeFn); + this.renderer.off('context', this._onContextChangeFn); this.renderer = null; }; diff --git a/src/core/renderers/webgl/managers/WebGLFilterManager.js b/src/core/renderers/webgl/managers/WebGLFilterManager.js index 292cc05..5671f54 100644 --- a/src/core/renderers/webgl/managers/WebGLFilterManager.js +++ b/src/core/renderers/webgl/managers/WebGLFilterManager.js @@ -1,10 +1,9 @@ var WebGLManager = require('./WebGLManager'), FilterTexture = require('../utils/FilterTexture'), - RenderTarget = require('../utils/RenderTarget'); - DefaultShader = require('../shaders/DefaultShader'), - + RenderTarget = require('../utils/RenderTarget'), + TextureShader = require('../shaders/TextureShader'), Quad = require('./Quad'), - math = require('../../../math'); + math = require('../../../math'); /** * @class @@ -44,12 +43,11 @@ FilterManager.prototype.constructor = FilterManager; module.exports = FilterManager; - FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; this.initShaderBuffers(); -} +}; /** * @param renderer {WebGLRenderer} @@ -122,7 +120,7 @@ // if (!shader) { - shader = new DefaultShader(this, + shader = new TextureShader(this, filter.vertexSrc, filter.fragmentSrc, filter.uniforms, @@ -156,7 +154,7 @@ gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true)); - var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite) + var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite); /// m.ty = 0.1; //m.translate(0.5,0.5) // m.a = 2; @@ -263,7 +261,7 @@ // transform.scale( translateScaleX , translateScaleY ); // return transform; -} +}; FilterManager.prototype.capFilterArea = function (filterArea) { @@ -288,8 +286,7 @@ { filterArea.height = this.textureSize.height - filterArea.y; } -} - +}; /** * Initialises the shader buffers. diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 69b86e3..fd544b3 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -30,7 +30,7 @@ WebGLManager.prototype.destroy = function () { - this.renderer.off('context', _onContextChangeFn); + this.renderer.off('context', this._onContextChangeFn); this.renderer = null; }; diff --git a/src/core/renderers/webgl/managers/WebGLShaderManager.js b/src/core/renderers/webgl/managers/WebGLShaderManager.js index 6cf527a..b0d04ed 100644 --- a/src/core/renderers/webgl/managers/WebGLShaderManager.js +++ b/src/core/renderers/webgl/managers/WebGLShaderManager.js @@ -1,5 +1,5 @@ var WebGLManager = require('./WebGLManager'), - DefaultShader = require('../shaders/DefaultShader'), + TextureShader = require('../shaders/TextureShader'), ComplexPrimitiveShader = require('../shaders/ComplexPrimitiveShader'), PrimitiveShader = require('../shaders/PrimitiveShader'), utils = require('../../../utils'); @@ -64,7 +64,7 @@ this.initPlugins(); // TODO - Why are these not plugins? We can't decouple primitives unless they are.... - this.defaultShader = new DefaultShader(this); + this.defaultShader = new TextureShader(this); this.primitiveShader = new PrimitiveShader(this); this.complexPrimitiveShader = new ComplexPrimitiveShader(this); }; diff --git a/src/core/renderers/webgl/managers/WebGLFilterManager.js b/src/core/renderers/webgl/managers/WebGLFilterManager.js index 292cc05..5671f54 100644 --- a/src/core/renderers/webgl/managers/WebGLFilterManager.js +++ b/src/core/renderers/webgl/managers/WebGLFilterManager.js @@ -1,10 +1,9 @@ var WebGLManager = require('./WebGLManager'), FilterTexture = require('../utils/FilterTexture'), - RenderTarget = require('../utils/RenderTarget'); - DefaultShader = require('../shaders/DefaultShader'), - + RenderTarget = require('../utils/RenderTarget'), + TextureShader = require('../shaders/TextureShader'), Quad = require('./Quad'), - math = require('../../../math'); + math = require('../../../math'); /** * @class @@ -44,12 +43,11 @@ FilterManager.prototype.constructor = FilterManager; module.exports = FilterManager; - FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; this.initShaderBuffers(); -} +}; /** * @param renderer {WebGLRenderer} @@ -122,7 +120,7 @@ // if (!shader) { - shader = new DefaultShader(this, + shader = new TextureShader(this, filter.vertexSrc, filter.fragmentSrc, filter.uniforms, @@ -156,7 +154,7 @@ gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true)); - var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite) + var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite); /// m.ty = 0.1; //m.translate(0.5,0.5) // m.a = 2; @@ -263,7 +261,7 @@ // transform.scale( translateScaleX , translateScaleY ); // return transform; -} +}; FilterManager.prototype.capFilterArea = function (filterArea) { @@ -288,8 +286,7 @@ { filterArea.height = this.textureSize.height - filterArea.y; } -} - +}; /** * Initialises the shader buffers. diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 69b86e3..fd544b3 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -30,7 +30,7 @@ WebGLManager.prototype.destroy = function () { - this.renderer.off('context', _onContextChangeFn); + this.renderer.off('context', this._onContextChangeFn); this.renderer = null; }; diff --git a/src/core/renderers/webgl/managers/WebGLShaderManager.js b/src/core/renderers/webgl/managers/WebGLShaderManager.js index 6cf527a..b0d04ed 100644 --- a/src/core/renderers/webgl/managers/WebGLShaderManager.js +++ b/src/core/renderers/webgl/managers/WebGLShaderManager.js @@ -1,5 +1,5 @@ var WebGLManager = require('./WebGLManager'), - DefaultShader = require('../shaders/DefaultShader'), + TextureShader = require('../shaders/TextureShader'), ComplexPrimitiveShader = require('../shaders/ComplexPrimitiveShader'), PrimitiveShader = require('../shaders/PrimitiveShader'), utils = require('../../../utils'); @@ -64,7 +64,7 @@ this.initPlugins(); // TODO - Why are these not plugins? We can't decouple primitives unless they are.... - this.defaultShader = new DefaultShader(this); + this.defaultShader = new TextureShader(this); this.primitiveShader = new PrimitiveShader(this); this.complexPrimitiveShader = new ComplexPrimitiveShader(this); }; diff --git a/src/core/renderers/webgl/shaders/DefaultShader.js b/src/core/renderers/webgl/shaders/DefaultShader.js deleted file mode 100644 index 0c38d25..0000000 --- a/src/core/renderers/webgl/shaders/DefaultShader.js +++ /dev/null @@ -1,91 +0,0 @@ -var Shader = require('./Shader'); - -/** - * @class - * @namespace PIXI - * @param shaderManager {WebGLShaderManager} The webgl shader manager this shader works for. - * @param [vertexSrc] {string} The source of the vertex shader. - * @param [fragmentSrc] {string} The source of the fragment shader. - * @param [customUniforms] {object} Custom uniforms to use to augment the built-in ones. - * @param [fragmentSrc] {string} The source of the fragment shader. - */ -function DefaultShader(shaderManager, vertexSrc, fragmentSrc, customUniforms, customAttributes) -{ - var uniforms = { - - uSampler: { type: 'sampler2D', value: 0 }, - projectionMatrix: { type: 'mat3', value: new Float32Array(1, 0, 0, - 0, 1, 0, - 0, 0, 1) } - }; - - if(customUniforms) - { - for (var u in customUniforms) - { - uniforms[u] = customUniforms[u]; - } - } - - - var attributes = { - aVertexPosition: 0, - aTextureCoord: 0, - aColor: 0 - }; - - if(customAttributes) - { - for (var a in attributes) - { - attributes[a] = customAttributes[a]; - } - } - - /** - * The vertex shader. - * @member {Array} - */ - vertexSrc = vertexSrc || [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aTextureCoord;', - 'attribute vec4 aColor;', - - 'uniform mat3 projectionMatrix;', - - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - - 'const vec2 center = vec2(-1.0, 1.0);', - - 'void main(void){', - ' gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - ' vColor = vec4(aColor.rgb * aColor.a, aColor.a);', - '}' - ].join('\n'); - - /** - * The fragment shader. - * @member {Array} - */ - fragmentSrc = fragmentSrc || [ - 'precision lowp float;', - - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - - 'uniform sampler2D uSampler;', - - 'void main(void){', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ].join('\n'); - - Shader.call(this, shaderManager, vertexSrc, fragmentSrc, uniforms, attributes); -} - -// constructor -DefaultShader.prototype = Object.create(Shader.prototype); -DefaultShader.prototype.constructor = DefaultShader; -module.exports = DefaultShader; diff --git a/src/core/renderers/webgl/managers/WebGLFilterManager.js b/src/core/renderers/webgl/managers/WebGLFilterManager.js index 292cc05..5671f54 100644 --- a/src/core/renderers/webgl/managers/WebGLFilterManager.js +++ b/src/core/renderers/webgl/managers/WebGLFilterManager.js @@ -1,10 +1,9 @@ var WebGLManager = require('./WebGLManager'), FilterTexture = require('../utils/FilterTexture'), - RenderTarget = require('../utils/RenderTarget'); - DefaultShader = require('../shaders/DefaultShader'), - + RenderTarget = require('../utils/RenderTarget'), + TextureShader = require('../shaders/TextureShader'), Quad = require('./Quad'), - math = require('../../../math'); + math = require('../../../math'); /** * @class @@ -44,12 +43,11 @@ FilterManager.prototype.constructor = FilterManager; module.exports = FilterManager; - FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; this.initShaderBuffers(); -} +}; /** * @param renderer {WebGLRenderer} @@ -122,7 +120,7 @@ // if (!shader) { - shader = new DefaultShader(this, + shader = new TextureShader(this, filter.vertexSrc, filter.fragmentSrc, filter.uniforms, @@ -156,7 +154,7 @@ gl.uniformMatrix3fv(shader.uniforms.projectionMatrix._location, false, this.renderer.currentRenderTarget.projectionMatrix.toArray(true)); - var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite) + var m = this.calculateMappedMatrix(filterData.bounds, filter.sprite); /// m.ty = 0.1; //m.translate(0.5,0.5) // m.a = 2; @@ -263,7 +261,7 @@ // transform.scale( translateScaleX , translateScaleY ); // return transform; -} +}; FilterManager.prototype.capFilterArea = function (filterArea) { @@ -288,8 +286,7 @@ { filterArea.height = this.textureSize.height - filterArea.y; } -} - +}; /** * Initialises the shader buffers. diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 69b86e3..fd544b3 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -30,7 +30,7 @@ WebGLManager.prototype.destroy = function () { - this.renderer.off('context', _onContextChangeFn); + this.renderer.off('context', this._onContextChangeFn); this.renderer = null; }; diff --git a/src/core/renderers/webgl/managers/WebGLShaderManager.js b/src/core/renderers/webgl/managers/WebGLShaderManager.js index 6cf527a..b0d04ed 100644 --- a/src/core/renderers/webgl/managers/WebGLShaderManager.js +++ b/src/core/renderers/webgl/managers/WebGLShaderManager.js @@ -1,5 +1,5 @@ var WebGLManager = require('./WebGLManager'), - DefaultShader = require('../shaders/DefaultShader'), + TextureShader = require('../shaders/TextureShader'), ComplexPrimitiveShader = require('../shaders/ComplexPrimitiveShader'), PrimitiveShader = require('../shaders/PrimitiveShader'), utils = require('../../../utils'); @@ -64,7 +64,7 @@ this.initPlugins(); // TODO - Why are these not plugins? We can't decouple primitives unless they are.... - this.defaultShader = new DefaultShader(this); + this.defaultShader = new TextureShader(this); this.primitiveShader = new PrimitiveShader(this); this.complexPrimitiveShader = new ComplexPrimitiveShader(this); }; diff --git a/src/core/renderers/webgl/shaders/DefaultShader.js b/src/core/renderers/webgl/shaders/DefaultShader.js deleted file mode 100644 index 0c38d25..0000000 --- a/src/core/renderers/webgl/shaders/DefaultShader.js +++ /dev/null @@ -1,91 +0,0 @@ -var Shader = require('./Shader'); - -/** - * @class - * @namespace PIXI - * @param shaderManager {WebGLShaderManager} The webgl shader manager this shader works for. - * @param [vertexSrc] {string} The source of the vertex shader. - * @param [fragmentSrc] {string} The source of the fragment shader. - * @param [customUniforms] {object} Custom uniforms to use to augment the built-in ones. - * @param [fragmentSrc] {string} The source of the fragment shader. - */ -function DefaultShader(shaderManager, vertexSrc, fragmentSrc, customUniforms, customAttributes) -{ - var uniforms = { - - uSampler: { type: 'sampler2D', value: 0 }, - projectionMatrix: { type: 'mat3', value: new Float32Array(1, 0, 0, - 0, 1, 0, - 0, 0, 1) } - }; - - if(customUniforms) - { - for (var u in customUniforms) - { - uniforms[u] = customUniforms[u]; - } - } - - - var attributes = { - aVertexPosition: 0, - aTextureCoord: 0, - aColor: 0 - }; - - if(customAttributes) - { - for (var a in attributes) - { - attributes[a] = customAttributes[a]; - } - } - - /** - * The vertex shader. - * @member {Array} - */ - vertexSrc = vertexSrc || [ - 'attribute vec2 aVertexPosition;', - 'attribute vec2 aTextureCoord;', - 'attribute vec4 aColor;', - - 'uniform mat3 projectionMatrix;', - - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - - 'const vec2 center = vec2(-1.0, 1.0);', - - 'void main(void){', - ' gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);', - ' vTextureCoord = aTextureCoord;', - ' vColor = vec4(aColor.rgb * aColor.a, aColor.a);', - '}' - ].join('\n'); - - /** - * The fragment shader. - * @member {Array} - */ - fragmentSrc = fragmentSrc || [ - 'precision lowp float;', - - 'varying vec2 vTextureCoord;', - 'varying vec4 vColor;', - - 'uniform sampler2D uSampler;', - - 'void main(void){', - ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', - '}' - ].join('\n'); - - Shader.call(this, shaderManager, vertexSrc, fragmentSrc, uniforms, attributes); -} - -// constructor -DefaultShader.prototype = Object.create(Shader.prototype); -DefaultShader.prototype.constructor = DefaultShader; -module.exports = DefaultShader; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js new file mode 100644 index 0000000..0738d0e --- /dev/null +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -0,0 +1,91 @@ +var Shader = require('./Shader'); + +/** + * @class + * @namespace PIXI + * @param shaderManager {WebGLShaderManager} The webgl shader manager this shader works for. + * @param [vertexSrc] {string} The source of the vertex shader. + * @param [fragmentSrc] {string} The source of the fragment shader. + * @param [customUniforms] {object} Custom uniforms to use to augment the built-in ones. + * @param [fragmentSrc] {string} The source of the fragment shader. + */ +function TextureShader(shaderManager, vertexSrc, fragmentSrc, customUniforms, customAttributes) +{ + var uniforms = { + + uSampler: { type: 'sampler2D', value: 0 }, + projectionMatrix: { type: 'mat3', value: new Float32Array(1, 0, 0, + 0, 1, 0, + 0, 0, 1) } + }; + + if(customUniforms) + { + for (var u in customUniforms) + { + uniforms[u] = customUniforms[u]; + } + } + + + var attributes = { + aVertexPosition: 0, + aTextureCoord: 0, + aColor: 0 + }; + + if(customAttributes) + { + for (var a in attributes) + { + attributes[a] = customAttributes[a]; + } + } + + /** + * The vertex shader. + * @member {Array} + */ + vertexSrc = vertexSrc || [ + 'attribute vec2 aVertexPosition;', + 'attribute vec2 aTextureCoord;', + 'attribute vec4 aColor;', + + 'uniform mat3 projectionMatrix;', + + 'varying vec2 vTextureCoord;', + 'varying vec4 vColor;', + + 'const vec2 center = vec2(-1.0, 1.0);', + + 'void main(void){', + ' gl_Position = vec4((projectionMatrix * vec3(aVertexPosition, 1.0)).xy, 0.0, 1.0);', + ' vTextureCoord = aTextureCoord;', + ' vColor = vec4(aColor.rgb * aColor.a, aColor.a);', + '}' + ].join('\n'); + + /** + * The fragment shader. + * @member {Array} + */ + fragmentSrc = fragmentSrc || [ + 'precision lowp float;', + + 'varying vec2 vTextureCoord;', + 'varying vec4 vColor;', + + 'uniform sampler2D uSampler;', + + 'void main(void){', + ' gl_FragColor = texture2D(uSampler, vTextureCoord) * vColor ;', + '}' + ].join('\n'); + + Shader.call(this, shaderManager, vertexSrc, fragmentSrc, uniforms, attributes); +} + +// constructor +TextureShader.prototype = Object.create(Shader.prototype); +TextureShader.prototype.constructor = TextureShader; +module.exports = TextureShader;