PopcornFX v2.16 is released!

PopcornFX banner v2.16

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


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


Changelog 2.16.6

Builds (Jul 13th 2023)

  • Fixed #12630: Nodal editor: Sim location coloring is not displayed correctly in some effects
  • Fixed #12617: GPU sim D3D11: mesh sampling is broken when the mesh resource is specified through an inline property instead of through a resource node
  • Fixed #12605: Editor: crash when sampling mesh with and without pcoords
  • Fixed #12518: Using the debugger in a layer that has both CPU and GPU particles causes all subsequent layer compiles to stall the main thread waiting for sim shaders to be compiled
  • Fixed #12580: AE: Occasional crash on effect load
  • Fixed #12587: AE: Crash occuring on project info file creation
  • Fixed #12586: AE: Reimporting effect reset transform and attributes
  • Fixed #12585: AE: improve render time for scenes containing multiple effects
  • Fixed #12338: AE: Reimporting FX reset all parameters
  • Fixed #12542: Unity: Add errors on PKFxAsset Inspector if effect contains differents quality levels than the current one
  • Fixed #12541: Unity: On Plugin import, sync Quality settings
  • All v2.15.11 LTS fixes:
    • Fixed #12658: CPU simulation: Modulo operator/node returns incorrect results for floating-point modulos with some integer period values when the simulation batches contain 8 particles or more
    • Fixed #12608: GPU sim D3D12: particle runtime stats are not working anymore
    • Fixed #5233: Spatial layer : graph build error when exporting spatial layer pin in the layergraph
    • Fixed #12640: Node Script: Closing a scope without the semicolon termination token produces undefined behavior
    • Fixed #12139: Output event of a layer is broken when multiple event nodes are wired into it and one of them is disabled and has a passthroug node along the wire. Also displays incorrect warning.
    • Fixed #11884: Data nodes in layergraph: Changing properties in the layergraph require to manuall hit the ‘recompile’ button to see the changes
    • Fixed #12690: Attribute / Effect interface panel: Cannot roll-up categories, annoying when there are large attribute lists
    • Fixed #12677: Nodal editor: When creating an input node from a renderer pin, incorrectly auto-names the new input with the category prefix. Ex: “General.Size”
    • Fixed #12296: Nodal editor: Grouping nodes wired in renderer nodes generate verbose names (ie. ‘General.Size’)
    • Fixed #12193: Nodal editor: deadlock when deleting some dangling passthrough nodes
    • Fixed #12660: Nodal editor: Grouping nodes sometimes swaps the input and output names
    • Fixed #12270: Node creation dialog: Cannot set focus back to search box with keyboard once ‘down’ arrow has been pressed at least once to select an item in the list
    • Fixed #8847: Color picker: Picking a screen color is bugged on high-dpi screen setups, does not pick the correct colors on secondary screens that are on the left of the primary screen
    • Fixed #12680: Color picker: When picking screen color and moving back and forth between screens in a multi-screen setup, sometimes big black and white squares appear and follow the cursor, obstructing the things underneath
    • Fixed #12672: Color-picker in attribute panel incorrectly interprets the colors as sRGB when in fact they are linear, mismatches the color displayed in the propertygrid and in the viewport.
    • Fixed #5232: Layergraph : changing a datacurve link in a layer input pin, doesn’t trigger a graph rebuild
    • Fixed #5924: XForm node emits warning when the layer is triggered from two different events, and one of them adds a ‘Position’ or ‘Orientation’ payload, but not the other.
    • Fixed #12682: Sometimes invalid effects are written, with null pins or connected pins in some objects
    • Fixed #12674: Users tied to an organization without any seat assigned see a ‘license expired’ popup when logging in
    • Fixed #12114: Mesh viewer: importing animations/skeleton in a mesh doesn’t refresh the viewport
    • Fixed #12600: Unity: Incorrect camera culling mask when the distortion is disabled
    • Fixed #12592: Unity: texture missing from created material
    • Fixed #12666: O3DE: Asset processor fails on fga assets
    • Fixed #12661: O3DE: errors on the asset processor even if the effect baked successfully
    • Fixed #12659: O3DE: Wind sim interface is not working en editor mode
    • Fixed #12651: O3DE: Particles rendering is broken if an atlas failed to load
    • Fixed #12642: O3DE: pkat copy builder is not registered correctly
    • Fixed #12639: O3DE: AssetBuilder exits abnormally on a baking failure
    • Fixed #12635: O3DE: does not link with shipping libraries in release
    • Fixed #12634: O3DE: Linking error on linux in debug config (missing bfd)
    • Fixed #12612: O3DE: assert in CLightBatchDrawer::EmitDrawCall since range stream is not contiguous
    • Fixed #12597: UnrealEngine: crash when opening/closing some levels
    • Fixed #12596: UnrealEngine: Ribbons CorrectDeformation feature causes particles to disappear
    • Fixed #12602: UnrealEngine: FlipUVs & TextureUVs’ FlipU, FlipV, RotateTexture incorrectly handled
    • Fixed #12656: UnrealEngine: effects sampling mesh/skeletal mesh attribute samplers do not work if attribute sampler has ‘skinTangents’ enabled


Changelog 2.16.5

Builds (Jun 15th 2023)

  • Fixed #12563: Editor rendering is broken when creating a project on a remote network drive with a path of the form ‘//’
  • All v2.15.10 LTS Fixes:
  • Fixed #12478: Nodegraph: crash when dropping sim interface into sim interface graph
  • Fixed #12189: Nodegraph: event payloads are displayed multiple times when hovering an event wire that comes from multiple signal pins
  • Fixed #12184: Attribute list: Attributes which are unpinned and defined in layers that get optimized out in the final baked effect do not end-up in the final attribute list, they should, the attribute list should be fixed and not depend on build versions
  • Fixed #12221: Editor: crash when full asset analysis occurs while opening a project and some of the destination auto-generated thumbnails for Atlas, Sound, or Texture assets are read only
  • Fixed #9299: Editor: effect creation dialog presets description ignores some formatting tags
  • Fixed #12560: Unity: Clean unused soundManager class
  • Fixed #12559: Unity: reduce number of allocation made on play mode by mesh renderers
  • Fixed #12543: Unity: PopcornFX Camera layer are not created
  • Fixed #12427: Unity: Add auto detect of render pipeline to create the right factory
  • Fixed #12082: Unity: “read/write enabled” not enabled on texture attribute sampler default value.
  • Fixed #12547: O3DE: missing default seed list file required by released games
  • Fixed #12537: O3DE: Asset builders crash when PopcornFX SDK emit asserts and engine is ran in debug
  • Fixed #12536: O3DE: AlphaRemap, DiffuseRamp, EmissiveRamp renderer features are incorrectly implemented in shaders, produces visual artefacts depending on the texture
  • Fixed #12535: O3DE: Lit renderers are not visible and produce errors in the console log
  • Fixed #12534: O3DE: Emissive renderer feature does not work
  • Fixed #12527: O3DE: compilation error in previewer factory with -DLY_UNITY_BUILD=OFF
  • Fixed #12485: O3DE: p_PopcornFXMaxSlices (enable slicing) has no effect
  • Fixed #12562: UnrealEngine: AlphaRemap, Linear & MotionVectors atlas blending do not work anymore


Changelog 2.16.4

Builds (Jun 1st 2023)

  • Fixed #12330: Unity: Add support for batched raycasts
  • All v2.15.9 LTS Fixes:
  • Fixed #12508: GPU sim: bool2/bool3/bool4 built at spawn aren’t properly uploaded to GPU
  • Fixed #12481: Triangle renderer: Crash when a triangle has a constant position (over particles) for one of its vertices
  • Fixed #12502: Editor freeze & crash when hitting Ctrl+S in some effects with deep asset dependencies (since at least v2.13)
  • Fixed #11905: Editor rendering is broken when creating a project on a remote network drive with a path of the form ‘//’
  • Fixed #12509: Unity: Fix intermitent crash caused by effects with a short lifetime
  • Fixed #12332: Unity: Improved effects profiler UI
  • Fixed #12331: Unity: Migrate PKFXSettings to Unity settings
  • Fixed #12488: O3DE: Renderers GlobalSortOverride has no effect
  • Fixed #12487: O3DE: Gem is not compatible with Atom’s new Vulkan memory allocator
  • Fixed #12486: O3DE: Gem does not register correctly in 23.05
  • Fixed #12484: O3DE: PopcornFX draw calls for are submit for all views including shadow cascades even when cast shadows is disabled
  • Fixed #12477: O3DE: PopcornFX runtime startup cleanup
  • Fixed #12467: O3DE: PopcornFX logs aren’t logged into O3DE’s log system
  • Fixed #12472: UnrealEngine: random crashes in shipping when emitters are destroyed/recreated by GC
  • Fixed #12471: UnrealEngine: PSO caching does not work with default vertex factory


Changelog 2.16.3

Builds (May 11th 2023)

  • Fixed #12309: CastShadows does not work with the ‘LegacyLit’ feature
  • Fixed #12439: GPU Spatial Layers stop working after reseting the effect (D3D12 only)
  • Fixed #12397: Unity: Crash if PKfxEmitter is present in the scene without any PkfxRenderingPlugin
  • All v2.15.8 LTS Fixes:
  • Fixed #12459: Nodegraph: Using a debug.drawValue node makes the layer fall back to CPU sim
  • Fixed #12343: Mesh viewer: checkerboard texture isn’t applied when enabling the option in the viewport
  • Fixed #12342: Editor: debug.draw* persists when paused and resetting the sim.
  • Fixed #12465: Unity: High memory usage of PopcornFX shaders due to high permutation count
  • Fixed #12438: Unity: Add import .pkkg support
  • Fixed #12437: Unity: Fix Particle stats showing incoherent timings
  • Fixed #12457: O3DE: Plugin doesn’t work with the unified launcher
  • Fixed #12456: O3DE: Asserts at shutdown


Changelog 2.16.2

Builds (Apr 27th 2023)

  • All v2.15.7 LTS Fixes:
  • Fixed #12412: Incorrect value-ranges computed from ‘extract payload’ nodes when layer is triggered from different parent layers and one of them doesn’t append the extracted payload
  • Fixed #12418: F1 on renderer nodes opens a 404 page instead of opening the proper documentation page
  • Fixed #12417: F1 to show the documentation of local templates does not jump to the proper location in the documentation page, only works for public templates
  • Fixed #12433: Unity: IndexOutOfRange when registering a camera without enough layer mask set
  • Fixed #12432: Unity: thumbnails import could not be disabled


Changelog 2.16.1

Builds (Apr 13th 2023)

  • All v2.15.6 LTS fixes
  • Fixed #12274: Opening an effect that contains spatial layers tags it as modified even when no changes are made
  • Fixed #12324: Editor: several tooltips displayed when hovering nodes ‘info-circle’
  • Fixed #12372: Unity: Light renderers are left active on scene change
  • Fixed #12371: Unity: Light pools are duplicated on scene change


Changelog 2.16.0

Builds (Apr 4th 2023)

Templates & Corelib

  • #12156: New ‘EventBlocker’ node, allows to conditionally block events in the layergraph
  • #12320: Corelib: Add a ‘Luminance’ node that takes a color and outputs the grayscale luminance
  • #12314: Corelib: Add more keywords to quickly find transform nodes: l2w, w2l, lp2w, ld2w, v2w, w2v, etc…
  • #12156: Event templates: add an ‘Enabled’ pin to all event templates
  • Fixed #12279: Collision node: CollisionPosition and CollisionNormal outputs are undefined in the frames where no collision occured, cause hard to understand bugs in user graphs when the value is read and used when no collision happened
  • Fixed #12301: Templates: debug.drawBox inputs aren’t axis system independent
  • Fixed #12297: Corelib: Placement templates do not have proper descriptions

Simulation & Rendering

  • #12179: Editor: Enable D3D11 GPU simulation by default
  • #12132: Renderers: Rename obscure “FeatureSetPath” property to “Material”
  • #12285: Rendering: Culling rendering feature for mesh particles materials
  • Fixed #11922: GPU sim: Turbulence sampler ignores ‘FlowFactor’ and ‘DivergenceFactor’ properties.
  • Fixed #7481: Ribbon tangents are incorrect with custom U or UV flip / rotate
  • Fixed #12346: sim.lodQueryPoint & sim.lodQueryBox: Incorrectly returns values outside the [0,1] range when an LOD bias is applied throught the scene or the view.
  • Fixed #7210: Ribbon GPU: Flip UV / rotate not working with custom U

Editor (General)

  • #12108: Remove ‘Preferred Sim Location’ setting from project settings: Does not apply anymore.
  • #12201: Editor: new impostor creation tool
  • #2831: Editor rendering: Shadows
  • #12062: Details view & Asset data: Add an LOD column to show the number of LODs in mesh assets
  • #4180: Create tmp files when files are modified in-memory but not opened in an editor
  • #12227: JPG loader: Doesn’t support CMYK format: All JPG images saved from photoshop if source PSD is in CMYK format.

Effect editor

  • #12131: Warn when effects use a block-compressed texture whose size is not a multiple of the block size (not a multiple of 4 for all BC/DXT formats)
  • #12111: Frame exporter: add alpha to exported flipbooks
  • #12313: Color-picker: Add an angle snap on color-wheels when pressing a modifier key
  • Fixed #8182: Animtrack backdrop rotation values are sometimes wrong

Nodal editor

  • #11830: Add per-particle ‘debug.drawLine()’ : debugging primitives that can be used inside templates to display per-particle debug visualizations in-editor
  • #12165: Nodal editor: Allow toggling all nodes in an annotation by simply toggling the annotation itself rather than having to select every node inside
  • #12134: Editor node creation: Add more keywords for builtin “rand” nodes: “rand UV”, “rand 01”
  • #11395: Node creation dialog: Allow typing simple math operators like “+ 0.5” or “/ 2” that automatically set constant values in the math nodes
  • #12317: Nodegraph: Allow accessing internal particle properties ‘sim.selfId’, ‘sim.parentId’, and ‘sim.effectId’
  • Fixed #12190: Output value range for rand_seed function & RandFromSeed node is not properly computed, always [-inf, +inf]

Compiler & Optimizer

  • Fixed #12056: Crash during graph compilation when using spatial layers and the simulation is paused
  • Fixed #5188: dxdt node: Cannot analytically derive position anymore, due to more complex physics node
  • #12138: Compiler & Optimizer: Add a no_optimize builtin node & statement in scripts, allowing to disable optimizations along a data wire
  • #12133: Optimizer: Merge multiple ‘rand’ calls into a single rand call
  • Fixed #12327: Optimizer: Fails to properly simplify ‘select’ / ‘if’ chains when conditions are identical

Texture viewer

  • Fixed #12154: Image conversions: Total loss of floating-point precision when converting some image floating-point formats between each other, with the conversion going through an intermediate BGRA8 representation instead of staying in floating-point

Mesh viewer

  • #12260: Mesh viewer: BAT (Bone Animation Textures) export window UI / UX improvements

UnrealEngine plugin

  • #12226: UnrealEngine: Auto restart emitters when attributes are changed in the details panel

Unity plugin

  • #11837: Unity: asset per platform versions
  • #12344: Unity: Add Light renderer support
  • #12300: Unity: Thumbnails in editor and in-game if needed
  • #12237: Unity: Effects profiling (top offenders view)

Content examples update

Effects from various packages were modified to enable shadow casting to improve their look.

New “Tutorials” effects

New Marketplace package (Free)