PK-Editor v2.4

From PopcornFX
Jump to navigation Jump to search

Back to anouncements
Released Jan 30th 2020. (preview-1 released Jan 20th 2020)
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

Animtrack backdrop to preview moving effects Curve presets in curve editor Cubemap backdrop for IBL/PBR Ungroup templates/subgraphs
Animtrack backdrop to preview moving effects Curve presets in curve editor Cubemap backdrop for IBL/PBR Ungroup templates/subgraphs


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.4.4.63014_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.4.4.63014_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.4.3.62448_x64.pkg [Experimental]
PopcornFX-Editor_v2.4.2.62130_x64.pkg [Experimental]
PopcornFX-Editor_v2.4.1.61876_x64.pkg [Experimental]
PopcornFX-Editor_v2.4.0.61629_x64.pkg [Experimental]
PopcornFX-Editor_v2.4.4.63014_x64.tgz (Latest) NewIcon.png

Plugin status

Changelog 2.4.4 patch

Builds (Mar 26th 2020)

  • Fixed #4381: Spatial layers: Baking an effect that uses different spatial layers with the same properties merges the spatial layers together, even though they have a different name
  • Fixed #4342: v1 -> v2 upgrader is broken
  • Fixed #4365: GPU sim: Crash when layer has no renderer or outgoing event, OR when a layer has no evolve nodes
  • Fixed #4358: Mesh importer: Always marks the asset as needing save if the asset has no .pkcf file

Changelog 2.4.3 patch

Builds (Mar 5th 2020)

  • Fixed #4259: Mesh sampler: Sampling velocity in 'vertex' mode is broken
  • Fixed #4255: Changing the default value of an attribute or export-input node doesn't flag the effect as modified.
  • Fixed #4110: Material editor: Changing the min/max or default value of a rendering feature property does not flag the file as modified
  • Fixed #4167: Material editor: Crash when changing some properties while shader compiles are pending
  • Fixed #3470: Nodal editor search: Keep Ctrl+F search across multiple nodal editor panels.
  • Fixed #4195: Nodal editor: Crash when Crtl+X on a group of nodes that contains a passthrough.
  • Fixed #4267: Toggling node off/on will sometimes cause compile errors which cannot be solved by anything else than reopening the effect
  • Fixed #4091: Effect editor: Ctrl+S does not write file if there are no changes to save
  • Fixed #4256: Attribute panel displays attributes with scary red conflict error background even for legit mismatches
  • Fixed #3894: Layergraph payload optimizer does not converge anymore, hits max iteration counts, makes effect compilation slower.
  • #4149: UE4: Fixed 'PK_ASSERT(!SelfSceneIsRegistered())' when assigning a different effect to an effect instance in level
  • #4274: Unity: URP Shader supporting mesh color per instance

Changelog 2.4.2 patch

Builds (Feb 24th 2020)

  • Fixed #4198: Default attribute values are lost when upgrading a 2.2 project to 2.4
  • Fixed #4163: Ribbon renderer: Normals are not interpolated and cause faceted shading
  • Fixed #4168: Material editor: When closing the window while async shader compiles are in-flight, freezes the UI until they all finish.
  • Fixed #4174: Material editor: When doing modifications in the material editor window, accumulates shader compilation tasks indefinitely
  • Fixed #4178: Content browser & nodal editor tooltips: compilation message lists displayed are unbound. if there are 1000 messages, the tooltip will try to display all 1000 messages and go off-screen
  • Fixed #4200: Content Browser: Some folders appear with no name
  • Fixed #4201: Content Browser: Disabled nodes still produce "missing static dependency" errors
  • Fixed #4213: Content browser search: Clicking on the trash icon still requires to focus the search inputbox and hit enter to actually clear the search
  • Fixed #4219: Memory leak when loading some corrupt .png files
  • Fixed #4220: Color-mapped .tga files are incorrectly loaded
  • Fixed #4221: Content browser: Occasional crash when displaying some 24bpp RGB images
  • Fixed #4094: MoveTemplateToFile: Breaks refs of existing templates
  • Fixed #4206: Ctrl+F search in nodal editor doesn't search for asset paths
  • Fixed #4229: Nodal editor search: Pins of base type other than int or float are not highlighted by search (orientation, data, spatial layers, ...)
  • Fixed #4160: Disabled nodes can impact nodegraph compilation and break effects in some corner-cases
  • Fixed #4052: Nodegraph debugger: displays wrong values when a template is instantiated multiple times
  • Fixed #4231: Output export nodes show input-specific properties since 2.4.0
  • Fixed #4139: AnimTrack backdrop: Glitches when seeking backwards
  • Fixed #4179: Effect editor: Opening external graph doesn't restore window if already opened and minimized

Changelog 2.4.1 patch

Builds (Feb 12th 2020)

  • Fixed #4107: Creating new project is extremely slow, editor UI freezes for ~20-30 seconds
  • Fixed #4092: Material editor: crash when selecting a shader using the asset picker
  • Fixed #4095: Material editor: removing rendering features doesn't refresh the property grid
  • Fixed #4096: Material editor: invalid shader compilation error count when Material Editor setting have "Enable compilation" disabled
  • Fixed #4111: Material editor: Metal-specific keywords are not registered
  • Fixed #4073: Material editor: Huge editor UI stall when launching async shader compilation
  • Fixed #3988: Density sampling in linear mode in a deterministic layer produces artifacts where some samples are clumped together
  • Fixed #4141: Density sampling in deterministic layers is sometimes deterministic, sometimes not
  • Fixed #4047: Nodal editor: Using the same "Payload Kind" several times in the same event wire does not trigger override warning
  • Fixed #4134: Nodal editor: Selecting spatial layer nodes pop asserts in propertygrid shows spatial layer & payload inputs and allows to change their type, which breaks graph compilation
  • Fixed #4135: Nodal editor: Compiler messages are not refreshed in graph when changing compilation options
  • Fixed #4136: Nodal editor: 'bool' payloads are always seen as not used by child layers
  • Fixed #4099: Nodal editor: Crash when pasting v1 shape sampler into v2 nodal editor
  • Fixed #4087: Spatial Insertion in a template doesn't work
  • Fixed #4146: Trigger node: 'PulseAt' pin expects values in the [0,1] range, sending values outside that range will cause glitches and break the event in subtle ways.
  • Fixed #4113: Event payload does not work with a Link node without default value plugged
  • Fixed #4050: Restoring the backup of a template file in-use by an opened effect editor freezes the editor.
  • Fixed #4038: AnimTrack backdrop: Ignores timeline seeking
  • Fixed #4040: Asset picker widget always goes back to the last directory browsed
  • Fixed #4093: MoveTemplateToFile: Does not patch template refs when target file becomes local file
  • Fixed #4138: Audio files with filenames containing special unicode characters do not load & playback properly
  • Fixed #4069: GPU sim: Effect instance transforms are incorrect when particles are transformed at evolve
  • Fixed #4137: GPU sim: 'fracSign', 'wavetri', and 'rcp' cause GPU simulation kernels to fail compiline, and cause fallback to CPU sim
  • Fixed #3830: GPU sim (d3d11): Seeking backward in the timeline (with a large dt) totally breaks the effects
  • Fixed #4126: GPU sim: death notifier not called at death of instance effect
  • #4112: Can now create attribute sampler nodes directly from the node creation dialog
  • Fixed #4114: Crash when using Opaque_Ribbon material and slicing is activated
  • Fixed #4125: Upgrader: Incorrect project version written when an upgrade fails
  • Fixed #4132: Upgrader: When an upgrade fails due to file write permissions, the project version gets set to the final version instead of the version of the last successful upgrade
  • Fixed #4124: Upgrader: In mixed v1/v2 projects, the upgrader fails when v1 files are not writeable
  • Fixed #4128: Rendering interface: Creating new rendering feature properties does not setup CategoryName correctly
  • Fixed #4143: Renderers: Properties with a 3D-Coordinate semantic are not axis-system independent when edited inline in the propertygrid (ex: 'Position', 'Scale', ...)
  • Fixed #4133: Content browser: Some cubemap thumbnails do not appear
  • Fixed #4150: New projects do not contain .dds textures as a supported extension
  • Fixed #4085: AssetBaker: Allow baking to output directory without directory structure
  • Fixed #4129: Mac editor Stores 2.2 version instead of current
  • Fixed #4130: Mac editor: mcpp default path and redist executable are wrong
  • Fixed #4161: Mac editor has invalid minimum system version: 10.14.4, while PopcornFX Editor is compatible with 10.15.3 and up (Due to Qt 5.12)
  • Fixed #3959: UE4: Blueprint containing emitter picks up TRASH attribute sampler component
  • Fixed #4156: UE4: D3D12 GPU sim texture attribute samplers are never unregistered
  • Fixed #4157: UE4: D3D12 GPU sim texture attribute samplers are not reloaded
  • Fixed #3984: UE4: Billboard renderers with an Atlas do not render correctly when billboarded in vertex shader, GPU simulated

Changelog 2.4.0

Builds (Jan 30th 2020)


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


  • #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


  • #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


  • 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


  • #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



  • #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


  • #3348: Unity: Add support for custom materials

Content examples update

New "HoudiniExamples" package

Vertex animation textures Vertex animation textures Simple impostors Impostors & Mesh LOD Animated impostors
Vertex animation textures: Example 1 Vertex animation textures: Example 2 Simple impostors Impostors & Mesh LOD Animated impostors

New "Tutorials" effects

Renderer 'enabled' pin Animtrack backdrop to preview moving effects Kill particles if outside a local volume Build effects for various platforms
Toggle renderers using 'enabled' pin Example effect to understand transformations Kill particles if outside a local volume Build effects for various platforms

New "Samples" effects

Particles projected on a static mesh
Particles projected on a static mesh

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

Pre-convoluted cubemaps