PopcornFX v2.23 is released!

PopcornFX banner v2.23

The PopcornFX v2.23 build is now available!

Make sure you upgrade your runtime / plugins before switching to this version.
You can also check out the changelog on the wiki, where you’ll find all download links and updated patch nodes.


Note: UE4 & UE5 plugin archives are provided as 7z archives for better compression. They can be extracted using 7zip.

Highlights

Check out the PopcornFX 2.23 release highlights livestream, where a few members of the team dive into some of the new features:

YouTube player

Changelog 2.23.5

Builds (May 7th 2026)

  • Fixed #15565: Layers using “remapDensity” on image sampler fail to compile on D3D
  • Fixed #15419: Mesh Viewer : Debug views are broken with tristrips
  • Fixed #15513: Mesh generator: Output mesh bounding box is not properly recomputed
  • Fixed #12917: UnrealEngine: Crash when importing or cooking effect containing GPU sim layers sampling local meshes
  • Fixed #14512: Unreal Engine: Custom material can be reset after an effect reimport
  • Fixed #15183: UnrealEngine: GPU billboards blinking
  • Fixed #15186: UnrealEngine: GPU billboards random UV rotation
  • Fixed #15469: Unreal Engine: all message boxes are shown as warnings (while some are just info, other are errors)
  • #15485: Unity: Add Support for baking .pktx effect dependencies
  • Fixed #15494: O3DE: Deprecated PhysX4
  • All v2.20.13 LTS fixes
  • Fixed #15642: Occasional crash when multiple effects using different spatial layers are loaded into a scene
  • Fixed #15468: Random crash when loading/unloading effects with GPU layers on PS5
  • Fixed #15406: Incorrect d3d12 binding of mesh attribute samplers when loading from a baked effect. Resulting in broken behaviour when overriding mesh attribute samplers.

 


Changelog 2.23.4

Builds (Feb 5th 2026)

  • Fixed #15418: Asset baker do not properly remove editor nodes when baking .pkfx
  • Fixed #15390: D3D11 compilation error when using view.distance
  • Fixed #15416: Editor: Fails to launch on Linux because libtbb.so.2 is not found
  • Fixed #15388: Unreal Engine: GPU spatial layers are not supported
  • Fixed #15389: Unreal Engine: GPU billboards crash in UE 5.7 with D3D11
  • Fixed #15393: Unreal Engine: SixWayLightmap and VolumetricFog demo effects materials can’t be setup correctly because they’re not considered as legacy

 


Changelog 2.23.3

Builds (Jan 15th 2026)

  • Fixed #15372: GPU sim D3D12: using projectPCoords on a Box shape causes the shader to fail compiling
  • Fixed #15371: 4D noise returns incorrect results on ARM platforms
  • #15341: Unreal Engine: automatically fetch default properties and generate error messages for every attribute sampler
  • Fixed #15368: Unreal Engine: Remove FSQCapture warnings
  • Fixed #15369: Unreal Engine: calling GetGridAttributeSampler() on an effect being spawned and not started causes a crash
  • Fixed #15375: Unreal Engine: D3D11 RHI crashes in UE 5.7
  • Fixed #15377: O3DE: Gem does not compile on linux because of freetype

 


Changelog 2.23.2

Builds (Dec 19th 2025)

  • Fixed #15362: Editor: Crash on startup in third-party library (since 2.21) on some of the devices that do not support RDTSCP instruction
  • Fixed #15348: Nodegraph: Show documentation on shape nodes does not work
  • Fixed #15276: Templates are recompiled when effect are baked with KeepSource even if effect is correctly compiled
  • #15307: Unreal Engine: show the grid and hide the floor by default in the asset preview viewport
  • Fixed #15281: Unreal Engine: VolumetricFog and SixWayLightmap materials + warning emitter and grid sampler icons are only compatible with UE 5.7
  • Fixed #15282: Unreal Engine: effects with only private grid attribute samplers fail to package
  • Fixed #15339: Unreal Engine: skinned mesh attribute samplers do not update in packaged builds
  • Fixed #15284: Unreal Engine: projects can’t package when using the XRBase plugin
  • Fixed #15345: Unreal Engine: Blueprint function FindAttributeIndex() can return the wrong index for effects with private attributes in packaged builds
  • Fixed #15358: UnrealEngine: GPU meshes don’t compile on linux
  • Fixed #13800: Unity: Texture used in sampling failed to import at bake.

 


Changelog 2.23.1

Builds (Dec 4th 2025)

  • Fixed #15280: Alpha-blended (new) materials are no longer sorted
  • Fixed #15279: Layers using “sign” or “fracSign” fail to compile on GPU
  • Fixed #15263: Crash when deleting disabled GPU layer
  • Fixed #15134: Increasing the editor backdrop grid’s subdivisions to very high values does not work
  • Fixed #15254: Editor: BAT Generator, copy renderer button outputs badly configurated renderer
  • Fixed #15267: Effect interface panel: Creating a new attribute using the `New Attribute` button sometimes creates a 2nd ‘General’ category
  • Fixed #15265: C++ Plugins: AssetBakerLib Cookery size mismatch
  • Fixed #9398: Unity: skinned Mesh sampling is wrong when using ‘Skinned mesh’ option
  • Fixed #14098: Unity: Billboards with emissive only don’t work properly.
  • Fixed #15266: Unity: Batch Raycast struct size for Unity 6000.2 and forward.
  • Fixed #15268: Unity: Emissive map is sampled upside down for billboards
  • Fixed #15260: O3DE: Crash in mesh samplers with EMotionFX skinned mesh
  • All v2.22.6 fixes
  • Fixed #14758: Editor/Shipping discrepancy with effect transforms
  • Fixed #15214: Image density profiles: Lattice density lookup with ‘F16’ packing mode is broken, causes crashes when sampling
  • Fixed #15188: Grid attribute samplers: Resetting the effect doesn’t clear the grid contents
  • Fixed #15206: Animtrack backdrops: At lower framerates, effect start at world origin after reset, before snapping to animtrack location, mostly visible when used to drive trails
  • Fixed #15132: Unreal Engine: using FName to search for PopcornFX strings is unsafe
  • Fixed #15237: UnrealEngine: Disabled decals keep rendering their last state
  • Fixed #15139: Attributes: min and max numeric values are not correctly used for colors and when HasMin or HasMax arent checked
  • All v2.20.12 LTS fixes
  • Fixed #15230: Undo stack can become frozen and unusable after doing some specific actions
  • Fixed #15270: Nodal editor sometimes crashes when doing Ctrl+X to cut nodes out of a graph and the selection contains some passthroughs
  • Fixed #15178: Unity: Macos dylib is not correctly signed

 


Changelog 2.23.0

Builds (Nov 26th 2025)

Templates & Corelib

  • #14712: view.direction node: Add ‘Scale’ input, like the other view axis nodes
  • #14767: Corelib: Add new ‘SpawnOnGeodisk’ placement node, like ‘SpawnOnGeosphere’, but on a disk.
  • #15010: Corelib: Remove confusing output sampler pin from sampler nodes, just forwards the input sampler, new users keep thinking it can be used to “modify” the input sampler
  • #14833: Mesh generator: Add more UV & Color channels in the generator args & generator outputs nodes
  • #14913: shape.intersect: Add Translation/Orientation/Scale input to allow intersecting a shape with dynamic transforms, like in the other shape-related nodes such as shape.sample
  • Fixed #14606: EventMultiplierBurst node doesn’t show Random sliders
  • Fixed #14673: Triangle renderer node position inputs are messed up: Appear as ‘General.Position*’ instead of ‘Position*’, order between the 3 position inputs is inconsistent, and no pins are visible by default when creating a new renderer
  • Fixed #14695: OrientationFromPosition node: Cannot expose ‘AngleOffset’ property as a pin
  • Fixed #14768: Corelib: SpawnOnFibonacciSequence & FibonacciSequencePlacement nodes have precision issues and break down with severe visual glitches above a few 10 000s of points
  • Fixed #14918: Corelib: The ‘Counter’ template’s output is set to float instead of int

Simulation

  • #1838: GPU sim: Add support for events using D3D workgraphs
  • #13268: Simulation fences: Allow inter-layer fences
  • #14479: GPU sim D3D12: mesh attribute samplers ‘AllSubmeshes’ option support
  • #14625: GPU Backend: Implement missing xform functions (local orientation to world and dxformdx)
  • #14722: Nodegraph & scripts: Add “safe” ability to extract float4 quaternions from ‘orientation’ values, & build ‘orientation’ values from float4 quaternions: ‘orientation.toQuaternion’ & ‘orientation.fromQuaternion’
  • #15210: Texture density sampling profiles: Allow to add a value bracket for per-channel source density data, to allow to pack more than 4 density sources in a single RGBA texture

Rendering

  • #9328: Materials: Embed ‘BillboardScreenControls’ helper node into the default billboard material’s rendering adapter graph
  • #14700: Materials: Restore ComputeVelocity.PreviousPosition

Compiler & Optimizer

  • #12903: Add ‘permute’ node, like the ‘permute’ script builtin
  • #13046: Optimizer: ICB is unable to inject operations inside select instructions that select between two constants
  • #14781: CPU backend: Optimize float4(x, x, x, y), appears in a lot of color computations in many effects, similar to .111x
  • Fixed #15127: Cannot have GPU layer that has only at-spawn instructions

Nodal Editor

  • #14568: Shape intersect: Allow to intersect backfaces
  • #14611: Nodegraph: Grid array operation helpers
  • #14717: Node creation dialog: When typing ‘cylinder’, ‘sphere’, ‘mesh’, … to drop a shape node, pre-set the shape type to the shape type that has been searched
  • #14719: Nodegraph: Add new graph usage types on templates: RenderingAdapterGraph, TextureGraph, GeometryGraph & VectorFieldGraph

Effect Editor

  • #5991: Effect editor: add 2 more saved cameras to the viewport
  • #5992: Editor: allow switching between perspective and orthographic projection
  • #14822: Effect interface panel categories: Allow renaming, reordering categories, and creating new attributes inside categories through right-click menu on the category name
  • #14823: Effect interface panel: Add category name inputbox to the attribute creation dialog

Asset generators

  • #13567: Texture Generator: Ability to pack a sequence of textures into an atlas
  • #13585: Texture generator: Add Support for generation through python calls
  • #14809: Texture Generator: Generate atlas from font file (.ttf / .otf)
  • #13564: Texture Generator: Add Support for BAT generation
  • #14832: Mesh generator: Add Cross Planes as possible mesh source type
  • #14703: Mesh graph: Add option to auto-generate normals & tangents
  • #15037: New Vector-field asset generator

Editor

  • #15159: Editor: make the simulation timestep more stable
  • #15233: Editor: Custom project setting presets
  • Fixed #14747: EXR import: Images with 32 bit floating point numbers above 65504 are replaced with inf, which can cause problems with sampling
  • #14399: AssetBaker: Allow to control mipmap generation when baking textures

UnrealEngine Plugin

  • #12847: UnrealEngine: Add support for GPU simulated meshes
  • #14383: UnrealEngine: Simplify Attributes sampler use
  • #14649: Unreal Engine: Improve grids: support more formats, add blueprint functions to read/write, better feedback when the setup is invalid
  • #14916: Unreal Engine: Add support for 5.7
  • #14917: Unreal Engine: Drop old versions <= 5.4
  • Fixed #14796: UnrealEngine D3D12: Compute shaders for particle evolve/kill execute after those dispatched from BatchDrawers