PK-Editor v2.18

From PopcornFX
Jump to navigation Jump to search

Back to anouncements
Released Sep 19th 2023.
Make sure you upgrade your runtime / plugins as well before switching to this version.

Release highlights

Tube Ribbons Multi-plane Ribbons New Corelib nodes
Tube Ribbons Multi-plane Ribbons New Corelib nodes

PopcornFX 2.18 release highlights livestream

The full sources of the UnrealEngine, Unity, and O3DE plugins are freely available on github:

Source code is available for everyone, can be freely used, modified and shared under the Community License terms.
Note: UE4 & UE5 plugin archives are provided as 7z archives for better compression. They can be extracted using 7zip.


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.18.6.20542_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.18.6.20542_x64.pkg (Latest) NewIcon.png
PopcornFX-Editor_v2.18.6.20542_x64.tgz (Latest) NewIcon.png

Changelog 2.18.6

Builds (Mar 27th 2024)

  • Fixed #13433: Changing the query mode of a spatial-layer node makes the nodegraph fail to compile
  • Fixed #13431: GPU Sim: Baked effects have their GPU newborn kernel aliased with the evolve kernel, inducing various issues on the GPU simulation
  • Fixed #13359: GPU Sim: GPU layers may report a large number of dead particles, leading to various effect-instance issues
  • Fixed #13305: GPU sim D3D11: Cannot have more than 1024 effect instances
  • Fixed #13414: Rendering: Multi-plane ribbon atlas incorrect with multiple instances and customU.
  • Fixed #13294: Image sampler: remapDensity in 'Linear' mode sometimes returns invalid UVs containing infinities
  • Fixed #13302: Nodal editor: Crash when copy-pasting a layer with attributes in the effect graph and waiting for the auto-save to kick in without validating the warning window that pops-up on paste.
  • Fixed #13368: Editor: Crashes when closing two effect editors that use the same skeletal mesh backdrop, when both were opened side to side
  • Fixed #13295: Memory report of an effect using sampleDensity or remapDensity is incorrect, reports a much lower size than is really used for the texture density mapping lookup
  • Fixed #13254: Attributes: Crash when changing the Attribute 'ExportedType' from the effect interface
  • Fixed #13201: Editor: Right-click 'Rename' on an attribute pops the rename dialog twice
  • Fixed #13286: Mesh importer: UV panel sets itself up with the union of the bounds of all UV sets, instead of the one being currently viewed, makes it hard to navigate when some UV-sets are wildly out of the [0,1] range
  • Fixed #13208: Unreal plugin: Editor settings & source project are re-resolved & reloaded everytime the 'Settings()' accessor is called, extremely inefficient
  • Fixed #13204: Unreal plugin: Source paths in the plugin settings are always serialized as absolute path, even when a relative project path is entered
  • #13235: Unity: texture atlases for meshes in HDRP
  • #13219: Unity: UseVertexColor render feature for Meshes renderers in URP
  • Fixed #13240: Unity: DoubleSided for meshes not working with HDRP
  • Fixed #13224: Unity: TransformUVs.RGBOnly is not working properly for mesh renderers in URP
  • Fixed #13223: Unity: Renderers using different atlas subdivisions use incorrect altas definition in URP
  • Fixed #13222: Unity: Renderers with different alpha threshold have incorrect rendering in URP
  • Fixed #13221: Unity: TransformUVs.Offsets is reversed for Mesh renderers
  • Fixed #13220: Unity: Fix TransformUVs rendering for mesh renderers is broken in standalone builds
  • Fixed #13418: AE: Frames are instable and cause popping of particles when seeking quickly
  • Fixed #13030: AE: Screen aligned billboards render backwards

Changelog 2.18.5

Builds (Feb 8th 2024)

  • Fixed #13157: GPU sim D3D11: sim.lodQueryPoint returns randomly incorrect values
  • Fixed #13195: Animtrack sampler: Doesn't work at all when animtrack path is specified through an inline property, only works when using a resource node
  • Fixed #13194: Animtrack sampler: Coordinate-space conversion is messed-up for left-handed coordinate systems
  • Fixed #13170: Some animation tracks have messed-up orientations when imported in LHYUP projects
  • Fixed #13193: Animtrack sampler: Hot reload does not work
  • Fixed #13192: Animtrack backdrop: Transforms of effect instances are not coordinate-frame independent for rotations, wrong for most coordinate systems except RHYUP
  • Fixed #13167: Animtrack backdrop: Add an option to teleport the effect when the animation loops
  • Fixed #13168: Content browser: When assets only have an animated thumbnail captured and no static thumbnail, display one of the frames of the animated thumbnail as the static thumbnail.
  • Fixed #13132: 'Edit > Clear All Cache' is supposed to pop a confirmation dialog, instead silently trashes all cache without asking anything
  • Fixed #13186: Incorrect native structure size for Raycast command
  • Fixed #13156: Unity: Use Material override on Mesh renderer shader to handle double sided render feature
  • #13155: Unity: Implement TransformUVs for shadergraph in URP
  • #13154: Unity: Implement TransformUVs for Meshes renderer in URP
  • Fixed #13151: Unity: Fixed Error log 'Failed to create Texture' when importing an effect into Unity 2022
  • Fixed #13150: Unity: Fixed Error log 'Unable to import newly created asset' when importing package into Unity 2022
  • Fixed #13142: Unity: Mesh renderers with VATs don't have their properties correctlty set.
  • All v2.15.18 LTS fixes:
    • Fixed #13179: Unity: Renderers using different atlas subdivisions renders incorrectly
    • Fixed #13176: Unity: boolean return values are broken in native call with Il2CPP scripting backend
    • Fixed #13127: Unity: Rendering issues if the bounds of the effect are static

Changelog 2.18.4

Builds (Jan 11th 2024)

  • Fixed #13090: GPU sim: Mesh samplers where the mesh path is specified inline sometimes return incorrect values for the vertex count & triangle count, might produce some sampling artefacts too. Mesh samplers specified through a shape node do not have the problem.
  • Fixed #13118: Image sampler: In CPU simulations, specifying an inline texture in the propertygrid, without a resource node, will sometimes cause sampling to fail and return black texel values
  • Fixed #13125: Tooltip of attribute nodes is unhelpful, does not mention attributes at all, mentions export nodes used to expose pins or properties.
  • Fixed #13123: Nodal editor: Layergraph warnings about unpinned attribute samplers are not properly updated
  • Fixed #13108: Content-browser: When a layer of an effect has a compile error, the actual error isn't displayed anymore, only an unhelpful "Failed building layergraph" message appears
  • Fixed #13094: Curve editor: When selecting multiple control-points and entering an expression in the time/value/tangent inputboxes, the same value is set on all control-points, should apply to each control-point separately.
  • Fixed #13093: Curve editor: Selecting multiple control-points and clicking in a value or tangent inputbox then unfocusing the inputbox without making any changes often forces all control-points to have the same value
  • Fixed #13092: Editor: Using "Value" when typing an expression in the numeric input-boxes (propertygrid, curve editor, slider right-click, etc...) causes garbage results to be produced. Should instead reference the initial value before the expression was entered.
  • Fixed #7731: Editor: no errors displayed when opening assets and the associated window fails to be created for any reason
  • Fixed #13104: AE: Add button to bring effect into current camera view
  • All v2.15.17 LTS fixes since v2.18.3:
    • Fixed #13114: Script editor: Changing the font size with the mousewheel marks the script as modified
    • #13198: Unity: early out to reduce runtime overhead when no particles are simulated
    • Fixed #13100: Unity: Incorrect mesh texture atlas in URP
    • Fixed #13097: Unity: Sort offset don't work for Mesh renderer in URP

Changelog 2.18.3

Builds (Dec 14th 2023)

  • Fixed #13014: GPU VectorField sampler fails when the vector-field comes from an asset specified in a property instead of a vector-field node
  • Fixed #13037: GPU Vector-fields: sampling is offset by half a cell/voxel when sampling external vector-fields (.FGA files), causes inconsistencies with CPU sampling & border clamping doesn't work as expected
  • Fixed #13079: GPU sim D3D12: Particles are not updated when there is no newborn (integration-samples only)
  • Fixed #13087: GPU sim D3D12: Editor memory reports are incorrect for D3D12 GPU sim layers
  • Fixed #13074: GPU sim D3D12: Memory stats for GPU-simulated layers do not properly report the attribute-related GPU memory used, always report 0 (works in D3D11)
  • Fixed #13049: GPU sim: Sampling a curve that is used as a spatial layer query kernel causes the GPU compile to fail & fallback to CPU
  • Fixed #13043: GPU sim: change F32 VectorField internal 3D texture format from R32G32B32_FLOAT to R32G32B32A32_FLOAT to get proper filtering & possibly better perf
  • Fixed #8543: Attribute samplers: CDF for curve attribute-samplers does not work when used with vrand() or a spatial kernel query
  • Fixed #13083: Curve optimizer: Replaces curve sample by fourier expansion even when it is slower than the actual sampling: Should not.
  • Fixed #13045: Compiler: VRP pass was not working on external vectorfields that were defined in an inline property instead of using a vectorfield node, always returned max range for the sampled vectors
  • Fixed #13067: Nodal editor: Event wire animations are broken and jitter a lot, looks bad / bugged.
  • Fixed #13062: Nodal editor: When dragging a wire and panning the graph view using right-click, if the right-click inadvertently happens on a node pin, it will (unexpectedly) plug the link and pop a right-click menu
  • Fixed #13081: AE: Suffix vault folders to avoid colliding projects names
  • All v2.15.17 LTS fixes:
    • Fixed #13038: Animated CPU vector-fields: Crash when disabling 'WrapTime' on a VF sampled in 'point' mode, and the provided time goes out of bounds
    • Fixed #13057: Nodal editor: Annotations incorrectly use their invisible titlebar to include nodes, instead of the actual displayed annotation rectangle
    • Fixed #13056: Nodal editor: Occasional crash when Ctrl+X-ing a bunch of nodes that contain passthrough nodes
    • Fixed #13086: Unity: Alpha remap cursor is sync beetween mesh instances

Changelog 2.18.2

Builds (Nov 30th 2023)

  • Fixed #13034: GPU Sim D3D12: fix timing queries
  • Fixed #12984: CPU simulation: Optimize some frequently used swizzle instructions: .x00, .0x0, .00x, .000x, .111x, .xyz0, .xyz1 -> 4x faster than before
  • Fixed #13036: Vector-field importer: Add option to force a specific value on all vector-field borders (for example zero), helps to make particles outside the VF bounds to not be affected by the field
  • Fixed #12212: UnrealEngine: Use UE's task graph by default
  • Fixed #13025: AE: Set Default position of mesh backdrop to emitter position
  • Fixed #13018: AE: Mesh backdrop transform are not updated correctly when 'Enable Collision' is on
  • Fixed #13016: AE: Add EffectCallGeneric support to get additionnal information about an emitter
  • All v2.15.16 LTS fixes:
    • Fixed #13007: builtin time & dt values at spawn have incorrect sub-frame values, causes visual glitches & holes in particle jets that should have been smooth
    • Fixed #12981: Mesh viewer: KdTree & UV2PC infos in memory viewer panel are incorrect when mesh has LODs for LODs > 0, always displays the LOD0 values
    • Fixed #12992: UnrealEngine: Random crash when material gets destroyed while effect is still running
    • Fixed #12986: Unity: Color attributes have wrong values in the color picker
    • Fixed #13008: Unity: Null reference exception if the distortion renderer have an invalid material
    • Fixed #12974: Unity: Null reference exception when material factory have invalid entries
    • Fixed #12988: Unity: fix crash on mesh renderer dependencies missing
    • Fixed #13033: Unity: use material override to support more blending modes
    • Fixed #13005: Unity: Opaque billboards ignore vertex color alpha
    • Fixed #12991: O3DE: Particles does not render in release build
    • Fixed #13003: O3DE: doesn't compile with ScriptCanvas 2.0.0 changes

Changelog 2.18.1

Builds (Oct 26th 2023)

  • Fixed #12927: Rendering: Inaccurate geometry for GPU tube ribbons.
  • Fixed #12894: Rendering: Tube ribbon normals are flipped when axis system is Left-handed
  • Fixed #12952: Incorrect ICB optimization when chaining a multiplication and a comparison
  • Fixed #12902: Editor: selected/debugged tube & multiplane ribbon particles are incorrectly drawn in red
  • Fixed #12960: lag when editing a curve in a layer that contains lot of nodes
  • Fixed #12884: Documentation generator: Does not list the attributes exposed by a graph anymore
  • Fixed #12662: Memory inspector: Leaks memory
  • Fixed #12944: O3DE: Invalid hash for linux arm64 package
  • Fixed #12925: AE: Effect will fail to bake when the PopcornFX project is using 'Root Dir' option
  • #12943: Drop iOS 32bit support
  • All v2.15.15 LTS fixes:
    • Fixed #12931: Geometry artifacts with ribbons caused by deferred payloads.
    • Fixed #12247: UnrealEngine: Crash when world partitioned level is unloaded and it contains a PopcornFXSceneActor automatically created
    • Fixed #12953: Unity: Emitter has incorrect transforms if PlayOnStart is false and the emitter is moved between Start() and StartEffect()
    • Fixed #12950: Unity: SampleEffect ParallaxRaymarch & Raymarch crashes when played in Unity
    • Fixed #12945: Unity: Emitter instances of the same effect share attributes
    • Fixed #12933: Unity: dynamic batching can break render of particles.
    • Fixed #12929: Unity: Billboards with emissive color don't render correctly

Changelog 2.18.0

Builds (Sep 19th 2023)

Templates & Corelib

  • #12700: Add a new 'Ticker' template that ticks every 'n' seconds, and outputs a bool value that's 'true' on the frames where the tick happened
  • #12698: Add a 'StoreIf' node that keeps track of a value from one frame to the next and can update the value based on an input condition
  • #12695: Add a 'randpick' node that allows picking between multiple values, like the 'EventRandPick' node for events
  • #12776: Add a 'randswitch' node, does the reverse of 'randpick'
  • #12777: Rename 'EventRandPick' to 'EventRandSwitch' to unify switch/pick namings
  • #12778: 'randpick' node: allow overriding the [0, 1[ random cursor used to pick the value by a cusom value.
  • Fixed #12793: 'ShapeProperties' node does not expose shape min & max bounds
  • Fixed #12772: Physics node's 'VectorFieldSampleMode' does not behave as expected when set to 'Localspace'
  • Fixed #12701: Timer node uses 'scene.dt' and doesn't allow using 'effect.dt' instead
  • Fixed #12896: 'OrientationFromPosition' node is extremely unstable.
  • Fixed #12878: orientation.fromForwardUp returns orientation with the backward axis
  • Fixed #12826: Collision node: Using the 'EventCollide' event without using the 'ContactSurfaceType' payload in one of the child layers triggers a compiler info message saying the payload is unused

Simulation & Rendering

  • #12720: Rendering: Tube & Multi-plane ribbons
  • #11159: GPU sim: improve CPU->GPU newborns upload performance when layers have GPU spawn
  • #12751: GPU sim: Improve implementation of reverse_bits by using the proper intrinsic when available
  • #12748: Add new sim.wave.size() function, allowing to access the size of the current wave
  • #12741: Add new id) function, allowing to access the element at a specific local ID in the current simulation wave
  • #12743: Add a permute script builtin, which allows doing "dynamic swizzles": takes an integer vector containing indices, and uses it to lookup the input vector
  • #12742: Add a "switch" routing node, that does the reverse of 'pick' (the old 'switch' node), that outputs 'n' bool outputs, to be used to enable a specific renderer or node out of a list of nodes, based on an integer input
  • Fixed #12846: Curve attribute samplers that have more than 1 dimension cannot be properly sampled inside the graphs
  • Fixed #12880: GPU sim: Using most of the Shape.axis*() accessors cause the simulation to fallback to CPU if they cannot be expanded as constants during compilation (visible when using attribute samplers)
  • Fixed #12831: GPU sim: implement shape.position for Mesh sampler
  • Fixed #12841: MeshSample node used in a GPU layer with an attribute-sampler mesh causes sim to fallback to CPU because shape.type() is not implemented on GPU

Graph Compiler & Optimizer

  • #12670: Compiler: Improve exec frequencies to minimize the work done in higher-frequency sections of the graph
  • #12790: Optimizer: ICB pass: Combine redundant wave-wide boolean/bitwise ops
  • #12789: Optimizer: ICB pass: Expand 'sim.wave.sum(x)' into 'sim.wave.size_active() * x' when 'x' is not a per-particle value, but instead a per-wave or constant value.
  • #12716: Optimizer: replace consecutive 'min()' / 'max()' instructions to a single more efficient 'clamp()' instruction
  • #12714: Optimizer: Replace expressions of the form iif(a < b, a, b) or select(a, b, b < a) by the more efficient min(a, b), same for max(a, b).
  • #12808: Optimizer: remove redundant compares that are combined
  • #12704: Curve optimizer: Replace step curves by 'select' chain when number of control-points is low enough
  • Fixed #12797: Optimizer: VRP optimization leads to wrong evaluation of % operator

Nodal editor

  • #12703: Template treeview: Display local/public indicator on items of the template treeview
  • #12710: Nodal editor: Display localspace/worldspace status in pin & wire tooltips
  • #12775: Unify switch/pick namings: rename 'switch' builtin node to 'pick'
  • Fixed #12705: Nodal editor: Wires don't properly snap to pins when the pins are 'auto' with a type-mask
  • Fixed #12883: Exporting a sampler/resource node as a property from the right-click menu incorrectly adds an '_1' suffix to the name if there is an attribute with the same name used in the layer

Effect editor

  • #12628: Undo stack: Display point of last save

Editor (General)

  • #12827: Project settings: Allow specifying a list of paths or regexps the asset-picker should ignore when displaying the list of available assets
  • #12817: Project settings: Allow hiding default materials in project settings, when project has its own set of materials and the default materials shouldn't be used.
  • Fixed #12861: When detailed asset analysis is disabled, some asset pickers do not show anything
  • Fixed #12869: Content browser: When indexing animation assets for the first time, the asset details are not properly shown.

UnrealEngine plugin

  • #12900: UnrealEngine: drop UE5.0

Unity plugin

  • #12825: Unity: TransformUVs support for billboards, triangles and ribbons renderers
  • Fixed #12913: Unity: Crash with stored buffer size in the PKFXSettings
  • Fixed #12914: Unity: Invalid geometry generated for billboards in debug

All v2.17.5 fixes

Unity plugin

  • Fixed #12895: Unity: Wrong camera count if there is no emitter in the scene on load
  • Fixed #12892: Unity: missing meta file for PKFxAudioPool.cs causing issue when adding the package using git url

All v2.15.14 LTS fixes

  • #12462: Linux ARM64 support
  • Fixed #12870: Crash when disabling or deleting nodes that are inside a circular-dependent graph
  • Fixed #12866: Editor on MacOS: cannot import any package
  • Fixed #12838: Nodegraph: creating an Output node from a EventAppendPayload output link does not automatically set the node's ExportedType to 'Event'

UnrealEngine plugin

  • Fixed #12875: UnrealEngine: Plugin does not compile when project's IncludeOrderVersion is set to a specific unreal version (i.e. EngineIncludeOrderVersion.Unreal5_3)

O3DE plugin

  • Fixed #12891: O3DE: crash when using broadcast node
  • Fixed #12890: O3DE: Incorrect resource mesh path on bake

Unity plugin

  • Fixed #12871: Unity: Optimize Vulkan render api data.