PopcornFX v2.4 is released!

PopcornFX v2.4

The PopcornFX v2.4.0 build is now available!
Make sure you upgrade your runtime / plugins before switching to this version:

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

You can also check out the changelog on the wiki, where you’ll find all download links and updated patch nodes.
Looking for version 1 of popcorn ? Go to the latest v1.x editor

Highlights

Changelog 2.4.0

Builds (Jan 30th 2020)

Nodegraph

New nodes and script functions

  • #3800: Add a new “static test” node to test if a value is a spawn or evolve value
  • #3832: Add script function ‘self.wasKilled()’ & corresponding helper node in template corelib
  • #3833: Add script function ‘self.isDead()’ & corresponding helper node in template corelib

Graph compiler & optimizer

  • #2681: Compiler: have reliable storage name while editing an effect, prevents simulation particle-count explosion when editing some effects, especially when using trails.
  • #3640: Optimizer: Add global-effect VRP optimization, propagating value-ranges across payloads and layers

Simulation

  • #3356: LOD: Emitter bias: C++ integrations now have a per effect-instance control of LOD bias
  • LOD: Add script functions and corelib templates ‘sim.lodDistanceMin()’, ‘sim.lodDistanceMax()’, ‘scene.lodDistanceMin()’, and ‘scene.lodDistanceMax()’, to access the LOD distance metrics. The “sim” versions take into account the per-layer overrides of LOD metrics
  • #3349: Allow scaling in emitter transforms: requires to check the “Use Scale” checkbox in the various transform nodes (off by default)
  • Fixed #3824: self.kill() is unreliable with OnDeath tests
  • Fixed #3638: Mesh projection & sample distance field artefacts. Sometimes particles get reprojected at incorrect location (was quick-fixed in v2.3.3 to avoid an upgrader, this is the “proper” fix)
  • Fixed #2204: Create Node in recursion effect triggers massive particle spawn
  • Fixed #3852: Attributes: Naming attribute specific names can break graph compilation
  • Fixed #3902: Localized pages: Current heuristics can cause dramatic under-utilization of pages, leading to massive memory usage, and poor performance.

Simulation: GPU

  • #2821: GPU sim: Attribute samplers Curve & Image
  • Fixed #3965: GPU sim: vectorfield sampler function does not compile anymore, falls back to CPU sim
  • Fixed #3829: GPU sim (d3d11): some frames display no particles (particles flash on/off when spawning)
  • Fixed #3830: GPU sim (d3d11): Seeking backward in the timeline (with a large dt) totally breaks the effects
  • Fixed #3837: GPU sim (d3d12): D3D12 GPU sim image and rectangle list resource handlers cannot be overridden properly
  • Fixed #3856: GPU sim: incorrect implementation of xform, breaks localspace node

Rendering

  • #3737: Distortion material for ribbons
  • #2829: Slicing: Improvements
  • #3855: SDK & Editor: Vertex shader billboarding for billboard particles (previously was either CPU or geometry-shader)
  • #2830: Rendering interface: Can now cleanly rename renderer interfaces, editor takes care of patching all references.
  • #2832: PBR / IBL: In-editor renderer now supports ambient cubemaps
  • #3554: Editor rendering settings: Add default “Auto” mode
  • #3414: Houdini Vertex Animation Textures (example available in the Houdini downloadable pack)
  • #3362: Houdini Impostor template (example available in the Houdini downloadable pack)
  • Editor rendering settings: Added new enum to select the billboarding method for billboard particles in editor’s user rendering settings.
  • #2822: Feature-set editor: Shader build output logs
  • #3747: Feature-set editor: Shader permutation list display
  • #3502: Renderers: add a bool pin to enable/disable the renderer – step 2, performance improvements
  • Fixed #3783: Flipped tangents between geometry shader and cpu billboarded particles
  • Fixed #3710: Renderers: inconsistent pin rules for size/size2
  • Fixed #4046: Opaque materials for billboard and ribbon do not compile when LegacyLit is enabled
  • Fixed #3951: No error when assigning an incompatible material on renderer, or when material cannot be loaded

Editor

  • Fixed #3846: Editor shortcut panel: Resetting shortcut after binding 2nd keystroke combination always pops the shortcut conflict window, saying it conflicts with itself.
  • Various small performance improvements all over the board

Nodal editor

  • #1218: Nodal editor: Inline template/subgraph (reverse Ctrl+G)
  • #3574: Nodal editor: Move template to file
  • #3650: Nodal editor: Auto-inlined template nodes to create node “presets”: added a bunch of default “color” nodes, just type “color” in the node creation popup to find them
  • #2795: Payload extract node: Add dropdown to select available payloads
  • #3354: Nodal editor: Improved template property & pin ordering when their order value collides: Use node’s vertical coordinate to sort, allows for a much quicker and more natural ordering of properties.
  • Fixed #3850: Nodal editor: Creating a layer in the middle of an event link creates a passthrough layer but keeps its ‘SetLife’ node to 1 second: Should be 0 seconds
  • Fixed #3838: Nodegraph: Exporting texture sampler as attribute doesn’t work
  • Fixed #3303: Creating script node by dragging a link doesn’t properly name the created input/output pins
  • Fixed #3831: Payload extract node: “Ignore Warning Missing” property does not work as expected
  • Fixed #3892: Nodal editor: Infos / Warnings emitted by layergraph diagnostics from within layer templates are not visible in nodegraph.

Effect editor

  • #3577: Curve editor: Added curve presets
  • Effect editor: New “Storage” panel in graph details panels, allows to see the actual final memory layout used by particles from a specific layer.
  • #3358: Effect Editor: Added cubemap backdrop
  • #3588: Effect editor: Added animtrack backdrop, allows to preview effect in movement
  • #3834: Effect editor: Template treeview UX: When cloning a template, editor should insert it right below the original template, not at the end of the list, & should select it.
  • Fixed #3466: Timeline: Seeking breaks particle debugging by re-simming
  • Fixed #3841: IR Panel: Externals panel’s rate dropdown is disabled when selecting any IR and switching back to the ‘Final’ IR
  • Fixed #3945: Propertygrid: Some cubemaps do not show-up in asset-picker preview
  • Fixed #3656: Propertygrid: Incorrect display of 1D textures in asset-picker preview
  • Fixed #3123: Effect treeview / Template shelf: Right click -> show dependencies on template is broken
  • Fixed #3859: Template create and rename allows to have two templates with the same name in an effect file
  • Fixed #3840: HUD profiler causes random editor crash after running a couple minutes.
  • Fixed #3910: Property grid: Wrong display of slider default value
  • Fixed #3936: Effect editor: Creating attribute node from node input pin doesn’t retrieve semantic
  • Fixed #4043: Copy/paste of v1 curves doesn’t work anymore

Content browser

  • #3605: Add “Recent Files” list in “File” menu
  • #3798: See file versions in details view
  • #3801: Right-click ‘Upgrade’ should upgrade the selected assets to the current build version unless they’re more recent.
  • #3876: Add right-click menu to upgrade v1 FXs to v2

Upgrader

  • #1257: Upgrader : upgrade v1.x effects to v2.0, first experimental version (does not support all v1 evolvers)
  • Fixed #2902: Upgrader flaw: local un-upgraded files will skip missing upgrades when whole project is re-upgraded with a new upgrader
  • Fixed #3964: Command-line PK-Upgrader: Does not work with project settings files not named “PopcornProject.pkproj”
  • New upgrader @ v2.4.0.60087: Content browser: Add new column in the details view settings: ‘FileVersion’
  • New upgrader @ v2.4.0.60098: Particle nodes: Renamed ‘SimulationState’ to ‘ExecStage’, and ‘EvolveRate’ to ‘ExecFrequency’
  • New upgrader @ v2.4.0.60947: Effect files: Made backdrop & camera infos distance-independent (now stored internally as meters, takes into account project’s unit-system)
  • New upgrader @ v2.4.0.61149: Template library: Renamed ‘BillboardScreenControls’ to ‘Legacy_BillboardScreenControls’
  • New upgrader @ v2.4.0.61301: Lit/LegacyLit features: Separate ‘NormalBendingFactor’ from ‘Lit’ and ‘LegacyLit’ feature into a new ‘NormalBend’ feature
  • New upgrader @ v2.4.0.61327: Collision node: Renamed ‘CollisionMask’ to ‘EnableCollisions’

Assets & core-lib

  • #3665: Template corelib: Removed Stretch property in BillboardScreenControl template as it’s not axis consistent.
  • #3926: Template corelib: OnDeath node: Can now explicitly disable ‘OnDeath’ pulses when the effect has stopped.
  • #3956: Template corelib: Improved ‘PlaySound’ layer template
  • #3550: Template corelib: Improved ‘Collision’ template, SDKs can now override the collision & response part with custom C++ code via a simulation interface.
  • #4045: Template corelib: Expose localspace checkbox in ‘Projection’ template
  • #3899: Material corelib: Mesh “Lit” render-feature has totally pointless “NormalBendingFactor” property: Removed property from “Lit” feature, added new “NormalBend” feature which is only for billboards & ribbons

Plugins

UE4

  • #3749: UE4: Vertex shader billboarding for GPU particles
  • #3751: UE4: Re-enable GPU sim for D3D12 API
  • #3853: UE4: Add support for D3D12 image samplers (GPU simulation)
  • #3854: UE4: Add support for D3D12 image attribute samplers (GPU simulation)
  • #3931: UE4: log level is incorrect: debug logs are not shown and error logs are shown as warnings

Unity

  • #3348: Unity: Add support for custom materials

Content examples update

New “HoudiniExamples” package

New “Tutorials” effects

New “Samples” effects

New “EditorCubemaps” package

Contains a bunch of preprocessed cubemaps suitable for use by the cubemap backdrop. Preprocessing stores a blurrier and blurrier version inside each mipmap level.

See the following files for more information:

  • Textures/Cubemaps/Readme.txt
  • Textures/Cubemaps/PopcornFX_FilteringCubemaps.txt

New cubemaps available