PopcornFX v2.6 is released!

PopcornFX v2.6

The PopcornFX v2.6 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.



Changelog 2.6.1 patch

Builds (Jul 03 2020)


  • Fixed #4834: Cannot edit Y and Z components of Float3 / Int3 properties in ‘3D_Coordinate’ semantic mode in projects with a Z-up axis-system
  • Fixed #4857: Nodegraph: the value set in an auto-exported property is ignored when the property has a default value in its root declaration.
  • Fixed #4852: Inserting a layer in the middle of an event wire doesn’t set the automatically created output pin to “always visible”, causes pin to disappear when out wire is cut-off
  • Fixed #4848: Release-assert when switching an event trigger to a lower exec frequency
  • Fixed #4749: Nodes are displayed grey when effect has GPU sim enabled, but layer falls back to CPU (Sim Location view mode)
  • Fixed #4098: Nodegraph: color visualisation is not refreshed when sim is paused and the user changes the visualisation mode
  • Fixed #4843: Crash when drag/dropping a template into itself and the template is used in the layergraph
  • Fixed #4392: Optimizer: Anti-optimization: 1/(x*x) gets transformed to (1/x)/x, which is roughly 60% slower on desktop
  • Fixed #4871: sim.loadBias is in range [0;1] instead of [-1;1]
  • Fixed #4823: Simulation freezes when making a spatial query at huge positions
  • Fixed #4798: GPU sim: view.velocity does not work and falls back to CPU sim
  • Fixed #4795: GPU sim: Bounding boxes are broken.
  • Fixed #4832: GPU sim: effect artefacts (all instances are deterministic & have the same seed)
  • Fixed #4892: UVs on triangle renderers are broken
  • Fixed #4854: Billboards have flipped UVs when using Vertex Shader billboarding for AxisAlignedCapsules
  • Fixed #4818: Planar aligned billboards bounding box is too small
  • Fixed #4825: Crash: “show in content browser” when no content browser is open
  • Fixed #4841: Content browser: Renaming a folder in explorer causes thumbnails inside folder to disappear
  • Fixed #4471: Content browser: Renaming a folder in explorer while the content-browser is running makes the folder disappear in the treeview & thumbnails view
  • Fixed #3972: Content browser: When closing content-browser and a read-only asset has modifications, editor shuts-down when ‘Cancel’ is clicked on the retry dialog
  • Fixed #4299: Editor should auto-reimport assets when asset config file has changed, as it can change the way the asset should be imported
  • Fixed #4866: Missing selection highlighting on triangle renderer
  • Fixed #4853: Crash when closing the Effect editor using D3D12
  • Fixed #4830: No hot reload of backdrop assets
  • Fixed #4748: Hitting Ctrl+R in the viewport re-compiles compute shader bytecodes when editing an effect in GPU simulation mode
  • Fixed #3803: Crash with the undo/redo stack when a ‘Template Export Attribute’ node that is bound to backdrop is toggled on/off or deleted/created
  • Fixed #4894: UE4: Tries to compile every particle layer on GPU by default
  • Fixed #4869: UE4: Billboards have flipped UVs when using Vertex Shader billboarding for AxisAlignedCapsules
  • Fixed #4868: UE4: Triangle & Decal renderers aren’t stripped out from built renderers compatible with GPU


Changelog 2.6.0

Builds (Jun 18th 2020)

Assets & core-lib

  • Fixed #4418: Template corelib: ‘sim.lodQueryBox’ node is broken
  • Fixed #4666: Template corelib: ‘InfiniteLife’ node has counter-intuitive default value for death-delay, set to 1 second. Should be 0 by default
  • #4754: Template corelib: ‘Color’ node: Add ‘RGB Scale’ and ‘Alpha Scale’ inputs for more user-friendly tweaking
  • #4743: Template corelib: ‘Counter’ node: Add ‘Increment’ input to control how much the counter is incremented when the input ‘Condition’ becomes true
  • #4742: Template corelib: ‘Timer’ node: Add ‘TimeScale’ input to control how fast the timer counts time
  • #4719: Template corelib: ‘Physics’ node: Add ‘VectorFieldTimeCursor’ input to allow using animated vectorfields without having to manually sample them
  • #4581: Template corelib: Shapes: Improve ‘ShapeProperties’ node
  • #4579: Template corelib: Shapes: Add ‘MeshProperties’ node, allowing to get the vertex count, triangle count, and tetra count from a mesh without having to go through a script node.
  • #4744: Template corelib: Shapes: Add ‘shape.buildParametricCoordsRegular’ node
  • #4580: Template corelib: Trail node: Add ‘bool Enabled’ property to easily switch trails ON/OFF without having to use a custom spawn metric scale
  • #3015: Template corelib: Trail node does not allow Spawn Interval customization per particle, and is maxed at 1.0 unit
  • #4539: Template corelib: ‘CurveOverTime’ node: ignores the ‘Repeat’ parameter when using ‘LifeRatio’ mode
  • #4480: Template corelib: ‘OnDeath’ and ‘SimpleOnDeath’ nodes: make them take a ‘bool Enabled’ pin to allow to conditionally disable them


Nodal editor

  • Fixed #4238: Ctrl+G almost always messes up input order
  • Fixed #4237: Ctrl+G of multiple nodes without in-between passthroughs produces totally broken looping template
  • Fixed #4184: Attributes: Drag/dropping an attribute into the graph pops warning window asking whether to reuse attribute or node values -> meaningless, the node doesn’t exist yet !
  • Fixed #4766: Nodal editor: Crash when opening a ‘double-curve’ node
  • Fixed #4753: Disabled nodes aren’t displayed as grey when view mode is Sim Location
  • Fixed #4632: Pasting a corrupt copy/paste text buffer in the nodegraph sometimes crashes the editor
  • Fixed #4578: Propertygrid: Changing a single component of a vector when multiple objects are selected and have different values should only change this component and leave the others untouched
  • Fixed #4148: Propertygrid: Validating inputbox with ‘Enter’ when multiple nodes selected doesn’t broadcast the value to all nodes anymore
  • Fixed #4475: “sim.wave” nodes min/max/sum produce warnings in graph when used with nothing wired in, and always return the type of the input even when the output should have a different type
  • Fixed #4118: No nodegraph error / warning when a renderer has unset/invalid resources required for rendering
  • #4145: Add ‘3DScale’ semantic for template & renderer inputs
  • #2196: Add ‘Angle’ semantic for template & renderer inputs

Graph compiler & optimizer

  • Fixed #4713: Effect compiler & optimizer: Crashes when graphs become so large that they overflow 65536 instructions
  • Fixed #4712: Graph optimizer: Invalid constant-folding on payload with different values from multiple events
  • #4429: Optimizer: Allow doing fuzzy float compares when simplifying instructions: Ex: optimize “x * asfloat(0x3F7FFFFF)” to be “x * 1.0f”
  • #4813: Graph compiler: Faster compilations & bake times using parallel compilations


  • Fixed #4671: Random crash when using self.kill
  • Fixed #4633: shape.buildPCoordsBox() Always returns an invalid pcoord
  • #4472: Payload append node: Simplify interpolation parameters
  • #4428: Spatial layers: Allow using curve attribute samplers as the input kernel to the kernel queries
  • #4404: Image sampler: Implement native RGBA16F sampling
  • #4056: Add support for non-zero radius collisions
  • #4814: Faster effect load times

Simulation: GPU

  • Fixed #4368: GPU D3D12: Mesh attribute sampler ignores mesh backdrop’s position, scale, orientation
  • #3873: GPU: Attribute shape sampler
  • #4759: GPU sim: compute shader bytecode generation takes longer because Event* nodes are processed but are CPU only
  • #4165: GPU D3D12: implement wave intrinsics


  • Fixed #4308: Deferred lighting broken in LeftHandedYUp
  • Fixed #4676: Draw calls bounds aren’t displayed for billboards when using vertex shader billboarding
  • Fixed #4655: Crash when the geometry feature-set failed to be loaded
  • Fixed #4603: Shader compilation errors/warnings on Mac/Metal
  • Fixed #4359: Shaders do not get hot-reloaded when opening effect editor
  • Fixed #4681: Draw call bounds are not displayed if “Show HUD” and “Show draw calls” is disabled
  • #4497: Add soft-particle feature on the transparent mesh material
  • #1847: New renderer: Triangle renderer
  • #4311: New renderer: Decal renderer
  • #4144: Renderers: Remove hack in fix of #4084 & #4143: Use DataSemantic_3DScale
  • #2408: SRGB: better handle of sRGB formats


  • Fixed #4767: Content browser: Crash when using the “back” or “forward” key and the previous or next location has been deleted
  • Fixed #4617: Content browser: Crash when closing editor before all thumbnails have finished loading.
  • Fixed #4496: Exporting a package does not include the animtracks the animtrack backdrop uses
  • Fixed #4416: Export to package does not remember last save directory
  • #4537: Editor windows: Add ability to reset the layout of just a specific editor window type, not the entire editor. (ex: Just reset the layout of the mesh importer)

Effect editor

  • Fixed #4663: Crash when saving default-value of an attribute (regression in v2.5.5)
  • Fixed #4777: Shape attribute link breaks upon modifying renderer params
  • Fixed #4678: Animation backdrop: animation path is not visible by default even though preset “None” is selected
  • Fixed #4616: TGA loader is extremely slow when loading compressed images
  • Fixed #4414: Effects are hard to merge when edited by two different users: Make new node UIDs non-deterministic so they have less chance to collide across users
  • Fixed #4412: Renaming a template in an effect resets all its auto-exported properties in all its local instances
  • Fixed #4571: Color picker: Unstable RGB sliders
  • #4570: Color picker: Allow setting HDR values

Curve editor

  • Fixed #4758: Curve presets dropdown is not sorted and has an unpredictable order
  • #4598: Curve editor: Allow to disable the [0,1] time-bounds limits

Mesh importer

  • Fixed #4717: Mesh importer: Removing Normals and Texcoords from the imported geometry in the bake settings is ignored, streams are still imported.
  • #4620: Mesh editor: Display submesh bounds
  • #4544: Mesh importer window: General improvements: Allow inspecting submeshes, UV-sets, and visualize which data takes up the most space in the baked file.


Mesh importer overview (3 min 02 sec)Mesh importer deep dive (23 min 26 sec)

VectorField viewer

  • #4543: New VectorField viewer window, when double-clicking a vector-field asset
  • #4716: VectorField viewer: Export vector-fields as volume textures
VectorField viewer overview (3 min 05 sec)VectorField viewer: Basic UI & Visualization (18 min 09 sec)
VectorField viewer: Import/Export & Bake Settings (25 min 41 sec)VectorField viewer: Benchmark mode (7 min 06 sec)

Texture viewer

  • #4545: New Texture viewer window, when double-clicking on a texture
Texture viewer (17 min 16 sec)


Asset baker

  • Fixed #4566: Asset baker: When bake fails or produces no output, does not delete already existing baked files
  • #4283: Add option to asset baker allowing to keep effect sources in a standalone form


  • New upgrader @ v2.6.0.62489: AssetBaker Oven bake config particle: renamed ‘RemoveSource’ to ‘SourceConfig’ and it is now an enum instead of a boolean
  • New upgrader @ v2.6.0.62893: Curve node: Removed ‘IsProbabilityCurve’: Now auto-deduced
  • New upgrader @ v2.6.0.63470: Payload nodes: Simplified interpolation settings
  • New upgrader @ v2.6.0.63892: Renderers: apply new ‘Angle’ semantic on the billboard field ‘Rotation’
  • New upgrader @ v2.6.0.64527: Renderers: apply new ‘3D_Scale’ semantic on the billboard field ‘Scale’
  • New upgrader @ v2.6.0.64539: Trail node improvements
  • New upgrader @ v2.6.0.64553: Renderer interface: remove ‘SampleEnvironmentMap’ and ‘SampleBRDFLUT’ options, replace them with a single ‘UseSceneLightingInfo’ option
  • New upgrader @ v2.6.0.64739: Add new Corelib files: Materials: ‘Default_Decal’, ‘Default_Triangle’, ‘Opaque_Triangle’
  • New upgrader @ v2.6.0.64753: Renamed ‘effect.visible()’ function to ‘effect.isRenderingEnabled()’
  • New upgrader @ v2.6.0.64887: Renamed texture sample & remap density node outputs from ‘Value’ to ‘UV’



  • Fixed #4673: UE4: Premultiplied Alpha default material is Translucent instead of AlphaComposite
  • #4725: UE4: Add support for non-zero radius collisions
  • #4583: UE4: Bake effects as binary
  • #4551: UE4: Add support for raytraced meshes
  • #4550: UE4: Add support for raytraced billboards
  • #4284: UE4: Bake effect when project is cooked depending on the target platform

Content examples update

New “Tutorials” & “Samples” effects