Richard Davey
e608c2caf1
The CONTEXT_RESTORED
Game Event has been removed and the WebGL Renderer no longer listens for the contextrestored
DOM event, or has a contextRestoredHandler
method. This never actually worked properly, in any version of Phaser 3 - although the WebGLRenderer would be restored, none of the shaders, pipelines or textures were correctly re-created. If a context is now lost, Phaser will display an error in the console and all rendering will halt. It will no longer try to re-create the context, leading to masses of WebGL errors in the console. Instead, it will die gracefully and require a page reload.
2022-11-17 18:04:51 +00:00
Richard Davey
7d594dd49a
Clarify snapshot docs
2022-10-31 22:46:44 +00:00
Richard Davey
22eae26007
WebRenderer.snapshotFramebuffer
and by extension, the snapshot methods in Dynamic Textures and Render Textures, has been updated to ensure that the width and height never exceed the framebuffer dimensions, or it'll cause a runtime error. The method snapshotArea
has had this limitation removed as a result, allowing you to snapshot areas that are larger than the Canvas. Fix #5707
2022-10-31 22:17:27 +00:00
Richard Davey
ba6af3a920
Conditionally set DEBUG
2022-10-31 16:17:16 +00:00
Richard Davey
4f0029c03c
Added captureFrame, captureNextFrame, getFps, startCapture and stopCapture methods
2022-10-28 18:23:24 +01:00
Richard Davey
e44a148882
Store actual WebGLTextures
2022-10-09 17:29:29 +01:00
Richard Davey
080242f928
Due to all of the changes with how WebGL texture batching works a lot of mostly internal methods and properties have been removed. This is the complete list
...
* The `WebGLRenderer.currentActiveTexture` property has been removed.
* The `WebGLRenderer.startActiveTexture` property has been removed.
* The `WebGLRenderer.tempTextures` property has been removed.
* The `WebGLRenderer.textureZero` property has been removed.
* The `WebGLRenderer.normalTexture` property has been removed.
* The `WebGLRenderer.textueFlush` property has been removed.
* The `WebGLRenderer.isTextureClean` property has been removed.
* The `WebGLRenderer.setBlankTexture` method has been removed.
* The `WebGLRenderer.setTextureSource` method has been removed.
* The `WebGLRenderer.isNewNormalMap` method has been removed.
* The `WebGLRenderer.setTextureZero` method has been removed.
* The `WebGLRenderer.clearTextureZero` method has been removed.
* The `WebGLRenderer.setNormalMap` method has been removed.
* The `WebGLRenderer.clearNormalMap` method has been removed.
* The `WebGLRenderer.unbindTextures` method has been removed.
* The `WebGLRenderer.resetTextures` method has been removed.
* The `WebGLRenderer.setTexture2D` method has been removed.
* The `WebGLRenderer.pushFramebuffer` method has had the `resetTextures` argument removed.
* The `WebGLRenderer.setFramebuffer` method has had the `resetTextures` argument removed.
* The `WebGLRenderer.popFramebuffer` method has had the `resetTextures` argument removed.
* The `WebGLRenderer.deleteTexture` method has had the `reset` argument removed.
2022-10-07 16:08:39 +01:00
Richard Davey
f4a248e575
Debugging while testing texture batching
2022-10-07 01:37:37 +01:00
Richard Davey
3f4ebf5dd7
Update WebGLRenderer.js
2022-10-06 18:35:04 +01:00
Richard Davey
3d3b675ae8
Pass over the config values
2022-10-04 18:04:26 +01:00
Richard Davey
1a23b31947
Remove swap and rename method
2022-10-03 22:07:07 +01:00
Richard Davey
416aa053da
Swap to using RenderTarget, much cleaner
2022-10-03 21:09:15 +01:00
Richard Davey
b327f39c5e
Bitmap Mask updates
...
* The `WebGLRenderer` has 4 new properties: `maskTargetFramebuffer`, `maskSourceFramebuffer`, `maskTargetTexture` and `maskSourceTexture`. These are the new global locations of the mask framebuffers.
* `WebGLRenderer.createBitmapMask` is a new method that internally creates the Bitmap Mask framebuffers.
* `WebGLRenderer.clearBitmapMask` is a new method that internally clears the existing Bitmap Mask framebuffers, called as part of a resize event.
* `WebGLRenderer.enableBitmapMask` is a new method that starts the process of using the mask target framebuffer for drawing. This is called by the `BitmapMaskPipeline`.
* `WebGLRenderer.drawBitmapMask` is a new method that completes the process of rendering using the mask target framebuffer. This is called by the `BitmapMaskPipeline`.
2022-10-03 18:49:55 +01:00
brendo
93eceb7d99
show error code
2022-08-30 07:42:14 +08:00
Richard Davey
4c2d3e3cff
setTextureZero will now set isTextureClean
to false
2022-08-24 13:56:12 +01:00
Richard Davey
9bc8826684
Specify the canvas is for drawing, not reading
2022-08-18 18:01:45 +01:00
samme
54d12080eb
Docs: fix the mipmapFilter
example code
2022-05-09 09:44:09 -07:00
Richard Davey
59fbcc5ca3
Updated copyright year
2022-02-28 14:29:51 +00:00
Andy Mikulski
6108414b75
WebGLSnapshot: Support custom rendering contexts
2022-01-26 15:02:59 -07:00
Richard Davey
c37da11d36
pma is essential - to hell with Firefox!
2021-11-08 21:51:08 +00:00
Richard Davey
2efa08d3db
Testing pma off
2021-11-08 18:49:48 +00:00
Richard Davey
c1c8e5d12b
The WebGLRenderer.createTextureFromSource
method has a new optional boolean parameter forceClamp
that will for the clamp wrapping mode even if the texture is a power-of-two.
2021-10-14 18:45:28 +01:00
Richard Davey
01beb898b3
The WebGLRenderer.createTextureFromSource
method now accepts the CompressedTextureData
data objects and creates WebGL textures from them.
2021-10-06 18:47:35 +01:00
Richard Davey
234ba03b35
Update WebGLRenderer.js
2021-10-05 18:36:50 +01:00
Richard Davey
f376958ca1
Added getCompressedTextureName method
2021-10-05 18:30:17 +01:00
Richard Davey
7bdb9d672f
Added supportsCompressedTexture method
2021-10-05 17:04:44 +01:00
Richard Davey
573dd3a14d
Added getCompressedTextures method
2021-10-05 16:48:42 +01:00
Vladislav Forsh
670a66c697
Improve types for WebGL texture compression support
...
(cherry picked from commit 5626acffec17c6b4d66c78b8e0aa52e5cfcd8478)
2021-04-13 13:19:24 +03:00
Richard Davey
a95c34ce92
WebGLRenderer.deleteTexture
will now run resetTextures(true)
first, incase the requested texture to be deleted is currently bound. Previously, it would delete the texture and then reset them.
2021-02-17 13:10:10 +00:00
Richard Davey
c5cbb413d2
You can now set the boolean preserveDrawingBuffer
in the Game Config (either directly, or in the Render Config). This is passed to the WebGL context during creation and controls if the buffers are automatically cleared each frame or not. The default is to clear them. Set to true
to retain them.
2021-02-04 15:58:41 +00:00
Richard Davey
a765b7edfc
WebGLRenderer.isTextureClean
is a new boolean property that tracks of all of the multi-textures are in a clean 'default' state, to avoid lots of gl texture binds and activations during a Scene restart or destruction process.
2021-01-04 15:49:39 +00:00
Richard Davey
519afd031b
Fixed Camera Fade Effect check. Fix #5438
2020-12-11 11:29:16 +00:00
Richard Davey
69f4a6d8fb
Added getAspectRatio method
2020-12-11 11:05:20 +00:00
Richard Davey
11990bccb4
Added global projection matrix back and removed events
2020-12-11 10:26:15 +00:00
Richard Davey
7acbd816f3
Added new Projection Update event and respond to it
2020-12-10 18:07:25 +00:00
Richard Davey
f1dbea4ead
beginCapture can accept dimensions. Reset scissor enables even if same size. Always set drawing height.
2020-12-10 16:55:00 +00:00
Richard Davey
197aa9df0f
Update WebGLRenderer.js
2020-12-09 15:55:02 +00:00
Richard Davey
5f279bf4a4
Added RenderTarget, begingCapture, endCapture, resetScissor and resetViewport
2020-12-08 17:37:59 +00:00
Richard Davey
402e6d23b1
Testing making the pipeline responsible for setting the buffer to cut down on potential points of failure
2020-12-04 18:06:16 +00:00
Richard Davey
08b304372c
Made the Render Events global, not WebGL specific and allowed Canvas Renderer to emit them too
2020-12-04 15:07:26 +00:00
Richard Davey
3149bb5dfa
JSDoc fix
2020-11-26 14:19:29 +00:00
Richard Davey
a0a32f45e5
Using a Bitmap Mask and a Blend Mode in WebGL would reset the blend mode when the mask was rendered, causing the Game Object to have no blend mode. Fix #5409
2020-11-26 10:14:13 +00:00
Richard Davey
3f511a73cd
Replace integer[] with number[]
2020-11-23 10:23:10 +00:00
Richard Davey
02c34cd64e
Replace integer with number
2020-11-23 10:22:13 +00:00
Richard Davey
6f6fbadfdd
Don't adjust viewport unless needed
2020-11-19 16:40:07 +00:00
Richard Davey
916bfa78b2
Missing flush
2020-11-18 10:26:44 +00:00
Richard Davey
629eefb7d5
Now extends event emitter, new events and new isBooted property
2020-11-17 14:09:02 +00:00
Richard Davey
2008d3b880
Added popFBO parameters and setViewport parameter
2020-11-16 17:43:04 +00:00
Richard Davey
c12b4cff3f
Swizzle RGB
2020-11-16 15:45:45 +00:00
Richard Davey
cfce8062e6
Call the new camera methods
2020-11-13 14:19:55 +00:00
Richard Davey
92eca8d3d2
Use the new Camera post pipeline feature
2020-11-06 15:35:29 +00:00
Richard Davey
554e9214e0
Smaller error
2020-11-06 11:46:06 +00:00
Richard Davey
6e90d8ed59
Corrected docs and resetTextures
2020-11-06 11:42:25 +00:00
Richard Davey
02bde43772
Added fboStack, pushFramebuffer, popFramebuffer and resetTextures parameter
2020-11-06 10:19:26 +00:00
Richard Davey
d3c70002ea
Removed use of _tempMatrix
from all renderers
2020-11-06 09:44:29 +00:00
Richard Davey
883402da8a
Added forceZero method and used it
2020-11-05 10:50:40 +00:00
Richard Davey
f94e7b4f75
Set dimensions before resizing. Validate gl objects before deleting them.
2020-11-04 18:01:39 +00:00
Richard Davey
5dbec83a8b
Using new Camera Pipeline (renderTexture todo)
2020-10-30 17:50:19 +00:00
Richard Davey
4badd54160
Added resetProgram and changed return values
2020-10-29 14:40:33 +00:00
Richard Davey
a5d6016e64
Move sequence so the renderer is clean
2020-10-27 18:06:13 +00:00
Richard Davey
7b5d6076b2
Added max size value
2020-10-27 14:41:43 +00:00
Richard Davey
f50560eba8
The WebGLRenderer.getMaxTextures
method has been removed. This is no longer needed as you can use the WebGLRenderer.maxTextures
property instead.
2020-10-27 14:36:43 +00:00
Richard Davey
59a215d643
* Types.Core.PipelineConfig
is a new configuration object that you can set in the Game Config under the pipeline
property. It allows you to define custom WebGL pipelines as part of the Game Config, so they're automatically installed and ready for use by all Scenes in your game. You can either set the pipeline
object, or set it under the render
sub-config.
2020-10-27 13:44:58 +00:00
Richard Davey
4ebdc637a9
Tidied up method flow
2020-10-27 12:25:53 +00:00
Richard Davey
2b3863272e
Removed 'nativeTextures' and added new reset parameter
...
* The `WebGLRenderer.nativeTextures` array has been removed and any WebGLTextures created by the renderer are no longer stored within it. All WebGLTexture instances are stored in the `TextureSource` objects anyway, or by local classes such as RenderTexture, so there was no need to have another array taking up memroy.
* The `WebGLRenderer.deleteTexture` method has a new optional boolean parameter `reset` which allows you to control if the `WebGLRenderer.resetTextures` method is called, or not, after the texture is deleted.
2020-10-27 11:38:21 +00:00
Richard Davey
1e80f53f1d
Better docs
2020-10-26 15:00:25 +00:00
Richard Davey
f87bd7d384
Removed all of the shader setters. This should be done via the WebGLShader class now.
2020-10-26 14:24:06 +00:00
Richard Davey
1e8b1cc583
Removed ProjectOrtho and optimized setters
2020-10-26 14:05:26 +00:00
Richard Davey
9531124903
Typo fix
2020-10-21 18:15:19 +01:00
Richard Davey
75f857b645
Update WebGLRenderer.js
2020-10-16 14:11:21 +01:00
Richard Davey
d35ff331b2
Now takes a pre-filtered list of children to render
2020-10-16 11:36:00 +01:00
Richard Davey
2d43561e1a
WebGLRenderer.vaoExtension
is a new property that holds a reference to the Vertex Array Object WebGL Extension, if supported by the browser.
2020-10-01 13:48:27 +01:00
Richard Davey
d8992ccf9d
WebGLRenderer.instancedArraysExtension
is a new property that holds the WebGL Extension for instanced array drawing, if supported by the browser.
2020-10-01 10:57:13 +01:00
Richard Davey
8119ce7da1
Fixed use of old camera private properties
2020-09-29 16:44:11 +01:00
Richard Davey
4748c7c7fc
WebGLRenderer.defaultScissor
is a new property that holds the default scissor dimensions for the renderer. This is modified during resize
and avoids continuous array generation in the preRender
loop.
2020-09-24 09:26:41 +01:00
Richard Davey
f2f3aea79a
Shorter errors
2020-09-21 14:05:38 +01:00
Richard Davey
6a966e3f3b
Removed interpolationPercentage
parameter from all render methods, as it has never been used.
2020-09-14 15:33:58 +01:00
Richard Davey
81800e0ce2
WebGLRenderer.whiteTexture
is a new property that is a reference to a pure white 4x4 texture that is created during Boot by the Texture Manager. The Multi Pipeline uses this internally for all Graphic, Shape and fill rendering.
2020-09-14 14:44:29 +01:00
Richard Davey
4ade25fc79
No longer read private values for tint
...
The `Multi Pipeline`, `Bitmap Text`, `Render Texture`, `Text`, `TileSprite` and `Camera` now all read the tint values from the public properties instead of the private `_tintTL` etc ones. They also now set the `tintEffect` value directly from the `tintFill` property, removing another conditional check.
2020-09-14 11:05:09 +01:00
Richard Davey
e4b1093e72
The WebGLRenderer.resize
and onResize
methods no longer receives or uses the resolution
parameter.
2020-09-12 11:58:08 +01:00
Richard Davey
da4c387d86
Reference fixes
2020-09-09 13:21:38 +01:00
Richard Davey
7e840b2670
Removed all of the pipeline methods and added the Pipeline Manager instance
2020-09-09 13:05:18 +01:00
Richard Davey
d92195a8b8
Default rotation as well
2020-09-02 22:55:51 +01:00
Richard Davey
1562525a51
When using Camera.setRenderToTexture
its zoom
value would be applied twice. Fix #4221
2020-09-02 22:50:27 +01:00
Richard Davey
6aef37572d
WebGLRenderer.previousPipeline
is a new property that is set during a call to clearPipeline
and used during calls to rebindPipeline
, allowing the renderer to rebind any previous pipeline, not just the Multi Pipeline.
...
The `WebGLRenderer.rebindPipeline` method has been changed slightly. Previously, you had to specify the `pipelineInstance`, but this is now optional. If you don't, it will use the new `previousPipeline` property instead. If not set, or none given, it will now return without throwing gl errors as well.
2020-09-01 13:05:31 +01:00
Richard Davey
809b8a41d9
The WebGLRenderer.updateCanvasTexture
method will now set gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL
to true, which should stop issues where you update a Text Game Object, having added a Render Texture or Spine Game Object to the Scene after it, which switches the PMA setting. Fix #5064
2020-08-26 00:19:19 +01:00
Richard Davey
791704febe
WebGLRenderer.finalType
is a new boolean property that signifies if the current Game Object being rendered is the final one in the list.
2020-08-25 18:24:42 +01:00
Richard Davey
de0133e3cc
Spine Game Objects can now be rendered to Render Textures. Fix #5184
2020-08-25 14:11:37 +01:00
Richard Davey
ca99c4564f
Added reset
property to Bind to get new vertex attrib locations
2020-08-25 13:24:56 +01:00
Richard Davey
0cd4d0fc54
Update WebGLRenderer.js
2020-08-21 16:23:04 +01:00
Richard Davey
0dd07333af
Updated to use MultiPipeline
2020-08-21 16:14:59 +01:00
Richard Davey
209b39b38c
New pipeline names and single texture flag
2020-08-21 16:03:29 +01:00
Richard Davey
84ef02743b
The WebGL Renderer will now add the pipelines during the boot
method, instead of init
.
2020-08-20 10:48:30 +01:00
Richard Davey
75da5b2f22
Reset all textures on rebind, which is what Externs need when finishing
2020-08-06 17:06:26 +01:00
Richard Davey
4baa0522b9
Bumping to 3.50
2020-07-31 13:41:29 +01:00
Richard Davey
c31a9ad4e5
WebGLRenderer.unbindTextures
is a new method that will activate and then null bind all WebGL textures.
2020-07-23 16:24:44 +01:00
Richard Davey
8210700124
Enable the pipelines again
2020-07-17 17:04:49 +01:00
Richard Davey
8d976d6ed5
WebGLRenderer.textureFlush
is a new property that keeps track of the total texture flushes per frame.
2020-07-17 16:36:18 +01:00
Richard Davey
fea1ade5b7
Update WebGLRenderer.js
2020-07-16 16:59:45 +01:00
Richard Davey
12fc51e2e2
If normal map set, advance the current active texture
2020-07-16 16:17:16 +01:00