PK-Editor v2.3

From PopcornFX
Jump to navigation Jump to search

Back to anouncements
Released 08 Nov 2019
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

Highlight of compatible pins New default materials & renderer 'enabled' pin Fixed discretization display bug Can now edit properties of type 'auto' Un-spaghettified collision node
Highlight of compatible pins Renderer 'enabled' pin Fixed discretization display bug Can now edit properties of type 'auto' Un-spaghettified collision node


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.3.4.61400_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.3.4.61400_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.3.3.60536_x64.pkg [Experimental]
PopcornFX-Editor_v2.3.2.59877_x64.pkg [Experimental]
PopcornFX-Editor_v2.3.1.59659_x64.pkg [Experimental]
PopcornFX-Editor_v2.3.0.59351_x64.pkg [Experimental]
PopcornFX-Editor_v2.3.4.61403_x64.tgz (Latest) NewIcon.png

Known issues

Plugin status

Changelog 2.3.4 patch

Builds (Jan 20 2020)

  • Fixed #3815: Event "TriggerOnce" node stripped in shipping mode when it shoudn't
  • Fixed #3539: Unable to draw after export without alpha ETC format (Format_RGB8_ETC2)
  • Fixed #3901 & #3898: VRP pass for function 'all()' is incorrect for vectors whose dimension is lower than 4, causes some over-optimizations
  • Fixed #3963: Asset-baker does not properly patch the file extensions of local samplers specified as inline properties
  • Fixed #3941: Crashes with timeline payloads
  • Fixed #2454: Audio playback: Fails randomly creating sound system (no sounds played)
  • Fixed #3960: Package import fails when original project has its 'PopcornProject.pkproj' file not located at the root
  • Fixed #3971: Content browser: "Save all assets" pops error dialogs for all readonly files in project, even if the file has no changes to be saved.
  • Fixed #3995: Crash at effect start when effect instance instantly dies
  • UE4 plugin: #3748: Add support for UE4.24
  • UE4 plugin: Fixed #3880: Crash when playing in editor with two clients
  • UE4 plugin: Fixed #3928: AttributeList not correctly serialized when emitter is part of a blueprint

Changelog 2.3.3 patch

Builds (Dec 19 2019)

  • Fixed #3785: Attribute samplers are broken when loaded in integrations: No default-value node
  • Fixed #3789: Renaming an attribute from a template-export node inside a graph does not sync the rename to the other instances of that attribute.
  • Fixed #3807: Drag/dropping an attribute from the effect interface into a nodegraph pops the conflict messagebox
  • Fixed #3812: Effect interface: Renaming an attribute sampler from the effect interface renames the nodes but keeps the old name in the effect interface panel
  • Fixed #3721: broken rendering when pasting renderers coming from another effect
  • Fixed #3727: Editor UI sliders: Slider resolution affects values that can be input when typing them directly
  • Fixed #3638: Mesh projection and sample distance field artefacts. (the 'Project' template breaks position discretization. Hotfix in code directly, will be fixed in 2.4.0 in the actual template)
  • Content browser: Hovering on a folder now displays the number of sub-assets inside that folder
  • Content browser: The "Filters" dropdown in the search-bar now displays the total number of assets in the entire project next to each asset's filter checkbox
  • #3761: Show warning in content-browser if the project contains effects older than the current editor's minor version

Changelog 2.3.2 patch

Builds (Nov 29 2019)

  • Fixed #3237: Spatial layers: kernel 'sum' and 'average' queries return zero when no kernel curve is plugged in
  • Fixed #3733: Spatial layers: Simplify kernel queries with flat curves by non-kernel queries
  • Fixed #3737: Crash when toggling off renderers with Ctrl+T and the layer no longer has any renderers enabled
  • Fixed #3760: Nodal editor: Crash when undoing a Ctrl+G (group nodes to template)
  • Fixed #3743: Effect editor: Crash when setting preview build version and closing effect editor without saving
  • Fixed #3713: int3 constant nodes do not properly take into account the '3D_Coordinate' semantic
  • Fixed #3723: Image sampler: Sampling with 'linear' filter falls back to 'point' sampling when sampling Fp32Lum images,or RGBA/BGRA images setup with 'ScriptOutputType = float'
  • Fixed #3726: Image sampler: Sampling with 'linear' filter falls back to 'point' sampling when in 'wrap' mode
  • Fixed #3724: Image sampler: Changing some settings when 'ScriptOutputType = float' does not refresh the texture until the effect is reopened
  • Fixed #3725: Image sampler: changing input gamma space back and forth is inconsistent in-editor until the effect editor is reopened.
  • Fixed #3719: Some 2.2.x or 2.3.0 effects show attribute conflicts in effect interface panel when loaded in 2.3.1
  • Fixed #3758: Optimizer: Some unused nodes still produce instructions in the final simulation in some rare cases
  • Fixed #3720: [SDK] Optimizer: Assert in ICB pass when folding bitwise AND or OR ops between the results of two opposite compare instructions. Can be seen when 'EventRandPick' template gets optimized.
  • Fixed #3722: [SDK] Asserts when using image sampler setup with 'ScriptOutputType = float' instead of 'float4'
  • Fixed #3729: Nodal editor: Creating attribute node by dragging a wire from a pin and typing "Attribute" ignores the pin name
  • Fixed #3728: Nodal editor: Copy/pasting named passthroughs does not preserve them

Changelog 2.3.1 patch

Builds (Nov 22 2019)

  • Fixed #3703: Upgrader @ ignores attribute samplers, only upgrades attributes
  • Fixed #3706: Nodal editor: Crash when selecting spatialQuery nodes
  • Fixed #3707: Package import: importing packages from 2.2.x corrupts attributes
  • Fixed #3689: Recurring crash with D3D11/D3D12 gpu particles with boolean streams
  • Fixed #3694: Incorrect NEON implementation of SIMD::IntMulHi, causing integer divisions in CPU backend to return incorrect results
    • Fixed #3694: Placement & event rand-pick templates are broken on all ARM/NEON platforms (android, ios, and switch)
  • Fixed #3648: Optimizer: IR merger stage is accidentally disabled in graph compiler since v2.3.0, produces larger-than-necessary baked effect files, slower to load.
  • Fixed #3641: Optimizer: VRP pass miss on 'vrand()' function (correctly works on 'vrand(inner, outer)')
  • Fixed #3627: Properly handle static resources constant folding when resources are not available
  • Fixed #3702: Image density sampling: Incorrect random sampling, and potential crash
  • Fixed #3704: Spatial layers: Crash when using kernel query with curve attribute sampler that has no default curve (since beginning of v2)
  • Fixed #3705: Spatial Layers: kernel queries ignore curve attribute sampler overrides (since beginning of v2)
  • Fixed #3709: Rendering: Crash when using material without the feature 'enabled' with ribbon renderer
  • Fixed #3639: When an effect fails loading because it is corrupt, editor has to be restarted before it can be loaded again (for example when fixing it by discarding changes in source-control)
  • Fixed #3667: Fixed Direct3D 12 context initialization failure on recents Windows 10 builds
  • Fixed #3612: Effect editor viewport: Cannot select ribbons in viewport.
  • Fixed #3643: Nodal editor: Autolink errors when pin already has a wire of a different type
  • Fixed #3646: Nodal editor: Orientations are incorrectly seen as pluggable into float4s, and vice-versa
  • Fixed #3672: Nodal editor: Cannot auto-export renderer properties from custom renderer interfaces: .pkri editor does not write some of the required information
  • Fixed #3696: Nodal editor: Missing warning when a linked pin gets disabled from the material options
  • Fixed #3652: Nodal editor: Crash in self-referencing templates (corner-case, self referencing templates are invalid, should not happen, and produce a graph error, but the editor still shouldn't crash)
  • Fixed #2703: Attributes: General pass to make them usable:
    • Fixed #3679: Attributes: Synchronize attributes when editing properties from an export node or from the effect interface panel
    • Fixed #3680: Attributes: Many UI glitches
    • Fixed #3681: Attributes: "Focus next reference" button does not work
    • Fixed #3682: Attributes: If any attribute has unsolvable conflicts, clearly highlight in red in the effect interface so that it is super-obvious.
    • Fixed #3683: Attributes: Catch invalid settings upstream and warn user with a clear message (ex: invalid types)
    • Fixed #3684: Attributes: When creating a new attribute from an export node, and it conflicts with an existing attribute with different settings, ask used which version should be used.
    • Fixed #3685: Attributes: Attribute samplers are never shown as mismatching when conflicting declarations exist in the graph
    • Fixed #3686: Attributes: Attribute samplers defined by external templates almost never work properly
    • Fixed #3687: Attributes: 'orientation' attributes should not expose the 'HasMin', 'HasMax', and 'HasSlider' properties
    • Fixed #2714: Effect interface panel: Attribute properties are not taken into account until reference is "rebuilt" by deactivating/re-activating node
    • Fixed #3317: Effect interface panel: Automatic change of focus to the last attribute
    • Fixed #3525: Effect interface panel: Crash when deleting an attibute in nodegraph while hovering Effect Interface attributes
    • Fixed #3678: Effect interface panel: Add F2 shortcut to rename attributes
    • Fixed #3152: Effect interface panel: Attribute samplers can't be in a category
  • Fixed #3637: Export package dialog: Add "Show in folder" button to quickly go to where the .pkkg file has been written
  • Fixed #3636: Editor package import: Be less strict when importing packages: Allow to import packages from the same minor version, even if the package patch number is more recent
  • Fixed #3649: Adding or removing pins or changing auto-export status in a local template doesn't update the editor view of pluggable pins, causing the template to not appear in the node creation menu when dragging a wire
  • Fixed #3698: Project launcher: Package import buttons appear grayed out after download. Editor needs to be restarted to be able to properly import the package.
  • Fixed #3658: UE4: Linear atlas blending and alpha remap not working with UE < 4.21
  • Fixed #3659: UE4: Motion vectors map atlas blending
  • Fixed #3660: UE4: Add support for Diffuse Ramp texture in UE4 materials
  • Fixed #3666: UE4: Add support for Emissive map in materials

Changelog 2.3.0

Builds (Nov 08 2019)


Editor & Runtime

  • #3631: Renderers: add a bool pin to enable/disable the renderer
  • #3306: New 'StaticVersionSwitch' node, and 'version' keyword in scripts, allowing to conditionally evaluate graphs based on platform build settings
  • #3410: Localized pages improvements
  • #3328: Simulation interfaces: Add compile-time builtin output 'IsBound' pin
  • #3343: Spatial queries: return 'HasData' pin
  • #3341: Spatial query call: Add 'closest2' query
  • #3045: Spatial query node: specify neighbor ID in 'closest' query through a pin to allow creating templates.
  • #3047: Spatial query call: Auto-deduce cache size based on final query calls, greatly improves performance in effects doing multiple closest-Nth queries
  • #3396: Spatial Layers: Add 'NeighborCount2' query
  • sim.wave reduction functions now support all vector types, not just scalars.
  • 'frac' function now always returns values in the [0,1[ range. previous behavior is still available with 'fracSign' (see Upgrader @

Editor only

  • #2023: Billboard renderer: Can now be given a float2 size (currently has to be a different pin than the 'float' size pin, we'll be able to merge them in a future release)
  • #3307: Add support for OpenEXR images (.exr / .hdr)
  • #2736: Materials: Add opaque materials for ribbon and billboard particles (Solid / AlphaTest)
  • #3559: Materials: Add opaque / Masked material for mesh
  • #3026: Materials: Alpha Remap Mesh shader in editor
  • #3363: Materials: Ramp texture for diffuse color remap
  • #3361: Materials: Add new Emissive category with a map and color
  • #3411: Materials: Normalmap support for semi-transparent lit particles
  • #3569: Timeline: display editable keyframe time when selecting keyframes
  • #3435: Editor backdrops: Add option to disable collisions with grid & mesh backdrops
  • #3441: Editor backdrops: Add effect backdrop to automatically preview a grid of effect instances
  • #3527: 'auto' widget: Allow editing node properties & pins of type 'auto'
  • #3489: Nodal editor: Node creation menu: Numeric constant is now always be the first choice if the search box contains a numeric value.
  • #3262: Nodal editor: hide/highlight incompatible/compatible pins when dragging link
  • #2754: Nodal editor: Display renderer particles in wireframe when a renderer is hovered (requires enabling an option in the editor preferences)
  • Nodal editor backend panel: highlight lines based on hovered/selected nodes, and highlights nodes when hovering lines (both on CPU & GPU backends)
  • Nodal editor backend panel: Now shows GPU compute-shader disassembly
  • Project launcher: Can now use 'F2' to rename projects from the project list
  • #3280: Content browser: Display upgrade logs in file analysis report
  • #3256: Content browser: Details view: Right-click "Export to spreadsheet" -> outputs a .CSV file containing all asset details of the current view
  • #2669: Content browser: Proper handling of read-only folders
  • #3232: Added a 'ResetUI' button, that resets all UI to the default


Editor & Runtime

  • Fixed #3046: Spatial query calls are unpredictably reordered by compiler & backend, breaks internal cache, leads to bad performance. (see also related improvement features #3045 & #3047)
  • Fixed #3443: GPU backend name mangling is broken with attributes containing special characters
  • Fixed #3521: GPU sim 'rand' is not deterministic, implem was totally different from the one used on CPU, way slower, and consumed an awful lot of instructions.
  • Fixed #3173: Bounds of newborns are not taken into account: page bounds are degenerated on first frame, and lag 1 frame behind for newborns.
  • Fixed #2675: Export nodes' "LinkAndAttribute" mode is broken

Editor only

  • Fixed #1280: Nodal editor: Bad discretization paths displayed on script node outputs
  • Fixed #3567: Moving .frag and .vert files break materials
  • Fixed #3570: Timeline: Moving or deleting keyframes messes keyframe payload order in the propertygrid
  • Fixed #3571: Timeline: Modifying keyframes while paused doesn't update the effect (should behave like when tweaking attributes or other parts of the graph)
  • Fixed #3563: SampleLib: Mesh renderers draw calls are not batched
  • Fixed #3578: Material editor saves shader content even if not allowed when prompted
  • Fixed #3429: Import package: Colliding assets not shown as colliding when corelib paths do not match, results in everything being overwritten by default without warning the user
  • Fixed #3345: Ctrl+click on a pin does not behave like cutting, or deleting nodes, or right-clicking > remove all links: Leaves dangling passthroughs
  • Fixed #3320: Online packages tab: "New version available" message only shown when pack is updated at the same version, not when there's a different version
  • Fixed #3271: Backdrop lighting colors are treated as linear and not sRGB, does not match the colors users setup.
  • Fixed #2740: Shape Preview doesn't update after Hot Reload
  • Fixed #2709: Input node: Switching from "Link" to "Property" does not refresh parent graph


Editor & Runtime

  • Binary effect file loading is between 16% and 25% faster compared to v2.2
  • Fixed #2851: Massive frametime spikes when storages have their page sizes resized
  • #3633: Optimizer: Added new optimization pass: Value-range propagation.
  • #3327: Optimizer: sim.wave functions: Remove calls when the input value is already @ wave-frequency
  • #3340: Optimizer: Spatial query call: Hook ICB transform to simplify query calls when possible
  • Fixed #3572: Compiler: Remove constant stores from final instructions executed during the sim
  • Fixed #3597: Unnecessary allocs & lots of wasted memory in CPU VM evaluation cache alloc & acquire logic (happens every frame on most simulation tasks)
  • #2155: Optimizer: ICB shape.intersect and shape.intersectPCoords
  • #2985: geom bb cpu tasks: SIMDify indices generation
  • #1204: Attributes: SOA optimization in medium-collection
  • ... and many small improvements in the effect optimizer

Assets & core-lib

  • Fixed #3551: Template clamp vector returns 'nan' for vectors of 0 length
  • #3255: Texture sampler template: Add properties to flip input U and V coords: almost always want to flip V when building from position
  • #3305: VectorField sampler template: Add time input to be able to sample animated FGA files
  • Fixed #3121: Attractor template: Added 'localspace' checkbox & improved interface by adding pin rules and a dropdown
  • #3581: Renamed transparent rendering feature 'SortValues' into 'SortKey'
  • #2648: Billboards: Renamed Atlas "Source" enum elements from "Definition/Procedural" to "External/Procedural"
  • Fixed #2716: Collision template is an awful spaghetti mess
  • AssetBaker config: Removed "WholeEffectOptimizationPassCount", "Deterministic", "DeterministicSeed", and "RemoveUserDebug" properties, now goes through compiler switches "--geo-passes=<n>" (default=4), "--determinism" / "--no-determinism", "--determinism-mod=0x1234", and "--user-debug" / "--no-user-debug"
  • AssetBaker config: Can now override all nodegraph compiler optimization flags for each bake target using the 'CompilerSwitches' property of 'COvenBakeConfig_Particle'


  • Upgrader @ : Spatial layers: Exposed 'NeighborIndex' as a pin, and removed 'NeighborCacheSize' property, which is now auto-detected by the graph compiler
  • Upgrader @ : Spatial layers: Added 'HasData' output pin
  • Upgrader @ : Arithmetic nodes: Fix corrupted effects containing arithmetic nodes with both input pins having the same name
  • Upgrader @ : Renamed 'frac' function to 'fracSign', and added new 'frac' function that always returns in the [0,1[ range
  • Upgrader @ : Add new Core Materials 'Opaque_Billboard' and 'Opaque_Ribbon'
  • Upgrader @ : Editor Light-backdrop colors are now converted from sRGB to linear before being used for rendering.
  • Upgrader @ : Renamed some rendering interfaces:
    • Renamed 'CRHIRenderingFeature::UseUv' to 'CRHIRenderingFeature::UseUV'
    • Renamed 'CRHIRenderingFeature::UseMeshUv1' to 'CRHIRenderingFeature::UseMeshUV1'
  • Upgrader @ : Rendering interfaces: Add missing nodes
  • Upgrader @ : Nodegraph: Can now edit 'auto' properties: Added internal 'BaseType' property to pins.
  • Upgrader @ : Rendering interfaces: Rename Atlas "Source" enum elements from "Definition / Procedural" to "External / Procedural"
  • Upgrader @ : Rendering interfaces: Rename transparent "SortValues" pin to "SortKey"
  • Upgrader @ : Attributes: Renamed effect interface item properties to match attribute node properties
    • Renamed 'AttributeName' to 'ExportedName'
    • Renamed 'AttributeType' to 'ExportedType'
    • Renamed 'AttributeDescription' to 'Description'
    • Renamed 'AttributeCategoryName' to 'CategoryName'
    • Renamed 'AttributeSemantic' to 'Semantic'



  • Fixed #3462: UE4: asserts/error logs when importing an effect using a shape sampler
  • #3353: UE4: Implement vertex shader billboarding
  • #3352: UE4: In engine performance metrics