diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 8c8b75d..cc2252b 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -143,26 +143,10 @@ this._updateID = 0; /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders - * IN REAL PIXELS - * @default 0 - * @member {number} + * Extra field for extra plugins. May contain clamp settings and some matrices + * @type {Object} */ - this.clampOffset = 0; - - /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas - * IN REAL PIXELS - * @default 0.5 - * @member {number} - */ - this.clampMargin = 0.5; + this.transform = null; } /** diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 8c8b75d..cc2252b 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -143,26 +143,10 @@ this._updateID = 0; /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders - * IN REAL PIXELS - * @default 0 - * @member {number} + * Extra field for extra plugins. May contain clamp settings and some matrices + * @type {Object} */ - this.clampOffset = 0; - - /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas - * IN REAL PIXELS - * @default 0.5 - * @member {number} - */ - this.clampMargin = 0.5; + this.transform = null; } /** diff --git a/src/extras/TextureTransform.js b/src/extras/TextureTransform.js index 01f26a3..33e276f 100644 --- a/src/extras/TextureTransform.js +++ b/src/extras/TextureTransform.js @@ -9,21 +9,40 @@ /** * * @param {PIXI.Texture} texture observed texture + * @param {number} [clampMargin] Changes frame clamping, 0.5 by default. Use -0.5 for extra border. * @constructor */ - constructor(texture) + constructor(texture, clampMargin) { this._texture = texture; this.mapCoord = new Matrix(); - this.clampFrame = new Float32Array(4); + this.uClampFrame = new Float32Array(4); - this.clampOffset = new Float32Array(2); + this.uClampOffset = new Float32Array(2); this._lastTextureID = -1; - this.update(); + /** + * Changes frame clamping + * Works with TilingSprite and Mesh + * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders + * IN REAL PIXELS + * @default 0 + * @member {number} + */ + this.clampOffset = 0; + + /** + * Changes frame clamping + * Works with TilingSprite and Mesh + * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas + * IN REAL PIXELS + * @default 0.5 + * @member {number} + */ + this.clampMargin = (typeof clampMargin === 'undefined') ? 0.5 : clampMargin; } /** @@ -82,15 +101,15 @@ } const texBase = tex.baseTexture; - const frame = this.clampFrame; - const margin = tex.clampMargin / texBase.resolution; - const offset = tex.clampOffset; + const frame = this.uClampFrame; + const margin = this.clampMargin / texBase.resolution; + const offset = this.clampOffset; frame[0] = (tex._frame.x + margin + offset) / texBase.width; frame[1] = (tex._frame.y + margin + offset) / texBase.height; frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width; frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height; - this.clampOffset[0] = offset / texBase.realWidth; - this.clampOffset[1] = offset / texBase.realHeight; + this.uClampOffset[0] = offset / texBase.realWidth; + this.uClampOffset[1] = offset / texBase.realHeight; } } diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 8c8b75d..cc2252b 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -143,26 +143,10 @@ this._updateID = 0; /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders - * IN REAL PIXELS - * @default 0 - * @member {number} + * Extra field for extra plugins. May contain clamp settings and some matrices + * @type {Object} */ - this.clampOffset = 0; - - /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas - * IN REAL PIXELS - * @default 0.5 - * @member {number} - */ - this.clampMargin = 0.5; + this.transform = null; } /** diff --git a/src/extras/TextureTransform.js b/src/extras/TextureTransform.js index 01f26a3..33e276f 100644 --- a/src/extras/TextureTransform.js +++ b/src/extras/TextureTransform.js @@ -9,21 +9,40 @@ /** * * @param {PIXI.Texture} texture observed texture + * @param {number} [clampMargin] Changes frame clamping, 0.5 by default. Use -0.5 for extra border. * @constructor */ - constructor(texture) + constructor(texture, clampMargin) { this._texture = texture; this.mapCoord = new Matrix(); - this.clampFrame = new Float32Array(4); + this.uClampFrame = new Float32Array(4); - this.clampOffset = new Float32Array(2); + this.uClampOffset = new Float32Array(2); this._lastTextureID = -1; - this.update(); + /** + * Changes frame clamping + * Works with TilingSprite and Mesh + * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders + * IN REAL PIXELS + * @default 0 + * @member {number} + */ + this.clampOffset = 0; + + /** + * Changes frame clamping + * Works with TilingSprite and Mesh + * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas + * IN REAL PIXELS + * @default 0.5 + * @member {number} + */ + this.clampMargin = (typeof clampMargin === 'undefined') ? 0.5 : clampMargin; } /** @@ -82,15 +101,15 @@ } const texBase = tex.baseTexture; - const frame = this.clampFrame; - const margin = tex.clampMargin / texBase.resolution; - const offset = tex.clampOffset; + const frame = this.uClampFrame; + const margin = this.clampMargin / texBase.resolution; + const offset = this.clampOffset; frame[0] = (tex._frame.x + margin + offset) / texBase.width; frame[1] = (tex._frame.y + margin + offset) / texBase.height; frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width; frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height; - this.clampOffset[0] = offset / texBase.realWidth; - this.clampOffset[1] = offset / texBase.realHeight; + this.uClampOffset[0] = offset / texBase.realWidth; + this.uClampOffset[1] = offset / texBase.realHeight; } } diff --git a/src/extras/TilingSprite.js b/src/extras/TilingSprite.js index e299e0e..47c66d5 100644 --- a/src/extras/TilingSprite.js +++ b/src/extras/TilingSprite.js @@ -55,7 +55,7 @@ * transform that is applied to UV to get the texture coords * @member {PIXI.extras.TextureTransform} */ - this.uvTransform = new TextureTransform(texture); + this.uvTransform = texture.transform || new TextureTransform(texture); } /** diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 8c8b75d..cc2252b 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -143,26 +143,10 @@ this._updateID = 0; /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders - * IN REAL PIXELS - * @default 0 - * @member {number} + * Extra field for extra plugins. May contain clamp settings and some matrices + * @type {Object} */ - this.clampOffset = 0; - - /** - * Experimental! - * Changes frame clamping - * Works with TilingSprite and Mesh - * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas - * IN REAL PIXELS - * @default 0.5 - * @member {number} - */ - this.clampMargin = 0.5; + this.transform = null; } /** diff --git a/src/extras/TextureTransform.js b/src/extras/TextureTransform.js index 01f26a3..33e276f 100644 --- a/src/extras/TextureTransform.js +++ b/src/extras/TextureTransform.js @@ -9,21 +9,40 @@ /** * * @param {PIXI.Texture} texture observed texture + * @param {number} [clampMargin] Changes frame clamping, 0.5 by default. Use -0.5 for extra border. * @constructor */ - constructor(texture) + constructor(texture, clampMargin) { this._texture = texture; this.mapCoord = new Matrix(); - this.clampFrame = new Float32Array(4); + this.uClampFrame = new Float32Array(4); - this.clampOffset = new Float32Array(2); + this.uClampOffset = new Float32Array(2); this._lastTextureID = -1; - this.update(); + /** + * Changes frame clamping + * Works with TilingSprite and Mesh + * Change to 1.5 if you tex ture has repeated right and bottom lines, that leads to smoother borders + * IN REAL PIXELS + * @default 0 + * @member {number} + */ + this.clampOffset = 0; + + /** + * Changes frame clamping + * Works with TilingSprite and Mesh + * Change to 0 to add a pixel to the edge, recommended for transparent trimmed textures in atlas + * IN REAL PIXELS + * @default 0.5 + * @member {number} + */ + this.clampMargin = (typeof clampMargin === 'undefined') ? 0.5 : clampMargin; } /** @@ -82,15 +101,15 @@ } const texBase = tex.baseTexture; - const frame = this.clampFrame; - const margin = tex.clampMargin / texBase.resolution; - const offset = tex.clampOffset; + const frame = this.uClampFrame; + const margin = this.clampMargin / texBase.resolution; + const offset = this.clampOffset; frame[0] = (tex._frame.x + margin + offset) / texBase.width; frame[1] = (tex._frame.y + margin + offset) / texBase.height; frame[2] = (tex._frame.x + tex._frame.width - margin + offset) / texBase.width; frame[3] = (tex._frame.y + tex._frame.height - margin + offset) / texBase.height; - this.clampOffset[0] = offset / texBase.realWidth; - this.clampOffset[1] = offset / texBase.realHeight; + this.uClampOffset[0] = offset / texBase.realWidth; + this.uClampOffset[1] = offset / texBase.realHeight; } } diff --git a/src/extras/TilingSprite.js b/src/extras/TilingSprite.js index e299e0e..47c66d5 100644 --- a/src/extras/TilingSprite.js +++ b/src/extras/TilingSprite.js @@ -55,7 +55,7 @@ * transform that is applied to UV to get the texture coords * @member {PIXI.extras.TextureTransform} */ - this.uvTransform = new TextureTransform(texture); + this.uvTransform = texture.transform || new TextureTransform(texture); } /** diff --git a/src/extras/webgl/TilingRenderer.js b/src/extras/webgl/TilingRenderer.js index 157baf9..0ff3c5c 100644 --- a/src/extras/webgl/TilingRenderer.js +++ b/src/extras/webgl/TilingRenderer.js @@ -123,8 +123,8 @@ else { shader.uniforms.uMapCoord = uv.mapCoord.toArray(true); - shader.uniforms.uClampFrame = uv.clampFrame; - shader.uniforms.uClampOffset = uv.clampOffset; + shader.uniforms.uClampFrame = uv.uClampFrame; + shader.uniforms.uClampOffset = uv.uClampOffset; } shader.uniforms.uTransform = tempMat.toArray(true);