Richard Davey
e00d12195d
Fixed incorrect jsdocs
2024-02-02 13:03:38 +00:00
Richard Davey
7bac75a2f4
Fixed some jsdoc name references and minor lint errors
2024-02-02 13:01:03 +00:00
Ben Richards
49e9d45435
Emit LOSE_WEBGL event.
...
Also rearrange RESTORE_WEBGL event code.
2024-02-02 21:57:28 +13:00
Ben Richards
d57b46e690
Tidy up wrappers on WebGLRenderer destroy.
2024-02-02 20:55:09 +13:00
Ben Richards
4fd8fc94c3
Fix WebGLShader recovery from WebGL context loss.
2024-02-02 20:50:39 +13:00
Ben Richards
ade7b57e3d
Restore WebGL extensions.
2024-02-02 16:29:24 +13:00
Ben Richards
b66028ec8e
Handle more invalidated state on WebGL context restore.
2024-02-02 15:53:03 +13:00
Ben Richards
4c849cb2f7
Tidy up WebGL Wrappers.
...
Dispose of all references on destroy.
Properly name WebGLProgramWrapper#initialize.
Remove renderer dependence in WebGLFramebufferWrapper.
2024-02-02 15:30:38 +13:00
Ben Richards
24d739ed72
Emit RESTORE_WEBGL event.
2024-02-02 11:33:27 +13:00
Ben Richards
a0f066c543
Restore WebGL context.
...
All textures and shaders should automatically recover from WebGL
context loss.
Dynamic textures will lose their contents, unfortunately, as the texture
was stored on the GPU.
Frame buffers still have some bugs to work out.
2024-02-01 16:59:00 +13:00
Ben Richards
587b6e7bcd
Merge branch 'master' into webgl-wrappers
2024-02-01 11:00:08 +13:00
Richard Davey
51074c4567
The PostFXPipeline.postBatch
method will now skip onDraw
is the pipeline hasn't booted, introducing an artificial frame skip. This should potentially fix glitch errors on mobile devices where Post FX would appear corrupted for a single frame. Fix #6681
2024-01-31 20:23:43 +00:00
Richard Davey
c6c7fd60a6
The BloomFX
and BlurFX
and any custom pipeline that relies on using the UtilityPipeline
full or half frame targets will now correctly draw even after the renderer size changes. Fix #6677
2024-01-31 19:35:10 +00:00
Richard Davey
92065facf0
You can now specify an autoResize
boolean in the RenderTargetConfig
which is passed to the Render Targets when they are created by a pipeline.
2024-01-31 19:15:21 +00:00
Ben Richards
8906e22aeb
Add PipelineManager#restoreContext
method for restoring uniforms.
...
Also add `WebGLShader#syncUniforms` and other code necessary to retain
and reapply uniform state on the GPU.
2024-01-31 16:46:41 +13:00
Ben Richards
b9deef7e61
Destroy location wrappers when they're unused.
2024-01-31 11:53:50 +13:00
Ben Richards
e920b1a961
Create and use wrappers for WebGLUniformLocation and WebGLAttribLocation.
2024-01-30 22:13:51 +13:00
Ben Richards
0f9fb3177d
Fix incorrect WebGL calls.
2024-01-30 11:23:27 +13:00
Ben Richards
2382f7c1eb
Create and use WebGLProgramWrapper.
...
This handles shader programs.
Also tweak the documentation in WebGLBufferWrapper and
WebGLFramebufferWrapper to better reflect purpose.
2024-01-29 17:35:57 +13:00
Ben Richards
377221de35
Create and use WebGLBufferWrapper.
...
This mostly handles VertexBuffers, but there's an IndexBuffer which
is not internally used that uses the same wrapper.
2024-01-29 16:40:18 +13:00
Ben Richards
842d666ebf
Use and document WebGLFramebufferWrapper.
...
Also tweak WebGLTextureWrapper to have more standard destroyers
in itself and WebGLRenderer.
2024-01-29 14:53:23 +13:00
Ben Richards
68671f0d8a
Create WebGLFramebufferWrapper to encapsulate state.
2024-01-29 14:48:28 +13:00
Ben Richards
b591c3674a
Document usage of WebGLTextureWrapper
in place of WebGLTexture
.
2024-01-29 11:47:39 +13:00
Ben Richards
216b7564f6
Update systems to use WebGLTextureWrapper
and Uint8Array
textures.
...
This is mostly hooking up gl calls to look inside the wrapper.
A few other things have changed.
Spector metadata is set the new way.
`Frame` changed `glTexture` to a getter, simplifying bookkeeping.
`LightPipeline` and `Plane` use standard methods to create textures.
`WebGLRenderer` maintains a list of wrappers, and automatically
manages it through `createTexture2D` and `deleteTexture`. The update
methods `updateCanvasTexture` and `updateVideoTexture` have been
delegated to the wrapper.
2024-01-29 11:45:12 +13:00
Ben Richards
a8dff1f990
Add Uint8Array texture creation methods.
2024-01-29 11:30:54 +13:00
Ben Richards
3b2aeaf18b
Create WebGLTextureWrapper to encapsulate texture state.
2024-01-29 11:08:16 +13:00
samme
3b2ed4a4fe
Exclude the renderers
2023-12-11 17:33:57 -08:00
Richard Davey
0b32610e56
Updated version to 3.70
2023-11-10 15:04:01 +00:00
Richard Davey
bd67ed38a5
Disable roundPixels when drawing lines
2023-11-09 22:30:53 +00:00
Richard Davey
2c8b70e4f7
Respect the disable fx flags and only create the pipelines and render targets as needed
2023-11-08 12:35:19 +00:00
Richard Davey
ec5a695a5c
PostFXPipeline.bootFX
is a new method, which is the previous boot
method but renamed. This is no longer called from the constructor, but instead when the Post FX Pipeline is activated by the Pipeline Manager. This means that the resources the Post FX requires, such as creating Render Targets and shaders, is delayed until the FX is actually used, saving on memory.
2023-11-07 23:42:04 +00:00
Richard Davey
d3050a05fc
The MultiPipeline.batchTexture
method has a new optional boolean parameter skipPrePost
that will force the call to ignore calling the preBatch
and postBatch
Pipeline Manager methods for the Game Object. This allows you to skip the overhead of calling them if you know you don't need them.
2023-11-07 22:53:14 +00:00
Richard Davey
52619b26f9
Set missing uniforms to get FX working again :)
2023-11-07 22:51:38 +00:00
Richard Davey
94c810fd39
Remove false param to setQuad
2023-11-07 18:53:51 +00:00
Richard Davey
0431796d94
false is the default now
2023-11-07 18:52:46 +00:00
Richard Davey
f96b557f4c
The MultiPipeline.batchSprite
method (which is also used by the Single Pipeline and Mobile Pipeline) will no longer use roundPixels
when calculating the quad vertex data. It also won't apply it to any of the sprite values. This is all now handled in the shader directly.
2023-11-07 18:37:34 +00:00
Richard Davey
df846bdab3
CanvasRenderer.batchSprite
has been updated to correctly use the Camera roundPixels
property and apply it to the drawImage
call.
2023-11-07 18:30:02 +00:00
Richard Davey
a26f827650
Optimized setTextureFilter
2023-11-07 18:28:27 +00:00
Richard Davey
b0c2dcf463
Remove the gx/gy rounding (un-needed) and pass the roundPixels value to setQuad
2023-11-07 15:26:58 +00:00
Richard Davey
1b12993898
Updated jsdocs
2023-11-07 15:26:07 +00:00
Richard Davey
e36d43533c
Updated shaders to use 'round' glsl instead of 'floor'
2023-11-07 15:23:57 +00:00
Richard Davey
5aa409e8f3
RenderTarget.willResize
is a new method that will return true
if the Render Target will be resized as a result of the new given width and height values.
2023-11-03 19:02:20 +00:00
Richard Davey
b28ad7f3d3
The BitmapMask
wouldn't correctly set the gl viewport when binding, which caused the mask to distort in games where the canvas resizes from its default. Fix #6527
2023-10-13 17:53:55 +01:00
Richard Davey
bae26a5205
When a framebuffer is deleted, it now sets its renderTexture
property to undefined
to ensure the reference is cleared.
2023-10-13 17:15:21 +01:00
Richard Davey
d74e767050
Delete color attachment
2023-10-12 18:49:06 +01:00
Richard Davey
1935119141
Array Remove and unbind before deleting the framebuffer
2023-10-12 15:22:26 +01:00
Richard Davey
758db68d1a
Remove event handler first
2023-10-12 15:22:26 +01:00
Richard Davey
0e145756bb
Added new uniforms and handle rounding in the shader
2023-10-10 18:50:17 +01:00
Richard Davey
4bb2807627
Added uRoundPixels and uResolution to the core shaders
2023-10-10 18:49:49 +01:00
Richard Davey
cd1854630e
Testing round pixels on shader
2023-10-05 14:39:21 +01:00
Richard Davey
fe05501e38
The PostFXPipeline
will now set autoResize
to true
on all of its RenderTarget
instances. This fixes an issue where the PostFXPipeline
would not resize the render targets when the game size changed, causing them to become out of sync with the game canvas. Fix #6503 #6527
2023-09-07 14:43:36 +01:00
Richard Davey
066bb9be18
Updated jsdocs
2023-09-07 14:07:44 +01:00
Richard Davey
e8e57b6b0c
The WebGLRenderer.deleteFramebuffer
method has been updated so it now tests for the exitennce of a COLOR and DEPTH_STENCIL attachments, and if found, removes the bindings and deletes the stencil buffer. The code that previously deelted the RENDERERBUFFER_BINDING
has also been removed to avoid side-effects.
2023-09-05 13:40:45 +01:00
Richard Davey
8e1809688c
The WebGLRenderer will now validate that the mipmapFilter
property in the Game Config is a valid mipmap before assigning it.
2023-08-01 13:44:58 +01:00
Richard Davey
002786e411
fx namespace fix
2023-07-21 18:41:30 +01:00
Richard Davey
3f9ce29962
The FXBlurLow
fragment shader didn't have the offset
uniform. This is now passed in and applued to the resulting blur, preventing it from creating 45 degree artifacts (thanks Wayfinder)
2023-07-21 15:41:42 +01:00
Richard Davey
86f71e876e
The BlurFXPipeline
didn't bind the quality of shader specified in the controller, meaning it always used the Low Blur shader, regardless of what the FX controller asked for.
2023-07-21 15:40:44 +01:00
Richard Davey
92fcfe02dc
Fixed typedef
2023-07-21 14:24:25 +01:00
Richard Davey
fb3c85888b
Typo fix
2023-06-11 22:37:06 +01:00
Richard Davey
96ee7679c4
Added Spector method docs
2023-04-12 03:45:19 +01:00
Richard Davey
b676f2613f
Update PreFXPipeline.js
2023-04-12 02:43:42 +01:00
Richard Davey
ac060e8355
Set maxDim within the loop
2023-03-31 15:49:23 +01:00
Richard Davey
6d49b94305
Reverted pixel rounding. Should address offset pixelArt issues on HighDPI displays. #6327
2023-03-31 15:12:34 +01:00
Richard Davey
e1e46f4b19
Merge branch 'master' of https://github.com/photonstorm/phaser
2023-03-27 23:16:37 +01:00
Richard Davey
15535914b8
Only destroy controller if set
2023-03-27 23:16:34 +01:00
Richard Davey
3e075bf018
Added forceClamp
parameter
2023-03-27 17:48:27 +01:00
Richard Davey
cd58dd5f3a
Fix doc types
2023-03-24 15:41:01 +00:00
Richard Davey
376107b25f
Finally finished all FX documentation
2023-03-21 18:04:34 +00:00
Richard Davey
ed6287e9a9
More FX documentation finished
2023-03-21 17:57:27 +00:00
Richard Davey
b89a10c99d
Lots more documentation finished
2023-03-21 17:21:45 +00:00
Richard Davey
f83cf124aa
Added destroy method
2023-03-20 18:28:58 +00:00
Richard Davey
42610c4fa6
Finished documentation and added destroy method
2023-03-20 18:28:42 +00:00
Richard Davey
1750caca18
Update PreFXPipeline.js
2023-03-20 15:20:22 +00:00
Richard Davey
4fbd7eec82
Rename zero method and remove logs
2023-03-16 21:56:55 +00:00
Richard Davey
27553a029b
Call clearStencilMask
2023-03-16 21:56:46 +00:00
Richard Davey
b093ece620
Debugging stencil stack
2023-03-16 18:49:43 +00:00
Richard Davey
d316bacedb
Update PreFXPipeline.js
2023-03-16 18:23:35 +00:00
Richard Davey
4c19106c63
Debugging fx stacks
2023-03-16 18:23:30 +00:00
Richard Davey
b3b12ae62c
Testing pre/post mix
2023-03-14 22:03:38 +00:00
Richard Davey
8b2a701dbd
Tidying up and restore stencil
2023-03-14 19:46:55 +00:00
Richard Davey
560dc8a783
Restore the stencil before draw
2023-03-14 19:46:41 +00:00
Richard Davey
38438954b8
Removed logs
2023-03-14 19:45:52 +00:00
Richard Davey
5b12080cef
Added methods zeroStencilMask and restoreStencilMask
2023-03-14 19:45:44 +00:00
Richard Davey
d28863c986
Removed the logs and now zero the stencil upon bind
2023-03-14 19:42:09 +00:00
Richard Davey
c8acb16fa7
Added { willReadFrequently }
to every canvas context, no matter where it comes from
2023-03-09 17:30:04 +00:00
Richard Davey
f3028118d3
Debugging
2023-03-03 18:54:02 +00:00
Richard Davey
684a2ab35a
setFramebuffer accepts texture and clear param
2023-03-03 18:53:36 +00:00
Richard Davey
b32286d198
Update PostFXPipeline.js
2023-03-03 18:53:36 +00:00
Richard Davey
4ce142c25b
Working through fbo debugging
2023-03-03 13:41:57 +00:00
Richard Davey
fab1acd022
Debug logs
2023-03-02 18:46:23 +00:00
Richard Davey
4877efbe36
Added hasDepthBuffer property
2023-03-02 18:46:16 +00:00
Richard Davey
d1f2fb8dfc
Reset current fbo instead of null
2023-03-02 18:46:04 +00:00
Richard Davey
8b493834dc
Log can take any parameters
2023-03-02 18:45:42 +00:00
Richard Davey
4ae57fa593
Update jsdocs
2023-03-02 18:17:08 +00:00
Richard Davey
eaf6fa7f45
Added log method, depth buffer and missing parameter default
2023-03-02 18:16:59 +00:00
Richard Davey
aa3e1d17ce
Updated documentation
2023-02-27 16:26:04 +00:00
Richard Davey
267f3160da
PipelineManager.getPostPipeline
now has an optional 3rd parameter, a config
object that is passed to the pipeline instance in its constructor, which can be used by the pipeline during its set-up.
2023-02-27 15:12:40 +00:00
Richard Davey
88a59eb040
Post FX now supports custom quality and distance parameters. Fix #6393
2023-02-27 15:09:57 +00:00
Richard Davey
c58e0266c7
Use new Utils function
2023-02-27 13:48:40 +00:00
Richard Davey
6d48142f94
Use new consts to add mobile GPU speed-up
2023-02-27 13:47:55 +00:00