mirror of
https://github.com/photonstorm/phaser
synced 2024-11-21 20:23:19 +00:00
v3.80.1
This commit is contained in:
parent
8acc797b64
commit
4f7445f8d7
15 changed files with 299946 additions and 550108 deletions
|
@ -1,9 +1,14 @@
|
||||||
# Version 3.80.1 - Nino - 27 February 2024
|
# Version 3.80.1 - Nino - 27th February 2024
|
||||||
|
|
||||||
# Bug Fixes
|
## Bug Fixes
|
||||||
|
|
||||||
* Fix `RenderTexture` crashing in the presence of a light.
|
* Fix `RenderTexture` crashing in the presence of a light.
|
||||||
* Fix failure to restore compressed textures after WebGL context loss.
|
* Fix failure to restore compressed textures after WebGL context loss.
|
||||||
* Fix a single WebGL error, with no visual side-effects, from occurring while calling `Shader.setRenderToTexture()` after the game has started running. Actually, the root cause was leaving new WebGL textures bound after creation.
|
* Fix a single WebGL error, with no visual side-effects, from occurring while calling `Shader.setRenderToTexture()` after the game has started running. Actually, the root cause was leaving new WebGL textures bound after creation.
|
||||||
* Ensure that `TextureSource.setFlipY` always updates the texture.
|
* Ensure that `TextureSource.setFlipY` always updates the texture.
|
||||||
* Remove unsynced `flipY` from render textures in `Shader` and `DynamicTexture`.
|
* Remove unsynced `flipY` from render textures in `Shader` and `DynamicTexture`.
|
||||||
|
* Reverted a change made in `TouchManager` that would prevent clicks from outside the game window from being registered. Fix #6747 (thanks @ulsoftnaver @jaxtheking)
|
||||||
|
|
||||||
|
## Updates
|
||||||
|
|
||||||
|
* Modified `onMouseUpWindow` and `onMouseDownWindow` in the `MouseManager` so they now check for `sourceCapabilities.firesTouchEvents` and if found, abort registering the event. This new browser event property is designed to prevent you accidentally registering a Mouse Event when a Touch Event has just occurred (see https://developer.mozilla.org/en-US/docs/Web/API/InputDeviceCapabilities/firesTouchEvents)
|
||||||
|
|
395
dist/phaser-arcade-physics.js
vendored
395
dist/phaser-arcade-physics.js
vendored
|
@ -15691,7 +15691,7 @@ var CONST = {
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
VERSION: '3.80.0',
|
VERSION: '3.80.1',
|
||||||
|
|
||||||
BlendModes: __webpack_require__(10312),
|
BlendModes: __webpack_require__(10312),
|
||||||
|
|
||||||
|
@ -57420,17 +57420,15 @@ var Utils = __webpack_require__(70554);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* A 2D point light.
|
* A 2D Light.
|
||||||
*
|
*
|
||||||
* These are typically created by a {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
* These are created by the {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
||||||
*
|
*
|
||||||
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
||||||
*
|
*
|
||||||
* They can also simply be used to represent a point light for your own purposes.
|
* They can also simply be used to represent a point light for your own purposes.
|
||||||
*
|
*
|
||||||
* As of Phaser 3.60 this Game Object now has the Transform and Origin components. However, changing the scale,
|
* Lights cannot be added to Containers. They are designed to exist in the root of a Scene.
|
||||||
* rotation or origin properties will not make any difference to the Light. They are simply present to allow you
|
|
||||||
* to add this Light to a Container, or enable it for Physics.
|
|
||||||
*
|
*
|
||||||
* @class Light
|
* @class Light
|
||||||
* @extends Phaser.Geom.Circle
|
* @extends Phaser.Geom.Circle
|
||||||
|
@ -57440,7 +57438,6 @@ var Utils = __webpack_require__(70554);
|
||||||
*
|
*
|
||||||
* @extends Phaser.GameObjects.Components.Origin
|
* @extends Phaser.GameObjects.Components.Origin
|
||||||
* @extends Phaser.GameObjects.Components.ScrollFactor
|
* @extends Phaser.GameObjects.Components.ScrollFactor
|
||||||
* @extends Phaser.GameObjects.Components.Transform
|
|
||||||
* @extends Phaser.GameObjects.Components.Visible
|
* @extends Phaser.GameObjects.Components.Visible
|
||||||
*
|
*
|
||||||
* @param {number} x - The horizontal position of the light.
|
* @param {number} x - The horizontal position of the light.
|
||||||
|
@ -57458,7 +57455,6 @@ var Light = new Class({
|
||||||
Mixins: [
|
Mixins: [
|
||||||
Components.Origin,
|
Components.Origin,
|
||||||
Components.ScrollFactor,
|
Components.ScrollFactor,
|
||||||
Components.Transform,
|
|
||||||
Components.Visible
|
Components.Visible
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -72754,7 +72750,7 @@ var Shader = new Class({
|
||||||
/**
|
/**
|
||||||
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
||||||
*
|
*
|
||||||
* This property is only set if you have called `Shader.setRenderToTexture`, otherwise it is `null`.
|
* This property is only set if you have called `Shader.setRenderToTexture` with a key, otherwise it is `null`.
|
||||||
*
|
*
|
||||||
* @name Phaser.GameObjects.Shader#texture
|
* @name Phaser.GameObjects.Shader#texture
|
||||||
* @type {Phaser.Textures.Texture}
|
* @type {Phaser.Textures.Texture}
|
||||||
|
@ -72844,8 +72840,6 @@ var Shader = new Class({
|
||||||
|
|
||||||
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
||||||
|
|
||||||
this.glTexture.flipY = flipY;
|
|
||||||
|
|
||||||
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
||||||
|
|
||||||
this._rendererWidth = width;
|
this._rendererWidth = width;
|
||||||
|
@ -73334,17 +73328,13 @@ var Shader = new Class({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0 + this._textureCount);
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, uniform.value.webGLTexture);
|
|
||||||
|
|
||||||
// Extended texture data
|
// Extended texture data
|
||||||
|
|
||||||
var data = uniform.textureData;
|
var data = uniform.textureData;
|
||||||
|
|
||||||
if (data && !uniform.value.isRenderTexture)
|
if (data && !uniform.value.isRenderTexture)
|
||||||
{
|
{
|
||||||
|
var gl = this.gl;
|
||||||
var wrapper = uniform.value;
|
var wrapper = uniform.value;
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
||||||
|
@ -73358,6 +73348,10 @@ var Shader = new Class({
|
||||||
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
||||||
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
||||||
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
||||||
|
var flipY = GetFastValue(data, 'flipY', false);
|
||||||
|
var width = GetFastValue(data, 'width', wrapper.width);
|
||||||
|
var height = GetFastValue(data, 'height', wrapper.height);
|
||||||
|
var source = GetFastValue(data, 'source', wrapper.pixels);
|
||||||
|
|
||||||
if (data.repeat)
|
if (data.repeat)
|
||||||
{
|
{
|
||||||
|
@ -73365,38 +73359,13 @@ var Shader = new Class({
|
||||||
wrapT = gl.REPEAT;
|
wrapT = gl.REPEAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY);
|
|
||||||
|
|
||||||
if (data.width)
|
if (data.width)
|
||||||
{
|
{
|
||||||
var width = GetFastValue(data, 'width', 512);
|
// If the uniform has resolution, use a blank texture.
|
||||||
var height = GetFastValue(data, 'height', 2);
|
source = null;
|
||||||
var border = GetFastValue(data, 'border', 0);
|
|
||||||
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null);
|
|
||||||
wrapper.width = width;
|
|
||||||
wrapper.height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.source);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter);
|
wrapper.update(source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT);
|
|
||||||
|
|
||||||
// Update texture wrapper.
|
|
||||||
wrapper.magFilter = magFilter;
|
|
||||||
wrapper.minFilter = minFilter;
|
|
||||||
wrapper.wrapS = wrapS;
|
|
||||||
wrapper.wrapT = wrapT;
|
|
||||||
wrapper.format = format;
|
|
||||||
wrapper.flipY = !!data.flipY;
|
|
||||||
wrapper.pixels = uniform.source;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renderer.setProgram(this.program);
|
this.renderer.setProgram(this.program);
|
||||||
|
@ -116500,6 +116469,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseDownWindow = function (event)
|
this.onMouseDownWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116522,6 +116496,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseUpWindow = function (event)
|
this.onMouseUpWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116995,11 +116974,6 @@ var TouchManager = new Class({
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
manager.onTouchEnd(event);
|
manager.onTouchEnd(event);
|
||||||
|
|
||||||
if (_this.capture && event.cancelable)
|
|
||||||
{
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -161195,6 +161169,9 @@ var WebGLRenderer = new Class({
|
||||||
gl.disable(gl.DEPTH_TEST);
|
gl.disable(gl.DEPTH_TEST);
|
||||||
gl.enable(gl.CULL_FACE);
|
gl.enable(gl.CULL_FACE);
|
||||||
|
|
||||||
|
// Re-enable compressed texture formats.
|
||||||
|
_this.compression = _this.getCompressedTextures();
|
||||||
|
|
||||||
// Restore wrapped GL objects.
|
// Restore wrapped GL objects.
|
||||||
// Order matters, as some wrappers depend on others.
|
// Order matters, as some wrappers depend on others.
|
||||||
var wrapperCreateResource = function (wrapper)
|
var wrapperCreateResource = function (wrapper)
|
||||||
|
@ -163326,13 +163303,37 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
var minFilter = gl.NEAREST;
|
||||||
|
var magFilter = gl.NEAREST;
|
||||||
|
|
||||||
|
var width = srcCanvas.width;
|
||||||
|
var height = srcCanvas.height;
|
||||||
|
|
||||||
|
var wrapping = gl.CLAMP_TO_EDGE;
|
||||||
|
|
||||||
|
var pow = IsSizePowerOfTwo(width, height);
|
||||||
|
|
||||||
|
if (!noRepeat && pow)
|
||||||
|
{
|
||||||
|
wrapping = gl.REPEAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.config.antialias)
|
||||||
|
{
|
||||||
|
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
||||||
|
magFilter = gl.LINEAR;
|
||||||
|
}
|
||||||
|
|
||||||
if (!dstTexture)
|
if (!dstTexture)
|
||||||
{
|
{
|
||||||
return this.createCanvasTexture(srcCanvas, noRepeat, flipY);
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return this.updateCanvasTexture(srcCanvas, dstTexture, flipY, noRepeat);
|
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -163353,29 +163354,7 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, null, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163396,46 +163375,25 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new WebGL Texture based on the given HTML Video Element.
|
* Creates or updates a WebGL Texture based on the given HTML Video Element.
|
||||||
*
|
*
|
||||||
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
* If the `dstTexture` parameter is given, the WebGL Texture is updated, rather than created fresh.
|
||||||
* @since 3.20.0
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#videoToTexture
|
||||||
|
* @since 3.90.0
|
||||||
*
|
*
|
||||||
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} [dstTexture] - The destination WebGLTextureWrapper to set.
|
||||||
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
*
|
*
|
||||||
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created, or updated, WebGLTextureWrapper.
|
||||||
*/
|
*/
|
||||||
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
videoToTexture: function (srcVideo, dstTexture, noRepeat, flipY)
|
||||||
{
|
{
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
@ -163462,7 +163420,36 @@ var WebGLRenderer = new Class({
|
||||||
magFilter = gl.LINEAR;
|
magFilter = gl.LINEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
if (!dstTexture)
|
||||||
|
{
|
||||||
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new WebGL Texture based on the given HTML Video Element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
||||||
|
* @since 3.20.0
|
||||||
|
*
|
||||||
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
*
|
||||||
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
||||||
|
*/
|
||||||
|
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
||||||
|
{
|
||||||
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
return this.videoToTexture(srcVideo, null, noRepeat, flipY);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163483,31 +163470,7 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.videoToTexture(srcVideo, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcVideo.videoWidth;
|
|
||||||
var height = srcVideo.videoHeight;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -166180,7 +166143,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!gameObject)
|
if (!gameObject)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
else if (gameObject.displayTexture)
|
else if (gameObject.displayTexture)
|
||||||
{
|
{
|
||||||
|
@ -166204,7 +166167,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!normalMap)
|
if (!normalMap)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalMap.glTexture;
|
return normalMap.glTexture;
|
||||||
|
@ -166845,9 +166808,7 @@ var MultiPipeline = new Class({
|
||||||
flipX = -1;
|
flipX = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auto-invert the flipY if this is coming from a GL RenderTexture
|
if (gameObject.flipY)
|
||||||
|
|
||||||
if (gameObject.flipY || (frame.source.isGLTexture && frame.source.isRenderTexture && !texture.flipY))
|
|
||||||
{
|
{
|
||||||
if (!customPivot)
|
if (!customPivot)
|
||||||
{
|
{
|
||||||
|
@ -174507,11 +174468,81 @@ var WebGLTextureWrapper = new Class({
|
||||||
|
|
||||||
var texture = gl.createTexture();
|
var texture = gl.createTexture();
|
||||||
|
|
||||||
|
// Set Spector metadata.
|
||||||
|
// eslint-disable-next-line camelcase
|
||||||
|
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
||||||
|
|
||||||
|
// Assign the texture to our wrapper.
|
||||||
|
this.webGLTexture = texture;
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the WebGLTexture from an updated source.
|
||||||
|
*
|
||||||
|
* This should only be used when the source is a Canvas or Video element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
||||||
|
* @since 3.80.0
|
||||||
|
*
|
||||||
|
* @param {?object} source - The source to update the WebGLTexture with.
|
||||||
|
* @param {number} width - The new width of the WebGLTexture.
|
||||||
|
* @param {number} height - The new height of the WebGLTexture.
|
||||||
|
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
||||||
|
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
||||||
|
* @param {number} format - The new format for the WebGLTexture.
|
||||||
|
*/
|
||||||
|
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format)
|
||||||
|
{
|
||||||
|
if (width === 0 || height === 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume that the source might change.
|
||||||
|
this.pixels = source;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.flipY = flipY;
|
||||||
|
this.wrapS = wrapS;
|
||||||
|
this.wrapT = wrapT;
|
||||||
|
this.minFilter = minFilter;
|
||||||
|
this.magFilter = magFilter;
|
||||||
|
this.format = format;
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
|
if (gl.isContextLost())
|
||||||
|
{
|
||||||
|
// GL state can't be updated right now.
|
||||||
|
// `createResource` will run when the context is restored.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all parameters of this WebGLTexture per the stored values.
|
||||||
|
*
|
||||||
|
* @function Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#_processTexture
|
||||||
|
* @protected
|
||||||
|
* @since 3.90.0
|
||||||
|
* @ignore
|
||||||
|
*/
|
||||||
|
_processTexture: function ()
|
||||||
|
{
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
gl.activeTexture(gl.TEXTURE0);
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, texture);
|
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
||||||
|
@ -174519,11 +174550,7 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
||||||
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);
|
||||||
if (this.flipY)
|
|
||||||
{
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
var pixels = this.pixels;
|
var pixels = this.pixels;
|
||||||
var mipLevel = this.mipLevel;
|
var mipLevel = this.mipLevel;
|
||||||
|
@ -174553,6 +174580,8 @@ var WebGLTextureWrapper = new Class({
|
||||||
else if (pixels instanceof Uint8Array)
|
else if (pixels instanceof Uint8Array)
|
||||||
{
|
{
|
||||||
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
||||||
|
|
||||||
|
generateMipmap = IsSizePowerOfTwo(width, height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -174572,90 +174601,14 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
gl.generateMipmap(gl.TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Spector metadata.
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
// Restore previous texture bind.
|
||||||
if (currentTexture)
|
if (currentTexture)
|
||||||
{
|
{
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Assign the texture to our wrapper.
|
|
||||||
this.webGLTexture = texture;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the WebGLTexture from an updated source.
|
|
||||||
*
|
|
||||||
* This should only be used when the source is a Canvas or Video element.
|
|
||||||
*
|
|
||||||
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
|
||||||
* @since 3.80.0
|
|
||||||
*
|
|
||||||
* @param {HTMLCanvasElement|HTMLVideoElement} source - The source to update the WebGLTexture with.
|
|
||||||
* @param {number} width - The new width of the WebGLTexture.
|
|
||||||
* @param {number} height - The new height of the WebGLTexture.
|
|
||||||
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
|
||||||
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
|
||||||
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
|
||||||
*/
|
|
||||||
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter)
|
|
||||||
{
|
|
||||||
if (width === 0 || height === 0)
|
|
||||||
{
|
{
|
||||||
return;
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
||||||
}
|
|
||||||
|
|
||||||
// Assume that the source might change.
|
|
||||||
this.pixels = source;
|
|
||||||
this.width = width;
|
|
||||||
this.height = height;
|
|
||||||
this.flipY = flipY;
|
|
||||||
this.wrapS = wrapS;
|
|
||||||
this.wrapT = wrapT;
|
|
||||||
this.minFilter = minFilter;
|
|
||||||
this.magFilter = magFilter;
|
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
if (gl.isContextLost())
|
|
||||||
{
|
|
||||||
// GL state can't be updated right now.
|
|
||||||
// `createResource` will run when the context is restored.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this.wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
|
||||||
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
||||||
|
|
||||||
// Should we generate mipmaps?
|
|
||||||
var pixels = this.pixels;
|
|
||||||
if (IsSizePowerOfTwo(width, height) && !pixels.compressed && !(pixels instanceof Uint8Array))
|
|
||||||
{
|
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
|
||||||
if (currentTexture)
|
|
||||||
{
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -193359,7 +193312,6 @@ var DynamicTexture = new Class({
|
||||||
source.isGLTexture = true;
|
source.isGLTexture = true;
|
||||||
|
|
||||||
source.glTexture = renderTarget.texture;
|
source.glTexture = renderTarget.texture;
|
||||||
source.glTexture.flipY = true;
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
@ -198129,7 +198081,10 @@ var TextureSource = new Class({
|
||||||
{
|
{
|
||||||
if (value === undefined) { value = true; }
|
if (value === undefined) { value = true; }
|
||||||
|
|
||||||
|
if (value === this.flipY) { return this; }
|
||||||
|
|
||||||
this.flipY = value;
|
this.flipY = value;
|
||||||
|
this.update();
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
2
dist/phaser-arcade-physics.min.js
vendored
2
dist/phaser-arcade-physics.min.js
vendored
File diff suppressed because one or more lines are too long
248890
dist/phaser-facebook-instant-games.js
vendored
248890
dist/phaser-facebook-instant-games.js
vendored
File diff suppressed because one or more lines are too long
1
dist/phaser-facebook-instant-games.min.js
vendored
1
dist/phaser-facebook-instant-games.min.js
vendored
File diff suppressed because one or more lines are too long
395
dist/phaser-ie9.js
vendored
395
dist/phaser-ie9.js
vendored
|
@ -15691,7 +15691,7 @@ var CONST = {
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
VERSION: '3.80.0',
|
VERSION: '3.80.1',
|
||||||
|
|
||||||
BlendModes: __webpack_require__(10312),
|
BlendModes: __webpack_require__(10312),
|
||||||
|
|
||||||
|
@ -57420,17 +57420,15 @@ var Utils = __webpack_require__(70554);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* A 2D point light.
|
* A 2D Light.
|
||||||
*
|
*
|
||||||
* These are typically created by a {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
* These are created by the {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
||||||
*
|
*
|
||||||
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
||||||
*
|
*
|
||||||
* They can also simply be used to represent a point light for your own purposes.
|
* They can also simply be used to represent a point light for your own purposes.
|
||||||
*
|
*
|
||||||
* As of Phaser 3.60 this Game Object now has the Transform and Origin components. However, changing the scale,
|
* Lights cannot be added to Containers. They are designed to exist in the root of a Scene.
|
||||||
* rotation or origin properties will not make any difference to the Light. They are simply present to allow you
|
|
||||||
* to add this Light to a Container, or enable it for Physics.
|
|
||||||
*
|
*
|
||||||
* @class Light
|
* @class Light
|
||||||
* @extends Phaser.Geom.Circle
|
* @extends Phaser.Geom.Circle
|
||||||
|
@ -57440,7 +57438,6 @@ var Utils = __webpack_require__(70554);
|
||||||
*
|
*
|
||||||
* @extends Phaser.GameObjects.Components.Origin
|
* @extends Phaser.GameObjects.Components.Origin
|
||||||
* @extends Phaser.GameObjects.Components.ScrollFactor
|
* @extends Phaser.GameObjects.Components.ScrollFactor
|
||||||
* @extends Phaser.GameObjects.Components.Transform
|
|
||||||
* @extends Phaser.GameObjects.Components.Visible
|
* @extends Phaser.GameObjects.Components.Visible
|
||||||
*
|
*
|
||||||
* @param {number} x - The horizontal position of the light.
|
* @param {number} x - The horizontal position of the light.
|
||||||
|
@ -57458,7 +57455,6 @@ var Light = new Class({
|
||||||
Mixins: [
|
Mixins: [
|
||||||
Components.Origin,
|
Components.Origin,
|
||||||
Components.ScrollFactor,
|
Components.ScrollFactor,
|
||||||
Components.Transform,
|
|
||||||
Components.Visible
|
Components.Visible
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -72754,7 +72750,7 @@ var Shader = new Class({
|
||||||
/**
|
/**
|
||||||
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
||||||
*
|
*
|
||||||
* This property is only set if you have called `Shader.setRenderToTexture`, otherwise it is `null`.
|
* This property is only set if you have called `Shader.setRenderToTexture` with a key, otherwise it is `null`.
|
||||||
*
|
*
|
||||||
* @name Phaser.GameObjects.Shader#texture
|
* @name Phaser.GameObjects.Shader#texture
|
||||||
* @type {Phaser.Textures.Texture}
|
* @type {Phaser.Textures.Texture}
|
||||||
|
@ -72844,8 +72840,6 @@ var Shader = new Class({
|
||||||
|
|
||||||
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
||||||
|
|
||||||
this.glTexture.flipY = flipY;
|
|
||||||
|
|
||||||
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
||||||
|
|
||||||
this._rendererWidth = width;
|
this._rendererWidth = width;
|
||||||
|
@ -73334,17 +73328,13 @@ var Shader = new Class({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0 + this._textureCount);
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, uniform.value.webGLTexture);
|
|
||||||
|
|
||||||
// Extended texture data
|
// Extended texture data
|
||||||
|
|
||||||
var data = uniform.textureData;
|
var data = uniform.textureData;
|
||||||
|
|
||||||
if (data && !uniform.value.isRenderTexture)
|
if (data && !uniform.value.isRenderTexture)
|
||||||
{
|
{
|
||||||
|
var gl = this.gl;
|
||||||
var wrapper = uniform.value;
|
var wrapper = uniform.value;
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
||||||
|
@ -73358,6 +73348,10 @@ var Shader = new Class({
|
||||||
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
||||||
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
||||||
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
||||||
|
var flipY = GetFastValue(data, 'flipY', false);
|
||||||
|
var width = GetFastValue(data, 'width', wrapper.width);
|
||||||
|
var height = GetFastValue(data, 'height', wrapper.height);
|
||||||
|
var source = GetFastValue(data, 'source', wrapper.pixels);
|
||||||
|
|
||||||
if (data.repeat)
|
if (data.repeat)
|
||||||
{
|
{
|
||||||
|
@ -73365,38 +73359,13 @@ var Shader = new Class({
|
||||||
wrapT = gl.REPEAT;
|
wrapT = gl.REPEAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY);
|
|
||||||
|
|
||||||
if (data.width)
|
if (data.width)
|
||||||
{
|
{
|
||||||
var width = GetFastValue(data, 'width', 512);
|
// If the uniform has resolution, use a blank texture.
|
||||||
var height = GetFastValue(data, 'height', 2);
|
source = null;
|
||||||
var border = GetFastValue(data, 'border', 0);
|
|
||||||
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null);
|
|
||||||
wrapper.width = width;
|
|
||||||
wrapper.height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.source);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter);
|
wrapper.update(source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT);
|
|
||||||
|
|
||||||
// Update texture wrapper.
|
|
||||||
wrapper.magFilter = magFilter;
|
|
||||||
wrapper.minFilter = minFilter;
|
|
||||||
wrapper.wrapS = wrapS;
|
|
||||||
wrapper.wrapT = wrapT;
|
|
||||||
wrapper.format = format;
|
|
||||||
wrapper.flipY = !!data.flipY;
|
|
||||||
wrapper.pixels = uniform.source;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renderer.setProgram(this.program);
|
this.renderer.setProgram(this.program);
|
||||||
|
@ -116500,6 +116469,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseDownWindow = function (event)
|
this.onMouseDownWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116522,6 +116496,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseUpWindow = function (event)
|
this.onMouseUpWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116995,11 +116974,6 @@ var TouchManager = new Class({
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
manager.onTouchEnd(event);
|
manager.onTouchEnd(event);
|
||||||
|
|
||||||
if (_this.capture && event.cancelable)
|
|
||||||
{
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -179690,6 +179664,9 @@ var WebGLRenderer = new Class({
|
||||||
gl.disable(gl.DEPTH_TEST);
|
gl.disable(gl.DEPTH_TEST);
|
||||||
gl.enable(gl.CULL_FACE);
|
gl.enable(gl.CULL_FACE);
|
||||||
|
|
||||||
|
// Re-enable compressed texture formats.
|
||||||
|
_this.compression = _this.getCompressedTextures();
|
||||||
|
|
||||||
// Restore wrapped GL objects.
|
// Restore wrapped GL objects.
|
||||||
// Order matters, as some wrappers depend on others.
|
// Order matters, as some wrappers depend on others.
|
||||||
var wrapperCreateResource = function (wrapper)
|
var wrapperCreateResource = function (wrapper)
|
||||||
|
@ -181821,13 +181798,37 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
var minFilter = gl.NEAREST;
|
||||||
|
var magFilter = gl.NEAREST;
|
||||||
|
|
||||||
|
var width = srcCanvas.width;
|
||||||
|
var height = srcCanvas.height;
|
||||||
|
|
||||||
|
var wrapping = gl.CLAMP_TO_EDGE;
|
||||||
|
|
||||||
|
var pow = IsSizePowerOfTwo(width, height);
|
||||||
|
|
||||||
|
if (!noRepeat && pow)
|
||||||
|
{
|
||||||
|
wrapping = gl.REPEAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.config.antialias)
|
||||||
|
{
|
||||||
|
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
||||||
|
magFilter = gl.LINEAR;
|
||||||
|
}
|
||||||
|
|
||||||
if (!dstTexture)
|
if (!dstTexture)
|
||||||
{
|
{
|
||||||
return this.createCanvasTexture(srcCanvas, noRepeat, flipY);
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return this.updateCanvasTexture(srcCanvas, dstTexture, flipY, noRepeat);
|
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -181848,29 +181849,7 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, null, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181891,46 +181870,25 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new WebGL Texture based on the given HTML Video Element.
|
* Creates or updates a WebGL Texture based on the given HTML Video Element.
|
||||||
*
|
*
|
||||||
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
* If the `dstTexture` parameter is given, the WebGL Texture is updated, rather than created fresh.
|
||||||
* @since 3.20.0
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#videoToTexture
|
||||||
|
* @since 3.90.0
|
||||||
*
|
*
|
||||||
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} [dstTexture] - The destination WebGLTextureWrapper to set.
|
||||||
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
*
|
*
|
||||||
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created, or updated, WebGLTextureWrapper.
|
||||||
*/
|
*/
|
||||||
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
videoToTexture: function (srcVideo, dstTexture, noRepeat, flipY)
|
||||||
{
|
{
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
@ -181957,7 +181915,36 @@ var WebGLRenderer = new Class({
|
||||||
magFilter = gl.LINEAR;
|
magFilter = gl.LINEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
if (!dstTexture)
|
||||||
|
{
|
||||||
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new WebGL Texture based on the given HTML Video Element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
||||||
|
* @since 3.20.0
|
||||||
|
*
|
||||||
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
*
|
||||||
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
||||||
|
*/
|
||||||
|
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
||||||
|
{
|
||||||
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
return this.videoToTexture(srcVideo, null, noRepeat, flipY);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181978,31 +181965,7 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.videoToTexture(srcVideo, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcVideo.videoWidth;
|
|
||||||
var height = srcVideo.videoHeight;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184675,7 +184638,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!gameObject)
|
if (!gameObject)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
else if (gameObject.displayTexture)
|
else if (gameObject.displayTexture)
|
||||||
{
|
{
|
||||||
|
@ -184699,7 +184662,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!normalMap)
|
if (!normalMap)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalMap.glTexture;
|
return normalMap.glTexture;
|
||||||
|
@ -185340,9 +185303,7 @@ var MultiPipeline = new Class({
|
||||||
flipX = -1;
|
flipX = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auto-invert the flipY if this is coming from a GL RenderTexture
|
if (gameObject.flipY)
|
||||||
|
|
||||||
if (gameObject.flipY || (frame.source.isGLTexture && frame.source.isRenderTexture && !texture.flipY))
|
|
||||||
{
|
{
|
||||||
if (!customPivot)
|
if (!customPivot)
|
||||||
{
|
{
|
||||||
|
@ -193002,11 +192963,81 @@ var WebGLTextureWrapper = new Class({
|
||||||
|
|
||||||
var texture = gl.createTexture();
|
var texture = gl.createTexture();
|
||||||
|
|
||||||
|
// Set Spector metadata.
|
||||||
|
// eslint-disable-next-line camelcase
|
||||||
|
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
||||||
|
|
||||||
|
// Assign the texture to our wrapper.
|
||||||
|
this.webGLTexture = texture;
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the WebGLTexture from an updated source.
|
||||||
|
*
|
||||||
|
* This should only be used when the source is a Canvas or Video element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
||||||
|
* @since 3.80.0
|
||||||
|
*
|
||||||
|
* @param {?object} source - The source to update the WebGLTexture with.
|
||||||
|
* @param {number} width - The new width of the WebGLTexture.
|
||||||
|
* @param {number} height - The new height of the WebGLTexture.
|
||||||
|
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
||||||
|
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
||||||
|
* @param {number} format - The new format for the WebGLTexture.
|
||||||
|
*/
|
||||||
|
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format)
|
||||||
|
{
|
||||||
|
if (width === 0 || height === 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume that the source might change.
|
||||||
|
this.pixels = source;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.flipY = flipY;
|
||||||
|
this.wrapS = wrapS;
|
||||||
|
this.wrapT = wrapT;
|
||||||
|
this.minFilter = minFilter;
|
||||||
|
this.magFilter = magFilter;
|
||||||
|
this.format = format;
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
|
if (gl.isContextLost())
|
||||||
|
{
|
||||||
|
// GL state can't be updated right now.
|
||||||
|
// `createResource` will run when the context is restored.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all parameters of this WebGLTexture per the stored values.
|
||||||
|
*
|
||||||
|
* @function Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#_processTexture
|
||||||
|
* @protected
|
||||||
|
* @since 3.90.0
|
||||||
|
* @ignore
|
||||||
|
*/
|
||||||
|
_processTexture: function ()
|
||||||
|
{
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
gl.activeTexture(gl.TEXTURE0);
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, texture);
|
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
||||||
|
@ -193014,11 +193045,7 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
||||||
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);
|
||||||
if (this.flipY)
|
|
||||||
{
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
var pixels = this.pixels;
|
var pixels = this.pixels;
|
||||||
var mipLevel = this.mipLevel;
|
var mipLevel = this.mipLevel;
|
||||||
|
@ -193048,6 +193075,8 @@ var WebGLTextureWrapper = new Class({
|
||||||
else if (pixels instanceof Uint8Array)
|
else if (pixels instanceof Uint8Array)
|
||||||
{
|
{
|
||||||
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
||||||
|
|
||||||
|
generateMipmap = IsSizePowerOfTwo(width, height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -193067,90 +193096,14 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
gl.generateMipmap(gl.TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Spector metadata.
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
// Restore previous texture bind.
|
||||||
if (currentTexture)
|
if (currentTexture)
|
||||||
{
|
{
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Assign the texture to our wrapper.
|
|
||||||
this.webGLTexture = texture;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the WebGLTexture from an updated source.
|
|
||||||
*
|
|
||||||
* This should only be used when the source is a Canvas or Video element.
|
|
||||||
*
|
|
||||||
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
|
||||||
* @since 3.80.0
|
|
||||||
*
|
|
||||||
* @param {HTMLCanvasElement|HTMLVideoElement} source - The source to update the WebGLTexture with.
|
|
||||||
* @param {number} width - The new width of the WebGLTexture.
|
|
||||||
* @param {number} height - The new height of the WebGLTexture.
|
|
||||||
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
|
||||||
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
|
||||||
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
|
||||||
*/
|
|
||||||
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter)
|
|
||||||
{
|
|
||||||
if (width === 0 || height === 0)
|
|
||||||
{
|
{
|
||||||
return;
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
||||||
}
|
|
||||||
|
|
||||||
// Assume that the source might change.
|
|
||||||
this.pixels = source;
|
|
||||||
this.width = width;
|
|
||||||
this.height = height;
|
|
||||||
this.flipY = flipY;
|
|
||||||
this.wrapS = wrapS;
|
|
||||||
this.wrapT = wrapT;
|
|
||||||
this.minFilter = minFilter;
|
|
||||||
this.magFilter = magFilter;
|
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
if (gl.isContextLost())
|
|
||||||
{
|
|
||||||
// GL state can't be updated right now.
|
|
||||||
// `createResource` will run when the context is restored.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this.wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
|
||||||
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
||||||
|
|
||||||
// Should we generate mipmaps?
|
|
||||||
var pixels = this.pixels;
|
|
||||||
if (IsSizePowerOfTwo(width, height) && !pixels.compressed && !(pixels instanceof Uint8Array))
|
|
||||||
{
|
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
|
||||||
if (currentTexture)
|
|
||||||
{
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -211854,7 +211807,6 @@ var DynamicTexture = new Class({
|
||||||
source.isGLTexture = true;
|
source.isGLTexture = true;
|
||||||
|
|
||||||
source.glTexture = renderTarget.texture;
|
source.glTexture = renderTarget.texture;
|
||||||
source.glTexture.flipY = true;
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
@ -216624,7 +216576,10 @@ var TextureSource = new Class({
|
||||||
{
|
{
|
||||||
if (value === undefined) { value = true; }
|
if (value === undefined) { value = true; }
|
||||||
|
|
||||||
|
if (value === this.flipY) { return this; }
|
||||||
|
|
||||||
this.flipY = value;
|
this.flipY = value;
|
||||||
|
this.update();
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
2
dist/phaser-ie9.min.js
vendored
2
dist/phaser-ie9.min.js
vendored
File diff suppressed because one or more lines are too long
395
dist/phaser.esm.js
vendored
395
dist/phaser.esm.js
vendored
|
@ -15679,7 +15679,7 @@ var CONST = {
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
VERSION: '3.80.0',
|
VERSION: '3.80.1',
|
||||||
|
|
||||||
BlendModes: __webpack_require__(10312),
|
BlendModes: __webpack_require__(10312),
|
||||||
|
|
||||||
|
@ -57408,17 +57408,15 @@ var Utils = __webpack_require__(70554);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* A 2D point light.
|
* A 2D Light.
|
||||||
*
|
*
|
||||||
* These are typically created by a {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
* These are created by the {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
||||||
*
|
*
|
||||||
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
||||||
*
|
*
|
||||||
* They can also simply be used to represent a point light for your own purposes.
|
* They can also simply be used to represent a point light for your own purposes.
|
||||||
*
|
*
|
||||||
* As of Phaser 3.60 this Game Object now has the Transform and Origin components. However, changing the scale,
|
* Lights cannot be added to Containers. They are designed to exist in the root of a Scene.
|
||||||
* rotation or origin properties will not make any difference to the Light. They are simply present to allow you
|
|
||||||
* to add this Light to a Container, or enable it for Physics.
|
|
||||||
*
|
*
|
||||||
* @class Light
|
* @class Light
|
||||||
* @extends Phaser.Geom.Circle
|
* @extends Phaser.Geom.Circle
|
||||||
|
@ -57428,7 +57426,6 @@ var Utils = __webpack_require__(70554);
|
||||||
*
|
*
|
||||||
* @extends Phaser.GameObjects.Components.Origin
|
* @extends Phaser.GameObjects.Components.Origin
|
||||||
* @extends Phaser.GameObjects.Components.ScrollFactor
|
* @extends Phaser.GameObjects.Components.ScrollFactor
|
||||||
* @extends Phaser.GameObjects.Components.Transform
|
|
||||||
* @extends Phaser.GameObjects.Components.Visible
|
* @extends Phaser.GameObjects.Components.Visible
|
||||||
*
|
*
|
||||||
* @param {number} x - The horizontal position of the light.
|
* @param {number} x - The horizontal position of the light.
|
||||||
|
@ -57446,7 +57443,6 @@ var Light = new Class({
|
||||||
Mixins: [
|
Mixins: [
|
||||||
Components.Origin,
|
Components.Origin,
|
||||||
Components.ScrollFactor,
|
Components.ScrollFactor,
|
||||||
Components.Transform,
|
|
||||||
Components.Visible
|
Components.Visible
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -72742,7 +72738,7 @@ var Shader = new Class({
|
||||||
/**
|
/**
|
||||||
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
||||||
*
|
*
|
||||||
* This property is only set if you have called `Shader.setRenderToTexture`, otherwise it is `null`.
|
* This property is only set if you have called `Shader.setRenderToTexture` with a key, otherwise it is `null`.
|
||||||
*
|
*
|
||||||
* @name Phaser.GameObjects.Shader#texture
|
* @name Phaser.GameObjects.Shader#texture
|
||||||
* @type {Phaser.Textures.Texture}
|
* @type {Phaser.Textures.Texture}
|
||||||
|
@ -72832,8 +72828,6 @@ var Shader = new Class({
|
||||||
|
|
||||||
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
||||||
|
|
||||||
this.glTexture.flipY = flipY;
|
|
||||||
|
|
||||||
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
||||||
|
|
||||||
this._rendererWidth = width;
|
this._rendererWidth = width;
|
||||||
|
@ -73322,17 +73316,13 @@ var Shader = new Class({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0 + this._textureCount);
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, uniform.value.webGLTexture);
|
|
||||||
|
|
||||||
// Extended texture data
|
// Extended texture data
|
||||||
|
|
||||||
var data = uniform.textureData;
|
var data = uniform.textureData;
|
||||||
|
|
||||||
if (data && !uniform.value.isRenderTexture)
|
if (data && !uniform.value.isRenderTexture)
|
||||||
{
|
{
|
||||||
|
var gl = this.gl;
|
||||||
var wrapper = uniform.value;
|
var wrapper = uniform.value;
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
||||||
|
@ -73346,6 +73336,10 @@ var Shader = new Class({
|
||||||
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
||||||
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
||||||
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
||||||
|
var flipY = GetFastValue(data, 'flipY', false);
|
||||||
|
var width = GetFastValue(data, 'width', wrapper.width);
|
||||||
|
var height = GetFastValue(data, 'height', wrapper.height);
|
||||||
|
var source = GetFastValue(data, 'source', wrapper.pixels);
|
||||||
|
|
||||||
if (data.repeat)
|
if (data.repeat)
|
||||||
{
|
{
|
||||||
|
@ -73353,38 +73347,13 @@ var Shader = new Class({
|
||||||
wrapT = gl.REPEAT;
|
wrapT = gl.REPEAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY);
|
|
||||||
|
|
||||||
if (data.width)
|
if (data.width)
|
||||||
{
|
{
|
||||||
var width = GetFastValue(data, 'width', 512);
|
// If the uniform has resolution, use a blank texture.
|
||||||
var height = GetFastValue(data, 'height', 2);
|
source = null;
|
||||||
var border = GetFastValue(data, 'border', 0);
|
|
||||||
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null);
|
|
||||||
wrapper.width = width;
|
|
||||||
wrapper.height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.source);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter);
|
wrapper.update(source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT);
|
|
||||||
|
|
||||||
// Update texture wrapper.
|
|
||||||
wrapper.magFilter = magFilter;
|
|
||||||
wrapper.minFilter = minFilter;
|
|
||||||
wrapper.wrapS = wrapS;
|
|
||||||
wrapper.wrapT = wrapT;
|
|
||||||
wrapper.format = format;
|
|
||||||
wrapper.flipY = !!data.flipY;
|
|
||||||
wrapper.pixels = uniform.source;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renderer.setProgram(this.program);
|
this.renderer.setProgram(this.program);
|
||||||
|
@ -116487,6 +116456,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseDownWindow = function (event)
|
this.onMouseDownWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116509,6 +116483,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseUpWindow = function (event)
|
this.onMouseUpWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116982,11 +116961,6 @@ var TouchManager = new Class({
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
manager.onTouchEnd(event);
|
manager.onTouchEnd(event);
|
||||||
|
|
||||||
if (_this.capture && event.cancelable)
|
|
||||||
{
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -179140,6 +179114,9 @@ var WebGLRenderer = new Class({
|
||||||
gl.disable(gl.DEPTH_TEST);
|
gl.disable(gl.DEPTH_TEST);
|
||||||
gl.enable(gl.CULL_FACE);
|
gl.enable(gl.CULL_FACE);
|
||||||
|
|
||||||
|
// Re-enable compressed texture formats.
|
||||||
|
_this.compression = _this.getCompressedTextures();
|
||||||
|
|
||||||
// Restore wrapped GL objects.
|
// Restore wrapped GL objects.
|
||||||
// Order matters, as some wrappers depend on others.
|
// Order matters, as some wrappers depend on others.
|
||||||
var wrapperCreateResource = function (wrapper)
|
var wrapperCreateResource = function (wrapper)
|
||||||
|
@ -181271,13 +181248,37 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
var minFilter = gl.NEAREST;
|
||||||
|
var magFilter = gl.NEAREST;
|
||||||
|
|
||||||
|
var width = srcCanvas.width;
|
||||||
|
var height = srcCanvas.height;
|
||||||
|
|
||||||
|
var wrapping = gl.CLAMP_TO_EDGE;
|
||||||
|
|
||||||
|
var pow = IsSizePowerOfTwo(width, height);
|
||||||
|
|
||||||
|
if (!noRepeat && pow)
|
||||||
|
{
|
||||||
|
wrapping = gl.REPEAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.config.antialias)
|
||||||
|
{
|
||||||
|
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
||||||
|
magFilter = gl.LINEAR;
|
||||||
|
}
|
||||||
|
|
||||||
if (!dstTexture)
|
if (!dstTexture)
|
||||||
{
|
{
|
||||||
return this.createCanvasTexture(srcCanvas, noRepeat, flipY);
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return this.updateCanvasTexture(srcCanvas, dstTexture, flipY, noRepeat);
|
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -181298,29 +181299,7 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, null, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181341,46 +181320,25 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new WebGL Texture based on the given HTML Video Element.
|
* Creates or updates a WebGL Texture based on the given HTML Video Element.
|
||||||
*
|
*
|
||||||
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
* If the `dstTexture` parameter is given, the WebGL Texture is updated, rather than created fresh.
|
||||||
* @since 3.20.0
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#videoToTexture
|
||||||
|
* @since 3.90.0
|
||||||
*
|
*
|
||||||
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} [dstTexture] - The destination WebGLTextureWrapper to set.
|
||||||
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
*
|
*
|
||||||
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created, or updated, WebGLTextureWrapper.
|
||||||
*/
|
*/
|
||||||
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
videoToTexture: function (srcVideo, dstTexture, noRepeat, flipY)
|
||||||
{
|
{
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
@ -181407,7 +181365,36 @@ var WebGLRenderer = new Class({
|
||||||
magFilter = gl.LINEAR;
|
magFilter = gl.LINEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
if (!dstTexture)
|
||||||
|
{
|
||||||
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new WebGL Texture based on the given HTML Video Element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
||||||
|
* @since 3.20.0
|
||||||
|
*
|
||||||
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
*
|
||||||
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
||||||
|
*/
|
||||||
|
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
||||||
|
{
|
||||||
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
return this.videoToTexture(srcVideo, null, noRepeat, flipY);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181428,31 +181415,7 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.videoToTexture(srcVideo, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcVideo.videoWidth;
|
|
||||||
var height = srcVideo.videoHeight;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184125,7 +184088,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!gameObject)
|
if (!gameObject)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
else if (gameObject.displayTexture)
|
else if (gameObject.displayTexture)
|
||||||
{
|
{
|
||||||
|
@ -184149,7 +184112,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!normalMap)
|
if (!normalMap)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalMap.glTexture;
|
return normalMap.glTexture;
|
||||||
|
@ -184790,9 +184753,7 @@ var MultiPipeline = new Class({
|
||||||
flipX = -1;
|
flipX = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auto-invert the flipY if this is coming from a GL RenderTexture
|
if (gameObject.flipY)
|
||||||
|
|
||||||
if (gameObject.flipY || (frame.source.isGLTexture && frame.source.isRenderTexture && !texture.flipY))
|
|
||||||
{
|
{
|
||||||
if (!customPivot)
|
if (!customPivot)
|
||||||
{
|
{
|
||||||
|
@ -192452,11 +192413,81 @@ var WebGLTextureWrapper = new Class({
|
||||||
|
|
||||||
var texture = gl.createTexture();
|
var texture = gl.createTexture();
|
||||||
|
|
||||||
|
// Set Spector metadata.
|
||||||
|
// eslint-disable-next-line camelcase
|
||||||
|
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
||||||
|
|
||||||
|
// Assign the texture to our wrapper.
|
||||||
|
this.webGLTexture = texture;
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the WebGLTexture from an updated source.
|
||||||
|
*
|
||||||
|
* This should only be used when the source is a Canvas or Video element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
||||||
|
* @since 3.80.0
|
||||||
|
*
|
||||||
|
* @param {?object} source - The source to update the WebGLTexture with.
|
||||||
|
* @param {number} width - The new width of the WebGLTexture.
|
||||||
|
* @param {number} height - The new height of the WebGLTexture.
|
||||||
|
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
||||||
|
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
||||||
|
* @param {number} format - The new format for the WebGLTexture.
|
||||||
|
*/
|
||||||
|
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format)
|
||||||
|
{
|
||||||
|
if (width === 0 || height === 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume that the source might change.
|
||||||
|
this.pixels = source;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.flipY = flipY;
|
||||||
|
this.wrapS = wrapS;
|
||||||
|
this.wrapT = wrapT;
|
||||||
|
this.minFilter = minFilter;
|
||||||
|
this.magFilter = magFilter;
|
||||||
|
this.format = format;
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
|
if (gl.isContextLost())
|
||||||
|
{
|
||||||
|
// GL state can't be updated right now.
|
||||||
|
// `createResource` will run when the context is restored.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all parameters of this WebGLTexture per the stored values.
|
||||||
|
*
|
||||||
|
* @function Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#_processTexture
|
||||||
|
* @protected
|
||||||
|
* @since 3.90.0
|
||||||
|
* @ignore
|
||||||
|
*/
|
||||||
|
_processTexture: function ()
|
||||||
|
{
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
gl.activeTexture(gl.TEXTURE0);
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, texture);
|
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
||||||
|
@ -192464,11 +192495,7 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
||||||
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);
|
||||||
if (this.flipY)
|
|
||||||
{
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
var pixels = this.pixels;
|
var pixels = this.pixels;
|
||||||
var mipLevel = this.mipLevel;
|
var mipLevel = this.mipLevel;
|
||||||
|
@ -192498,6 +192525,8 @@ var WebGLTextureWrapper = new Class({
|
||||||
else if (pixels instanceof Uint8Array)
|
else if (pixels instanceof Uint8Array)
|
||||||
{
|
{
|
||||||
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
||||||
|
|
||||||
|
generateMipmap = IsSizePowerOfTwo(width, height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -192517,90 +192546,14 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
gl.generateMipmap(gl.TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Spector metadata.
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
// Restore previous texture bind.
|
||||||
if (currentTexture)
|
if (currentTexture)
|
||||||
{
|
{
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Assign the texture to our wrapper.
|
|
||||||
this.webGLTexture = texture;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the WebGLTexture from an updated source.
|
|
||||||
*
|
|
||||||
* This should only be used when the source is a Canvas or Video element.
|
|
||||||
*
|
|
||||||
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
|
||||||
* @since 3.80.0
|
|
||||||
*
|
|
||||||
* @param {HTMLCanvasElement|HTMLVideoElement} source - The source to update the WebGLTexture with.
|
|
||||||
* @param {number} width - The new width of the WebGLTexture.
|
|
||||||
* @param {number} height - The new height of the WebGLTexture.
|
|
||||||
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
|
||||||
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
|
||||||
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
|
||||||
*/
|
|
||||||
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter)
|
|
||||||
{
|
|
||||||
if (width === 0 || height === 0)
|
|
||||||
{
|
{
|
||||||
return;
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
||||||
}
|
|
||||||
|
|
||||||
// Assume that the source might change.
|
|
||||||
this.pixels = source;
|
|
||||||
this.width = width;
|
|
||||||
this.height = height;
|
|
||||||
this.flipY = flipY;
|
|
||||||
this.wrapS = wrapS;
|
|
||||||
this.wrapT = wrapT;
|
|
||||||
this.minFilter = minFilter;
|
|
||||||
this.magFilter = magFilter;
|
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
if (gl.isContextLost())
|
|
||||||
{
|
|
||||||
// GL state can't be updated right now.
|
|
||||||
// `createResource` will run when the context is restored.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this.wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
|
||||||
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
||||||
|
|
||||||
// Should we generate mipmaps?
|
|
||||||
var pixels = this.pixels;
|
|
||||||
if (IsSizePowerOfTwo(width, height) && !pixels.compressed && !(pixels instanceof Uint8Array))
|
|
||||||
{
|
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
|
||||||
if (currentTexture)
|
|
||||||
{
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -211304,7 +211257,6 @@ var DynamicTexture = new Class({
|
||||||
source.isGLTexture = true;
|
source.isGLTexture = true;
|
||||||
|
|
||||||
source.glTexture = renderTarget.texture;
|
source.glTexture = renderTarget.texture;
|
||||||
source.glTexture.flipY = true;
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
@ -216074,7 +216026,10 @@ var TextureSource = new Class({
|
||||||
{
|
{
|
||||||
if (value === undefined) { value = true; }
|
if (value === undefined) { value = true; }
|
||||||
|
|
||||||
|
if (value === this.flipY) { return this; }
|
||||||
|
|
||||||
this.flipY = value;
|
this.flipY = value;
|
||||||
|
this.update();
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
2
dist/phaser.esm.min.js
vendored
2
dist/phaser.esm.min.js
vendored
File diff suppressed because one or more lines are too long
395
dist/phaser.js
vendored
395
dist/phaser.js
vendored
|
@ -15691,7 +15691,7 @@ var CONST = {
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @since 3.0.0
|
* @since 3.0.0
|
||||||
*/
|
*/
|
||||||
VERSION: '3.80.0',
|
VERSION: '3.80.1',
|
||||||
|
|
||||||
BlendModes: __webpack_require__(10312),
|
BlendModes: __webpack_require__(10312),
|
||||||
|
|
||||||
|
@ -57420,17 +57420,15 @@ var Utils = __webpack_require__(70554);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* A 2D point light.
|
* A 2D Light.
|
||||||
*
|
*
|
||||||
* These are typically created by a {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
* These are created by the {@link Phaser.GameObjects.LightsManager}, available from within a scene via `this.lights`.
|
||||||
*
|
*
|
||||||
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
* Any Game Objects using the Light2D pipeline will then be affected by these Lights as long as they have a normal map.
|
||||||
*
|
*
|
||||||
* They can also simply be used to represent a point light for your own purposes.
|
* They can also simply be used to represent a point light for your own purposes.
|
||||||
*
|
*
|
||||||
* As of Phaser 3.60 this Game Object now has the Transform and Origin components. However, changing the scale,
|
* Lights cannot be added to Containers. They are designed to exist in the root of a Scene.
|
||||||
* rotation or origin properties will not make any difference to the Light. They are simply present to allow you
|
|
||||||
* to add this Light to a Container, or enable it for Physics.
|
|
||||||
*
|
*
|
||||||
* @class Light
|
* @class Light
|
||||||
* @extends Phaser.Geom.Circle
|
* @extends Phaser.Geom.Circle
|
||||||
|
@ -57440,7 +57438,6 @@ var Utils = __webpack_require__(70554);
|
||||||
*
|
*
|
||||||
* @extends Phaser.GameObjects.Components.Origin
|
* @extends Phaser.GameObjects.Components.Origin
|
||||||
* @extends Phaser.GameObjects.Components.ScrollFactor
|
* @extends Phaser.GameObjects.Components.ScrollFactor
|
||||||
* @extends Phaser.GameObjects.Components.Transform
|
|
||||||
* @extends Phaser.GameObjects.Components.Visible
|
* @extends Phaser.GameObjects.Components.Visible
|
||||||
*
|
*
|
||||||
* @param {number} x - The horizontal position of the light.
|
* @param {number} x - The horizontal position of the light.
|
||||||
|
@ -57458,7 +57455,6 @@ var Light = new Class({
|
||||||
Mixins: [
|
Mixins: [
|
||||||
Components.Origin,
|
Components.Origin,
|
||||||
Components.ScrollFactor,
|
Components.ScrollFactor,
|
||||||
Components.Transform,
|
|
||||||
Components.Visible
|
Components.Visible
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -72754,7 +72750,7 @@ var Shader = new Class({
|
||||||
/**
|
/**
|
||||||
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
* A reference to the Phaser.Textures.Texture that has been stored in the Texture Manager for this Shader.
|
||||||
*
|
*
|
||||||
* This property is only set if you have called `Shader.setRenderToTexture`, otherwise it is `null`.
|
* This property is only set if you have called `Shader.setRenderToTexture` with a key, otherwise it is `null`.
|
||||||
*
|
*
|
||||||
* @name Phaser.GameObjects.Shader#texture
|
* @name Phaser.GameObjects.Shader#texture
|
||||||
* @type {Phaser.Textures.Texture}
|
* @type {Phaser.Textures.Texture}
|
||||||
|
@ -72844,8 +72840,6 @@ var Shader = new Class({
|
||||||
|
|
||||||
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
this.glTexture = renderer.createTextureFromSource(null, width, height, 0);
|
||||||
|
|
||||||
this.glTexture.flipY = flipY;
|
|
||||||
|
|
||||||
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
this.framebuffer = renderer.createFramebuffer(width, height, this.glTexture, false);
|
||||||
|
|
||||||
this._rendererWidth = width;
|
this._rendererWidth = width;
|
||||||
|
@ -73334,17 +73328,13 @@ var Shader = new Class({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0 + this._textureCount);
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, uniform.value.webGLTexture);
|
|
||||||
|
|
||||||
// Extended texture data
|
// Extended texture data
|
||||||
|
|
||||||
var data = uniform.textureData;
|
var data = uniform.textureData;
|
||||||
|
|
||||||
if (data && !uniform.value.isRenderTexture)
|
if (data && !uniform.value.isRenderTexture)
|
||||||
{
|
{
|
||||||
|
var gl = this.gl;
|
||||||
var wrapper = uniform.value;
|
var wrapper = uniform.value;
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
// https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texImage2D
|
||||||
|
@ -73358,6 +73348,10 @@ var Shader = new Class({
|
||||||
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
var wrapS = gl[GetFastValue(data, 'wrapS', 'repeat').toUpperCase()];
|
||||||
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
var wrapT = gl[GetFastValue(data, 'wrapT', 'repeat').toUpperCase()];
|
||||||
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
var format = gl[GetFastValue(data, 'format', 'rgba').toUpperCase()];
|
||||||
|
var flipY = GetFastValue(data, 'flipY', false);
|
||||||
|
var width = GetFastValue(data, 'width', wrapper.width);
|
||||||
|
var height = GetFastValue(data, 'height', wrapper.height);
|
||||||
|
var source = GetFastValue(data, 'source', wrapper.pixels);
|
||||||
|
|
||||||
if (data.repeat)
|
if (data.repeat)
|
||||||
{
|
{
|
||||||
|
@ -73365,38 +73359,13 @@ var Shader = new Class({
|
||||||
wrapT = gl.REPEAT;
|
wrapT = gl.REPEAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, !!data.flipY);
|
|
||||||
|
|
||||||
if (data.width)
|
if (data.width)
|
||||||
{
|
{
|
||||||
var width = GetFastValue(data, 'width', 512);
|
// If the uniform has resolution, use a blank texture.
|
||||||
var height = GetFastValue(data, 'height', 2);
|
source = null;
|
||||||
var border = GetFastValue(data, 'border', 0);
|
|
||||||
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, ArrayBufferView? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, width, height, border, format, gl.UNSIGNED_BYTE, null);
|
|
||||||
wrapper.width = width;
|
|
||||||
wrapper.height = height;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// texImage2D(GLenum target, GLint level, GLenum internalformat, GLenum format, GLenum type, ImageData? pixels)
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, format, gl.RGBA, gl.UNSIGNED_BYTE, uniform.source);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, magFilter);
|
wrapper.update(source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, wrapT);
|
|
||||||
|
|
||||||
// Update texture wrapper.
|
|
||||||
wrapper.magFilter = magFilter;
|
|
||||||
wrapper.minFilter = minFilter;
|
|
||||||
wrapper.wrapS = wrapS;
|
|
||||||
wrapper.wrapT = wrapT;
|
|
||||||
wrapper.format = format;
|
|
||||||
wrapper.flipY = !!data.flipY;
|
|
||||||
wrapper.pixels = uniform.source;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.renderer.setProgram(this.program);
|
this.renderer.setProgram(this.program);
|
||||||
|
@ -116500,6 +116469,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseDownWindow = function (event)
|
this.onMouseDownWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116522,6 +116496,11 @@ var MouseManager = new Class({
|
||||||
|
|
||||||
this.onMouseUpWindow = function (event)
|
this.onMouseUpWindow = function (event)
|
||||||
{
|
{
|
||||||
|
if (event.sourceCapabilities && event.sourceCapabilities.firesTouchEvents)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
if (!event.defaultPrevented && _this.enabled && manager && manager.enabled && event.target !== canvas)
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
|
@ -116995,11 +116974,6 @@ var TouchManager = new Class({
|
||||||
{
|
{
|
||||||
// Only process the event if the target isn't the canvas
|
// Only process the event if the target isn't the canvas
|
||||||
manager.onTouchEnd(event);
|
manager.onTouchEnd(event);
|
||||||
|
|
||||||
if (_this.capture && event.cancelable)
|
|
||||||
{
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -179248,6 +179222,9 @@ var WebGLRenderer = new Class({
|
||||||
gl.disable(gl.DEPTH_TEST);
|
gl.disable(gl.DEPTH_TEST);
|
||||||
gl.enable(gl.CULL_FACE);
|
gl.enable(gl.CULL_FACE);
|
||||||
|
|
||||||
|
// Re-enable compressed texture formats.
|
||||||
|
_this.compression = _this.getCompressedTextures();
|
||||||
|
|
||||||
// Restore wrapped GL objects.
|
// Restore wrapped GL objects.
|
||||||
// Order matters, as some wrappers depend on others.
|
// Order matters, as some wrappers depend on others.
|
||||||
var wrapperCreateResource = function (wrapper)
|
var wrapperCreateResource = function (wrapper)
|
||||||
|
@ -181379,13 +181356,37 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
var minFilter = gl.NEAREST;
|
||||||
|
var magFilter = gl.NEAREST;
|
||||||
|
|
||||||
|
var width = srcCanvas.width;
|
||||||
|
var height = srcCanvas.height;
|
||||||
|
|
||||||
|
var wrapping = gl.CLAMP_TO_EDGE;
|
||||||
|
|
||||||
|
var pow = IsSizePowerOfTwo(width, height);
|
||||||
|
|
||||||
|
if (!noRepeat && pow)
|
||||||
|
{
|
||||||
|
wrapping = gl.REPEAT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.config.antialias)
|
||||||
|
{
|
||||||
|
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
||||||
|
magFilter = gl.LINEAR;
|
||||||
|
}
|
||||||
|
|
||||||
if (!dstTexture)
|
if (!dstTexture)
|
||||||
{
|
{
|
||||||
return this.createCanvasTexture(srcCanvas, noRepeat, flipY);
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return this.updateCanvasTexture(srcCanvas, dstTexture, flipY, noRepeat);
|
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -181406,29 +181407,7 @@ var WebGLRenderer = new Class({
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, null, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcCanvas, width, height, true, false, flipY);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181449,46 +181428,25 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.canvasToTexture(srcCanvas, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcCanvas.width;
|
|
||||||
var height = srcCanvas.height;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcCanvas, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new WebGL Texture based on the given HTML Video Element.
|
* Creates or updates a WebGL Texture based on the given HTML Video Element.
|
||||||
*
|
*
|
||||||
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
* If the `dstTexture` parameter is given, the WebGL Texture is updated, rather than created fresh.
|
||||||
* @since 3.20.0
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#videoToTexture
|
||||||
|
* @since 3.90.0
|
||||||
*
|
*
|
||||||
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} [dstTexture] - The destination WebGLTextureWrapper to set.
|
||||||
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
*
|
*
|
||||||
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created, or updated, WebGLTextureWrapper.
|
||||||
*/
|
*/
|
||||||
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
videoToTexture: function (srcVideo, dstTexture, noRepeat, flipY)
|
||||||
{
|
{
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
@ -181515,7 +181473,36 @@ var WebGLRenderer = new Class({
|
||||||
magFilter = gl.LINEAR;
|
magFilter = gl.LINEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
if (!dstTexture)
|
||||||
|
{
|
||||||
|
return this.createTexture2D(0, minFilter, magFilter, wrapping, wrapping, gl.RGBA, srcVideo, width, height, true, true, flipY);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter, dstTexture.format);
|
||||||
|
|
||||||
|
return dstTexture;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new WebGL Texture based on the given HTML Video Element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.WebGLRenderer#createVideoTexture
|
||||||
|
* @since 3.20.0
|
||||||
|
*
|
||||||
|
* @param {HTMLVideoElement} srcVideo - The Video to create the WebGL Texture from
|
||||||
|
* @param {boolean} [noRepeat=false] - Should this canvas be allowed to set `REPEAT`?
|
||||||
|
* @param {boolean} [flipY=false] - Should the WebGL Texture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
*
|
||||||
|
* @return {Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper} The newly created WebGLTextureWrapper.
|
||||||
|
*/
|
||||||
|
createVideoTexture: function (srcVideo, noRepeat, flipY)
|
||||||
|
{
|
||||||
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
if (flipY === undefined) { flipY = false; }
|
||||||
|
|
||||||
|
return this.videoToTexture(srcVideo, null, noRepeat, flipY);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181536,31 +181523,7 @@ var WebGLRenderer = new Class({
|
||||||
if (flipY === undefined) { flipY = false; }
|
if (flipY === undefined) { flipY = false; }
|
||||||
if (noRepeat === undefined) { noRepeat = false; }
|
if (noRepeat === undefined) { noRepeat = false; }
|
||||||
|
|
||||||
var gl = this.gl;
|
return this.videoToTexture(srcVideo, dstTexture, noRepeat, flipY);
|
||||||
var minFilter = gl.NEAREST;
|
|
||||||
var magFilter = gl.NEAREST;
|
|
||||||
|
|
||||||
var width = srcVideo.videoWidth;
|
|
||||||
var height = srcVideo.videoHeight;
|
|
||||||
|
|
||||||
var wrapping = gl.CLAMP_TO_EDGE;
|
|
||||||
|
|
||||||
var pow = IsSizePowerOfTwo(width, height);
|
|
||||||
|
|
||||||
if (!noRepeat && pow)
|
|
||||||
{
|
|
||||||
wrapping = gl.REPEAT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.config.antialias)
|
|
||||||
{
|
|
||||||
minFilter = (pow && this.mipmapFilter) ? this.mipmapFilter : gl.LINEAR;
|
|
||||||
magFilter = gl.LINEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
dstTexture.update(srcVideo, width, height, flipY, wrapping, wrapping, minFilter, magFilter);
|
|
||||||
|
|
||||||
return dstTexture;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184233,7 +184196,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!gameObject)
|
if (!gameObject)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
else if (gameObject.displayTexture)
|
else if (gameObject.displayTexture)
|
||||||
{
|
{
|
||||||
|
@ -184257,7 +184220,7 @@ var LightPipeline = new Class({
|
||||||
|
|
||||||
if (!normalMap)
|
if (!normalMap)
|
||||||
{
|
{
|
||||||
return this.renderer.normalMap;
|
return this.renderer.normalTexture;
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalMap.glTexture;
|
return normalMap.glTexture;
|
||||||
|
@ -184898,9 +184861,7 @@ var MultiPipeline = new Class({
|
||||||
flipX = -1;
|
flipX = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auto-invert the flipY if this is coming from a GL RenderTexture
|
if (gameObject.flipY)
|
||||||
|
|
||||||
if (gameObject.flipY || (frame.source.isGLTexture && frame.source.isRenderTexture && !texture.flipY))
|
|
||||||
{
|
{
|
||||||
if (!customPivot)
|
if (!customPivot)
|
||||||
{
|
{
|
||||||
|
@ -192560,11 +192521,81 @@ var WebGLTextureWrapper = new Class({
|
||||||
|
|
||||||
var texture = gl.createTexture();
|
var texture = gl.createTexture();
|
||||||
|
|
||||||
|
// Set Spector metadata.
|
||||||
|
// eslint-disable-next-line camelcase
|
||||||
|
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
||||||
|
|
||||||
|
// Assign the texture to our wrapper.
|
||||||
|
this.webGLTexture = texture;
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates the WebGLTexture from an updated source.
|
||||||
|
*
|
||||||
|
* This should only be used when the source is a Canvas or Video element.
|
||||||
|
*
|
||||||
|
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
||||||
|
* @since 3.80.0
|
||||||
|
*
|
||||||
|
* @param {?object} source - The source to update the WebGLTexture with.
|
||||||
|
* @param {number} width - The new width of the WebGLTexture.
|
||||||
|
* @param {number} height - The new height of the WebGLTexture.
|
||||||
|
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
||||||
|
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
||||||
|
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
||||||
|
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
||||||
|
* @param {number} format - The new format for the WebGLTexture.
|
||||||
|
*/
|
||||||
|
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter, format)
|
||||||
|
{
|
||||||
|
if (width === 0 || height === 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assume that the source might change.
|
||||||
|
this.pixels = source;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.flipY = flipY;
|
||||||
|
this.wrapS = wrapS;
|
||||||
|
this.wrapT = wrapT;
|
||||||
|
this.minFilter = minFilter;
|
||||||
|
this.magFilter = magFilter;
|
||||||
|
this.format = format;
|
||||||
|
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
|
if (gl.isContextLost())
|
||||||
|
{
|
||||||
|
// GL state can't be updated right now.
|
||||||
|
// `createResource` will run when the context is restored.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._processTexture();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set all parameters of this WebGLTexture per the stored values.
|
||||||
|
*
|
||||||
|
* @function Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#_processTexture
|
||||||
|
* @protected
|
||||||
|
* @since 3.90.0
|
||||||
|
* @ignore
|
||||||
|
*/
|
||||||
|
_processTexture: function ()
|
||||||
|
{
|
||||||
|
var gl = this.gl;
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
gl.activeTexture(gl.TEXTURE0);
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, texture);
|
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
||||||
|
@ -192572,11 +192603,7 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
||||||
|
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, this.flipY);
|
||||||
if (this.flipY)
|
|
||||||
{
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
var pixels = this.pixels;
|
var pixels = this.pixels;
|
||||||
var mipLevel = this.mipLevel;
|
var mipLevel = this.mipLevel;
|
||||||
|
@ -192606,6 +192633,8 @@ var WebGLTextureWrapper = new Class({
|
||||||
else if (pixels instanceof Uint8Array)
|
else if (pixels instanceof Uint8Array)
|
||||||
{
|
{
|
||||||
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
gl.texImage2D(gl.TEXTURE_2D, mipLevel, format, width, height, 0, format, gl.UNSIGNED_BYTE, pixels);
|
||||||
|
|
||||||
|
generateMipmap = IsSizePowerOfTwo(width, height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -192625,90 +192654,14 @@ var WebGLTextureWrapper = new Class({
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
gl.generateMipmap(gl.TEXTURE_2D);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Spector metadata.
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
texture.__SPECTOR_Metadata = this.__SPECTOR_Metadata;
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
// Restore previous texture bind.
|
||||||
if (currentTexture)
|
if (currentTexture)
|
||||||
{
|
{
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Assign the texture to our wrapper.
|
|
||||||
this.webGLTexture = texture;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the WebGLTexture from an updated source.
|
|
||||||
*
|
|
||||||
* This should only be used when the source is a Canvas or Video element.
|
|
||||||
*
|
|
||||||
* @method Phaser.Renderer.WebGL.Wrappers.WebGLTextureWrapper#update
|
|
||||||
* @since 3.80.0
|
|
||||||
*
|
|
||||||
* @param {HTMLCanvasElement|HTMLVideoElement} source - The source to update the WebGLTexture with.
|
|
||||||
* @param {number} width - The new width of the WebGLTexture.
|
|
||||||
* @param {number} height - The new height of the WebGLTexture.
|
|
||||||
* @param {boolean} flipY - Should the WebGLTexture set `UNPACK_MULTIPLY_FLIP_Y`?
|
|
||||||
* @param {number} wrapS - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} wrapT - The new wrapping mode for the WebGLTexture.
|
|
||||||
* @param {number} minFilter - The new minification filter for the WebGLTexture.
|
|
||||||
* @param {number} magFilter - The new magnification filter for the WebGLTexture.
|
|
||||||
*/
|
|
||||||
update: function (source, width, height, flipY, wrapS, wrapT, minFilter, magFilter)
|
|
||||||
{
|
|
||||||
if (width === 0 || height === 0)
|
|
||||||
{
|
{
|
||||||
return;
|
gl.bindTexture(gl.TEXTURE_2D, null);
|
||||||
}
|
|
||||||
|
|
||||||
// Assume that the source might change.
|
|
||||||
this.pixels = source;
|
|
||||||
this.width = width;
|
|
||||||
this.height = height;
|
|
||||||
this.flipY = flipY;
|
|
||||||
this.wrapS = wrapS;
|
|
||||||
this.wrapT = wrapT;
|
|
||||||
this.minFilter = minFilter;
|
|
||||||
this.magFilter = magFilter;
|
|
||||||
|
|
||||||
var gl = this.gl;
|
|
||||||
|
|
||||||
if (gl.isContextLost())
|
|
||||||
{
|
|
||||||
// GL state can't be updated right now.
|
|
||||||
// `createResource` will run when the context is restored.
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
gl.activeTexture(gl.TEXTURE0);
|
|
||||||
|
|
||||||
var currentTexture = gl.getParameter(gl.TEXTURE_BINDING_2D);
|
|
||||||
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, this.webGLTexture);
|
|
||||||
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, this.minFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, this.magFilter);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this.wrapS);
|
|
||||||
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this.wrapT);
|
|
||||||
|
|
||||||
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);
|
|
||||||
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this.pma);
|
|
||||||
|
|
||||||
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
|
|
||||||
|
|
||||||
// Should we generate mipmaps?
|
|
||||||
var pixels = this.pixels;
|
|
||||||
if (IsSizePowerOfTwo(width, height) && !pixels.compressed && !(pixels instanceof Uint8Array))
|
|
||||||
{
|
|
||||||
gl.generateMipmap(gl.TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restore previous texture bind.
|
|
||||||
if (currentTexture)
|
|
||||||
{
|
|
||||||
gl.bindTexture(gl.TEXTURE_2D, currentTexture);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -211412,7 +211365,6 @@ var DynamicTexture = new Class({
|
||||||
source.isGLTexture = true;
|
source.isGLTexture = true;
|
||||||
|
|
||||||
source.glTexture = renderTarget.texture;
|
source.glTexture = renderTarget.texture;
|
||||||
source.glTexture.flipY = true;
|
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
@ -216182,7 +216134,10 @@ var TextureSource = new Class({
|
||||||
{
|
{
|
||||||
if (value === undefined) { value = true; }
|
if (value === undefined) { value = true; }
|
||||||
|
|
||||||
|
if (value === this.flipY) { return this; }
|
||||||
|
|
||||||
this.flipY = value;
|
this.flipY = value;
|
||||||
|
this.update();
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
2
dist/phaser.min.js
vendored
2
dist/phaser.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,6BAA6B;AAC7B,qCAAkC;AAElC,SAAgB,OAAO,CAAC,IAAS,EAAE,IAAS;IACxC,6BAA6B;IAC7B,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,sBAAsB;IACtB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,yBAAyB;IACzB,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEhC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QAClC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAClC;IAED,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;IAElE,IAAI,GAAG,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAvBD,0BAuBC;AAAA,CAAC"}
|
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,6BAA6B;AAC7B,qCAAkC;AAElC,SAAgB,OAAO,CAAC,IAAS,EAAE,IAAS;IACxC,6BAA6B;IAC7B,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,sBAAsB;IACtB,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,yBAAyB;IACzB,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACjD,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IAEhC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEhD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;IAElE,IAAI,GAAG,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAvBD,0BAuBC;AAAA,CAAC"}
|
33144
types/phaser.d.ts
vendored
33144
types/phaser.d.ts
vendored
File diff suppressed because it is too large
Load diff
566418
types/phaser.json
566418
types/phaser.json
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue