Skip to content

Commit a084f96

Browse files
committed
Update CHANGELOG-v3.50.md
1 parent 7880087 commit a084f96

1 file changed

Lines changed: 39 additions & 27 deletions

File tree

CHANGELOG-v3.50.md

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
### WebGL Pipeline Updates
44

5-
If you use a custom WebGL Pipeline in your game, you must update your code in order to use Phaser 3.50.
5+
If you use a custom WebGL Pipeline in your game then you must update your code in order to use Phaser 3.50.
66

77
Due to the huge amount of work that has taken place in this area, all of the pipelines have been renamed. If you extend any of these pipelines or use them in your game code (referenced by name), then please update accordingly. The name changes are:
88

@@ -181,12 +181,39 @@ New constants have been created to help you reference a pipeline without needing
181181
* `Phaser.Renderer.WebGL.Pipelines.SINGLE_PIPELINE` for the Single Pipeline.
182182
* `Phaser.Renderer.WebGL.Pipelines.MULTI_PIPELINE` for the Multi Pipeline.
183183
* `Phaser.Renderer.WebGL.Pipelines.ROPE_PIPELINE` for the Rope Pipeline.
184+
* `Phaser.Renderer.WebGL.Pipelines.POINTLIGHT_PIPELINE` for the Point Light Pipeline.
185+
* `Phaser.Renderer.WebGL.Pipelines.POSTFX_PIPELINE` for the Post FX Pipeline.
186+
* `Phaser.Renderer.WebGL.Pipelines.UTILITY_PIPELINE` for the Utility Pipeline.
184187

185188
All Game Objects have been updated to use the new constants and Pipeline Manager.
186189

187-
#### Single Pipeline
190+
#### Single Pipeline Update
188191

189-
There is also a new pipeline called `SinglePipeline`, created to emulate the old `TextureTintPipeline`. This special pipeline uses just a single texture and makes things a lot easier if you wish to create a custom pipeline, but not have to recode your shaders to work with multiple textures. Instead, just extend `SinglePipeline`, where-as before you extended the `TextureTintPipeline` and you won't have to change any of your shader code. However, if you can, you should update it to make it perform faster, but that choice is left up to you.
192+
There is a new pipeline called `SinglePipeline`, created to emulate the old `TextureTintPipeline`. This special pipeline uses just a single texture and makes things a lot easier if you wish to create a custom pipeline, but not have to recode your shaders to work with multiple textures. Instead, just extend `SinglePipeline`, where-as before you extended the `TextureTintPipeline` and you won't have to change any of your shader code. However, if you can, you should update it to make it perform faster, but that choice is left up to you.
193+
194+
### Light Pipeline Update
195+
196+
The Light Pipeline (previously called the Forward Diffuse Light Pipeline), which is responsible for rendering lights under WebGL, has been rewritten to work with the new Multi Pipeline features. Lots of redundant code has been removed and the following changes and improvements took place:
197+
198+
* The pipeline now works with Game Objects that do not have a normal map. They will be rendered using the new default normal map, which allows for a flat light effect to pass over them and merge with their diffuse map colors.
199+
* Fixed a bug in the way lights were handled that caused Tilemaps to render one tile at a time, causing massive slow down. They're now batched properly, making a combination of lights and tilemaps possible again.
200+
* The Bitmap Text (Static and Dynamic) Game Objects now support rendering with normal maps.
201+
* The TileSprite Game Objects now support rendering with normal maps.
202+
* Mesh Game Objects now support rendering with normal maps.
203+
* Particle Emitter Game Object now supports rendering in Light2d.
204+
* The Text Game Object now supports rendering in Light2d, no matter which font, stroke or style it is using.
205+
* Tilemap Layer Game Objects now support the Light2d pipeline, with or without normal maps.
206+
* The pipeline will no longer look-up and set all of the light uniforms unless the `Light` is dirty.
207+
* The pipeline will no longer reset all of the lights unless the quantity of lights has changed.
208+
* The `ForwardDiffuseLightPipeline.defaultNormalMap` property has changed, it's now an object with a `glTexture` property that maps to the pipelines default normal map.
209+
* The `ForwardDiffuseLightPipeline.boot` method has been changed to now generate a default normal map.
210+
* The `ForwardDiffuseLightPipeline.onBind` method has been removed as it's no longer required.
211+
* The `ForwardDiffuseLightPipeline.setNormalMap` method has been removed as it's no longer required.
212+
* `ForwardDiffuseLightPipeline.bind` is a new method that handles setting-up the shader uniforms.
213+
* The `ForwardDiffuseLightPipeline.batchTexture` method has been rewritten to use the Texture Tint Pipeline function instead.
214+
* The `ForwardDiffuseLightPipeline.batchSprite` method has been rewritten to use the Texture Tint Pipeline function instead.
215+
* `ForwardDiffuseLightPipeline.lightCount` is a new property that stores the previous number of lights rendered.
216+
* `ForwardDiffuseLightPipeline.getNormalMap` is a new method that will look-up and return a normal map for the given object.
190217

191218
### WebGL Multi-Texture Rendering
192219

@@ -328,7 +355,7 @@ Other changes and fixes:
328355

329356
The Graphics Pipeline is a new pipeline added in 3.50 that is responsible for rendering Graphics Game Objects and all of the Shape Game Objects, such as Arc, Rectangle, Star, etc. Due to the new pipeline some changes have been made:
330357

331-
* The Graphics Pipeline now uses much simpler vertex and fragment shaders, with just two attributes (`inPosition` and `inColor`), making the vertex size and memory-use 57% smaller.
358+
* The Graphics Pipeline now uses much simpler vertex and fragment shaders with just two attributes (`inPosition` and `inColor`), making the vertex size and memory-use 57% smaller.
332359
* The private `_tempMatrix1`, 2, 3 and 4 properties have all been removed from the pipeline.
333360
* A new public `calcMatrix` property has been added, which Shape Game Objects use to maintain transform state during rendering.
334361
* The Graphics Pipeline no longer makes use of `tintEffect` or any textures.
@@ -365,31 +392,10 @@ Render Textures have the following bug fixes:
365392
* `RenderTexture.fill` would fail to fill the correct area under WebGL if the RenderTexture wasn't the same size as the Canvas. It now fills the given region properly.
366393
* `RenderTexture.erase` has never worked when using the Canvas Renderer and a texture frame, only with Game Objects. It now works with both. Fix #5422 (thanks @vforsh)
367394

368-
### Light Pipeline Changes
369395

370-
The Light Pipeline (previously called the Forward Diffuse Light Pipeline), which is responsible for rendering lights under WebGL, has been rewritten to work with the new Multi Pipeline features. Lots of redundant code has been removed and the following changes and improvements took place:
396+
### Lights 2D Updates
371397

372-
* The pipeline now works with Game Objects that do not have a normal map. They will be rendered using the new default normal map, which allows for a flat light effect to pass over them and merge with their diffuse map colors.
373-
* Fixed a bug in the way lights were handled that caused Tilemaps to render one tile at a time, causing massive slow down. They're now batched properly, making a combination of lights and tilemaps possible again.
374-
* The Bitmap Text (Static and Dynamic) Game Objects now support rendering with normal maps.
375-
* The TileSprite Game Objects now support rendering with normal maps.
376-
* Mesh Game Objects now support rendering with normal maps.
377-
* Particle Emitter Game Object now supports rendering in Light2d.
378-
* The Text Game Object now supports rendering in Light2d, no matter which font, stroke or style it is using.
379-
* Tilemap Layer Game Objects now support the Light2d pipeline, with or without normal maps.
380-
* The pipeline will no longer look-up and set all of the light uniforms unless the `Light` is dirty.
381-
* The pipeline will no longer reset all of the lights unless the quantity of lights has changed.
382-
* The `ForwardDiffuseLightPipeline.defaultNormalMap` property has changed, it's now an object with a `glTexture` property that maps to the pipelines default normal map.
383-
* The `ForwardDiffuseLightPipeline.boot` method has been changed to now generate a default normal map.
384-
* The `ForwardDiffuseLightPipeline.onBind` method has been removed as it's no longer required.
385-
* The `ForwardDiffuseLightPipeline.setNormalMap` method has been removed as it's no longer required.
386-
* `ForwardDiffuseLightPipeline.bind` is a new method that handles setting-up the shader uniforms.
387-
* The `ForwardDiffuseLightPipeline.batchTexture` method has been rewritten to use the Texture Tint Pipeline function instead.
388-
* The `ForwardDiffuseLightPipeline.batchSprite` method has been rewritten to use the Texture Tint Pipeline function instead.
389-
* `ForwardDiffuseLightPipeline.lightCount` is a new property that stores the previous number of lights rendered.
390-
* `ForwardDiffuseLightPipeline.getNormalMap` is a new method that will look-up and return a normal map for the given object.
391-
392-
### Lights
398+
The Light Game Object has been rewritten so it now extends the `Geom.Circle` object, as they shared lots of the same properties and methods anyway.
393399

394400
* `Light.dirty` is a new property that controls if the light is dirty, or not, and needs its uniforms updating.
395401
* `Light` has been recoded so that all of its properties are now setters that activate its `dirty` flag.
@@ -1060,3 +1066,9 @@ Since v3.0.0 the Game Object `render` functions have received a parameter called
10601066
My thanks to the following for helping with the Phaser 3 Examples, Docs, and TypeScript definitions, either by reporting errors, fixing them, or helping author the docs:
10611067

10621068
@samme @16patsle @scott20145 @khasanovbi @mk360 @volkans80 @jaabberwocky @maikthomas @atursams @LearningCode2023 @DylanC @BenjaminDRichards @rexrainbow @Riderrr @spwilson2 @EmilSV @PhaserEditor2D @Gangryong @vinerz @trynx @usufruct99 @pirateksh @justin-calleja @monteiz
1069+
1070+
### Beta Testing Help
1071+
1072+
A special mention to the following who submitted feedback on the the 3.50 Beta releases:
1073+
1074+
Acorn BlunT76 @PhaserEditor2D @samme @rexrainbow

0 commit comments

Comments
 (0)