PopcornFX v2.25 is released!

The PopcornFX v2.25 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.25 release highlights livestream, where a few members of the team dive into some of the new features:

YouTube player

Changelog 2.25.2

Builds (Sep 17th 2026)

  • Fixed #16074: Simulation: bitshifts by bit counts that are out of range (< 0 or > 31 bits) produce different results on different platforms, and sometimes different results on the same platform
  • Fixed #16088: Rendering: Rendering freeze when using trimmed screen aligned billboards with CPU billboarding.
  • Fixed #16020: Unreal Engine: RHI crash in UE 5.8 when setting a Render Target for a grid attribute sampler
  • Fixed #16107: Unreal Engine: skeletal mesh attribute samplers only skin in the editor
  • v2.24.6 LTS fixes
  • #16098: ARM NEON: Various small performance improvements.
  • Fixed #16069: Micro-updates always active on ARM
  • Fixed #16071: AssetBaker / Effect compiler: Rare random crash between parallel baking tasks
  • Fixed #16079: FBX Importer: Temporary directories are not cleaned up on linux and mac
  • Fixed #16097: ARM NEON builds: doing a float -> float3 .x00 swizzle in a particle sim is broken, returns incorrect values.
  • Fixed #16099: ARM: Sampling float2 curves in anything but ‘Exact’ mode produce sampling artefacts
  • Fixed #16101: ARM: NEON SIMD bug causing buggy results in the following: Or+Not operators in the particle graphs, Wavelet image density sampling, Capsule shape sampling, and scene.orientation() in a rare degenerate case.
  • Fixed #16103: NEON builds accidentally always use the software scalar fp16 <-> fp32 converters, never the vectorized or HW one.
  • #16095: AssetBaker: Add a ‘CacheHashSalt’ string property to the BakeConfig ParticleCompiler objects, allowing to hash the shader compiler version alongside the rest of the shader so the compile-caches get properly rebuilt
  • Fixed #16078: Editor: Rare random freeze when opening a project using procedural textures
  • Fixed #16084: AssetBaker: Some of the baked assets diff depending on if they were baked on an Intel or AMD CPU
  • Fixed #16085: AssetBaker: baked effects containing GPU-sim layers contain a couple of bytes that come from uninitialized memory and get random values on each bake, causing the baked effects to diff from one run to the next.
  • Fixed #16052: Node Editor: horizontal backward wires are (nearly) invisible
  • Fixed #16100: ARM AssetBaker: Baking LA16F textures with mipmap generation enabled produces broken mipmaps
  • Fixed #16093: Unreal Engine: some grid attribute samplers read/write functions don’t read/write in the correct component
  • Fixed #16094: Unreal Engine: grid attribute samplers using a render target don’t rebuild when their height has changed
  • Fixed #16096: Unreal Engine: cloth sampling is broken

 


Changelog 2.25.1

Builds (Aug 20th 2026)

  • Fixed #16027: Content browser: Various bugs with assets that have the same name (Ex: Textures & Atlases)
  • Fixed #16041: Editor: Crash when an asset’s .pkcf file is empty or still being written by another application
  • v2.24.6 LTS fixes
  • Fixed #15984: Editor: Crash when ungrouping twice the physics node content without altering the selection
  • Fixed #16061: Curve editor: Cursor coordinates display in toolbar is broken
  • Fixed #16062: Content-browser: Details view: When sorted on a column in descending order, sort order gets randomly reset by any change in a file of that folder (Ctrl+S in an opened effect, asset changed on-disk, etc)
  • Fixed #16063: Nodal editor: Wire portal creation shortcut (Ctrl+Alt) is broken
  • v2.24.5 LTS fixes
  • #16033: Compiler: Reduce optimizer passes count because of 2 ICB optimizations fighting each other
  • Fixed #16026: Compiler: fast rcp produces full-range in value-range-propagation
  • Fixed #16032: Editor: Crash when opening an effect that uses a texture that fails to load in the graphics API (for ex because it’s too big, like a 32k-wide texture)
  • Fixed #16038: Editor: Crash reporter window no longer shows up (Qt6 regression)
  • Fixed #16044: GPU sim D3D11: Using the scene wind in the GPU sim, causes shader compilation errors in D3D11, and fallback to CPU sim
  • #15412: Godot: Implement Sound Renderers

 


Changelog 2.25.0

Builds (Jul 29th 2026)

Templates & Corelib

  • #15721: Templates: self.properties & parent.properties helper nodes
  • #16011: Corelib: Event multiplier node’s ‘OnDeath’ output event does not copy the parent event contents, triggers a naked event with no payload
  • #16014: Corelib: Don’t force multiplier nodes to always run on CPU now that there is experimental events support in the D3D12 GPU-sim backend
  • Fixed #15917: Corelib: shape.disassembleParametricCoords: Disassembling a mesh volume PCoord does not work, gives wrong UV values, W & tetra ID are correct.
  • Fixed #16007: grid.safeRead & grid.safeReduce: the ‘OutsideValue’ input pin accepts any wire, including event wires. Should be limited to float-float4/int-int4 like the ‘Value’ input

Simulation & Compiler

  • #15954: New Localized-Pages mode using effect instances
  • #12744: Add a ‘getchannel’ builtin to extract a specific component of a vector, with a dynamic ID
  • #12745: Add a ‘setchannel’ builtin to write a specific component of a vector, with a dynamic ID
  • #15601: Optimizer: Replace select by xor when selecting between two opposite bools
  • Fixed #13375: Editor: meshes renderers bounding box are degenerated in GPU simulation
  • Fixed #16019: GPU Sim: spawn-transform is ignored when only the translation is set

Rendering

  • #1267: Rendering: Implement texture trimming
  • #14561: Support for vertex billboarding for ribbons
  • Fixed #16009: Editor: Particle shaders often do not get properly updated when upgrading to a new version, require manually clearing the shader cache
  • Fixed #15927: AlphaMask UVs are incorrect with correct deformation & vertex billboarding

Nodal Editor

  • #4595: Nodal editor: Allow binding custom shortcuts to drop nodes in the graph
  • #15343: Allow playing back offline simulations in PopcornFX: Generate simulation caches from Houdini .json files
  • #15687: Attribute drag: Shift-drag drops directly in evolve
  • #15652: Nodegraph: Allow searching vector & RGBA build & split using “make” and “break” search keywords
  • #15906: Texture sampling density profiles: Add “Invert” option to build the density-sampling lookup of the inverted image
  • #15971: Editor: Add Align Vertical and Align Horizontal Commands to Nodegraph
  • #15983: Editor: Add Distribute Vertical and Distribute Horizontal Commands to Nodegraph
  • #15986: Editor: Add Straighten connections command to Nodegraph

Editor

  • #15653: Texture & VectorField generators: Some graphs that use fences will not behave correctly for larger textures or vectorfields (> 512×512 or > 64x64x64), due to internal sub-tiling. Expose a ‘NoSubTiling’ advanced option.
  • #15964: Project Launcher: By default open project with latest patch that matches the project minor version, add an option in the user settings to launch with the closest patch instead.
  • #16022: Content browser: New atlas: Unusable, always creates a 2×2 atlas. Allow specifying U/V grid atlas dimensions.
  • #16008: EcoMode: Add option to enable power throttling at OS level

UnrealEngine Plugin

  • Fixed #3950: Unreal Engine: Attributes reset/break very often when inside a Blueprint
  • #15930: Unreal Engine: allow to read/write attribute sampler properties more easily in Blueprint graphs
  • #15934: Unreal Engine: allow the creation of attribute samplers as custom UE assets to make them reusable between emitters
  • #15923: Unreal Engine: place and rotate effects better in the effect editor
  • #15979: Unreal Engine: improve and simplify attribute sampler shape transform options

Unity Plugin

  • #14132: Unity: New FrameCollector support

v2.24.5 LTS fixes

  • Fixed #15989: GPU Sim: Texture sampling with atlas yields a shader backend error on d3d12
  • Fixed #15988: Editor: Unable to right click a node if it is contained in a currently selected annotation
  • #15697: Unreal Engine: add support for 5.8
  • Fixed #15990: Unreal Engine: asset depencencies of effects draw calls are empty if the asset dep is imported for the first time during the asset import.
  • Fixed #16015: Unreal Engine: crash when you select an emitter with an effect of a different PopcornFX version than your plugin
  • #15981: Godot: Curve Attribute Sampler
  • Fixed #15980: Godot: transform mode property isn’t shown on PKEmitter3D
  • Fixed #15968: LOD (box and sphere queries) always returns zero on Retail builds