PK-Editor v2.2

From PopcornFX
Jump to navigation Jump to search

Back to anouncements
Released 02 Aug 2019
The v2.2 runtime will not be able to load v1.x effects, make sure you upgrade your runtime / plugins as well before switching to this version.

Looking for version 1 of popcorn ? Go to the latest v1.x editor

Release highlights

Timeline backwards seeking & tweaking while paused Mesh atlases Builtin LOD & simulation update-rate throttling Mesh LOD using MeshID
Timeline backwards seeking & tweaks while paused Mesh atlases Builtin LOD & simulation update-rate throttling Mesh LOD using MeshID


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.2.4.59151_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.2.4.59151_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.2.3.58578_x64.pkg [Experimental]
PopcornFX-Editor_v2.2.2.57842_x64.pkg [Experimental]
PopcornFX-Editor_v2.2.1.57145_x64.pkg [Experimental]
PopcornFX-Editor_v2.2.0.56620_x64.pkg [Experimental]
PopcornFX-Editor_v2.2.4.59151_x64.tgz (Latest) NewIcon.png

Plugin status

Changelog 2.2.4 patch

Builds (Nov 5 2019)

  • Fixed #3541: Collision template sometimes misses collisions (Because there is a no-upgrader policy in patch releases, you will need to re-download one the 'Tutorials' or 'Samples' online package, and retreive the "Dynamics.pkfx" template file from there, then paste it back into your project. The upcoming v2.3.0 will have an upgrader that will patch it, in case you didn't update in this release)
  • Fixed #3276: Mesh sampling artefacts: Samples get clumped together along lines on triangle surface in deterministic layers
  • Fixed #3562: Severe perf hit when using planar or axis align billboard with constants axis and using GPU Billboarding on AMD cards
  • Fixed #3619: Effect instance orientations are ignored in effects where no multiplier node is used and where the first layer to do a transform has self-recursion
  • Fixed #3534: Package importer fails importing .pkma if imported package has RootDir modified
  • Fixed #3553: File -> Quit PopcornFX Editor hangs editor, whereas closing using the window's close button doesn't
  • Fixed #3585: Ribbon textures are flipped
  • Fixed #3596: PK-AssetBaker.exe always returns 0
  • Fixed #3603: User settings: Unusable network proxy settings
  • Fixed #3604: Content browser: tmp files not recovered when opening assets using 'right-click > Open'
  • Fixed #3616: UE4: Mesh particles with MeshAtlas disabled have invalid BBoxes

Changelog 2.2.3 patch

Builds (Oct 17 2019)

  • Fixed #3449: Optimizer: Incorrectly treats all 'dot(a, b)' operations as returning a positive result, instead of only 'dot(a, a)'
  • Fixed #3510: Events: Occasional read buffer overrun (Simulation results are still correct, but due to padding, code can read up to 32 bytes out of bounds, Can cause an actual crash in rare cases if one of those 32 bytes is located after a memory page boundary)
  • Fixed #2596: Unplug pin on construct Vec3 generate compile error while baking
  • Fixed #3518: Baking effects with local image samplers incorrectly constant-folded calls to 'sampler.dimensions()' and 'sampler.atlasRectCount()' into incorrect constant values.
  • Fixed #3450: Deleting an effect instance becomes longer and longer when there are lots of instances
  • Nodal editor: Fixed Ctrl+G bug when grouping a renderer with other nodes: Was incorrectly shuffling renderer input wires
  • Fixed #3332: Closing the package import window while it's upgrading crashes the editor
  • Fixed #3466: Seeking breaks particle debugging by re-simming
  • Fixed #3506: Nodal editor: Debugger sometimes displays incorrect value in the nodegraph
  • Fixed #3522: PropertyGrid: Cannot see template properties which have a nodal default value plugged in the template graph.
  • Fixed #3469: Crash on enabling looping for linearly interpolated curve
  • Fixed #3531: .pkri file does not report dependencies
  • Fixed #3532: Moving .pkma files in a different location break all renderers from all effects using them
  • Fixed #3311: Content browser: Trying to cleanup textures by selecting "Textures" folder, doing Shift+delete, then skipping all files that are used results in no file being deleted
  • Fixed #3334: Moving a folder does not properly patch template dependencies

Changelog 2.2.2 patch

Builds (Sep 23 2019)

  • Fixed #3379: Nodal editor: Crash when a pin gets deleted at the same frame when the tooltip of the pin shows up
  • Fixed #1280: Nodal editor : Bad discretization paths displayed on script node outputs
  • Fixed #3346: CurveEditor: Crash when editing tangents through toolbar with a linear interpolated curve
  • Fixed #3391: Login dialog: When no internet connection, will pop two login dialogs and keep trying to login indefinitely, even when connection is restored.
  • Fixed #3392: Freeze when closing editor without an internet connection, if it was launched with an internet connection.
  • Fixed #3393: Editor "Help > About" menu doesn't do anything
  • Fixed #3394: Adding perf counter in user settings and closing dialog without validating crashes
  • Fixed #3244: Effect Editor: Can't show documentation on nodes in a readonly template
  • Fixed #3016: Node update rate colors regression in color vision deficient mode
  • Linux and MacOS editor builds now display the list of updates available for that specific platform (they were displaying the list of windows installers before)
  • Fixed #3302: Orientation from forward / up: Minor inconsistencies in corner-cases
  • Fixed #3377: Crash when loading corrupt binary-baked effect, or baked with an older version of the SDK/editor
  • Fixed #3378: Nodegraph compiler: Incorrect handling of per-layer max event slots overflow
  • Fixed #3365: Planar-aligned CPU-billboards are broken when both axes are colinear
  • Fixed GPU billboarding: was not ignoring rotation on axis-stretched billboards (inconsistent with the reference CPU implementation)
  • Fixed CPU billboarding artefacts when the rotation stream was virtual (constant value)
  • Fixed #3403: Rare crash when loading binary-baked effects on platforms other than the one that baked it
  • Fixed #3405: 'SelfID' and 'ParentID' fields used for proper ribbon drawing impose a limit of 512 particle mediums and 8 million particles per medium before wrapping and causing visual rendering glitches
  • Fixed #3336: Inconsistent mesh transforms when scale and rotation are constant
  • Fixed #3427: Sim interface auto-exported inputs do not get the proper value when sim interface is overridden by C++ implem
  • Fixed #3430: Instant crash in shipping builds
  • Fixed #3434: Freeze on macOS when pinning raycast tasks to main thread only
  • Fixed #3252: Samples: GPU Billboarding not working in some specific cases
  • Fixed #3440: Local texture samplers not working in baked effects
  • Fixed various rendering issues in samples
  • Fixed #3375: UE4: Broadcasted events related asserts when quitting effect editor window
  • Fixed #3415: UE4: Random crash on render thread when rendering billboards/meshes/ribbons

Changelog 2.2.1 patch

Builds (Aug 29 2019)

  • Fixed #3243: All effects using template 'SimpleTrigger' and triggering at spawn are broken (since 2.2.0). Due to the addition of the 'lifeRatio' payload by default in all corelib event templates. Revealed a bug where event payload appends @ evolve did not work with an event triggered at spawn.
  • Fixed #3257: Template default value for data properties (textures, meshes, ...) is not properly set when instantiating the template.
  • Fixed #3227: Nodal editor: Incorrect timings reported in nodegraph (since v2.2.0)
  • Fixed #2818: Content browser: Export to package: Cannot export to a network location
  • Fixed #3310: Content browser: Deleting files doesn't delete the dependent files in the cache
  • Fixed #3274: Timeline: Edit-on-pause and timeline back-seeking ignore effect instance transforms
  • Fixed #3275: Timeline: Seeking back doesn't properly restore the random seed used for instantiation
  • Fixed #3235: Timeline: Seeking below 0 when track has a single keyframe at zero makes effect instance disappear
  • Fixed #3286: Nodal editor: Incorrect display of event node stats, exec rates, and highlighting, whenever the event wire goes into a template.
  • Fixed #3242: Nodal editor: throws "payload unused" warning when nothing is plugged in trail template
  • Fixed #1566: Nodal editor: Deleting a node creates a passthrough even if it is not needed
  • Fixed #3273: Script editor: Selecting multiple lines and indeting with 'tab' or 'shift+tab' adds an undo-redo entry per line
  • Fixed #2290: Curve Editor: Curve sometimes disappears when moving the view
  • Fixed #3283: Effect editor: Drag/drop child layer of a layer template from the template treeview into a nodegraph, editor treats it as a template and causes an effect compile error
  • Fixed #3284: Effect editor: Unresolved template at layergraph level causes entire effect build to fail
  • Fixed #3304: Effect editor: External VectorField: Changing the strength property doesn't refresh the vector-field
  • Fixed #3277: Project launcher: Last selected project is not properly remembered
  • Fixed #3278: Project launcher: Changing a project name doesn't refresh the name in the project list (since v2.2.0)
  • Fixed #3312: Project launcher: Drag & dropping a project folder on the project list shows an accepting drop marker, but doesn't do anything
  • Fixed #3298: orientation from forward functions and nodes sometimes return invalid orientations and cause asserts in debug
  • Fixed #3269: sim.wave.min(int) and sim.wave.max(int) are flipped: max() returns the min, and min() returns the max.

Changelog 2.2.0

Builds (Aug 02 2019)


Editor & Runtime

  • New builtin level-of-detail system
  • #2836 / #2833: Mesh renderers: add support for mesh atlases
  • #1942: Simulation interfaces: Integrations can implement any template in raw C++
  • #2817: Add 'effect.orientation()'
  • #2954: add 'view.orientation()'
  • #3191: Add 'view.velocity()'
  • #2458: Add 'self.isDeterministic()' : returns a compile-time 'true' or 'false' constant based on the layer build settings
  • #3192: Unify some of the script functions & symbols: integ_t/integ_T, textureAddr.*, textureFilter.*, shapeType.*
  • #2513: Determinism improvements
  • #2859: XForm node: emit a warning when user sets up a transform node with an identity transform
  • #2986: Interpolate effect instance properties when evaluated at particle spawn
  • #3103: Payload extract node: Allow extracting interpolated payloads by always extracting value at end of timeslice
  • #3104: Payload extract node: Allow extracting interpolated payloads start and end values
  • #3113: Determinism: Control determinism at compile time, and propagate determinism build status down to compiler & optimizer
  • #2341: GPU simulation: Implement time-windows for correct spawning & evolve-on-death
  • #2458: Add 'self.isDeterministic()' : returns a compile-time 'true' or 'false' constant based on the layer build settings
  • #3184: Wave reduction functions
  • #3192: Unified some of the script functions & symbols

Editor only

  • #1241: Effect timeline scrubbing
  • #1697: Localization : Allow users to create multi-lingual effect files (Annotations, descriptions, ...)
  • #1283: Package import : Display file size next to file, and highlight large files
  • #2335: Project launcher: Allow to open project with closest installed version (done for v1.x projects, needs to be done for v2.x projects as well)
  • #2720: Export package dialog should display the total size of the package it's about to export, also, having everything rolled up is totally useless
  • #2753: Effect interface: Display orientations as euler angles
  • #2798: Nodegraph: Add new node (and script-function) to downgrade a varying value at spawn
  • #2815: Sign up dialog: Query OS for current localization, pre-set the country dropdown to this
  • #2877: Move "Materials" and "Shaders" directories into "Library/PopcornFXCore/"
  • #3196: Script completer: Add descriptions for namespaces
  • #2961: Editor now tracks asset dependencies for assets other than effects (most notably materials)
  • #3010: Scene interface: scale backdrops
  • #3110: Nodal editor: Allow inserting a layer in the middle of an existing event link
  • #1231: Nodal editor: Template auto-entrypoint
  • #2890: Rendering material customization
  • #2751: Take renderer geometry into account for bounding-box computations
  • #2827: Renderers: restore bbox culling in-editor
  • #2861: Viewport: Better gizmo for axis-system independent workflows and general better comprehension of space
  • #2870: Implement normals/tangents on Rotated lit particles with the CPU billboarder
  • #3128: Editor Analysis now checks if effect dependencies exists, and shows missing dependencies in the content browser report
  • #3164: Curve Editor: improved curve color controls, now easier to modify color gradients
  • #3196: Script completer: Add descriptions for namespaces
  • #3199: Effect editor: Allow showing memory & allocation stats in viewport


Editor & Runtime

  • Fixed #3040: Texture sampler: Density sampling templates produce compile errors when wiring a regular texture
  • Fixed #2942: calls to 'generate' function are not properly optimized out when output event is not used
  • Fixed #3107: Event payloads: Extracting payloads does not always extract correct type
  • Fixed #3109: EventPayloadCopy cause whole event branch to be optimized out if one of the inputs is unlinked
  • Fixed #3159: Export nodes: disabled export nodes are not properly ignored when building the template prototype and repopulating pins
  • Fixed #2336: GPU simulation: Incorrect spawn dts
  • Fixed #2965: Incorrect setup of the 'NeedsEvolveOnDeath' flag in particle declarations
  • Fixed #2978: Incorrect CPU-billboarding on planar-aligned billboard with non-unit normal axis
  • Fixed #3217: wavesq & wavetri are broken for negative values

Editor only

  • Fixed #2960: Faster re-scanning of effects changed externally (updating the assets from source-control while the content-browser is opened, or opening the editor in a project where new assets have been added since the last time it was run)
  • Fixed #2707: Attributes: Cannot set attribute category on attribute sampler
  • Fixed #2909 & #2910: Units: Camera does not take into account project units
  • Fixed #2911: Delete file or folder dialog when asset(s) have dependencies: does not detect when all dependencies are being deleted as well
  • Fixed #2966: Particle debugger: debugging particles performing spatial layer insertions leaks memory and produces visual artefacts when resuming simulation
  • Fixed #3042: Propertygrid asset preview is not properly hot-reloaded when asset changes
  • Fixed #3143: Effect editor: Close with pending changes: save dialog doesn't update selected file info properly
  • Fixed #3180: Nodegraph: Disabling a node with auto-exported properties still tries exporting those properties
  • Fixed #3214: Imported FBX with differents axis systems are not identical
  • Fixed #2362: Selection rectangle is not displayed in any viewport mode other than default rendering (F4)
  • Fixed #2366: Shader paths are hardcoded, cannot place them in a custom folder inside the project
  • Fixed #2386: Crash when debugging particles with overridden optimization options in user settings
  • Fixed #2684: Rendering Normals are inverted between screen-aligned and axis-aligned billboards
  • Fixed #2698: Editor wireframe display: No difference between ScreenAligned and ViewPosAligned, even though the actual particle rendering is different, wireframe geometry is always the geom of screen align.
  • Fixed #2872: Crash when opening twice the project settings of the same project from the project launcher
  • Fixed #2904: Effect loop delay is broken
  • Fixed #2969: Crash when closing effect editor with D3D11 GPU sim enabled (crashes when closing effect interface panel)
  • Fixed #3189: Backend panel: Syntax highlighting is broken for comments (GPU sim shaders display)
  • Fixed #3194: Cannot copy paste v1.x nodes into nodegraph anymore.
  • Fixed #3230: Renaming a private template in a template file used by other effects rescans and modifies the other effects
  • Fixed #3231: Changing a value in the propertygrid while a search is active in the nodegraph breaks the search highlights


Editor & Runtime

  • Overall faster nodegraph compilation times.
  • Optimizer improvements
  • #2658: Optimizer: Shape sampling CustomCombining callbacks for sample & samplePCoords functions should be able to remove unneeded samplePCoords()+sample() calls into a single sample() call
  • #2854: Optimizer: Detect and simplify exclusive compare op ranges
  • #2959: Optimizer: Detect and fold calls to xform_masked when possible
  • #3112: Optimizer: Remove xform calls on isotropic random inputs when layer is built in non-deterministic mode
  • #3195: Optimizer: Detect and simplify multiplicative 'sign(x)*(abs(x)*y)' identities
  • #3200: Optimizer: Inject transforms into constant operands of compare ops
  • #2964: Effect usage flags: Don't compute per-instance data that the effect will never use (ex: effect.orientation())

Assets & core-lib

  • Fixed #2732: Shape sampler template: 'Tangent' pin declared as float3 instead of float4
  • Fixed #2760: Spawn on grid template flips orientations vertically
  • Fixed #2792: Templates: Rename output event pin of placement templates to the same name as the input pin, to allow proper node toggling & rewiring on deletion
  • Fixed #2903: Templates 'EventRandPick' and 'SpawnOnGrid' : Rename output events so they work properly with Ctrl+T and relink-on-delete
  • Fixed #2869: Nodegraph: some view templates (ex: view.direction) are Evolve by default.
  • Fixed #2878: CoreTemplates: EventDelay does not expose its value as input, preventing users to customize/expose it as attribute
  • #3168: Collision templates: Can now use collision masks
  • Changed physics, trail, and collision templates to make them LOD-aware
  • SimpleTrigger now automatically adds 'self.lifeRatio' to the event payload
  • Event Multiplier node now automatically adds 'self.lifeRatio' to the event payload
  • Collision template improvements: Improved stability and interface, added different modes of transforms computations for the generated event, and can now specify a max number of bounces for the 'OnCollide' event to be emitted
  • Containment template improvements: Can now specify if the containment should happen in localspace or worldspace (was always worldspace before)
  • New 'OrientationIdentity' template
  • New 'OrientationFromPosition' template
  • New 'SmallPointAA' template, was already used in some sample effects, now part of Core-library
  • New 'parent.lifeRatio' template, works out of the box for events emitted from event multiplier nodes, simpleTrigger nodes, trail nodes, and any event containing a 'float LifeRatio' payload
  • New 'TimeBasedCursor' template
  • New 'Flicker' template
  • New 'BillboardScreenControls' helper template, emulates not yet available screen-aligned billboard features such as a 2D rotation pivot + 2D sizes, using a manually oriented planar aligned billboard


  • Upgrader @ : Rename old "Lit" feature to "LegacyLit" for proper PBR rendering
  • Upgrader @ : Renamed some template outputs to enable proper Ctrl+T and relink-on-delete behavior:
    • SpawnOnGrid template: Renamed 'Child' output pin to 'Spawn'
    • RandPick template: Renamed 'SpawnA' and 'SpawnB' outputs to 'Spawn' and 'Spawn1' respectively. Also more consistent with the new additional outputs 'Spawn2' to 'Spawn7'
  • Upgrader @ : Incorrect orientations computed for the 'SpawnOnGrid' template (flips 'SubOrientation' vertically), for the 'OrientationFromUp' template (negates the input 'Up' vector), and for the 'scene.orientation_u()' script function.
  • Upgrader @ : Layers & templates: Renamed "PreferredDeterminism" property to "Determinism"
  • Upgrader @ : Switched view templates from exec-rate 'Evolve' to 'Auto'
  • Upgrader @ : Updated effect interface internal representation
  • Upgrader @ : Modify feature set files so they can reference several renderer interface files instead of monolithic Editor.pkri
  • Upgrader @ : Feature sets (.pkma): Merge 'CompatibleFeatures' and 'RequiredFeatures' into 'RendererFeatures'.
  • Upgrader @ : Move 'Materials' and 'Shaders' directories into '$LIBRARY_DIR$/PopcornFXCore/' (Step 1)
  • Upgrader @ : Move 'Materials' and 'Shaders' directories into '$LIBRARY_DIR$/PopcornFXCore/' (Step 2)
  • Upgrader @ : Delete no longer necessary ShaderIncludes
  • Upgrader @ : Remove 'SubMeshID'
  • Upgrader @ : Rendering:
    • Rename 'CSampleLibUserRenderingSettings' into 'CRHIRenderingSettings'
    • Rename 'CRenderingFeature' into 'CRHIRenderingFeature'
    • Rename 'CMaterialShaders' into 'CRHIMaterialShaders'
  • Upgrader @ : 'SampleLibSettings.pkbo':
    • 'CRHIRenderingSettings' and 'CRHIRenderingFeature' objects are now in .pkri files
    • 'CRHIMaterialShaders' are now in .pkma files
  • Upgrader @ : Removed 'SampleLibSettings.pkbo'
  • Upgrader @ : Renamed mesh renderer's 'MeshPath' property to 'Mesh'
  • Upgrader @ : Script function renames:
    • Integration functions: Renamed 'integ_t' / 'integ_T' to 'ixdt' / 'ixdT'
    • Texture address modes: Renamed 'textureAddr.Clamp|Wrap' to 'textureAddr.clamp|wrap'
    • Texture filter modes: Renamed 'textureFilter.Point|Linear' to 'textureFilter.point|linear'
    • Shape types: Renamed 'shapeType.Box|Sphere|ComplexEllipsoid|Cylinder|Capsule|Cone|Mesh' to '|sphere|complexEllipsoid|cylinder|capsule|cone|mesh'
  • Upgrader @ : Upgrade all node & graph descriptions to be localizable
  • Upgrader @ : Mesh renderers: Make 'MeshID' optional
  • Upgrader @ : Material shaders: Upgrade project settings allowed extensions for vertex and fragment shaders
  • Upgrader @ : Add new columns in the details view settings
  • Upgrader @ : Add new Core Template Debug.pkfx



  • Fixed #2785: UE4: Hot reload fails when in play mode
  • Fixed #3250: UE4: Crash when non instanced mesh rendering is enabled
  • Fixed #3249: UE4: Crash when PopcornFXScene has bounds display enabled
  • #2864: UE4: Add support for orientation attributes
  • Fixed #3463: UE4: Crash at effect preload when no material is assigned
  • Fixed #3465: UE4: Corrupt projection matrix and asserts when editing blueprints
  • Fixed #3493: UE4: Corrupt icons in archived plugins
  • Fixed #3538: UE4: Light and sound renderers do not show up
  • #2841: UE4: Mesh atlases implementation
  • #2425: UE4: Implement broadcasted events