Engine v2.24.0

Engine v2.24.0 has been released.

https://www.youtube.com/watch?v=UeFPni8XA90

This release is available as an RC build in the Editor, please test your projects and report any issues. We’re planning to promote this version to be the default version in the Editor on or after Monday 16 November 2026.

New engine examples:

  • Anti Aliasing - Compare the anti-aliasing methods of CameraFrame: SMAA with its quality presets, TAA and its temporal upscaling

  • Auto Exposure - Auto exposure adapting a camera to the brightness of the scene, with a sun far brighter than the rest of the sky

  • Dynamic Sky - An analytic atmosphere over a day and night cycle, with stars, the moon and volumetric clouds, rendered by the DynamicSkyEffect of the camera frame

  • Ink Outline - A custom CameraFrameEffect with its own render pass, drawing ink lines where the depth or brightness of the scene changes abruptly

  • Lens Flare - Lens flares following the sun, lamps and spot lights, fading as the scene occludes their light

  • Scene Maps - A compute shader reading the scene depth and color maps to draw a scanner pulse sweeping through the scene (WebGPU only)

  • Grid - A reference grid with every setting of the Grid script

  • Car Showcase - A car configurator in a showroom

  • Splash One - An arcade jet fighter, with its mission briefing and controls shown in the game itself

  • Villa Sales - A villa sales demo on a Gaussian splat capture

  • Welcome - The PlayCanvas cube says hello; drag to orbit the camera and scroll to zoom

  • Streamed LCC2 - Streaming an XGRIDS LCC2 level of detail scene of Gaussian splats, stored as either SOG or SPZ

  • Black Hole - A black hole with a turbulent accretion disk of Gaussian splats, lensed by splatting each splat where a curved ray of light shows it (WebGPU only)

  • Blind Data - Per-gaussian blind data stored in a SOG v3 file, used to add a shine to a logo and recolor the rest of the splat

  • Glyph Rain - Digital rain on Gaussian splats, some of which become glyphs

  • Particle Blast - Blast a Gaussian splat room apart into compute shader particles that take the colors of the scene and bounce off its voxels (WebGPU only)

  • Bounding Box - Corner brackets outlining the bounds of a box, faint where the scene hides them

  • Camera - The frustum of a camera, faint where the scene hides it

  • Icon - Icons marking entities that have nothing else to see or click, such as lights, cameras and sounds

  • Light - The shape of a light, faint where the scene hides it

  • Shape - Shape gizmos for editing a volume to select within: a box, sphere, capsule, cylinder or cone

  • Clipping Planes - A turbofan on a display stand, cut away with clipping planes, with the back faces of its parts capping the cut

  • Helsinki 3D Tiles - The city of Helsinki streamed as 3D Tiles from its photogrammetry model with 3DTilesRendererJS

  • Mars 3D Tiles - The Dingo Gap on Mars streamed as 3D Tiles with 3DTilesRendererJS, reconstructed from images taken by the Curiosity rover

  • Spine Physics - Spine 4.3 skeletons whose physics constraints react to the movement and rotation of their entities

  • Shadow Bounds - A directional light shadow fitted to a box following a bouncing sphere, compared with one fitted to the camera frustum

  • Diffuse Transmission - Light passing through thin surfaces such as leaves and lampshades, with the test model of the KHR_materials_diffuse_transmission glTF extension

  • Sprite Platformer - A little platformer drawn from one TexturePacker sprite sheet; collect all twelve coins

  • Impact Effects - Bullet impacts, explosions and magic bursts, each built from several one-shot particle emitters

  • Render Pass Procedural Texture - Generating the textures of a material on the GPU with two render passes that are not attached to any camera

  • Render Pass Shader Quad - Painting glowing light trails into a texture with RenderPassShaderQuad passes that are not attached to any camera

  • Texture Array Impostors - A statue baked from 64 directions into the layers of a texture array, and drawn as thousands of instanced impostors

  • Volume Texture - A 3D volume texture of colorful fog raymarched over the scene, filled on the CPU or rendered on the GPU into each depth slice

New user manual pages:

  • Frame Graph - How the GPU renders a frame as a sequence of render and compute passes, and how a frame graph describes them

  • Frame Passes - The logical passes of the frame graph: the pass classes, their lifecycle, nesting, adding them to a camera, and who owns them

  • Camera Passes - Add frame passes before and after a camera renders, or replace its rendering with your own passes

  • Render Passes - Draw into a render target or the back buffer with RenderPass: initializing, resizing, clearing, storing and writing a pass

  • Rendering the Scene - Render layers of the scene with a camera using RenderPassForward, and replace the camera’s rendering with your own passes

  • Shader Quad Passes - Run a shader for every pixel of a render target, or of a part of it, with RenderPassShaderQuad

  • Compute Passes - Dispatch compute shaders at a position in the frame with ComputePass, sizing the dispatch from the scene maps and reading results back

  • Custom Effects - Write post-processing effects for CameraFrame with CameraFrameEffect: compose slots, shader chunks, parameters, debug views and effect scripts for the Editor

  • Effects with Passes - Write CameraFrame effects that own frame passes: the stages of the camera frame, frame resources, and resolving the scene

  • Auto Exposure - Adapt the exposure of a camera to the brightness of the scene, reading the exposure and the histogram

  • Dynamic Sky - An analytic day sky, the night sky, flat and volumetric clouds, a sun light kept in sync with the sky, and scene lighting generated from it

  • Lens Flare - Flares following lights, with shape libraries, flare looks, occlusion and fading, and scripts for the Editor

  • Textures - Create and use textures from code: 2D textures, cubemaps, texture arrays and volume textures, uploading, sampling, mipmaps, and reading back and copying texture data

  • Inspector Performance - Record the frames of a running application on the Inspector’s Performance tab, and step through each frame on its timeline

  • Anti-Aliasing - How Gaussian splats trained with anti-aliasing are detected and rendered with the opacity compensation they need, and how to override it

  • The LCC2 Format - The XGRIDS LCC2 format for large Gaussian splat scenes, and loading and streaming it in the engine

  • Add-on Libraries - Libraries that work alongside the engine: Spine, 3D Tiles, tweening and loaders.gl

  • 3D Tiles - Stream massive 3D datasets, such as photogrammetry, city models and terrain, with 3DTilesRendererJS

  • loaders.gl - Parse data formats the engine does not load itself, such as point clouds, and turn them into engine meshes

  • Tween - Animate entity transforms and other values over time with the playcanvas-tween library

  • Spine - Play skeletal animations made with the Spine editor, using the playcanvas-spine plugin

  • Meshes - What a mesh holds, where meshes come from, and how they are shared

  • Creating Meshes - Build meshes in code from geometry classes or your own vertex data, and update them every frame

  • Mesh Instances - Create, share and destroy mesh instances, and control their material, visibility, culling, shadows, sort order and shader parameters

  • Playing Animations - Add the anim component to a model, play its clips, cross-fade between them, and tell when a clip has finished

  • Animation Clips - Where animation clips come from, and how a clip binds to the nodes it animates

  • State Graphs - Decide which animation plays with a state graph: states, transitions, conditions and the parameters that drive them

  • Blend Trees - Blend several animation clips in one state by the value of parameters: 1D, 2D Cartesian, 2D Directional and Direct blend trees

  • Layers and Masks - Run several state graphs on one model with anim layers, and limit a layer to part of the model with a mask

  • Animation Events - Mark moments in an animation clip with named events, and run code when playback reaches them

  • Versioning and Releases - How PlayCanvas Engine version numbers work, how to control which updates npm installs, and which npm tags carry stable and beta builds

To stay updated on Engine development, hit Watch on the repo. Support us by hitting Star too!

2 Likes