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.



PopcornFX v2.6.5 patch

Builds (Sep 3rd 2020)


  • Fixed #5120: GPU sim: huge performance overhead as soon as the GPU sim is enabled on some hardwares (D3D12)
  • Fixed #5203: GPU sim: instant crash on some AMD graphics card (D3D12)
  • Fixed #5225: GPU sim: can’t bind depth map as attribute sampler (D3D12)
  • Fixed #5224: GPU sim: cannot bind texture attribute sampler when attribute sampler node has no default value (D3D12)
  • Fixed #5130: GPU sim: unsupported view.project/unproject (D3D11/D3D12)
  • Fixed #5201: Crash when D3D11/D3D12 graphics API cannot be loaded, and “Gpu Enabled” is activated
  • Fixed #5200: Crash when closing editor and Vulkan graphics API is used
  • Fixed #5199: Crash when editor default shaders cannot be loaded
  • Fixed #5204: Pin Rules are no longer exported for renderer nodes
  • Fixed #5202: Random crashes when editing effects with “Gpu enabled” (D3D12)
  • Fixed #5135: Effect documentation generator shows language list in native characters, unreadable for anyone not actually able to read the language character set (ex: english-only-speaking person trying to read “にほんご” (Japanese, in Japanese))
  • Fixed #5134: Effect documentation generator displays “Corrupt effect: Could not build layergraph”


PopcornFX v2.6.4 patch

Builds (Aug 20th 2020)


  • Fixed #5078: Crash when closing effect which has been modified externally
  • Fixed #4402: Image sampler: Sampling R32F / L32F images with ‘ScriptOutputType’ property set to ‘float4’ flattens texture to BGRA8 and looses all HDR information.
  • Fixed #5056: GPU sim: Falls back to CPU sim whenever using the nodes: “InfiniteLife”, “self.kill”, “self.wasKilled”
  • Fixed #5126: Texture viewer: Cannot export from RGBA16F or RGBA32F to R16F or R32F: Some combinations do not work at all, others produce loss of HDR range due to intermediate BGRA8 conversion
  • Fixed #5125: Texture viewer: Bad texel values shown for R16F textures
  • Fixed #5040: Crash when closing texture viewer window after the texture was hot-reloaded
  • Fixed #5108: Associate more PopcornFX file extensions during editor installation
  • Fixed #5104: Double-clicking on a .pkfx file from a project which has a different version than the latest install will open it with the wrong editor version
  • Fixed #5100: Opening a .pkfx file from explorer does not work if the .pkproj is not at the project root
  • Fixed #5077: Mesh importer: Clicking ‘Reimport’ button reimports the mesh twice (and sometimes thrice!). Extremely painful for very large meshes that already take a while to import
  • Fixed #4799: Export to package directory is not remembered from one launch of the editor to another.
  • Fixed #5076: Editor windows: Place asset name first in the window title so that it’s more readable in the taskbar
  • Wrapping of SDK & Editor revision IDs (went above 65535, wrapped back to 0 to keep windows 16-bits version numbers happy)


PopcornFX v2.6.3 patch

Builds (Jul 30th 2020)


  • Fixed #5016: Crash when deleting an event output node while the event is still wired to a child layer in the layergraph
  • Fixed #4961: Nodegraph: extracting a payload at evolve is not implemented but shows no warning
  • Fixed #4991: Nodegraph/Treeview: copy/pasting nodes with properties containing absolute file paths (contained in the project) does not replace those paths in their relative form
  • Fixed #5022: Propertygrid: Crash when choosing ‘OpenAsset’ on an resource thumbnail, but the editor doesn’t have a content-browser window opened
  • Fixed #5023: Propertygrid: choosing ‘Show in Content-browser’ in right-click menu of an asset property does not raise the content-browser window
  • Fixed #4990: Asset picker: pasting an absolute file path contained in the project is not accepted as a valid input
  • Fixed #4964: Mesh backdrop: Animation not updated until effect is reset
  • Fixed #4760: Attributes: Moving the mouse while setting the value of a slider (with right click) makes the attribute move
  • Fixed #5031: No “Maximize” button on windows of undocked editor panels (especially the viewport)
  • Fixed #5024: Editor asset windows: Closing an undocked panel and restoring it via the ‘View’ menu makes it un-redockable until the editor is restarted
  • Fixed #5025: Editor asset windows: Undocking the viewport, closing it using the window’s close button, and reopening it via the ‘View’ menu breaks all rendering


PopcornFX v2.6.2 patch

Builds (Jul 16th 2020)


  • Fixed #4705: Scale/3DCoords semantic when type is not float3 negates user input values when the corresponding axis is flipped relative to RHYUP
  • Fixed #4943: Unstable sort in the node creation dialog
  • Fixed #4969: Crash when moving template to file
  • Fixed #4430: GPU sim: Localspace nodes do not work
  • Fixed #4904: GPU sim: orientation stored at spawn and loaded at evolve doesn’t work
  • Fixed #4905: GPU sim: two attributes with similar names can get mangled to the same symbol and cause the GPU sim CS to fail compiling
  • Fixed #4932: GPU sim: Cannot use attributes of type ‘orientation’ at evolve
  • Fixed #4903: Renderers: Warning when an asset path is empty even if it is not used
  • Fixed #4958: Cubemap backdrops do not properly handle the axis system
  • Fixed #4722: Content browser: Texture thumbnails do not refresh when re-exporting the texture
  • Fixed #4965: CPU saving mode: Does not pause rendering ! Render thread still loops as fast as it can
  • Fixed #4897: Cannot specify the “Auto” simulation location behavior
  • Fixed #4898: Asset baker: Project settings are ignored when baking
  • Fixed #4947: AssetBaker: ‘ExportPixelFormatStrategy’ is ignored
  • Fixed #4949: AssetBaker: add new ‘AppendExportExtToOriginalExt’ option to texture baker
  • Fixed #4899: UE4: Triangle renderer support
  • Fixed #4900: UE4: Cannot specify whether or not light particles affect transparent geometry
  • Fixed #4912: UE4: Popup “PopcornFX file is outside mount point” when re-importing static mesh used for sampling
  • Fixed #4980: UE4: Reimporting effect with a texture overridden reverts to using the effect’s default texture
  • Fixed #4981: UE4: Overriding an effect texture reverts overridden materials to their defaults


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


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