PopcornFX v2.8 is released!

PopcornFX v2.8

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



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

Changelog 2.8.6 patch

Builds (Apr 1st 2021)



UE4 Plugin

Unity Plugin

AfterEffects Plugin


  • Fixed #7330: scene.orientationFromUp occasionally computes garbage values.
  • Fixed #7230: ‘effect.age’ is incorrect when there’s a single effect instance in the simulation, and its ‘effect.timeScale != 1.0’
  • Fixed #7252: Editor: ‘Debug all particles’ toolbar button doesn’t work anymore
  • Fixed #7313: Online packages tab: An already downloaded package can’t be imported if a newer version is available but not downloaded.
  • Fixed #7314: Editor login window: email validation function is applied on every single keystrope, prevents from typing email
  • Fixed #7311: Curve editor: Viewport isn’t refreshed when changing some properties, until the mouse cursor is hovered on the curve.
  • Fixed #7253: Drag/dropping external files inside the content-browser (such as .pkkg files) is not reliable, randomly fails and does nothing.
  • Fixed #7228: Changing an external file containing templates which declare attributes without re-saving all effects that use those templates causes a runtime crash when trying to run the baked assets
  • Fixed #7262: Upgrader: Incorrect handling of Unicode BOM headers if .pkproj of .pkfx files have been manually saved by an external text editor which inserted a BOM header.
  • Fixed #7285: UE4: TransformVector and TransformPosition nodes do not work for mesh particles when source/destination is set as “Mesh particle space” in UE4.25 and higher
  • Fixed #7284: UE4: VAT materials do not properly support orientation / scale
  • Fixed #7275: UE4: Distortion material isn’t two sided
  • Fixed #7269: UE4: Occasional crashes when unloading level
  • Fixed #7246: UE4: Diffuse ramp feature doesn’t match PK-Editor implementation
  • Fixed #7344: Unity: Expose audio callback to users
  • Fixed #7061: Unity: Move Color property names to Factory into Material bindings
  • Fixed #7062: AE: emitter position in 3d space doesn’t match with AE


Changelog 2.8.5 patch

Builds (Mar 11th 2021)


  • Fixed #5760: Occasional crash in effect compiler
  • Fixed #7191: Improve efficiency of ‘effect’ accessors when there’s a single effect instance per simulation wave: effect.age, effect.lodBias, effect.isRunning, effect.isRenderingEnabled, effect.orientation, effect.axis*…
  • Fixed #7186: Perf: Particle BoundingBox computations always fall-back to slow codepath even when no particles are explicitly disabled.
  • Fixed #7090: Editor install: add “Install” menu when right-clicking on an editor version in the version list
  • + Various C++ SDK fixes


Changelog 2.8.4 patch

Builds (Feb 26th 2021)


  • Fixed #7000: Optimizer: Will sometimes incorrectly replace < by <=, > by >=, and vice-versa, causing subtle bugs: for example breaks the draw-number template when the input is a compile-time constant.
  • Fixed #6975: Optimizer: float->int conversions cause incorrect range-propagation, unexpectedly breaks some effects (ex: draw-number template when the input is a compile-time constant)
  • Fixed #7031: Optimizer: ‘shape.position’ function/node is incorrectly seen by optimizer as returning a position whose XYZ components are always positive
  • Fixed #5725: Optimizer: ‘shape.project’ function/node is incorrectly seen by optimizer as returning a distance in the [0, +inf[ range instead of ]-inf, +inf[, causes LimitDistance template to break in some cases
  • Fixed #6528: Editor: Instant crash when opening any effect on some Mac hardware
  • Fixed #6981: Adding a dxdF node breaks graph compilation
  • Fixed #7032: Nodal editor: Node creation dialog displays incorrect search keywords in the tooltip when hovering nodes
  • Fixed #6976: Node creation dialog: Node ordering is incoherent when typing “color”
  • Fixed #6982: Logfile: html logfile forces windows-1252 charset, doesn’t properly display logs containing text in cyrillic, japanese, etc…
  • Fixed #6967: Effect treeview: Copying a template from the template treeview and pasting it inside a graph does nothing visually (shouldn’t), but creates an undostack action, and adds all the copied nodes to the pkfx file (visible on Ctrl+S)
  • Fixed #5489: Effect treeview: Pasting a template behaves badly when what’s copied isn’t a template: Does nothing visually, but inserts an action in the undo-stack, and leaves dangling nodes in the pkfx file.
  • Fixed #7037: LY: Collision Filters not working
  • Fixed #7035: LY: PhysX collisions not working in Editor Simulate and Game modes
  • Fixed #7033: LY: Emitter components invalidate property display even when not selected


Changelog 2.8.3 patch

Builds (Feb 11th 2021)


  • Fixed #6855: CPU sim: scene.orientationFromForwardUp() has poor performance
  • Fixed #6907: Effect Editor: Timeline panel is unresizable from the bottom
  • Fixed #6489: Effect Editor shows negative timings in layers simulated on GPU
  • Fixed #6414: Nodal editor: Exec stage color not propagating when async-compiles are disabled
  • Fixed #6955: Nodal editor: F1 show documentation: Does not work for builtin nodes
  • Fixed #6966: Nodal editor: ‘neg’ node does not appear in node search when ‘-‘ is typed (but ‘sub’ and ‘one minus’ nodes do appear)
  • Fixed #5923: Nodal editor: Weird ordering in node creation dialog when typing ‘-‘
  • Fixed #5752: Nodal editor: Layergraph-only nodes have ‘Exec Frequency’ and ‘Exec Stage’ displayed even though it’s ignored
  • Fixed #5880: Nodal editor: Constant node values are not displayed if node has a CustomName
  • Fixed #6881: Content browser: Regular freezes of a couple of seconds when opening projects, when the project launcher has lots of projects (15+)
  • Fixed #6381: Content browser: Closing content-browser before thumbnails have finished loading causes a crash
  • Fixed #6906: Content browser: Unfriendly default layout on first install
  • Fixed #6926: Editor: baking effects fails if effect contains dependencies on resources with forbidden resource extensions
  • Fixed #6957: Editor: Pre/Post version control actions are applied even if UseVersionControl is disabled
  • Fixed #6956: Editor: crash when effect is analyzed and it contains an incompatible resource plugged into a sampling node
  • Fixed #6905: Editor: When bashing the double-click on an asset and the machine is laggy, the editor ends up opening multiple instances of the effect editor for this asset.
  • Fixed #6880: Editing & translating localized texts in-editor is almost impossible (ex: node custom names & descriptions)
  • Fixed #6876: Editor: crash when modifying .pkcf file on disk if a folder has the same name
  • Fixed #6874: Editor: crash when importing meshes without materials but geometry
  • Fixed #6873: Editor: instant crash when opening an effect and D3D GPU simulation couldn’t be initialized
  • Fixed #6228: Editor: cannot import packages containing .fbx files with an attached .pkcf config file
  • Fixed #6878: User & project settings do not properly remember which categories were expanded or minimized
  • Fixed #6853: UE4: custom blueprint nodes warnings when compiling blueprint in 4.26
  • Fixed #6852: UE4: Crash when effect import fails
  • Fixed #6321: UE4: Changing source effect on emitter does not trigger details panel refresh, leading to crash
  • Fixed #5053: UE4: Reimporting a mesh currently used for a popcornFX renderer crashes UE4
  • Fixed #4159: UE4: D3D12 GPU sim texture attribute sampler crash when moving blueprint instance in level with attribute sampler as component
  • Fixed #3552: Unity: Cannot override attribute sampler texture density
  • Fixed #6495: Unity: Add Information to failed gamma space change when importing dds for distortion
  • Fixed #4307: Unity: Ramp texture attribute returns the wrong colour at u = 1
  • Fixed #4034: Unity: Import panel doesn’t close on its own
  • Fixed #2694: Unity[Legacy]: Distortion doesn’t render if there’s more than one Camera in the scene
  • Fixed #6902: LY: Do not set process priority in the gem
  • #6893: LY: bind scene.sampleWindField sim interface instead of LmbrWind
  • #6846: LY: Wind with PhysX
  • #6959: Editor: Add Lumberyard “new project” preset
  • Fixed #6896: AE: Attribute image sampler density – runtime changes of source texture assert on dimensions.
  • Fixed #6777: AE: Attribute not being applied if the effect is played again
  • Fixed #6775: AE: Automatic set Emitter transform Position to be in the middle of the comp
  • Fixed #6774: AE: Crash when clicking reimport on a PKFX emitter if it hasn’t been set.
  • Fixed #6751: AE: Wrong Version information when clicking on about in the emitter
  • Fixed #6858: AE crashes when clicking on sample once in texture sampling attribute


Changelog 2.8.2 patch

Builds (Jan 28th 2021)


  • Fixed #6478: Per-layer LOD metric overrides are broken if the per-effect override isn’t explicitly enabled
  • Fixed #6783: GPU sim: LOD metric is not working properly
  • Fixed #6763: GPU sim mesh renderers: Does not clamp MeshIDs like CPU sim, causes some effects to break down
  • Fixed #6510: GPU sim: crash when connecting shape node into ShapeSample node
  • Fixed #6784: GPU sim: sim.lodQueryPoint does not work, always returns ‘0’
  • Fixed #6061: GPU sim: Fp32Lum textures are sampled as red, Unlike CPU sim which samples them as luminance/grayscale.
  • Fixed #6532: Texture sample color space discrepancy when using BGR8 textures (jpg, png without alpha, or any other format with uncompressed 8-bit channels and no alpha)
  • Fixed #6146: GPU sim: ‘drawVector’ corelib template does not draw anything
  • Fixed #6523: Random crashes when content browser analyzes assets
  • Fixed #6828: Random crashes when compiling nodegraphs
  • Fixed #6729: Crash in some projects configuration when editing renderer after associated .pkri was opened/closed
  • Fixed #6524: Crash when re-opening an effect after it was closed, if some renderers reference material paths with different casing than on-disk files
  • Fixed #6491: Details view: Occasional crash when adding a new column in the settings
  • Fixed #6490: Details view: Resizing a column sometimes crashes the editor
  • Fixed #6768: Closing the editor on larger projects takes a very long time (the process can stay up for more than 1 minute while writing the AssetRegistry.pkbo file)
  • Fixed #6733: Uniform textures are incorrectly constant-folded when they have formats Fp16Lum, Fp16LumAlpha, Fp32LumAlpha, or LumAlpha8
  • Fixed #6732: Uniform BGR8 textures are incorrectly constant-folded
  • Fixed #6546: Asset > Show Dependencies: Case-sensitive, misses dependencies which do not have a correct casing
  • Fixed #6531: Occasional assert when compiling graphs that contain ‘isfinite’ or ‘isinfinite’ tests
  • Fixed #6530: Occasional assert when compiling graphs that contain a reinterpret between quat <–> float4 (uses ‘asorientation()’)
  • Fixed #6527: Editor: Casing changes are ignored when editing file paths in property grid
  • Fixed #6522: Thumbnail: envmap color not properly set when capturing for the first time.
  • Fixed #6520: Material editor: shaders do not compile if a rendering feature property of type ‘Link’ has a CategoryName with spaces or tokens unauthorized in the shader language
  • Fixed #6519: Export package: When exporting two effects that reference the same dependency, but with different filename casings, adds the same file twice to the archive.
  • Fixed #6477: Nodal editor: Hard to hover wires & insert nodes when zoomed out
  • Fixed #6476: Nodal editor: Tooltips on event wires show event named with an internal “__e_” prefix, unnecessary, disturbing.
  • Fixed #6159: Give user some feedback when opening an effect editor window takes a long time (usually waiting for GPU sim compute-shader compilation): Pop a progress window
  • Fixed #6123: Nodal editor: Ctrl+G does not forward auto-export flags to final node. Breaks graphs.
  • Fixed #5949: Nodal editor: Tooltips do not stay up long enough
  • Fixed #5903: Improvements of the compilation time of nodegraphs, notably when a Trail template is used
  • Fixed #1117: Nodal editor: Add a ‘Recompile’ button when in ‘Developer’ mode
  • Fixed #6467: UE4 plugin: Crash when using launching game in editor with New Editor Window (PIE)
  • Fixed #6498: Unity plugin: Baked pkmm is not outputed to the correct directory
  • Fixed #6496: Unity plugin: Implement Prewarm
  • Fixed #6507: Unity plugin: Remove Broadcasted Event description from PKFxEmitter
  • Fixed #6503: Unity plugin: Add Stopped()
  • Fixed #6502: Unity plugin: PKFxEmitter: Add getter to attributes properties
  • Fixed #6501: Unity plugin: Add an easier GetAttribute()
  • Fixed #6499: Unity plugin: PKFxEmitter should expose an easier way to set it’s asset
  • Fixed #6493: Unity plugin: error when importing pkmm dependencies: Unsupported PKMM file version
  • Fixed #6480: Unity plugin: Refactor C# code to clarify what is internal and what is an exposed API
  • Fixed #6447: Unity plugin: Provide PopcornFX Unity plugin as an Unity package
  • Fixed #6845: LY plugin: Disable deprecated CryPhysics
  • Fixed #6772: LY plugin: Effects not working in editor mode after an hot reload in game mode
  • Fixed #6484: LY plugin: Helper Loop Emitter component doesn’t kill in game mode
  • Fixed #6463: AE plugin: Envmap image type is locked to .dds, .hdr plugin is not loaded.


Changelog 2.8.1 patch

Builds (Jan 14th 2021)


  • Fixed #6023: Effect interface: Crashes when hovering while async compile is in progress (async compiles are disabled by default in v2.8.0)
  • Fixed #6399: Can set negative life in ‘SetLife’ node, produces buggy simulations
  • Fixed #6407: Curve editor: Crash when swapping curve channels when curve is in ‘Linear’ mode and has more than 3 control-points
  • Fixed #6406: Curve editor: Add ‘Reset tangents (flat)’ option to reset tangents to 0
  • Fixed #6405: Curve editor: ‘ResetTangents’ resets all the tangents instead of only the selected control-points
  • Fixed #2787: Curve editor: Doesn’t show Min/Max value limits in the curve editor viewport (even though runtime correctly takes them into account in the simulation)
  • Fixed #6379: GPU sim: Some shape functions are broken
  • Fixed #6459: GPU sim: Random crash in effects with lots of GPU sim layers
  • Fixed #6380: GPU sim: Random compiler crash when using ‘box.project()’ or any node that performs projection on a shape of type ‘box’
  • Fixed #6451: Occasional crash with decal renderer
  • Fixed #6404: Double-clicking in a numeric inputbox does not select the entire value
  • Fixed #6362: Material editor: custom materials without “Opaque” or “Transparent” rendering features aren’t rendered
  • Fixed #4176: Editor sometimes writes corrupt files when writing in text format
  • Fixed #6364: UE4: Light particles cannot affect volumetric fog (requires to use UE4_Light material from Content Examples project)
  • Fixed #6450: UE4: Volumetric fog default material (requires UE4_VolumetricFog material from Content Examples project)
  • Fixed #6363: UE4: Only lights from a single renderer are displayed when several light renderers are present in the scene
  • Fixed #6460: UE4: GPU simulated effects fallback on CPU sim


Changelog 2.8.0

Builds (Jan 7th 2021)

Assets & core-lib

  • #5685: ‘remap’ node: Allow inline-editing min/max inputs, without having to create constant nodes.
  • #5640: ‘vrand’ node: Add “Scale” property to allow quickly scaling the output beyond a radius of 1.0
  • #5785: Add ‘Spawn on Texture’ master-template
  • #5784: Add ‘Spawn on Mesh’ master-template
  • #5745: Add ‘MeshSample’ master-template
  • #5787: Add ‘TextureSampleNormal’ and ‘TextureSampleDisplacement’ helper nodes
  • #6154: ‘ShapeSample’ & ‘MeshSample’ nodes: Expose position/orientation/scale helper input to easily transform the output sampled data
  • #5815: ‘EventMultiplier’: Add LOD controls
  • #5750: ‘EventMultiplier’: Add “RandomCount” control
  • #5645: ‘EventMultiplier’: Change the default values so it’s faster to setup in the most common case
  • Fixed #5911: ‘Physics’ & ‘TurbulenceSample’ nodes: Cannot scale vector-field, ‘Scale’ property is in fact the scale of the output vector (ie: a ‘Strength’), not the scale of the actual field
  • #5646: Add new high-level ‘Physics’ template that encapsulates most common “physics” behavior: the old “Physics” node, wind controls, and collision
  • #5741: ‘Collision’ node: Remove top limit of 255 maximum bounces
  • #5649: ‘Collision’ node: Add missing inputs & outputs: ‘Localspace’ input when colliding with a shape, and CollisionPos/Normal + Hit fraction outputs
  • #5734: ‘scene.intersect’: Make it a sim interface so it can be overridden in the GPU sim + expose sphere sweep parameters
  • #5724: ‘Attractor’ template: add way to dynamically offset & rotate the attractor
  • #5643: ‘LimitDistance’ template has no builtin ‘Localspace’ property
  • #5642: ‘Containment’ template has no builtin ‘localspace’ toggle, should be in localspace by default.
  • #5654: ‘blackbody’ node: Add a temperature unit property to tell which units the input temperature is in
  • #5673: Add new ‘toFloat’, ‘toInt’, and ‘toBool’ cast helper templates
  • #5639: ‘asInt’ and ‘asFloat’ nodes are error-prone for artists: Rename them to the more explicit ‘reinterpret.asInt’ and ‘reinterpret.asFloat’
  • #5641: Improvements over the board: Add missing descriptions, search keywords, more outputs on some nodes, etc…
  • #5888: Simulation interfaces: Unify ‘scene.sampleWindField’ with ‘scene.intersect’
  • #5996: Corelib & scripts: ‘sim’ namespace: Add ‘isRunningOnGPU’ node & script function
  • #5995: Rename ‘self.isDeterministic’ to ‘sim.isDeterministic’, more consistent with what it represents
  • Fixed #5797: Template: ‘drawVector’: Cannot change material blending mode & distance sorting settings, unlike ‘drawLine’


  • #5682: Export nodes: Allow to expose a list of multiple “allowed” types, not just `auto`
  • #5461: Support for multiple inputs for basic math nodes: add, mul, min, max, or, and, …
  • #4936: Events payload extract nodes now automatically extract from the parent payload when the node has nothing wired into its ‘parent’ input
  • #5370: Add node to lerp between orientations
  • Fixed #5738: Using a node that internally contains a sim interface inside the layergraph, and wiring it into a layer’s input data pin works, but still displays an error.
  • Fixed #5287: Incorrect resolution of some output pin types
  • Fixed #5278: all orientation nodes & functions are reporting a [-inf,inf] range, instead of [-1,1]
  • Fixed #5277: all view.axis* nodes are reporting a [-inf,inf] range, instead of a normalized unit-vec range. Prevents some optimizations from happening
  • Fixed #2389: Nodegraph: Construct 3D Vector node triggers errors when set to SUF_RightHanded or SFU_LeftHanded mode

Nodal editor

  • #5860: Annotations: Allow scaling overall annotation size, to make smaller, or larger, annotations + Add “post-it” display mode
  • #5506: Allow drag & dropping assets from the content-browser or OS explorer into the nodal editor to create new resource (sampler) nodes, or on existing resource nodes
  • #5859: Do not display “ExecFrequency” and “ExecStage” for nodes where they have no effect
  • #5324: Detect what type of graph we’re in, and show the info to the user with a visual clue
  • #5325: Node creation dialog: hide inappropriate node types based on the type of graph we’re currently viewing
  • #4439: New Localspace/Worldspace view
  • #6124: When grouping nodes, look at what nodes are grouped, and automatically set the new subgraph’s ‘ClassType’ based on what nodes are being grouped
  • #5950: Nodal editor: Add option in user settings to display all inline pin values even when they are zero
  • Fixed #5743: Creating an input or output node by dragging a wire from an existing pin copies all properties, except the pin description
  • Fixed #5742: Nodegraph tooltip formatting: When using <ul> and <li> to format lists in descriptions shown in tooltips, using newlines messes up the final formatting
  • Fixed #5719: Deleting a node does not properly rewire inputs to outputs like Ctrl+T does (ignores the “PassthroughInput” property of output pins)
  • Fixed #5665: Occasional crash when hovering an event wire
  • Fixed #5845: Ungroup nodes: Does not behave properly with auto-exported properties (special case with pins)
  • Fixed #5739: Ungroup nodes: Does not behave properly with auto-exported properties
  • Fixed #5727: Using the mouse “back” button too fast registers as a double-click and opens the node under the cursor instead of going back twice
  • Fixed #6153: Pulling a wire out of a pin which already has something wired in and popping the node creation dialog does not show all the nodes that can be wired in
  • Fixed #2596: Unplug pin on construct Vec3 generate compile error while baking
  • Fixed #6034: Wire highlight ignores the “Passthrough input” property of output nodes when walking back nodes
  • Fixed #5953: Nodal editor: Hovering wires is hard to see, improve highlight feedback visibility
  • Fixed #5952: Nodal editor: Add more options in user settings to control pin value display


  • #5421: Effect prewarm (/ pre-roll / warmup)
  • Fixed #5886: Curves in non-exact mode (faster, low-quality sampling) fallback to full precision exact mode when sampled with a wave-constant value.
  • Fixed #5792: Texture sampler: ‘dimensions()’ getter doesn’t work if the image isn’t sampled.
  • #6058: CPU sim: Constructing a float2 vector from two float values is slow.
  • Fixed #5766: Unnecessary overhead when particles with side-effects die (since v2.4.0)
  • Fixed #5958: Sampling UV2PC from a mesh whose texcoords for an empty rect induces a MASSIVE performance hit.

Simulation: GPU

  • #5355: GPU sim: implement sorting for vertexbb billboard particles in editor
  • Fixed #4996: GPU Sim: regenerating compute shader source at runtime creation generates longer load times
  • Fixed #4837: GPU sim: Inaccurate bounding boxes for billboards
  • Fixed #5816: GPU sim: DataGeometry input node causing fallback to cpu
  • Fixed #5956: GPU sim: Instant crash in compiler when using ‘shape.type()’ in a GPU layer
  • Fixed #6152: GPU sim: Shape sphere: Ignores shape rotations.
  • Fixed #6151: GPU sim: Shape ‘sampleNormal’ does not properly take into account shape transforms for most shape types
  • Fixed #6150: GPU sim: Shape sampler ellipsoid: Sampling normals falls cause a shader compile-error and falls back to CPU sim
  • Fixed #6149: GPU sim: Shape sampler cylinder: Normals sampled in ‘surface’ mode with a nonzero inner-radius are messed-up and randomly flipped
  • Fixed #6148: GPU sim: Mesh sampler: sampled normals are incorrectly scaled by mesh scale.
  • Fixed #6147: GPU sim: Shape sampler ellipsoid: Normals are incorrect when ellipsoid scale is not uniform
  • Fixed #6145: GPU sim: Shape sampler cylinder: Instant crash at graph compile time / baking, when sampling normals.
  • Fixed #6141: GPU sim: Cone volume sampling is broken, samples a pseudo-cylinder
  • Fixed #6140: GPU sim: Cylinder volume sampling reverses parametric coordinates X and Z coordinates, making it incompatible with CPU sim & other pcoords manipulation functions
  • Fixed #6139: GPU sim: Cone volume sampling uses broken parametric coordinates layout, incompatible with CPU sim & other pcoords manipulation functions
  • Fixed #6137: GPU sim: shape.buildPCoords* functions & nodes are not supported, and fallback to CPU sim
  • Fixed #6131: GPU sim: Cone sampling fallsback to CPU
  • Fixed #6130: GPU sim: Sampling a mesh coming from an inline property emits incorrect compute shader code, fails compiling & falls back to CPU
  • Fixed #6068: GPU sim: Random crashes when editing layer
  • Fixed #6060: GPU sim: Texture sampler ignores ‘linear’ filter flag, always samples as point
  • Fixed #5710: GPU sim: using modulo with integers make the layer fallback on CPU when shaders are compiled with /WX
  • Fixed #5589: GPU sim D3D11: Release assert on AMD cards
  • Fixed #6127: GPU sim D3D11: Sampling anything other than ‘Position’ from a mesh is broken
  • Fixed #6063: GPU sim D3D11: Sampling BGRA4 textures cause runtime conversion & fallback to BGRA8 on load even if HW supports it.
  • Fixed #5957: GPU sim D3D11: Instant crash when sampling a texture defined through a template property
  • Fixed #5532: GPU sim D3D12: particles don’t spawn correctly with “complex” effect instancing


  • #5591: Lit and tinted distortion material
  • #3754: Add CameraSortOffset property for sorted particles as an additional sorting override
  • #6426: GPU mesh particles
  • #5675: Editor PostFX: Add FXAA
  • #5009: Editor PostFX: Add vignetting post-effect
  • #5830: Editor PostFX: Add dithering postFX
  • #5527: Materials: All .pkma files should now have a valid .frag/.vert shader path
  • Fixed #5813: Mesh renderers vertex color alpha isn’t taken into account in material shaders
  • Fixed #5705: Renderer’s DrawOrder property cannot be auto-exported
  • Fixed #5360: Materials: Atlas_SubUVs is not visible to shaders
  • Fixed #5017: Capsule aligned billboards: Incorrect ‘Size’ value, incoherent with other billboarding modes: the ‘Size’ value should be the width/height, but is used as the diagonal
  • Fixed #5773: Renderers: Wiring a float in the ‘Enabled’ pin produces a compile error
  • Fixed #6006: White editor viewport when having a triangle renderer and the billboarding-mode is geom-billboarding
  • Fixed #5869: Buggy lighting when pausing and ‘FreezeBillboardingWhenPaused’ is checked


  • #5933: Login: Remember password when checking ‘RememberMe’
  • #5386: Baked effect memory usage inspector
  • #6201: Editor baking: Allow seeing bake errors or warnings when baking from editor.
  • #5812: Ability to resave a list or all effects and templates from a project
  • #6225: “Help” menu: Add an “Advanced” entry allowing to reveal both the editor logfile, and the AppData folder, in an explorer window
  • #5768: Allow to disable corelib sim interfaces per-project, and add ‘experimental’ category in project settings to expose opt-in new features in early-access
  • #6213: User settings: External Applications: Add missing asset types
  • #5824: Editor: add AfterEffects project preset in project creation dialog
  • Fixed #5587: No user feedback on what the editor is doing when opening a project, sometimes freezes for tens of seconds, sometimes not. Now shows a progress window when it isn’t instant.
  • Fixed #5862: Editor has very poor reporting when a file has been corrupted and fails to load it
  • Fixed #6220: External applications (windows): Editor auto-detection sees some extensions as not openable, when in fact they are
  • Fixed #6219: External applications: Bad handling of unicode when displaying application pretty name in editor menus
  • Fixed #6199: Static effect dependency report: Static dependencies are not reported with the proper asset type
  • Fixed #6197: Some editor operations that process effect files (such as replacing dependencies or renaming public templates) will pop load error dialog for every effect in the project which has load errors.
  • Fixed #6188: .pkcf files which have been autosaved do not appear in recovery list
  • Fixed #6356: Project launcher: Double-clicking on a project with a higher minor version, with no more recent editor build installed, will still open the project, despite the editor UI saying it can’t be opened.
  • Fixed #6355: Project launcher: Double-clicking on a project should open the project with the current editor version if it’s a more recent _patch_ than what the project is set to
  • Fixed #5934: User settings file: Incorrectly reloaded when revision ID changes (between patches), always reuses the first one in the list when listing all settings file in the directory

Effect editor

  • #1143: Implement File > SaveAs
  • #5486: Scene properties panel: Display as backdrops treeview
  • #5348: Update backdrop transforms using gizmo
  • #5385: Asychronous graph compilation (disabled by default in 2.8.0, will be enabled by default in 2.8.1. Can be controlled in the effect editor preferences)
  • #5609: Add ‘Capture static bounds’ option
  • #5608: Add a way to visualize the effect’s static bounds
  • #5706: New renderers summary panel allowing to view renderers used in the effect and how they are batched
  • #5658: Script editor: When pasting text, replace unicode math characters with their valid equivalents in PK-Scripts
  • #5656: Script editor: Detect unsupported unicode characters such as ‘−’, ‘×’, which can happen when copy/pasting formulas from a website, and give a more comprehensible error to the user.
  • Fixed #5657: Script editor: Incorrect error highlighting placement when script contains unicode characters
  • #5294: Debugger: add buttons and shortcuts to select the next and previous particle
  • #5925: Grid should be double-sided by default
  • Fixed #5882: Texture sampler: Broken sRGB conversion on-load.
  • Fixed #5488: Effect treeview: Clicking on the root node should display the global effect properties.
  • Fixed #5855: Color picker: Hitting ‘enter’ in an inputbox should not validate & close the window, it should validate only the inputbox.
  • Fixed #5852: No way to specify procedural atlas in texture node, “U * V” atlas specification only possible in renderer nodes / materials.
  • Fixed #6062: Samplers with empty paths get constant-folded in shipping only. Prevents some layers to be dispatched on the GPU sim in-editor.
  • Fixed #5955: Simulation runtime warning messages in viewport only last one frame, very hard to read


  • #5740: Allow resetting properties which are frozen by pin-rules
  • #5671: Remember which categories have been expanded or collapsed
  • #5650: Improve UI of node output pins: Allow auto-exporting output pins + display the regular “eye” icon to toggle visibility
  • #6200: Allow opening an asset by Ctrl+clicking on its preview thumbnail

Graph compiler & optimizer

  • #5857: Samplers: Add ‘NeverOptimize’ option on node, to skip ICB/CFL optimizer passes used on static sampler
  • Fixed #5396: VRP: Cannot propagate ranges of bitwise ops when input ranges are constant (editor-only)
  • Fixed #5286: VRP: rgb2hsv() and hsv2rgb() have poor handling of output ranges
  • Fixed #5283: VRP: ‘blackbody()’ function has incorrect output range of [0, +inf], instead of [0, 1]
  • Fixed #5281: VRP: No handling of functions tan(), asin(), acos(), atan(), and atan2()
  • Fixed #5284: Optimizer: ICB: Various missed optimizations
  • Fixed #6072: Optimizer: Fails to properly collapse some redundant xform calls
  • Fixed #5853: Image sampler: Optimizer crash when ‘remapDensity’ is called with a non-constant filter mode
  • Fixed #6036: Compiler: VRP of % operator is broken for floats
  • Fixed #5791: Constant sampler folding in shipping doesn’t work when sampler is defined via a property
  • Fixed #5799: Texture ‘sampleDensity’ or ‘remapDensity’ calls are not optimized-out when the texture is empty and the filtering is set to ‘point’
  • Fixed #5802: ‘remap’ function: Incorrect handling of ‘int’ inputs
  • #5285: CPU VM backend: strength reduction pass: Detect & simplify `select(0, x, b32)` to `and(x, b32)`

Plugins & Third-Party

UE4 plugin

  • #4060: UE4: Chaos integration
  • #6335: UE4: CollisionFilters system rework
  • #6336: Editor: Add UE4 collision filters when creating a UE4 project

Lumberyard plugin

  • #5899: LY: Attribute Categories
  • Fixed #5715: LY: Crash when using custom mesh materials with material groups
  • Fixed #5798: LY: Cannot start effect if the attribute sampler is not overriden
  • Fixed #5788: LY: Crash when quitting game mode with an effect sampling parametric coordinates
  • Fixed #6331: LY: crash after e_particlesQuality change
  • Fixed #6330: LY: Sounds doesn’t stop
  • Fixed #5841: LY: Show/Hide entity in treeview doesn’t work
  • Fixed #5749: LY: Attributes with Color semantic should be editable using a color picker
  • Fixed #6224: LY: mesh override not woking with opacity
  • Fixed #5893: LY: Audio trigger doesn’t stop after exiting game mode
  • Fixed #6004: LY: Effect movement lag on fast camera movement
  • Fixed #6025: LY: e_particles shouldn’t disable PopcornFX particles

After-effects plugin

  • #5960: AE: Added Reimport button in emitter interface to hotreload effects
  • Fixed #5838: AE: Reloading Fx doesn’t refresh it if new version is available


  • Fixed #6215: Some upgrades do not properly process files in projects where all paths are forced to lowercase or uppercase
  • New upgrader @ User settings: Renamed various properties
  • New upgrader @ Layer nodes: All layers must now have their sub-graphs be of class ‘event’
  • New upgrader @ Unify meaning of ‘Size’ property between capsule billboards and other billboard types
  • New upgrader @ Transformed ‘Scene’ panel into a backdrop treeview: Split scene settings into backdrop objects
  • New upgrader @ All feature-set files (.pkma) must now have a non-empty .frag path
  • New upgrader @ Unified backdrop ‘Enabled’ properties
  • New upgrader @ Removed legacy static bounds properties
  • New upgrader @ Collision node improvements
  • New upgrader @ Remove generic ‘Data’ data-type in nodegraph nodes
  • New upgrader @ CoreLib template improvements: orientation.fromAxisAngle
  • New upgrader @ Move ‘DrawOrder’ into ‘Transparent.GlobalSortOverride’ material property
  • New upgrader @ Texture node: Add ability to specify a procedural UxV atlas
  • New upgrader @ Multiplier node: Added ‘SpawnCountRandom’ property
  • New upgrader @ User settings: Updated settings
  • New upgrader @ Node property renames
  • New upgrader @ Effect backdrop: Now off by default if the grid size is 1×1
  • New upgrader @ Backdrop: Renamed properties
  • New upgrader @ Corelib sim interface renames
  • New upgrader @ CoreLib template renames, cleanups, and uniformization
  • New upgrader @ Add new Core Shader Particle_Master.frag
  • New upgrader @ Per effect instance time-scale: Replaced ‘self.isDeterministic’ by ‘sim.isDeterministic’
  • New upgrader @ CoreLib template renames

Content examples update

New “Tutorials” & “Samples” effects