PopcornFX v2.1 is released!

PopcornFX v2.1

The PopcornFX v2.1.0 release build is now available !

Patch 2.1

Please note

Projects created with PopcornFX v1.x cannot yet be used with PopcornFX v2.1
The v2.1 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 PopcornFX ? Go to the latest v1.x editor.

We updated the ‘Tutorials’ and ‘Samples’ online packages.
Select the ‘Online Packages’ tab in the project selection window and download the latest ones.

First time using PopcornFX v2? Take a look at our new documentation.

Plugin status

  • UE4 plugin status : Available for v2.1.0
  • Unity plugin status : Privately available for v2.1.0 (contact us)

Features

Editor & Runtime

      • #1230: Nodegraph: Per-node fractional update rates. Can tell any node to run at a lower update rate than the rest of the sim.
      • #2333: Implement proper simulation time windows, enables precise sub-frame triggering of events and correct framerate independent event timings.
      • #1268: Rendering: Add experimental drawcall slicing support for better sorting between unrelated particle batches
      • #2287: Rendering: Add support for ‘DrawOrder’ property
      • #2183: Renderers: Allow exporting properties
      • #2004: GPU Sim: Implement XForms nodes
      • #2312: DDS Loader: support for ETC formats
      • #2363: Prevent runtime from loading unbaked effect files by default.
      • #2455: Payload extract node: Add a bool output which says whether or not the payload is present in the input event.
      • #2524: Turbulence sampler: Remove legacy ‘samplePotential’ function and ‘DefaultSampledField’ property
PopcornFX v2.1 - Fractional update rates
Fractional update rates
PopcornFX v2.1 Draw Order property
Draw Order property

Editor only

  • Effect editor > Nodal editor

    • #2410: Nodal editor: Forbid drag&drop on typed/incompatible pins
    • #1164: Nodal editor UX: Better sorting of node search results in new node popup / template shelf
    • #1201: Nodal editor: Ctrl+click to move bunch of links from one pin to another
    • #1698: Nodal editor: Display property values next to pins in the graph
    • #2509: Nodal editor: Create new Layer: Change default SetLife node 0 value to 1
    • #2554: Nodal editor: Remove now useless ‘if’ template, replace by ‘CParticleNodeIf’
    • #2557: Nodal editor: Rename pin names of ‘select’, ‘within’, ‘clamp’, and ‘lerp’ nodes
    • #2588: Nodal editor: Export as property/link/attribute: Pop naming window
  • Effect editor > Rendering

    • #1977: Rendering: Light particles
    • #2297: Renderer Features editor/viewer (Experimental, only accessible in developer mode)
    • #2298: Renderer FeatureSet editor/viewer (Experimental, only accessible in developer mode)
    • #2673: Rendering slicing: Expose slice count in user settings until slicing metric is properly defined
PopcornFX v2.1 - Light renderer
Light renderer
  • Effect editor > Viewport

    • #1444: Transform gizmo: translate gizmo has some weird/bad controls
    • #1655: Transform gizmos: Refactor
    • #2310: Viewport: Show coordinate system axis
    • #2503: Viewport: Show warning message in editor viewport when user has disabled some optimizations (currently only when developer mode is activated)
  • Effect editor

    • #1459: Timeline: Payload management, specify payload values for each keyframe of a track
    • #1841: Effect interface & Attributes: General pass to make them usable
    • #2553: Effect editor template treeview: Right-click “Show dependencies”, displays which other assets are using the template
    • #2210: Effect editor template treeview: Renaming templates ask for confirmation when other effects are using them. Deleting templates says nothing !
PopcornFX v2.1 Payload management in timeline
Payload management in timeline
  • Template core library

    • #2551: Template corelib: ‘Physics’ template improvements
    • #2451: Template corelib: ‘Physics’ node: Add “VectorFieldSamplingMode” enum
    • #2025: Template corelib: Multiplier node: Add spawn count randomness control
    • #2507: Template corelib: Add missing templates: WorldToLocalPosition WorldtoLocalDirection
    • #2552: Templates: Split sampler templates into new ‘Samplers.pkfx’ corelib file
  • Other

    • #2417: Whole editor: Better handling of read-only files
    • #2292: Project launcher: Auto-update tab, shows list of available PopcornFX versions, and highlights which ones are installed
    • #2631: Details view: Add effect instruction count column
    • #2409: ‘Tutorials’ pack: Replace all “manual” XForms nodes by LocalPositionToWorld and LocalDirectionToWorld helper templates, less error-prone

Bugfixes

Editor & Runtime

  • Events & payloads

    • Fixed #2031: Event payloads: They allow user to append ‘bool’ type, but not handled at runtime, will fail to compile.
    • Fixed #2402: Payload optimizer should not strip payloads of events wired in exported event
    • Fixed #2537: Trigger node does not interpolate payloads with input cursor
    • Fixed #2666: Incorrect layer output events are triggered if layer has one export output node which doesn’t have an event to export
  • Other

    • Fixed #2699: Crash when using trail nodes with complex position calculations
    • Fixed #2375: Two attribute samplers with same Position values are baked as single sampler
    • Fixed #2406: Spatial layers don’t work between effects: ‘Global’ property is ignored
    • Fixed #2394: Shape scale is not axis system independent
    • Fixed #2528: Optimizer crash: bad ‘compare’ op ICB optimization, produces out-of-bounds array access and potential crash
    • Fixed #2171: Compiler: Wiring a ‘float<n>’ into an ‘any’ or ‘all’ node asserts in backend and gives incorrect results
    • Fixed #2418: AlphaRemap ribbons have rendering artifacts when Texture Repeat is on
    • Fixed #2452: shape raycast will not work properly with attribute samplers
    • Fixed #2498: Cone shape sampling: Volume is broken
    • Fixed #2511: Curve CDF: Incorrect computations, unit probability curve produces non unit CDF
    • Fixed #2567: Mesh weighted sampling: doesn’t work on other color channels than Red
    • Fixed #2618: Mesh weighted sampling: Negative vertex-colors cause asserts and incorrect sampling lookup computations
    • Fixed #2040: Empty layer: Behavior not coherent, creates a particle whose life lasts for 1 second

Editor only

  • Effect editor > Nodal editor

    • Fixed #2514: Particle debugger: Crash when switching to shipping while paused & debugging particles
    • Fixed #2311: Particle debugger: Debugger doesn’t display boolean values when inspecting graph values
    • Fixed #2495: Crash when plugging a float3 in a float pin
    • Fixed #2637: Nodal editor crash: Drag a ‘bool’ wire, drop in graph, create billboard node: assert, tries to plug it inside ‘Lit’ input property, which is not a pin
    • Fixed #2521: Nodal editor: Incorrect auto-selection of pin to plug link into
    • Fixed #2526: Nodal editor: Can’t choose ‘select’ node when wiring ‘bool’ link
    • Fixed #1137: Nodal editor: Full-rate passthroughs are displayed with incorrect color
    • Fixed #2657: Node creation menu does not filter suggestions properly when dragging a wire of type ‘auto’
    • Fixed #2468: Template export input node does not warn when min and max values are identical, causes broken, unusable UI
    • Fixed #2571: Changing a constant node’s value doesn’t flag the effect as modified
    • Fixed #2449: Drag Link: Cannot release link if dragging into pin that already has the same link
    • Fixed #2659: Pin rules: Can’t type “true” or “false” in rule value for bool properties
  • Effect editor > Timeline

    • Fixed #2453: Timeline: Deleting a track plugged in the layergraph, then undoing it permanently kills it until next restart of FX editor
    • Fixed #2522: Timeline panel: Unusable selection behavior when there’s a single track
    • Fixed #2205: Timeline Doesn’t scale correctly
    • Fixed #2574: Timeline panel: Unfriendly setting of splitter widget
  • Effect editor > Viewport

    • Fixed #1403: Viewport transform gizmo : HUD selection & key binding conflicts
    • Fixed #1601: Viewport stats: Frame counter doesn’t work correctly
    • Fixed #2294: Viewport toolbar: Add icon for samplers debug visualization toggle button
    • Fixed #2581: Viewport toolbar: An effect with a grid backdrop enabled doesn’t have the grid button checked when it’s first opened
  • Effect editor

    • Fixed #2654: script completion: typing ‘<tab>’ when there’s nothing to complete shouldn’t be intercepted by the completer popup.
    • Fixed #2635: Script completion: extremely annoying sorting, use same algorithm as new node menu
    • Fixed #2660: Mesh weighted sampling: Doesn’t work for animated meshes
    • Fixed #2617: Mesh weighted sampling: doesn’t properly refresh the internal data, causes no visual changes in viewport
    • Fixed #2626: Animated mesh backdrop ignores backdrop transforms
    • Fixed #2027: Effect editor: Template treeview: Allow reordering items through drag & drop
    • Fixed #2152: Effect editor: Instructions in IR panel are not clipped anymore since Qt 5.11, leak into the other columns
    • Fixed #2367: Effect editor: Browsing for textures multiple times does not re-open explorer window to last visited directory.
    • Fixed #2474: Effect editor: Saving effects with attribute-samplers always re-saves and modifies the effect
    • Fixed #2590: Effect editor: Attributes should not display ‘HasMin’, ‘HasMax’ and ‘UseSlider’ properties when the attribute is of ‘bool’ type
  • Content browser

    • Fixed #2632: Details view: Crashes when adding new column in settings when details view is visible
    • Fixed #2422: Details view: Clicking ‘Reset’ on the columns settings makes the entire details view disappear
    • Fixed #2639: Details view: Deleting a column leaves an empty space in the details view
    • Fixed #1897: ContentBrowser: Add a checkbox next to the search bar to configure case sensitiveness
    • Fixed #2038: ContentBrowser: Effect analysis does not show node-emitted errors or warnings
    • Fixed #1665: New effect: When creating new project, default effects in ‘Editor/Templates’ have no thumbnails
  • Property grid

    • Fixed #2165: Propertygrid: When all properties of a given category are hidden, the category is still visible
    • Fixed #2415: Don’t display empty tooltips
    • Fixed #2475: Numeric line edit doesn’t conform number to actual representation (ex: can type a float into an ‘int’ field, validate, and still see the float)
  • Other

    • Fixed #2501: Project launcher: Crash when trying to upgrade project after having tried to open project first
    • Fixed #2604: AccountManager: Account creation Country list is incomplete
    • Fixed #2646: Upgrader: Broken corelib upgrades when user has relocated its ‘Library’ folder to a sub-folder.
    • Fixed #2656: Editor file system: make sure it utilizes extensions set in project settings
    • Fixed #1134: AssetRegistry doesn’t behave correctly with non-upgraded effects
    • Fixed #2399: When baking from the editor, particle compiler bake config isn’t properly loaded
    • Fixed #2413: Online packs: Trash AssetBaker.pkcf files
    • Fixed #2634: Drag & drop doesn’t properly take into account start drag distance, makes it very painful to use
    • Fixed #2641: Editor assets: When opening a window and cancelling (readonly files), leaves assets loaded in memory.
    • Fixed #2679: Core.pkfx: Template OrientationFromAxisAngle is incorrectly forced at evolve

Performance

Editor & Runtime

  • Fixed #2529: Optimizer: Using selects produces garbage codegen (resulting IR produces correct computation result, but through inefficient chain of instructions)
  • Fixed #1914: Optimizer: bad ICB (add/sub merge)
  • Fixed #2625: Optimizer does not remove useless ‘samplePCoords’ calls in ‘editor’ when using shape sampler nodes, only it shipping. It should in ‘editor’ as well, this is the basic DCE optimization
  • Fixed #2531: Optimizer: missing ‘not’ optimizations
  • Fixed #2652: Optimizer does not catch math operators with constant infinities
  • Improved event broadcast performance by switching event map lock to a CRWLock

Editor only

  • Fixed #2059: Project launcher: ULTRA slow when the project list is large, when doing any action that calls ‘RefreshProjectList()’

Upgrades

  • Upgrader @ 2.1.0.52745 : Payload extract node: Added ‘bool Found’ pin
  • Upgrader @ 2.1.0.52785 : Remove AssetBaker.pkcf from runtime config directory
  • Upgrader @ 2.1.0.52813 : Turbulence sampler: legacy ‘samplePotential’ function & ‘DefaultSampledField’ property are not supported anymore, use ‘FlowFactor’ and ‘DivergenceFactor’ instead.
  • Upgrader @ 2.1.0.52861 : Split UpdateRate property into SimulationState and EvolveRate
  • Upgrader @ 2.1.0.52912 : Renamed light and sound renderer’s ‘Radius’ property to ‘Range’
  • Upgrader @ 2.1.0.52915 : Template corelib: Removed ‘if’ template, now using ‘if’ builtin node
  • Upgrader @ 2.1.0.52926 : Renamed inputs of ‘select’, ‘clamp’, ‘lerp’, and ‘within’ nodes to be more comprehensible.
  • Upgrader @ 2.1.0.52931 : Template corelib: Split samplers into new ‘Samplers.pkfx’ file
  • Upgrader @ 2.1.0.52938 : RendererInterface Extension Upgrade: Upgrade project settings allowed extensions and materials’ RendererInterfacePath
  • Upgrader @ 2.1.0.52939 : RendererInterface: RendererInterface files extensions .pkbo -> .pkri
  • Upgrader @ 2.1.0.52944 : Template corelib: Simplified interface of ‘Physics’ template: Merged v1.x legacy properties ‘ConstantAccel’, ‘ConstantWind’, and ‘ConstantDrag’ with the ‘Accel’, ‘Wind’, and ‘Drag’ pins. Also replaced ‘InvMass’ property by ‘Mass’
  • Upgrader @ 2.1.0.52983 : PopcornFXCore Library: Add new library file Samplers.pkfx
  • Upgrader @ 2.1.0.52984 : Add new shaders files Default_Light for RendererLight
  • Upgrader @ 2.1.0.53244 : Upgraded core library

Plugins

UE4

  • #1653: UE4 plugin: Experimental DX12 simulation
  • #2427: UE4 plugin: Boolean attributes
  • #2428: UE4 plugin: Attribute categories