PK-Editor v2.2

From PopcornFX
Revision as of 14:06, 2 August 2019 by Tdesveaux (talk | contribs)
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