PK-Editor v2.8

From PopcornFX
Jump to navigation Jump to search

Back to anouncements
Released Jan 7th 2021. (preview-1 released Dec 10th 2020)
make sure you upgrade your runtime / plugins as well before switching to this version.

! IMPORTANT ! After upgrading a project to 2.8.0, make sure you clear your shader-cache by doing 'Edit > Clear shader cache' !

Release highlights

Effect prewarm GPU-sim mesh renderers Graph coordinate-frame view Multiple inputs for math nodes
Builtin effect prewarm GPU-sim mesh renderers Graph coordinate-frame view Multiple inputs for math nodes


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.8.1.4588_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.8.1.4588_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.8.0.4373_x64.pkg [Experimental]
PopcornFX-Editor_v2.8.1.4588_x64.tgz (Latest) NewIcon.png

Changelog 2.8.1 patch

Builds (Jan 14th 2021)

  • Fixed #6023: Effect interface: Crashes when hovering while async compile is in progress (async compiles are disabled by default in v2.8.0)
  • Fixed #6399: Can set negative life in 'SetLife' node, produces buggy simulations
  • Fixed #6407: Curve editor: Crash when swapping curve channels when curve is in 'Linear' mode and has more than 3 control-points
  • Fixed #6406: Curve editor: Add 'Reset tangents (flat)' option to reset tangents to 0
  • Fixed #6405: Curve editor: 'ResetTangents' resets all the tangents instead of only the selected control-points
  • Fixed #2787: Curve editor: Doesn't show Min/Max value limits in the curve editor viewport (even though runtime correctly takes them into account in the simulation)
  • Fixed #6379: GPU sim: Some shape functions are broken
  • Fixed #6459: GPU sim: Random crash in effects with lots of GPU sim layers
  • Fixed #6380: GPU sim: Random compiler crash when using 'box.project()' or any node that performs projection on a shape of type 'box'
  • Fixed #6451: Occasional crash with decal renderer
  • Fixed #6404: Double-clicking in a numeric inputbox does not select the entire value
  • Fixed #6362: Material editor: custom materials without "Opaque" or "Transparent" rendering features aren't rendered
  • Fixed #4176: Editor sometimes writes corrupt files when writing in text format
  • Fixed #6364: UE4: Light particles cannot affect volumetric fog (requires to use UE4_Light material from Content Examples project)
  • Fixed #6450: UE4: Volumetric fog default material (requires UE4_VolumetricFog material from Content Examples project)
  • Fixed #6363: UE4: Only lights from a single renderer are displayed when several light renderers are present in the scene
  • Fixed #6460: UE4: GPU simulated effects fallback on CPU sim

Changelog 2.8.0

Builds (Jan 7th 2021)

Assets & core-lib

  • #5685: 'remap' node: Allow inline-editing min/max inputs, without having to create constant nodes.
  • #5640: 'vrand' node: Add "Scale" property to allow quickly scaling the output beyond a radius of 1.0
  • #5785: Add 'Spawn on Texture' master-template
  • #5784: Add 'Spawn on Mesh' master-template
  • #5745: Add 'MeshSample' master-template
  • #5787: Add 'TextureSampleNormal' and 'TextureSampleDisplacement' helper nodes
  • #6154: 'ShapeSample' & 'MeshSample' nodes: Expose position/orientation/scale helper input to easily transform the output sampled data
  • #5815: 'EventMultiplier': Add LOD controls
  • #5750: 'EventMultiplier': Add "RandomCount" control
  • #5645: 'EventMultiplier': Change the default values so it's faster to setup in the most common case
  • Fixed #5911: 'Physics' & 'TurbulenceSample' nodes: Cannot scale vector-field, 'Scale' property is in fact the scale of the output vector (ie: a 'Strength'), not the scale of the actual field
  • #5646: Add new high-level 'Physics' template that encapsulates most common "physics" behavior: the old "Physics" node, wind controls, and collision
  • #5741: 'Collision' node: Remove top limit of 255 maximum bounces
  • #5649: 'Collision' node: Add missing inputs & outputs: 'Localspace' input when colliding with a shape, and CollisionPos/Normal + Hit fraction outputs
  • #5734: 'scene.intersect': Make it a sim interface so it can be overridden in the GPU sim + expose sphere sweep parameters
  • #5724: 'Attractor' template: add way to dynamically offset & rotate the attractor
  • #5643: 'LimitDistance' template has no builtin 'Localspace' property
  • #5642: 'Containment' template has no builtin 'localspace' toggle, should be in localspace by default.
  • #5654: 'blackbody' node: Add a temperature unit property to tell which units the input temperature is in
  • #5673: Add new 'toFloat', 'toInt', and 'toBool' cast helper templates
  • #5639: 'asInt' and 'asFloat' nodes are error-prone for artists: Rename them to the more explicit 'reinterpret.asInt' and 'reinterpret.asFloat'
  • #5641: Improvements over the board: Add missing descriptions, search keywords, more outputs on some nodes, etc...
  • #5888: Simulation interfaces: Unify 'scene.sampleWindField' with 'scene.intersect'
  • #5996: Corelib & scripts: 'sim' namespace: Add 'isRunningOnGPU' node & script function
  • #5995: Rename 'self.isDeterministic' to 'sim.isDeterministic', more consistent with what it represents
  • Fixed #5797: Template: 'drawVector': Cannot change material blending mode & distance sorting settings, unlike 'drawLine'


  • #5682: Export nodes: Allow to expose a list of multiple "allowed" types, not just `auto`
  • #5461: Support for multiple inputs for basic math nodes: add, mul, min, max, or, and, ...
  • #4936: Events payload extract nodes now automatically extract from the parent payload when the node has nothing wired into its 'parent' input
  • #5370: Add node to lerp between orientations
  • Fixed #5738: Using a node that internally contains a sim interface inside the layergraph, and wiring it into a layer's input data pin works, but still displays an error.
  • Fixed #5287: Incorrect resolution of some output pin types
  • Fixed #5278: all orientation nodes & functions are reporting a [-inf,inf] range, instead of [-1,1]
  • Fixed #5277: all view.axis* nodes are reporting a [-inf,inf] range, instead of a normalized unit-vec range. Prevents some optimizations from happening
  • Fixed #2389: Nodegraph: Construct 3D Vector node triggers errors when set to SUF_RightHanded or SFU_LeftHanded mode

Nodal editor

  • #5860: Annotations: Allow scaling overall annotation size, to make smaller, or larger, annotations + Add "post-it" display mode
  • #5506: Allow drag & dropping assets from the content-browser or OS explorer into the nodal editor to create new resource (sampler) nodes, or on existing resource nodes
  • #5859: Do not display "ExecFrequency" and "ExecStage" for nodes where they have no effect
  • #5324: Detect what type of graph we're in, and show the info to the user with a visual clue
  • #5325: Node creation dialog: hide inappropriate node types based on the type of graph we're currently viewing
  • #4439: New Localspace/Worldspace view
  • #6124: When grouping nodes, look at what nodes are grouped, and automatically set the new subgraph's 'ClassType' based on what nodes are being grouped
  • #5950: Nodal editor: Add option in user settings to display all inline pin values even when they are zero
  • Fixed #5743: Creating an input or output node by dragging a wire from an existing pin copies all properties, except the pin description
  • Fixed #5742: Nodegraph tooltip formatting: When using <ul> and <li> to format lists in descriptions shown in tooltips, using newlines messes up the final formatting
  • Fixed #5719: Deleting a node does not properly rewire inputs to outputs like Ctrl+T does (ignores the "PassthroughInput" property of output pins)
  • Fixed #5665: Occasional crash when hovering an event wire
  • Fixed #5845: Ungroup nodes: Does not behave properly with auto-exported properties (special case with pins)
  • Fixed #5739: Ungroup nodes: Does not behave properly with auto-exported properties
  • Fixed #5727: Using the mouse "back" button too fast registers as a double-click and opens the node under the cursor instead of going back twice
  • Fixed #6153: Pulling a wire out of a pin which already has something wired in and popping the node creation dialog does not show all the nodes that can be wired in
  • Fixed #2596: Unplug pin on construct Vec3 generate compile error while baking
  • Fixed #6034: Wire highlight ignores the "Passthrough input" property of output nodes when walking back nodes
  • Fixed #5953: Nodal editor: Hovering wires is hard to see, improve highlight feedback visibility
  • Fixed #5952: Nodal editor: Add more options in user settings to control pin value display


  • #5421: Effect prewarm (/ pre-roll / warmup)
  • Fixed #5886: Curves in non-exact mode (faster, low-quality sampling) fallback to full precision exact mode when sampled with a wave-constant value.
  • Fixed #5792: Texture sampler: 'dimensions()' getter doesn't work if the image isn't sampled.
  • #6058: CPU sim: Constructing a float2 vector from two float values is slow.
  • Fixed #5766: Unnecessary overhead when particles with side-effects die (since v2.4.0)
  • Fixed #5958: Sampling UV2PC from a mesh whose texcoords for an empty rect induces a MASSIVE performance hit.

Simulation: GPU

  • #5355: GPU sim: implement sorting for vertexbb billboard particles in editor
  • Fixed #4996: GPU Sim: regenerating compute shader source at runtime creation generates longer load times
  • Fixed #4837: GPU sim: Inaccurate bounding boxes for billboards
  • Fixed #5816: GPU sim: DataGeometry input node causing fallback to cpu
  • Fixed #5956: GPU sim: Instant crash in compiler when using 'shape.type()' in a GPU layer
  • Fixed #6152: GPU sim: Shape sphere: Ignores shape rotations.
  • Fixed #6151: GPU sim: Shape 'sampleNormal' does not properly take into account shape transforms for most shape types
  • Fixed #6150: GPU sim: Shape sampler ellipsoid: Sampling normals falls cause a shader compile-error and falls back to CPU sim
  • Fixed #6149: GPU sim: Shape sampler cylinder: Normals sampled in 'surface' mode with a nonzero inner-radius are messed-up and randomly flipped
  • Fixed #6148: GPU sim: Mesh sampler: sampled normals are incorrectly scaled by mesh scale.
  • Fixed #6147: GPU sim: Shape sampler ellipsoid: Normals are incorrect when ellipsoid scale is not uniform
  • Fixed #6145: GPU sim: Shape sampler cylinder: Instant crash at graph compile time / baking, when sampling normals.
  • Fixed #6141: GPU sim: Cone volume sampling is broken, samples a pseudo-cylinder
  • Fixed #6140: GPU sim: Cylinder volume sampling reverses parametric coordinates X and Z coordinates, making it incompatible with CPU sim & other pcoords manipulation functions
  • Fixed #6139: GPU sim: Cone volume sampling uses broken parametric coordinates layout, incompatible with CPU sim & other pcoords manipulation functions
  • Fixed #6137: GPU sim: shape.buildPCoords* functions & nodes are not supported, and fallback to CPU sim
  • Fixed #6131: GPU sim: Cone sampling fallsback to CPU
  • Fixed #6130: GPU sim: Sampling a mesh coming from an inline property emits incorrect compute shader code, fails compiling & falls back to CPU
  • Fixed #6068: GPU sim: Random crashes when editing layer
  • Fixed #6060: GPU sim: Texture sampler ignores 'linear' filter flag, always samples as point
  • Fixed #5710: GPU sim: using modulo with integers make the layer fallback on CPU when shaders are compiled with /WX
  • Fixed #5589: GPU sim D3D11: Release assert on AMD cards
  • Fixed #6127: GPU sim D3D11: Sampling anything other than 'Position' from a mesh is broken
  • Fixed #6063: GPU sim D3D11: Sampling BGRA4 textures cause runtime conversion & fallback to BGRA8 on load even if HW supports it.
  • Fixed #5957: GPU sim D3D11: Instant crash when sampling a texture defined through a template property
  • Fixed #5532: GPU sim D3D12: particles don't spawn correctly with "complex" effect instancing


  • #5591: Lit and tinted distortion material
  • #3754: Add CameraSortOffset property for sorted particles as an additional sorting override
  • #6426: GPU mesh particles
  • #5675: Editor PostFX: Add FXAA
  • #5009: Editor PostFX: Add vignetting post-effect
  • #5830: Editor PostFX: Add dithering postFX
  • #5527: Materials: All .pkma files should now have a valid .frag/.vert shader path
  • Fixed #5813: Mesh renderers vertex color alpha isn't taken into account in material shaders
  • Fixed #5705: Renderer's DrawOrder property cannot be auto-exported
  • Fixed #5360: Materials: Atlas_SubUVs is not visible to shaders
  • Fixed #5017: Capsule aligned billboards: Incorrect 'Size' value, incoherent with other billboarding modes: the 'Size' value should be the width/height, but is used as the diagonal
  • Fixed #5773: Renderers: Wiring a float in the 'Enabled' pin produces a compile error
  • Fixed #6006: White editor viewport when having a triangle renderer and the billboarding-mode is geom-billboarding
  • Fixed #5869: Buggy lighting when pausing and 'FreezeBillboardingWhenPaused' is checked


  • #5933: Login: Remember password when checking 'RememberMe'
  • #5386: Baked effect memory usage inspector
  • #6201: Editor baking: Allow seeing bake errors or warnings when baking from editor.
  • #5812: Ability to resave a list or all effects and templates from a project
  • #6225: "Help" menu: Add an "Advanced" entry allowing to reveal both the editor logfile, and the AppData folder, in an explorer window
  • #5768: Allow to disable corelib sim interfaces per-project, and add 'experimental' category in project settings to expose opt-in new features in early-access
  • #6213: User settings: External Applications: Add missing asset types
  • #5824: Editor: add AfterEffects project preset in project creation dialog
  • Fixed #5587: No user feedback on what the editor is doing when opening a project, sometimes freezes for tens of seconds, sometimes not. Now shows a progress window when it isn't instant.
  • Fixed #5862: Editor has very poor reporting when a file has been corrupted and fails to load it
  • Fixed #6220: External applications (windows): Editor auto-detection sees some extensions as not openable, when in fact they are
  • Fixed #6219: External applications: Bad handling of unicode when displaying application pretty name in editor menus
  • Fixed #6199: Static effect dependency report: Static dependencies are not reported with the proper asset type
  • Fixed #6197: Some editor operations that process effect files (such as replacing dependencies or renaming public templates) will pop load error dialog for every effect in the project which has load errors.
  • Fixed #6188: .pkcf files which have been autosaved do not appear in recovery list
  • Fixed #6356: Project launcher: Double-clicking on a project with a higher minor version, with no more recent editor build installed, will still open the project, despite the editor UI saying it can't be opened.
  • Fixed #6355: Project launcher: Double-clicking on a project should open the project with the current editor version if it's a more recent _patch_ than what the project is set to
  • Fixed #5934: User settings file: Incorrectly reloaded when revision ID changes (between patches), always reuses the first one in the list when listing all settings file in the directory

Effect editor

  • #1143: Implement File > SaveAs
  • #5486: Scene properties panel: Display as backdrops treeview
  • #5348: Update backdrop transforms using gizmo
  • #5385: Asychronous graph compilation (disabled by default in 2.8.0, will be enabled by default in 2.8.1. Can be controlled in the effect editor preferences)
  • #5609: Add 'Capture static bounds' option
  • #5608: Add a way to visualize the effect's static bounds
  • #5706: New renderers summary panel allowing to view renderers used in the effect and how they are batched
  • #5658: Script editor: When pasting text, replace unicode math characters with their valid equivalents in PK-Scripts
  • #5656: Script editor: Detect unsupported unicode characters such as '−', '×', which can happen when copy/pasting formulas from a website, and give a more comprehensible error to the user.
  • Fixed #5657: Script editor: Incorrect error highlighting placement when script contains unicode characters
  • #5294: Debugger: add buttons and shortcuts to select the next and previous particle
  • #5925: Grid should be double-sided by default
  • Fixed #5882: Texture sampler: Broken sRGB conversion on-load.
  • Fixed #5488: Effect treeview: Clicking on the root node should display the global effect properties.
  • Fixed #5855: Color picker: Hitting 'enter' in an inputbox should not validate & close the window, it should validate only the inputbox.
  • Fixed #5852: No way to specify procedural atlas in texture node, "U * V" atlas specification only possible in renderer nodes / materials.
  • Fixed #6062: Samplers with empty paths get constant-folded in shipping only. Prevents some layers to be dispatched on the GPU sim in-editor.
  • Fixed #5955: Simulation runtime warning messages in viewport only last one frame, very hard to read


  • #5740: Allow resetting properties which are frozen by pin-rules
  • #5671: Remember which categories have been expanded or collapsed
  • #5650: Improve UI of node output pins: Allow auto-exporting output pins + display the regular "eye" icon to toggle visibility
  • #6200: Allow opening an asset by Ctrl+clicking on its preview thumbnail

Graph compiler & optimizer

  • #5857: Samplers: Add 'NeverOptimize' option on node, to skip ICB/CFL optimizer passes used on static sampler
  • Fixed #5396: VRP: Cannot propagate ranges of bitwise ops when input ranges are constant (editor-only)
  • Fixed #5286: VRP: rgb2hsv() and hsv2rgb() have poor handling of output ranges
  • Fixed #5283: VRP: 'blackbody()' function has incorrect output range of [0, +inf], instead of [0, 1]
  • Fixed #5281: VRP: No handling of functions tan(), asin(), acos(), atan(), and atan2()
  • Fixed #5284: Optimizer: ICB: Various missed optimizations
  • Fixed #6072: Optimizer: Fails to properly collapse some redundant xform calls
  • Fixed #5853: Image sampler: Optimizer crash when 'remapDensity' is called with a non-constant filter mode
  • Fixed #6036: Compiler: VRP of % operator is broken for floats
  • Fixed #5791: Constant sampler folding in shipping doesn't work when sampler is defined via a property
  • Fixed #5799: Texture 'sampleDensity' or 'remapDensity' calls are not optimized-out when the texture is empty and the filtering is set to 'point'
  • Fixed #5802: 'remap' function: Incorrect handling of 'int' inputs
  • #5285: CPU VM backend: strength reduction pass: Detect & simplify `select(0, x, b32)` to `and(x, b32)`

Plugins & Third-Party

UE4 plugin

  • #4060: UE4: Chaos integration
  • #6335: UE4: CollisionFilters system rework
  • #6336: Editor: Add UE4 collision filters when creating a UE4 project

Lumberyard plugin

  • #5899: LY: Attribute Categories
  • Fixed #5715: LY: Crash when using custom mesh materials with material groups
  • Fixed #5798: LY: Cannot start effect if the attribute sampler is not overriden
  • Fixed #5788: LY: Crash when quitting game mode with an effect sampling parametric coordinates
  • Fixed #6331: LY: crash after e_particlesQuality change
  • Fixed #6330: LY: Sounds doesn't stop
  • Fixed #5841: LY: Show/Hide entity in treeview doesn't work
  • Fixed #5749: LY: Attributes with Color semantic should be editable using a color picker
  • Fixed #6224: LY: mesh override not woking with opacity
  • Fixed #5893: LY: Audio trigger doesn't stop after exiting game mode
  • Fixed #6004: LY: Effect movement lag on fast camera movement
  • Fixed #6025: LY: e_particles shouldn't disable PopcornFX particles

After-effects plugin

  • #5960: AE: Added Reimport button in emitter interface to hotreload effects
  • Fixed #5838: AE: Reloading Fx doesn't refresh it if new version is available


  • Fixed #6215: Some upgrades do not properly process files in projects where all paths are forced to lowercase or uppercase
  • New upgrader @ User settings: Renamed various properties
  • New upgrader @ Layer nodes: All layers must now have their sub-graphs be of class 'event'
  • New upgrader @ Unify meaning of 'Size' property between capsule billboards and other billboard types
  • New upgrader @ Transformed 'Scene' panel into a backdrop treeview: Split scene settings into backdrop objects
  • New upgrader @ All feature-set files (.pkma) must now have a non-empty .frag path
  • New upgrader @ Unified backdrop 'Enabled' properties
  • New upgrader @ Removed legacy static bounds properties
  • New upgrader @ Collision node improvements
  • New upgrader @ Remove generic 'Data' data-type in nodegraph nodes
  • New upgrader @ CoreLib template improvements: orientation.fromAxisAngle
  • New upgrader @ Move 'DrawOrder' into 'Transparent.GlobalSortOverride' material property
  • New upgrader @ Texture node: Add ability to specify a procedural UxV atlas
  • New upgrader @ Multiplier node: Added 'SpawnCountRandom' property
  • New upgrader @ User settings: Updated settings
  • New upgrader @ Node property renames
  • New upgrader @ Effect backdrop: Now off by default if the grid size is 1x1
  • New upgrader @ Backdrop: Renamed properties
  • New upgrader @ Corelib sim interface renames
  • New upgrader @ CoreLib template renames, cleanups, and uniformization
  • New upgrader @ Add new Core Shader Particle_Master.frag
  • New upgrader @ Per effect instance time-scale: Replaced 'self.isDeterministic' by 'sim.isDeterministic'
  • New upgrader @ CoreLib template renames

Content examples update

New "Tutorials" effects

Event Multiplier node LOD controls
New LOD controls for the EventMultiplier node