diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index 3df2e4f..282ba87 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -91,7 +91,7 @@ // This could be speeded up for sure! var shader = this.primitiveShader; renderer.bindShader(shader) - renderer.blendModeManager.setBlendMode( graphics.blendMode ); + renderer.state.setBlendMode( graphics.blendMode ); for (var i = 0, n = webGL.data.length; i < n; i++) { diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index 3df2e4f..282ba87 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -91,7 +91,7 @@ // This could be speeded up for sure! var shader = this.primitiveShader; renderer.bindShader(shader) - renderer.blendModeManager.setBlendMode( graphics.blendMode ); + renderer.state.setBlendMode( graphics.blendMode ); for (var i = 0, n = webGL.data.length; i < n; i++) { diff --git a/src/core/index.js b/src/core/index.js index fc5e48f..cb7f852 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -48,7 +48,6 @@ // renderers - webgl WebGLRenderer: require('./renderers/webgl/WebGLRenderer'), WebGLManager: require('./renderers/webgl/managers/WebGLManager'), - ShaderManager: require('./renderers/webgl/managers/ShaderManager'), Shader: require('./renderers/webgl/shaders/Shader'), ObjectRenderer: require('./renderers/webgl/utils/ObjectRenderer'), RenderTarget: require('./renderers/webgl/utils/RenderTarget'), diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index 3df2e4f..282ba87 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -91,7 +91,7 @@ // This could be speeded up for sure! var shader = this.primitiveShader; renderer.bindShader(shader) - renderer.blendModeManager.setBlendMode( graphics.blendMode ); + renderer.state.setBlendMode( graphics.blendMode ); for (var i = 0, n = webGL.data.length; i < n; i++) { diff --git a/src/core/index.js b/src/core/index.js index fc5e48f..cb7f852 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -48,7 +48,6 @@ // renderers - webgl WebGLRenderer: require('./renderers/webgl/WebGLRenderer'), WebGLManager: require('./renderers/webgl/managers/WebGLManager'), - ShaderManager: require('./renderers/webgl/managers/ShaderManager'), Shader: require('./renderers/webgl/shaders/Shader'), ObjectRenderer: require('./renderers/webgl/utils/ObjectRenderer'), RenderTarget: require('./renderers/webgl/utils/RenderTarget'), diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index c7fb9a4..7ff72ec 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -2,14 +2,12 @@ MaskManager = require('./managers/MaskManager'), StencilManager = require('./managers/StencilManager'), FilterManager = require('./managers/FilterManager'), - BlendModeManager = require('./managers/BlendModeManager'), RenderTarget = require('./utils/RenderTarget'), ObjectRenderer = require('./utils/ObjectRenderer'), TextureManager = require('./TextureManager'), RenderTextureManager = require('./RenderTextureManager'), WebGLState = require('./WebGLState'), createContext = require('pixi-gl-core').createContext, - mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'), mapWebGLDrawModesToPixi = require('./utils/mapWebGLDrawModesToPixi'), utils = require('../../utils'), CONST = require('../../const'); @@ -90,8 +88,6 @@ */ this.stencilManager = new StencilManager(this); - this.blendModeManager = new BlendModeManager(this); - /** * The currently active ObjectRenderer. * @@ -119,7 +115,6 @@ this.filterManager = new FilterManager(this); // map some webGL blend and drawmodes.. - this.blendModes = mapWebGLBlendModesToPixi(gl); this.drawModes = mapWebGLDrawModesToPixi(gl) @@ -134,6 +129,8 @@ this._activeRenderTarget = null; this._activeTextureLocation = 999; this._activeTexture = null; + + this.setBlendMode(0) } // constructor @@ -269,9 +266,9 @@ } }; -WebGLRenderer.prototype.setBlendMode = function (mode) +WebGLRenderer.prototype.setBlendMode = function (blendMode) { - // fill in here.. + this.state.setBlendMode(blendMode); } WebGLRenderer.prototype.clear = function (clearColor) diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index 3df2e4f..282ba87 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -91,7 +91,7 @@ // This could be speeded up for sure! var shader = this.primitiveShader; renderer.bindShader(shader) - renderer.blendModeManager.setBlendMode( graphics.blendMode ); + renderer.state.setBlendMode( graphics.blendMode ); for (var i = 0, n = webGL.data.length; i < n; i++) { diff --git a/src/core/index.js b/src/core/index.js index fc5e48f..cb7f852 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -48,7 +48,6 @@ // renderers - webgl WebGLRenderer: require('./renderers/webgl/WebGLRenderer'), WebGLManager: require('./renderers/webgl/managers/WebGLManager'), - ShaderManager: require('./renderers/webgl/managers/ShaderManager'), Shader: require('./renderers/webgl/shaders/Shader'), ObjectRenderer: require('./renderers/webgl/utils/ObjectRenderer'), RenderTarget: require('./renderers/webgl/utils/RenderTarget'), diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index c7fb9a4..7ff72ec 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -2,14 +2,12 @@ MaskManager = require('./managers/MaskManager'), StencilManager = require('./managers/StencilManager'), FilterManager = require('./managers/FilterManager'), - BlendModeManager = require('./managers/BlendModeManager'), RenderTarget = require('./utils/RenderTarget'), ObjectRenderer = require('./utils/ObjectRenderer'), TextureManager = require('./TextureManager'), RenderTextureManager = require('./RenderTextureManager'), WebGLState = require('./WebGLState'), createContext = require('pixi-gl-core').createContext, - mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'), mapWebGLDrawModesToPixi = require('./utils/mapWebGLDrawModesToPixi'), utils = require('../../utils'), CONST = require('../../const'); @@ -90,8 +88,6 @@ */ this.stencilManager = new StencilManager(this); - this.blendModeManager = new BlendModeManager(this); - /** * The currently active ObjectRenderer. * @@ -119,7 +115,6 @@ this.filterManager = new FilterManager(this); // map some webGL blend and drawmodes.. - this.blendModes = mapWebGLBlendModesToPixi(gl); this.drawModes = mapWebGLDrawModesToPixi(gl) @@ -134,6 +129,8 @@ this._activeRenderTarget = null; this._activeTextureLocation = 999; this._activeTexture = null; + + this.setBlendMode(0) } // constructor @@ -269,9 +266,9 @@ } }; -WebGLRenderer.prototype.setBlendMode = function (mode) +WebGLRenderer.prototype.setBlendMode = function (blendMode) { - // fill in here.. + this.state.setBlendMode(blendMode); } WebGLRenderer.prototype.clear = function (clearColor) diff --git a/src/core/renderers/webgl/WebGLState.js b/src/core/renderers/webgl/WebGLState.js index dbae0f4..ba5e036 100755 --- a/src/core/renderers/webgl/WebGLState.js +++ b/src/core/renderers/webgl/WebGLState.js @@ -1,5 +1,6 @@ - +var mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'); + var WebGLState = function(gl) @@ -18,6 +19,9 @@ this.maxAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + this.blendModes = mapWebGLBlendModesToPixi(gl); + + // check we have vao.. this.nativeVaoExtension = ( gl.getExtension('OES_vertex_array_object') || @@ -47,7 +51,8 @@ var BLEND = 0, DEPTH_TEST = 1, FRONT_FACE = 2, - CULL_FACE = 3; + CULL_FACE = 3, + BLEND_FUNC = 4; WebGLState.prototype.pop = function() { @@ -61,6 +66,7 @@ this.setDepthTest(state[DEPTH_TEST]); this.setDepthTest(state[FRONT_FACE]); this.setDepthTest(state[CULL_FACE]); + this.setDepthTest(state[BLEND_FUNC]); } WebGLState.prototype.setBlendMode = function(blendMode) @@ -86,6 +92,15 @@ } } +WebGLState.prototype.setBlendMode = function(value) +{ + if(value === this.activeState[BLEND_FUNC])return; + + this.activeState[BLEND_FUNC] = value; + + this.gl.blendFunc(this.blendModes[value][0], this.blendModes[value][1]); +} + WebGLState.prototype.setDepthTest = function(value) { if(this.activeState[DEPTH_TEST] === value|0)return; diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index 3df2e4f..282ba87 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -91,7 +91,7 @@ // This could be speeded up for sure! var shader = this.primitiveShader; renderer.bindShader(shader) - renderer.blendModeManager.setBlendMode( graphics.blendMode ); + renderer.state.setBlendMode( graphics.blendMode ); for (var i = 0, n = webGL.data.length; i < n; i++) { diff --git a/src/core/index.js b/src/core/index.js index fc5e48f..cb7f852 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -48,7 +48,6 @@ // renderers - webgl WebGLRenderer: require('./renderers/webgl/WebGLRenderer'), WebGLManager: require('./renderers/webgl/managers/WebGLManager'), - ShaderManager: require('./renderers/webgl/managers/ShaderManager'), Shader: require('./renderers/webgl/shaders/Shader'), ObjectRenderer: require('./renderers/webgl/utils/ObjectRenderer'), RenderTarget: require('./renderers/webgl/utils/RenderTarget'), diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index c7fb9a4..7ff72ec 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -2,14 +2,12 @@ MaskManager = require('./managers/MaskManager'), StencilManager = require('./managers/StencilManager'), FilterManager = require('./managers/FilterManager'), - BlendModeManager = require('./managers/BlendModeManager'), RenderTarget = require('./utils/RenderTarget'), ObjectRenderer = require('./utils/ObjectRenderer'), TextureManager = require('./TextureManager'), RenderTextureManager = require('./RenderTextureManager'), WebGLState = require('./WebGLState'), createContext = require('pixi-gl-core').createContext, - mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'), mapWebGLDrawModesToPixi = require('./utils/mapWebGLDrawModesToPixi'), utils = require('../../utils'), CONST = require('../../const'); @@ -90,8 +88,6 @@ */ this.stencilManager = new StencilManager(this); - this.blendModeManager = new BlendModeManager(this); - /** * The currently active ObjectRenderer. * @@ -119,7 +115,6 @@ this.filterManager = new FilterManager(this); // map some webGL blend and drawmodes.. - this.blendModes = mapWebGLBlendModesToPixi(gl); this.drawModes = mapWebGLDrawModesToPixi(gl) @@ -134,6 +129,8 @@ this._activeRenderTarget = null; this._activeTextureLocation = 999; this._activeTexture = null; + + this.setBlendMode(0) } // constructor @@ -269,9 +266,9 @@ } }; -WebGLRenderer.prototype.setBlendMode = function (mode) +WebGLRenderer.prototype.setBlendMode = function (blendMode) { - // fill in here.. + this.state.setBlendMode(blendMode); } WebGLRenderer.prototype.clear = function (clearColor) diff --git a/src/core/renderers/webgl/WebGLState.js b/src/core/renderers/webgl/WebGLState.js index dbae0f4..ba5e036 100755 --- a/src/core/renderers/webgl/WebGLState.js +++ b/src/core/renderers/webgl/WebGLState.js @@ -1,5 +1,6 @@ - +var mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'); + var WebGLState = function(gl) @@ -18,6 +19,9 @@ this.maxAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + this.blendModes = mapWebGLBlendModesToPixi(gl); + + // check we have vao.. this.nativeVaoExtension = ( gl.getExtension('OES_vertex_array_object') || @@ -47,7 +51,8 @@ var BLEND = 0, DEPTH_TEST = 1, FRONT_FACE = 2, - CULL_FACE = 3; + CULL_FACE = 3, + BLEND_FUNC = 4; WebGLState.prototype.pop = function() { @@ -61,6 +66,7 @@ this.setDepthTest(state[DEPTH_TEST]); this.setDepthTest(state[FRONT_FACE]); this.setDepthTest(state[CULL_FACE]); + this.setDepthTest(state[BLEND_FUNC]); } WebGLState.prototype.setBlendMode = function(blendMode) @@ -86,6 +92,15 @@ } } +WebGLState.prototype.setBlendMode = function(value) +{ + if(value === this.activeState[BLEND_FUNC])return; + + this.activeState[BLEND_FUNC] = value; + + this.gl.blendFunc(this.blendModes[value][0], this.blendModes[value][1]); +} + WebGLState.prototype.setDepthTest = function(value) { if(this.activeState[DEPTH_TEST] === value|0)return; diff --git a/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js b/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js index ddd0276..7dc7fec 100644 --- a/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js +++ b/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js @@ -5,31 +5,31 @@ * @class * @memberof PIXI */ -function mapWebGLBlendModesToPixi(gl, object) +function mapWebGLBlendModesToPixi(gl, array) { - object = object || {}; + array = array || []; //TODO - premultiply alpha would be different. //add a boolean for that! - object[CONST.BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - object[CONST.BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - object[CONST.BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + array[CONST.BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + array[CONST.BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - return object; + return array; } module.exports = mapWebGLBlendModesToPixi; diff --git a/src/core/graphics/webgl/GraphicsRenderer.js b/src/core/graphics/webgl/GraphicsRenderer.js index 3df2e4f..282ba87 100644 --- a/src/core/graphics/webgl/GraphicsRenderer.js +++ b/src/core/graphics/webgl/GraphicsRenderer.js @@ -91,7 +91,7 @@ // This could be speeded up for sure! var shader = this.primitiveShader; renderer.bindShader(shader) - renderer.blendModeManager.setBlendMode( graphics.blendMode ); + renderer.state.setBlendMode( graphics.blendMode ); for (var i = 0, n = webGL.data.length; i < n; i++) { diff --git a/src/core/index.js b/src/core/index.js index fc5e48f..cb7f852 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -48,7 +48,6 @@ // renderers - webgl WebGLRenderer: require('./renderers/webgl/WebGLRenderer'), WebGLManager: require('./renderers/webgl/managers/WebGLManager'), - ShaderManager: require('./renderers/webgl/managers/ShaderManager'), Shader: require('./renderers/webgl/shaders/Shader'), ObjectRenderer: require('./renderers/webgl/utils/ObjectRenderer'), RenderTarget: require('./renderers/webgl/utils/RenderTarget'), diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index c7fb9a4..7ff72ec 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -2,14 +2,12 @@ MaskManager = require('./managers/MaskManager'), StencilManager = require('./managers/StencilManager'), FilterManager = require('./managers/FilterManager'), - BlendModeManager = require('./managers/BlendModeManager'), RenderTarget = require('./utils/RenderTarget'), ObjectRenderer = require('./utils/ObjectRenderer'), TextureManager = require('./TextureManager'), RenderTextureManager = require('./RenderTextureManager'), WebGLState = require('./WebGLState'), createContext = require('pixi-gl-core').createContext, - mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'), mapWebGLDrawModesToPixi = require('./utils/mapWebGLDrawModesToPixi'), utils = require('../../utils'), CONST = require('../../const'); @@ -90,8 +88,6 @@ */ this.stencilManager = new StencilManager(this); - this.blendModeManager = new BlendModeManager(this); - /** * The currently active ObjectRenderer. * @@ -119,7 +115,6 @@ this.filterManager = new FilterManager(this); // map some webGL blend and drawmodes.. - this.blendModes = mapWebGLBlendModesToPixi(gl); this.drawModes = mapWebGLDrawModesToPixi(gl) @@ -134,6 +129,8 @@ this._activeRenderTarget = null; this._activeTextureLocation = 999; this._activeTexture = null; + + this.setBlendMode(0) } // constructor @@ -269,9 +266,9 @@ } }; -WebGLRenderer.prototype.setBlendMode = function (mode) +WebGLRenderer.prototype.setBlendMode = function (blendMode) { - // fill in here.. + this.state.setBlendMode(blendMode); } WebGLRenderer.prototype.clear = function (clearColor) diff --git a/src/core/renderers/webgl/WebGLState.js b/src/core/renderers/webgl/WebGLState.js index dbae0f4..ba5e036 100755 --- a/src/core/renderers/webgl/WebGLState.js +++ b/src/core/renderers/webgl/WebGLState.js @@ -1,5 +1,6 @@ - +var mapWebGLBlendModesToPixi = require('./utils/mapWebGLBlendModesToPixi'); + var WebGLState = function(gl) @@ -18,6 +19,9 @@ this.maxAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS); + this.blendModes = mapWebGLBlendModesToPixi(gl); + + // check we have vao.. this.nativeVaoExtension = ( gl.getExtension('OES_vertex_array_object') || @@ -47,7 +51,8 @@ var BLEND = 0, DEPTH_TEST = 1, FRONT_FACE = 2, - CULL_FACE = 3; + CULL_FACE = 3, + BLEND_FUNC = 4; WebGLState.prototype.pop = function() { @@ -61,6 +66,7 @@ this.setDepthTest(state[DEPTH_TEST]); this.setDepthTest(state[FRONT_FACE]); this.setDepthTest(state[CULL_FACE]); + this.setDepthTest(state[BLEND_FUNC]); } WebGLState.prototype.setBlendMode = function(blendMode) @@ -86,6 +92,15 @@ } } +WebGLState.prototype.setBlendMode = function(value) +{ + if(value === this.activeState[BLEND_FUNC])return; + + this.activeState[BLEND_FUNC] = value; + + this.gl.blendFunc(this.blendModes[value][0], this.blendModes[value][1]); +} + WebGLState.prototype.setDepthTest = function(value) { if(this.activeState[DEPTH_TEST] === value|0)return; diff --git a/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js b/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js index ddd0276..7dc7fec 100644 --- a/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js +++ b/src/core/renderers/webgl/utils/mapWebGLBlendModesToPixi.js @@ -5,31 +5,31 @@ * @class * @memberof PIXI */ -function mapWebGLBlendModesToPixi(gl, object) +function mapWebGLBlendModesToPixi(gl, array) { - object = object || {}; + array = array || []; //TODO - premultiply alpha would be different. //add a boolean for that! - object[CONST.BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; - object[CONST.BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; - object[CONST.BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - object[CONST.BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.NORMAL] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.ADD] = [gl.SRC_ALPHA, gl.DST_ALPHA]; + array[CONST.BLEND_MODES.MULTIPLY] = [gl.DST_COLOR, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.SCREEN] = [gl.SRC_ALPHA, gl.ONE]; + array[CONST.BLEND_MODES.OVERLAY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.DARKEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.LIGHTEN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.COLOR_DODGE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.COLOR_BURN] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.HARD_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.SOFT_LIGHT] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.DIFFERENCE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.EXCLUSION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.HUE] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.SATURATION] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.COLOR] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; + array[CONST.BLEND_MODES.LUMINOSITY] = [gl.ONE, gl.ONE_MINUS_SRC_ALPHA]; - return object; + return array; } module.exports = mapWebGLBlendModesToPixi; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index 1339b54..459417d 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -138,15 +138,11 @@ { var gl = this.renderer.gl; -<<<<<<< HEAD + this.MAX_TEXTURES = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); this.shader = generateMultiTextureShader(gl, this.MAX_TEXTURES); -======= - this.MAX_TEXTUES = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS); - - this.shader = generateMultiTextureShader(gl, this.MAX_TEXTUES); ->>>>>>> dev-filter-refactor + // create a couple of buffers this.vertexBuffer = glCore.GLBuffer.createVertexBuffer(gl, null, gl.DYNAMIC_DRAW); @@ -312,7 +308,7 @@ this.vertexBuffer.upload(buffer.vertices, 0, true); // bind shader.. - this.renderer.blendModeManager.setBlendMode( 0 ); + this.renderer.setBlendMode( 1 ); /// render the groups.. for (i = 0; i < groupCount; i++) {