diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/textures/VideoBaseTexture.js b/src/core/textures/VideoBaseTexture.js index 4475bc8..7ead661 100644 --- a/src/core/textures/VideoBaseTexture.js +++ b/src/core/textures/VideoBaseTexture.js @@ -184,7 +184,6 @@ * Helper function that creates a new BaseTexture based on the given video element. * This BaseTexture can then be used to create a texture * - * @alias fromUrls * @static * @param videoSrc {string|object|string[]|object[]} The URL(s) for the video. * @param [videoSrc.src] {string} One of the source urls for the video diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/textures/VideoBaseTexture.js b/src/core/textures/VideoBaseTexture.js index 4475bc8..7ead661 100644 --- a/src/core/textures/VideoBaseTexture.js +++ b/src/core/textures/VideoBaseTexture.js @@ -184,7 +184,6 @@ * Helper function that creates a new BaseTexture based on the given video element. * This BaseTexture can then be used to create a texture * - * @alias fromUrls * @static * @param videoSrc {string|object|string[]|object[]} The URL(s) for the video. * @param [videoSrc.src] {string} One of the source urls for the video diff --git a/src/core/utils/index.js b/src/core/utils/index.js index af2e7d9..bf0ded9 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -185,11 +185,11 @@ 'color: #ff2424; background: #fff' ]; - console.log.apply(console, args); //jshint ignore:line + window.console.log.apply(console, args); //jshint ignore:line } else if (window.console) { - console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line + window.console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line } utils._saidHello = true; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/textures/VideoBaseTexture.js b/src/core/textures/VideoBaseTexture.js index 4475bc8..7ead661 100644 --- a/src/core/textures/VideoBaseTexture.js +++ b/src/core/textures/VideoBaseTexture.js @@ -184,7 +184,6 @@ * Helper function that creates a new BaseTexture based on the given video element. * This BaseTexture can then be used to create a texture * - * @alias fromUrls * @static * @param videoSrc {string|object|string[]|object[]} The URL(s) for the video. * @param [videoSrc.src] {string} One of the source urls for the video diff --git a/src/core/utils/index.js b/src/core/utils/index.js index af2e7d9..bf0ded9 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -185,11 +185,11 @@ 'color: #ff2424; background: #fff' ]; - console.log.apply(console, args); //jshint ignore:line + window.console.log.apply(console, args); //jshint ignore:line } else if (window.console) { - console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line + window.console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line } utils._saidHello = true; diff --git a/src/extras/MovieClip.js b/src/extras/MovieClip.js index 433b49c..359200c 100644 --- a/src/extras/MovieClip.js +++ b/src/extras/MovieClip.js @@ -18,14 +18,14 @@ /** * The array of textures that make up the animation * - * @member Texture[] + * @member {Texture[]} */ this._textures = textures; /** * The speed that the MovieClip will play at. Higher is faster, lower is slower * - * @member number + * @member {number} * @default 1 */ this.animationSpeed = 1; @@ -33,7 +33,7 @@ /** * Whether or not the movie clip repeats after playing. * - * @member boolean + * @member {boolean} * @default true */ this.loop = true; @@ -49,7 +49,7 @@ /** * The MovieClips current frame index (this may not have to be a whole number) * - * @member number + * @member {number} * @default 0 * @readonly */ @@ -58,7 +58,7 @@ /** * Indicates if the MovieClip is currently playing * - * @member boolean + * @member {boolean} * @readonly */ this.playing = false; @@ -66,7 +66,7 @@ /** * private cache of the bound function * - * @member function + * @member {function} */ this._updateBound = this.update.bind(this); } diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/textures/VideoBaseTexture.js b/src/core/textures/VideoBaseTexture.js index 4475bc8..7ead661 100644 --- a/src/core/textures/VideoBaseTexture.js +++ b/src/core/textures/VideoBaseTexture.js @@ -184,7 +184,6 @@ * Helper function that creates a new BaseTexture based on the given video element. * This BaseTexture can then be used to create a texture * - * @alias fromUrls * @static * @param videoSrc {string|object|string[]|object[]} The URL(s) for the video. * @param [videoSrc.src] {string} One of the source urls for the video diff --git a/src/core/utils/index.js b/src/core/utils/index.js index af2e7d9..bf0ded9 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -185,11 +185,11 @@ 'color: #ff2424; background: #fff' ]; - console.log.apply(console, args); //jshint ignore:line + window.console.log.apply(console, args); //jshint ignore:line } else if (window.console) { - console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line + window.console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line } utils._saidHello = true; diff --git a/src/extras/MovieClip.js b/src/extras/MovieClip.js index 433b49c..359200c 100644 --- a/src/extras/MovieClip.js +++ b/src/extras/MovieClip.js @@ -18,14 +18,14 @@ /** * The array of textures that make up the animation * - * @member Texture[] + * @member {Texture[]} */ this._textures = textures; /** * The speed that the MovieClip will play at. Higher is faster, lower is slower * - * @member number + * @member {number} * @default 1 */ this.animationSpeed = 1; @@ -33,7 +33,7 @@ /** * Whether or not the movie clip repeats after playing. * - * @member boolean + * @member {boolean} * @default true */ this.loop = true; @@ -49,7 +49,7 @@ /** * The MovieClips current frame index (this may not have to be a whole number) * - * @member number + * @member {number} * @default 0 * @readonly */ @@ -58,7 +58,7 @@ /** * Indicates if the MovieClip is currently playing * - * @member boolean + * @member {boolean} * @readonly */ this.playing = false; @@ -66,7 +66,7 @@ /** * private cache of the bound function * - * @member function + * @member {function} */ this._updateBound = this.update.bind(this); } diff --git a/src/interaction/InteractionManager.js b/src/interaction/InteractionManager.js index 0680bf9..936909b 100644 --- a/src/interaction/InteractionManager.js +++ b/src/interaction/InteractionManager.js @@ -617,8 +617,8 @@ /** - * [onTouchEnd description] - * @param event {type} [description] + * Is called when a touch ends on the renderer element + * @param event {Event} The DOM event of a touch ending on the renderer view * */ InteractionManager.prototype.onTouchEnd = function (event) @@ -725,8 +725,8 @@ /** * Grabs an interaction data object from the internal pool - * - * @param touchEvent {} The touch event we need to pair with a touchData object + * + * @param touchEvent {EventData} The touch event we need to pair with an interactionData object * * @private */ @@ -748,7 +748,7 @@ /** * Returns an interaction data object to the internal pool * - * @param touchEvent {InteractionData} The touch data object we want to return to the pool + * @param touchData {InteractionData} The touch data object we want to return to the pool * * @private */ @@ -757,7 +757,5 @@ this.interactiveDataPool.push( touchData ); }; - - core.WebGLRenderer.registerPlugin('interaction', InteractionManager); core.CanvasRenderer.registerPlugin('interaction', InteractionManager); diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/textures/VideoBaseTexture.js b/src/core/textures/VideoBaseTexture.js index 4475bc8..7ead661 100644 --- a/src/core/textures/VideoBaseTexture.js +++ b/src/core/textures/VideoBaseTexture.js @@ -184,7 +184,6 @@ * Helper function that creates a new BaseTexture based on the given video element. * This BaseTexture can then be used to create a texture * - * @alias fromUrls * @static * @param videoSrc {string|object|string[]|object[]} The URL(s) for the video. * @param [videoSrc.src] {string} One of the source urls for the video diff --git a/src/core/utils/index.js b/src/core/utils/index.js index af2e7d9..bf0ded9 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -185,11 +185,11 @@ 'color: #ff2424; background: #fff' ]; - console.log.apply(console, args); //jshint ignore:line + window.console.log.apply(console, args); //jshint ignore:line } else if (window.console) { - console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line + window.console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line } utils._saidHello = true; diff --git a/src/extras/MovieClip.js b/src/extras/MovieClip.js index 433b49c..359200c 100644 --- a/src/extras/MovieClip.js +++ b/src/extras/MovieClip.js @@ -18,14 +18,14 @@ /** * The array of textures that make up the animation * - * @member Texture[] + * @member {Texture[]} */ this._textures = textures; /** * The speed that the MovieClip will play at. Higher is faster, lower is slower * - * @member number + * @member {number} * @default 1 */ this.animationSpeed = 1; @@ -33,7 +33,7 @@ /** * Whether or not the movie clip repeats after playing. * - * @member boolean + * @member {boolean} * @default true */ this.loop = true; @@ -49,7 +49,7 @@ /** * The MovieClips current frame index (this may not have to be a whole number) * - * @member number + * @member {number} * @default 0 * @readonly */ @@ -58,7 +58,7 @@ /** * Indicates if the MovieClip is currently playing * - * @member boolean + * @member {boolean} * @readonly */ this.playing = false; @@ -66,7 +66,7 @@ /** * private cache of the bound function * - * @member function + * @member {function} */ this._updateBound = this.update.bind(this); } diff --git a/src/interaction/InteractionManager.js b/src/interaction/InteractionManager.js index 0680bf9..936909b 100644 --- a/src/interaction/InteractionManager.js +++ b/src/interaction/InteractionManager.js @@ -617,8 +617,8 @@ /** - * [onTouchEnd description] - * @param event {type} [description] + * Is called when a touch ends on the renderer element + * @param event {Event} The DOM event of a touch ending on the renderer view * */ InteractionManager.prototype.onTouchEnd = function (event) @@ -725,8 +725,8 @@ /** * Grabs an interaction data object from the internal pool - * - * @param touchEvent {} The touch event we need to pair with a touchData object + * + * @param touchEvent {EventData} The touch event we need to pair with an interactionData object * * @private */ @@ -748,7 +748,7 @@ /** * Returns an interaction data object to the internal pool * - * @param touchEvent {InteractionData} The touch data object we want to return to the pool + * @param touchData {InteractionData} The touch data object we want to return to the pool * * @private */ @@ -757,7 +757,5 @@ this.interactiveDataPool.push( touchData ); }; - - core.WebGLRenderer.registerPlugin('interaction', InteractionManager); core.CanvasRenderer.registerPlugin('interaction', InteractionManager); diff --git a/src/text/BitmapText.js b/src/text/BitmapText.js index 7ccde1c..2ffd2b4 100644 --- a/src/text/BitmapText.js +++ b/src/text/BitmapText.js @@ -341,4 +341,9 @@ this.containerUpdateTransform(); }; +BitmapText.prototype.setText = function () +{ + window.console.warn(" setText is now deprecated, please use the text property, e.g : myBitmapText.text = 'my text'; "); +}; + BitmapText.fonts = {}; diff --git a/src/core/graphics/webgl/WebGLGraphicsData.js b/src/core/graphics/webgl/WebGLGraphicsData.js index f93e589..8a248b5 100644 --- a/src/core/graphics/webgl/WebGLGraphicsData.js +++ b/src/core/graphics/webgl/WebGLGraphicsData.js @@ -2,53 +2,64 @@ * An object containing WebGL specific properties to be used by the WebGL renderer * * @class + * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context * @private */ function WebGLGraphicsData(gl) { - /* - * @member {WebGLRenderingContext} the current WebGL drawing context + /** + * The current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; //TODO does this need to be split before uploding?? - /* - * @member {Array} An array of color components (r,g,b) + /** + * An array of color components (r,g,b) + * @member {Array} */ this.color = [0,0,0]; // color split! - /* - * @member {Array} An array of points to draw + /** + * An array of points to draw + * @member {Array} */ this.points = []; - /* - * @member {Array} The indices of the vertices + /** + * The indices of the vertices + * @member {Array} */ this.indices = []; - /* - * @member {WebGLBuffer} The main buffer + /** + * The main buffer + * @member {WebGLBuffer} */ this.buffer = gl.createBuffer(); - /* - * @member {WebGLBuffer} The index buffer + /** + * The index buffer + * @member {WebGLBuffer} */ this.indexBuffer = gl.createBuffer(); - /* - * @member {number} todo @alvin + /** + * todo @alvin + * @member {number} */ this.mode = 1; - /* - * @member {number} The alpha of the graphics + /** + * The alpha of the graphics + * @member {number} */ this.alpha = 1; - /* - * @member {boolean} Whether this graphics is dirty or not + /** + * Whether this graphics is dirty or not + * @member {boolean} */ this.dirty = true; } diff --git a/src/core/index.js b/src/core/index.js index b2893e6..21c817a 100644 --- a/src/core/index.js +++ b/src/core/index.js @@ -64,7 +64,7 @@ * @param [options.antialias=false] {boolean} sets antialias (only applicable in chrome at the moment) * @param [options.preserveDrawingBuffer=false] {boolean} enables drawing buffer preservation, enable this if you * need to call toDataUrl on the webgl context - * @param [options.resolution=1] {number} the resolution of the renderer retina would be 2 + * @param [options.resolution=1] {number} the resolution of the renderer, retina would be 2 * @param [noWebGL=false] {boolean} prevents selection of WebGL renderer, even if such is present * * @return {WebGLRenderer|CanvasRenderer} Returns WebGL renderer if available, otherwise CanvasRenderer @@ -80,6 +80,12 @@ } return new core.CanvasRenderer(width, height, options); + }, + + Stage: function () + { + window.console.warn("You don't need to use a PIXI Stage any more, you can simply render any container"); + return new core.Container(); } }; diff --git a/src/core/particles/webgl/ParticleBuffer.js b/src/core/particles/webgl/ParticleBuffer.js index 75be710..6fad028 100644 --- a/src/core/particles/webgl/ParticleBuffer.js +++ b/src/core/particles/webgl/ParticleBuffer.js @@ -20,7 +20,8 @@ function ParticleBuffer(gl, properties, size) { /** - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/SystemRenderer.js b/src/core/renderers/SystemRenderer.js index 7390be4..34c8db6 100644 --- a/src/core/renderers/SystemRenderer.js +++ b/src/core/renderers/SystemRenderer.js @@ -151,11 +151,9 @@ this.backgroundColor = options.backgroundColor || this._backgroundColor; // run bg color setter - - /** * This temporary display object used as the parent of the currently being rendered item - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = {worldTransform:new math.Matrix(), worldAlpha:1, children:[]}; diff --git a/src/core/renderers/canvas/CanvasRenderer.js b/src/core/renderers/canvas/CanvasRenderer.js index 24eafc9..8d6c465 100644 --- a/src/core/renderers/canvas/CanvasRenderer.js +++ b/src/core/renderers/canvas/CanvasRenderer.js @@ -10,6 +10,7 @@ * * @class * @memberof PIXI + * @extends SystemRenderer * @param [width=800] {number} the width of the canvas view * @param [height=600] {number} the height of the canvas view * @param [options] {object} The optional renderer parameters @@ -104,7 +105,7 @@ /** * This temporary display object used as the parent of the currently being rendered item * - * @member DisplayObject + * @member {DisplayObject} * @private */ this._tempDisplayObjectParent = { diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 15ce4fe..132618a 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -140,8 +140,8 @@ this.currentRenderTarget = this.renderTarget; /** - * - * @member {ObjectRenderer} @alvin + * object renderer @alvin + * @member {ObjectRenderer} */ this.currentRenderer = new ObjectRenderer(this); @@ -155,7 +155,7 @@ /** * An array of render targets - * @member {Array} TODO @alvin + * @member {Array} * @private */ this._renderTargetStack = []; @@ -265,7 +265,7 @@ * Renders a Display Object. * * @param displayObject {DisplayObject} The DisplayObject to render - * @param renderTarget {Point} TODO @alvin + * @param renderTarget {RenderTarget} The render target to use to render this display object * */ WebGLRenderer.prototype.renderDisplayObject = function (displayObject, renderTarget)//projection, buffer) @@ -305,7 +305,7 @@ /** * Changes the current render target to the one given in parameter * - * @param renderTarget {Object} the new render target + * @param renderTarget {RenderTarget} the new render target * */ WebGLRenderer.prototype.setRenderTarget = function (renderTarget) diff --git a/src/core/renderers/webgl/filters/AbstractFilter.js b/src/core/renderers/webgl/filters/AbstractFilter.js index 91e874c..fa270fd 100644 --- a/src/core/renderers/webgl/filters/AbstractFilter.js +++ b/src/core/renderers/webgl/filters/AbstractFilter.js @@ -6,7 +6,8 @@ * * @class * @memberof PIXI - * @param fragmentSrc {string|string[]} The fragment source in an array of strings. + * @param vertexSrc {string|string[]} The vertex shader source as an array of strings. + * @param fragmentSrc {string|string[]} The fragment shader source as an array of strings. * @param uniforms {object} An object containing the uniforms for this filter. */ function AbstractFilter(vertexSrc, fragmentSrc, uniforms) @@ -28,6 +29,7 @@ this.shaders = []; /** + * The extra padding that the filter might need * @member {number} */ this.padding = 0; @@ -63,6 +65,11 @@ AbstractFilter.prototype.constructor = AbstractFilter; module.exports = AbstractFilter; +/* + * Grabs a shader from the current renderer + * @param renderer {WebGLRenderer} The renderer to retrieve the shader from + * + */ AbstractFilter.prototype.getShader = function (renderer) { var gl = renderer.gl; @@ -84,6 +91,13 @@ return shader; }; +/* + * Applies the filter + * @param renderer {WebGLRenderer} The renderer to retrieve the filter from + * @param input {RenderTarget} + * @param output {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ AbstractFilter.prototype.applyFilter = function (renderer, input, output, clear) { var shader = this.getShader(renderer); diff --git a/src/core/renderers/webgl/filters/FXAAFilter.js b/src/core/renderers/webgl/filters/FXAAFilter.js index f9398d1..bda7830 100644 --- a/src/core/renderers/webgl/filters/FXAAFilter.js +++ b/src/core/renderers/webgl/filters/FXAAFilter.js @@ -1,14 +1,19 @@ var AbstractFilter = require('./AbstractFilter'); /** - * The FXAAFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * + * Basic FXAA implementation based on the code on geeks3d.com with the + * modification that the texture2DLod stuff was removed since it's + * unsupported by WebGL. + * + * -- + * From: + * https://github.com/mitsuhiko/webgl-meincraft * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * */ function FXAAFilter() { @@ -25,52 +30,6 @@ } ); - /** -Basic FXAA implementation based on the code on geeks3d.com with the -modification that the texture2DLod stuff was removed since it's -unsupported by WebGL. - --- - -From: -https://github.com/mitsuhiko/webgl-meincraft - -Copyright (c) 2011 by Armin Ronacher. - -Some rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * The names of the contributors may not be used to endorse or - promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - - - } FXAAFilter.prototype = Object.create(AbstractFilter.prototype); diff --git a/src/core/renderers/webgl/filters/SpriteMaskFilter.js b/src/core/renderers/webgl/filters/SpriteMaskFilter.js index 4b09a8c..6a2b4a3 100644 --- a/src/core/renderers/webgl/filters/SpriteMaskFilter.js +++ b/src/core/renderers/webgl/filters/SpriteMaskFilter.js @@ -2,14 +2,12 @@ math = require('../../../math'); /** - * The SpriteMaskFilter class uses the pixel values from the specified texture (called the displacement map) to perform a displacement of an object. - * You can use this filter to apply all manor of crazy warping effects - * Currently the r property of the texture is used to offset the x and the g property of the texture is used to offset the y. + * The SpriteMaskFilter class * * @class * @extends AbstractFilter * @memberof PIXI - * @param texture {Texture} The texture used for the displacement map * must be power of 2 texture at the moment + * @param sprite {Sprite} the target sprite */ function SpriteMaskFilter(sprite) { @@ -72,6 +70,13 @@ SpriteMaskFilter.prototype.constructor = SpriteMaskFilter; module.exports = SpriteMaskFilter; +/** + * Applies the filter ? @alvin + * + * @param renderer {WebGLRenderer} A reference to the WebGL renderer + * @param input {RenderTarget} + * @param output {RenderTarget} + */ SpriteMaskFilter.prototype.applyFilter = function (renderer, input, output) { var filterManager = renderer.filterManager; diff --git a/src/core/renderers/webgl/managers/BlendModeManager.js b/src/core/renderers/webgl/managers/BlendModeManager.js index be51394..356f641 100644 --- a/src/core/renderers/webgl/managers/BlendModeManager.js +++ b/src/core/renderers/webgl/managers/BlendModeManager.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends WebGlManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function BlendModeManager(renderer) diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index b22513d..f28b6bb 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -6,6 +6,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function FilterManager(renderer) @@ -41,6 +42,10 @@ module.exports = FilterManager; +/** + * Called when there is a WebGL context change. + * + */ FilterManager.prototype.onContextChange = function () { this.texturePool.length = 0; @@ -117,7 +122,7 @@ /** - * Removes the last filter from the filter stack and doesn't return it. + * Removes the last filter from the filter stack and returns it. * */ FilterManager.prototype.popFilter = function () @@ -192,6 +197,12 @@ return filterData.filter; }; +/** + * Grabs an render target from the internal pool + * + * @param clear {boolean} Whether or not we need to clear the RenderTarget + * @return {RenderTarget} + */ FilterManager.prototype.getRenderTarget = function ( clear ) { var renderTarget = this.texturePool.pop() || new RenderTarget(this.renderer.gl, this.textureSize.width, this.textureSize.height, null, this.renderer.resolution); @@ -205,11 +216,22 @@ return renderTarget; }; +/* + * Returns a RenderTarget to the internal pool + * @param renderTarget {RenderTarget} The RenderTarget we want to return to the pool + */ FilterManager.prototype.returnRenderTarget = function (renderTarget) { this.texturePool.push( renderTarget ); }; +/* + * Applies the filter + * @param shader {Shader} The shader to upload + * @param inputTarget {RenderTarget} + * @param outputTarget {RenderTarget} + * @param clear {boolean} Whether or not we want to clear the outputTarget + */ FilterManager.prototype.applyFilter = function (shader, inputTarget, outputTarget, clear) { var gl = this.renderer.gl; @@ -240,7 +262,12 @@ gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0 ); }; - +/* + * Calculates the mapped matrix + * @param filterArea {Rectangle} The filter area + * @param sprite {Sprite} the target sprite + * @param outputMatrix {Matrix} @alvin + */ // TODO playing around here.. this is temporary - (will end up in the shader) FilterManager.prototype.calculateMappedMatrix = function (filterArea, sprite, outputMatrix) { @@ -308,6 +335,10 @@ // return transform; }; +/* + * Constrains the filter area to the texture size + * @param filterArea {Rectangle} The filter area we want to cap + */ FilterManager.prototype.capFilterArea = function (filterArea) { if (filterArea.x < 0) @@ -333,6 +364,11 @@ } }; +/* + * Resizes all the render targets in the pool + * @param width {number} the new width + * @param height {number} the new height + */ FilterManager.prototype.resize = function ( width, height ) { this.textureSize.width = width; diff --git a/src/core/renderers/webgl/managers/MaskManager.js b/src/core/renderers/webgl/managers/MaskManager.js index 472eea1..fbc8e9c 100644 --- a/src/core/renderers/webgl/managers/MaskManager.js +++ b/src/core/renderers/webgl/managers/MaskManager.js @@ -40,6 +40,12 @@ }; +/** + * Removes the last mask from the mask stack and doesn't return it. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.popMask = function (target, maskData) { if (maskData.texture) @@ -52,6 +58,12 @@ } }; +/** + * Applies the Mask and adds it to the current filter stack. + * + * @param target {RenderTarget} + * @param maskData {any[]} + */ MaskManager.prototype.pushSpriteMask = function (target, maskData) { var alphaMaskFilter = this.alphaMaskPool.pop(); @@ -79,9 +91,9 @@ /** * Applies the Mask and adds it to the current filter stack. * + * @param target {RenderTarget} * @param maskData {any[]} */ - MaskManager.prototype.pushStencilMask = function (target, maskData) { this.renderer.stencilManager.pushMask(maskData); @@ -89,7 +101,7 @@ /** * Removes the last filter from the filter stack and doesn't return it. - * + * @param target {RenderTarget} * @param maskData {any[]} */ MaskManager.prototype.popStencilMask = function (target, maskData) diff --git a/src/core/renderers/webgl/managers/ShaderManager.js b/src/core/renderers/webgl/managers/ShaderManager.js index 32dabf0..f8f7b06 100644 --- a/src/core/renderers/webgl/managers/ShaderManager.js +++ b/src/core/renderers/webgl/managers/ShaderManager.js @@ -7,6 +7,7 @@ /** * @class * @memberof PIXI + * @extends WebGLManager * @param renderer {WebGLRenderer} The renderer this manager works for. */ function ShaderManager(renderer) @@ -59,6 +60,10 @@ module.exports = ShaderManager; +/** + * Called when there is a WebGL context change. + * + */ ShaderManager.prototype.onContextChange = function () { this.initPlugins(); @@ -70,7 +75,7 @@ }; /** - * Takes the attributes given in parameters. + * Takes the attributes given in parameters and uploads them. * * @param attribs {Array} attribs */ @@ -113,7 +118,7 @@ /** * Sets the current shader. * - * @param shader {Any} + * @param shader {Shader} the shader to upload */ ShaderManager.prototype.setShader = function (shader) { diff --git a/src/core/renderers/webgl/managers/StencilManager.js b/src/core/renderers/webgl/managers/StencilManager.js index 4dc4cc3..e581823 100644 --- a/src/core/renderers/webgl/managers/StencilManager.js +++ b/src/core/renderers/webgl/managers/StencilManager.js @@ -16,6 +16,11 @@ WebGLMaskManager.prototype.constructor = WebGLMaskManager; module.exports = WebGLMaskManager; +/** + * Changes the mask stack that is used by this manager + * @param stencilMaskStack {StencilMaskStack} The mask stack + * + */ WebGLMaskManager.prototype.setMaskStack = function ( stencilMaskStack ) { this.stencilMaskStack = stencilMaskStack; @@ -33,8 +38,8 @@ }; /** - * Applies the Mask and adds it to the current filter stack. - * + * Applies the Mask and adds it to the current filter stack. @alvin + * * @param graphics {Graphics} * @param webGLData {any[]} */ @@ -193,6 +198,7 @@ }; /** + * TODO @alvin * @param graphics {Graphics} * @param webGLData {Array} */ @@ -301,7 +307,7 @@ /** * Applies the Mask and adds it to the current filter stack. * - * @param maskData {any[]} + * @param maskData {any[]} The mask data structure to use */ WebGLMaskManager.prototype.pushMask = function (maskData) { diff --git a/src/core/renderers/webgl/managers/WebGLManager.js b/src/core/renderers/webgl/managers/WebGLManager.js index 41ddec2..dfb5573 100644 --- a/src/core/renderers/webgl/managers/WebGLManager.js +++ b/src/core/renderers/webgl/managers/WebGLManager.js @@ -23,11 +23,19 @@ WebGLManager.prototype.constructor = WebGLManager; module.exports = WebGLManager; +/** + * Generic method called when there is a WebGL context change. + * + */ WebGLManager.prototype.onContextChange = function () { // do some codes init! }; +/** + * Generic destroy methods to be overridden by the subclass + * + */ WebGLManager.prototype.destroy = function () { this.renderer.off('context', this._onContextChangeFn); diff --git a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js index e3b06ac..15fae67 100644 --- a/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/ComplexPrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function ComplexPrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/PrimitiveShader.js b/src/core/renderers/webgl/shaders/PrimitiveShader.js index b7eed82..d89a547 100644 --- a/src/core/renderers/webgl/shaders/PrimitiveShader.js +++ b/src/core/renderers/webgl/shaders/PrimitiveShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} The webgl shader manager this shader works for. */ function PrimitiveShader(shaderManager) diff --git a/src/core/renderers/webgl/shaders/Shader.js b/src/core/renderers/webgl/shaders/Shader.js index 9f25245..d8e762f 100644 --- a/src/core/renderers/webgl/shaders/Shader.js +++ b/src/core/renderers/webgl/shaders/Shader.js @@ -18,13 +18,15 @@ } /** - * @member number + * A unique id + * @member {number} * @readonly */ this.uuid = utils.uuid(); /** - * @member WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} * @readonly */ this.gl = shaderManager.renderer.gl; @@ -32,28 +34,43 @@ /** * The WebGL program. * - * @member WebGLProgram + * @member {WebGLProgram} * @readonly */ this.program = null; + /** + * The uniforms as an object + * @member {object} + * @private + */ this.uniforms = uniforms || {}; + /** + * The attributes as an object + * @member {object} + * @private + */ this.attributes = attributes || {}; + /** + * Internal texture counter + * @member {number} + * @private + */ this.textureCount = 1; /** - * The vertex shader. + * The vertex shader as an array of strings * - * @member Array + * @member {Array} */ this.vertexSrc = vertexSrc; /** - * The fragment shader. + * The fragment shader as an array of strings * - * @member Array + * @member {Array} */ this.fragmentSrc = fragmentSrc; @@ -63,6 +80,10 @@ Shader.prototype.constructor = Shader; module.exports = Shader; +/* + * Creates the shader and uses it + * + */ Shader.prototype.init = function () { this.compile(); @@ -73,6 +94,10 @@ this.cacheAttributeLocations(Object.keys(this.attributes)); }; +/* + * Caches the locations of the uniform for reuse + * @param keys {string} the uniforms to cache + */ Shader.prototype.cacheUniformLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -81,6 +106,10 @@ } }; +/* + * Caches the locations of the attribute for reuse + * @param keys {string} the attributes to cache + */ Shader.prototype.cacheAttributeLocations = function (keys) { for (var i = 0; i < keys.length; ++i) @@ -103,6 +132,10 @@ // End worst hack eva // }; +/* + * Attaches the shaders and creates the program + * @return {WebGLProgram} + */ Shader.prototype.compile = function () { var gl = this.gl; @@ -119,14 +152,14 @@ // if linking fails, then log and cleanup if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { - window.console.error('Pixi.js Error: Could not initialize shader.'); - window.console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); - window.console.error('gl.getError()', gl.getError()); + console.error('Pixi.js Error: Could not initialize shader.'); + console.error('gl.VALIDATE_STATUS', gl.getProgramParameter(program, gl.VALIDATE_STATUS)); + console.error('gl.getError()', gl.getError()); // if there is a program info log, log it if (gl.getProgramInfoLog(program) !== '') { - window.console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); + console.warn('Pixi.js Warning: gl.getProgramInfoLog()', gl.getProgramInfoLog(program)); } gl.deleteProgram(program); @@ -176,6 +209,11 @@ }*/ +/** +* Adds a new uniform +* +* @param uniform {Object} the new uniform to attach +*/ Shader.prototype.syncUniform = function (uniform) { var location = uniform._location, @@ -407,6 +445,9 @@ } }; +/* + * Updates the shader uniform values. + */ Shader.prototype.syncUniforms = function () { this.textureCount = 1; diff --git a/src/core/renderers/webgl/shaders/TextureShader.js b/src/core/renderers/webgl/shaders/TextureShader.js index 7e30f83..000463f 100644 --- a/src/core/renderers/webgl/shaders/TextureShader.js +++ b/src/core/renderers/webgl/shaders/TextureShader.js @@ -3,6 +3,7 @@ /** * @class * @memberof PIXI + * @extends Shader * @param shaderManager {ShaderManager} 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. diff --git a/src/core/renderers/webgl/utils/Quad.js b/src/core/renderers/webgl/utils/Quad.js index ca49ceb..0c51505 100644 --- a/src/core/renderers/webgl/utils/Quad.js +++ b/src/core/renderers/webgl/utils/Quad.js @@ -7,7 +7,9 @@ function Quad(gl) { /* - * @member {WebGLRenderingContext} the current WebGL drawing context + * the current WebGL drawing context + * + * @member {WebGLRenderingContext} */ this.gl = gl; diff --git a/src/core/renderers/webgl/utils/RenderTarget.js b/src/core/renderers/webgl/utils/RenderTarget.js index 24585ed..8390359 100644 --- a/src/core/renderers/webgl/utils/RenderTarget.js +++ b/src/core/renderers/webgl/utils/RenderTarget.js @@ -12,49 +12,81 @@ * @class * @memberof PIXI * @param gl {WebGLRenderingContext} the current WebGL drawing context - * @param width {Number} the horizontal range of the filter - * @param height {Number} the vertical range of the filter - * @param scaleMode {Number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param width {number} the horizontal range of the filter + * @param height {number} the vertical range of the filter + * @param scaleMode {number} See {{#crossLink "PIXI/scaleModes:property"}}PIXI.scaleModes{{/crossLink}} for possible values + * @param resolution {number} the current resolution + * @param root {boolean} Whether this object is the root element or not */ var RenderTarget = function(gl, width, height, scaleMode, resolution, root) { //TODO Resolution could go here ( eg low res blurs ) /** - * @property gl - * @type WebGLRenderingContext + * The current WebGL drawing context + * @member {WebGLRenderingContext} */ this.gl = gl; // next time to create a frame buffer and texture /** - * @property frameBuffer - * @type Any + * A frame buffer + * @member {WebGLFrameBuffer} */ this.frameBuffer = null; /** - * @property texture - * @type Any + * @member {Texture} */ this.texture = null; + /** + * The size of the object as a rectangle + * @member {Rectangle} + */ this.size = new math.Rectangle(0, 0, 1, 1); + /** + * The current resolution + * @member {number} + */ this.resolution = resolution || CONST.RESOLUTION; + /** + * The projection matrix + * @member {Matrix} + */ this.projectionMatrix = new math.Matrix(); + /** + * The object's transform + * @member {Matrix} + */ this.transform = null; + /** + * + * @member {Rectangle} + */ this.frame = null; - // stores masking data for the render target + /** + * The stencil buffer stores masking data for the render target + * @member {WebGLRenderBuffer} + */ this.stencilBuffer = null; + + /** + * The data structure for the stencil masks + * @member {StencilMaskStack} + */ this.stencilMaskStack = new StencilMaskStack(); - // stores filter data for the render target + /** + * Stores filter data for the render target + * @member {Array} + */ this.filterStack = [ { renderTarget:this, @@ -65,11 +97,16 @@ /** - * @property scaleMode - * @type Number + * The scale mode + * @member {number} + * @default CONST.SCALE_MODES.DEFAULT */ this.scaleMode = scaleMode || CONST.SCALE_MODES.DEFAULT; + /** + * Whether this object is the root element or not + * @member {boolean} + */ this.root = root; if (!this.root) @@ -129,6 +166,10 @@ gl.clear(gl.COLOR_BUFFER_BIT); }; +/** +* Binds the stencil buffer. +* +*/ RenderTarget.prototype.attachStencilBuffer = function() { @@ -152,6 +193,10 @@ } }; +/** +* Binds the buffers and initialises the viewport. +* +*/ RenderTarget.prototype.activate = function() { //TOOD refactor usage of frame.. @@ -172,6 +217,10 @@ gl.viewport(0,0, projectionFrame.width * this.resolution, projectionFrame.height * this.resolution); }; +/** +* Updates the projection matrix based on a projection frame (which is a rectangle) +* +*/ RenderTarget.prototype.calculateProjection = function( projectionFrame ) { var pm = this.projectionMatrix; @@ -237,7 +286,7 @@ }; /** - * Destroys the filter texture. + * Destroys the render target. * */ RenderTarget.prototype.destroy = function() diff --git a/src/core/renderers/webgl/utils/StencilMaskStack.js b/src/core/renderers/webgl/utils/StencilMaskStack.js index fb8940e..d7a78ff 100644 --- a/src/core/renderers/webgl/utils/StencilMaskStack.js +++ b/src/core/renderers/webgl/utils/StencilMaskStack.js @@ -1,4 +1,5 @@ /** + * Generic Mask Stack data structure * @class * @memberof PIXI * @param renderer {WebGLRenderer} The renderer this manager works for. diff --git a/src/core/sprites/Sprite.js b/src/core/sprites/Sprite.js index 127d3cf..626c920 100644 --- a/src/core/sprites/Sprite.js +++ b/src/core/sprites/Sprite.js @@ -62,12 +62,12 @@ * The tint applied to the sprite. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} - * @default 0xFFFFFF + * @default [0xFFFFFF] */ this.tint = 0xFFFFFF; /** - * The blend mode to be applied to the sprite. Set to CONST.BLEND_MODES.NORMAL to remove any blend mode. + * The blend mode to be applied to the sprite. Apply a value of blendModes.NORMAL to reset the blend mode. * * @member {number} * @default CONST.BLEND_MODES.NORMAL; @@ -85,6 +85,7 @@ * An internal cached value of the tint. * * @member {number} + * @default [0xFFFFFF] */ this.cachedTint = 0xFFFFFF; @@ -509,6 +510,11 @@ } }; +Sprite.prototype.setTexture = function () +{ + window.console.warn('setTexture is now deprecated, please use the texture property, e.g : sprite.texture = texture; '); +}; + // some helper functions.. /** diff --git a/src/core/textures/VideoBaseTexture.js b/src/core/textures/VideoBaseTexture.js index 4475bc8..7ead661 100644 --- a/src/core/textures/VideoBaseTexture.js +++ b/src/core/textures/VideoBaseTexture.js @@ -184,7 +184,6 @@ * Helper function that creates a new BaseTexture based on the given video element. * This BaseTexture can then be used to create a texture * - * @alias fromUrls * @static * @param videoSrc {string|object|string[]|object[]} The URL(s) for the video. * @param [videoSrc.src] {string} One of the source urls for the video diff --git a/src/core/utils/index.js b/src/core/utils/index.js index af2e7d9..bf0ded9 100644 --- a/src/core/utils/index.js +++ b/src/core/utils/index.js @@ -185,11 +185,11 @@ 'color: #ff2424; background: #fff' ]; - console.log.apply(console, args); //jshint ignore:line + window.console.log.apply(console, args); //jshint ignore:line } else if (window.console) { - console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line + window.console.log('Pixi.js ' + CONST.VERSION + ' - ' + type + ' - http://www.pixijs.com/'); //jshint ignore:line } utils._saidHello = true; diff --git a/src/extras/MovieClip.js b/src/extras/MovieClip.js index 433b49c..359200c 100644 --- a/src/extras/MovieClip.js +++ b/src/extras/MovieClip.js @@ -18,14 +18,14 @@ /** * The array of textures that make up the animation * - * @member Texture[] + * @member {Texture[]} */ this._textures = textures; /** * The speed that the MovieClip will play at. Higher is faster, lower is slower * - * @member number + * @member {number} * @default 1 */ this.animationSpeed = 1; @@ -33,7 +33,7 @@ /** * Whether or not the movie clip repeats after playing. * - * @member boolean + * @member {boolean} * @default true */ this.loop = true; @@ -49,7 +49,7 @@ /** * The MovieClips current frame index (this may not have to be a whole number) * - * @member number + * @member {number} * @default 0 * @readonly */ @@ -58,7 +58,7 @@ /** * Indicates if the MovieClip is currently playing * - * @member boolean + * @member {boolean} * @readonly */ this.playing = false; @@ -66,7 +66,7 @@ /** * private cache of the bound function * - * @member function + * @member {function} */ this._updateBound = this.update.bind(this); } diff --git a/src/interaction/InteractionManager.js b/src/interaction/InteractionManager.js index 0680bf9..936909b 100644 --- a/src/interaction/InteractionManager.js +++ b/src/interaction/InteractionManager.js @@ -617,8 +617,8 @@ /** - * [onTouchEnd description] - * @param event {type} [description] + * Is called when a touch ends on the renderer element + * @param event {Event} The DOM event of a touch ending on the renderer view * */ InteractionManager.prototype.onTouchEnd = function (event) @@ -725,8 +725,8 @@ /** * Grabs an interaction data object from the internal pool - * - * @param touchEvent {} The touch event we need to pair with a touchData object + * + * @param touchEvent {EventData} The touch event we need to pair with an interactionData object * * @private */ @@ -748,7 +748,7 @@ /** * Returns an interaction data object to the internal pool * - * @param touchEvent {InteractionData} The touch data object we want to return to the pool + * @param touchData {InteractionData} The touch data object we want to return to the pool * * @private */ @@ -757,7 +757,5 @@ this.interactiveDataPool.push( touchData ); }; - - core.WebGLRenderer.registerPlugin('interaction', InteractionManager); core.CanvasRenderer.registerPlugin('interaction', InteractionManager); diff --git a/src/text/BitmapText.js b/src/text/BitmapText.js index 7ccde1c..2ffd2b4 100644 --- a/src/text/BitmapText.js +++ b/src/text/BitmapText.js @@ -341,4 +341,9 @@ this.containerUpdateTransform(); }; +BitmapText.prototype.setText = function () +{ + window.console.warn(" setText is now deprecated, please use the text property, e.g : myBitmapText.text = 'my text'; "); +}; + BitmapText.fonts = {}; diff --git a/src/text/Text.js b/src/text/Text.js index e687764..000815b 100644 --- a/src/text/Text.js +++ b/src/text/Text.js @@ -175,6 +175,7 @@ * Set the copy for the text object. To split a line you can use '\n'. * * @param text {string} The copy that you would like the text to display + * @memberof Text# */ text: { get: function() @@ -552,3 +553,8 @@ this._texture.destroy(destroyBaseTexture === undefined ? true : destroyBaseTexture); }; + +Text.prototype.setText = function () +{ + window.console.warn(" setText is now deprecated, please use the text property, e.g : myText.text = 'my text'; "); +};