Phaser 3.60 Beta 2 - introducing SpriteFX

Published on 18th October 2021

I'm pleased to announce that Phaser 3.60 Beta 2 is now released on GitHub and npm.

https://github.com/photonstorm/phaser/releases/tag/v3.60.0-beta.2

If you want to get it from npm, use the beta tag as seen on this page:

https://www.npmjs.com/package/phaser/v/3.60.0-beta.2

I've been working solidly on this release, merging in even more PRs (thank you, everyone!) and fixing more bugs. Of course, a few new features may have dropped, too :)

The biggest of these is the new Sprite FX Pipeline. It works in a similar way to the Post FX Pipeline, except instead of being applied after a Game Object has been rendered, it allows you full control over the actual rendering of it, without getting all messy with the Multi Tint Pipeline, shader attributes, and so on.

This is especially handy if you want to create effects such as a drop-shadow behind a Sprite because you can inject the shader prior to the sprite draw. Or, for effects such as glow, blur, or glitch. The Post FX Pipeline works on frame buffers that use the entire renderer display. This means, for multi-pass effects like blur, they can often be really expensive in terms of GPU processing.

SpriteFX, however, works on an area only the size of the rendered sprite. So if your sprite is just 32x32, it will work on a frame buffer that size, rather than full-screen, like Post FX, does. This area is then composited back into the canvas at the position the Sprite should be.

Because shaders are as expensive as the number of pixels they need to operate on, this helps dramatically. Sometimes, though, you need a little extra space around your Sprite for the shader to work (such as when making it glow). For this, there is a new Game Object method called 'setFXPadding'. There are also new callbacks invoked when a Sprite FX Pipeline operates on a Game Object, so you can sync in shader uniforms on a per-Game Object basis.

I will be sure to publish some examples showing how this all works, but it's pretty simple as you can see from the code below:

The Sprite FX Pipelines are just as easy to create as Post FX Pipelines but offer a few new tricks to help deal with sprite drawing. I will also be offering some free Sprite FX Pipelines to Phaser Patrons :)

I've still got a couple of weeks' work left on 3.60 and then I'll be happy to publish it. I'm still on target for around the end of October, but there may be a beta 3 release first. If you want to stay up to date on what's new, please join us on Discord.

I'm pleased to announce that Phaser 3.60 Beta 2 is now released on GitHub and npm.

https://github.com/photonstorm/phaser/releases/tag/v3.60.0-beta.2

If you want to get it from npm, use the beta tag as seen on this page:

https://www.npmjs.com/package/phaser/v/3.60.0-beta.2

I've been working solidly on this release, merging in even more PRs (thank you, everyone!) and fixing more bugs. Of course, a few new features may have dropped, too :)

The biggest of these is the new Sprite FX Pipeline. It works in a similar way to the Post FX Pipeline, except instead of being applied after a Game Object has been rendered, it allows you full control over the actual rendering of it, without getting all messy with the Multi Tint Pipeline, shader attributes, and so on.

This is especially handy if you want to create effects such as a drop-shadow behind a Sprite because you can inject the shader prior to the sprite draw. Or, for effects such as glow, blur, or glitch. The Post FX Pipeline works on frame buffers that use the entire renderer display. This means, for multi-pass effects like blur, they can often be really expensive in terms of GPU processing.

SpriteFX, however, works on an area only the size of the rendered sprite. So if your sprite is just 32x32, it will work on a frame buffer that size, rather than full-screen, like Post FX, does. This area is then composited back into the canvas at the position the Sprite should be.

Because shaders are as expensive as the number of pixels they need to operate on, this helps dramatically. Sometimes, though, you need a little extra space around your Sprite for the shader to work (such as when making it glow). For this, there is a new Game Object method called 'setFXPadding'. There are also new callbacks invoked when a Sprite FX Pipeline operates on a Game Object, so you can sync in shader uniforms on a per-Game Object basis.

I will be sure to publish some examples showing how this all works, but it's pretty simple as you can see from the code below:

The Sprite FX Pipelines are just as easy to create as Post FX Pipelines but offer a few new tricks to help deal with sprite drawing. I will also be offering some free Sprite FX Pipelines to Phaser Patrons :)

I've still got a couple of weeks' work left on 3.60 and then I'll be happy to publish it. I'm still on target for around the end of October, but there may be a beta 3 release first. If you want to stay up to date on what's new, please join us on Discord.