PK-Editor v2.2

From PopcornFX
Revision as of 08:29, 8 August 2019 by Hugo (talk | contribs) (Plugin status)
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_Setup_v2.2.0.56620_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.2.0.56620_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.2.0.56620_x64.tgz (Latest) NewIcon.png

Plugin status

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