PK-Editor v2.5

From PopcornFX
Jump to navigation Jump to search

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

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

Release highlights

New autoinlined templates for quick iterations Custom file actions allowing versioning Default material applied on particles with shader errors Particles can now be affected by scene wind
New autoinlined templates for quick iterations Custom file actions allowing versioning Default material applied on particles
with shader errors
Particles can now be affected by scene wind


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.5.5.64615_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.5.5.64615_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.5.4.64330_x64.pkg [Experimental]
PopcornFX-Editor_v2.5.3.63923_x64.pkg [Experimental]
PopcornFX-Editor_v2.5.2.63604_x64.pkg [Experimental]
PopcornFX-Editor_v2.5.1.63429_x64.pkg [Experimental]
PopcornFX-Editor_v2.5.0.63174_x64.pkg [Experimental]
PopcornFX-Editor_v2.5.5.64615_x64.tgz (Latest) NewIcon.png

Changelog 2.5.5 patch

Builds (May 29th 2020)

  • Fixed #4584: Crash when unpinning a Mesh Attribute bound to backdrop
  • Fixed #4576: Nodal editor: Crash when selecting a "local position to world" node followed by a "transform" node. In that order.
  • Fixed #4577: Curve editor: Moving multiple control-points at the same time is broken, messes-up everything when moving too quickly
  • Fixed #4602: Project launcher: When a more recent editor version is installed, opening a project tries to open it with the most recent editor by default
  • Fixed #4601: Project launcher: When a more recent editor version is installed, allows to "upgrade" to that version, but cannot apply upgrades and messes-up entire project by effectively skipping all upgrades.
  • Fixed #4569: Editor cache: When opening/building assets, the editor will recursively rebuild the cached asset onto itself, until the baked path becomes too long for the OS, causing unnecessarily deep cache folders
  • Fixed #3918: Content browser save on close: Does not pop warning dialog about writing corelib files
  • Fixed #4599: UE4: SpecularTexture isn't assigned on ribbons/billboards materials when LegacyLit is enabled
  • Fixed #4592: UE4: GPU simulated effects crash on UE4.25 when running on D3D12

Changelog 2.5.4 patch

Builds (May 14th 2020)

  • Fixed #4554: Renderers: Crash when using custom-sort values
  • Fixed #4559: Project launcher: Crash when creating a new project from a readonly project file, or a non-existing path
  • Fixed #4547: Script node: "float" and "bool" are inverted in script node drop-down buttons
  • Fixed #4564: Effect editor: Effect repeat mode: Going from a 0 to a nonzero repeat delay instantly spawns lots of effect instances.
  • Fixed #4456: Effect editor propertygrid: Doing a Ctrl+X into a numeric inputbox and unfocusing it keeps it to the value that was just cut instead of resetting it to 0
  • Fixed #4558: All 3D viewports: Grid backdrop is broken when hot-switching coordinate systems in the project settings
  • Fixed #4553: JPG loader: Incorrect loading of Grayscale JPEG files, entire image shifted 2 texels to the left
  • Fixed #4469: UE4 plugin: Assert when reimporting UE4 effect
  • #4470: UE4 plugin: Add UE4.25 support

Changelog 2.5.3 patch

Builds (Apr 30th 2020)

  • Fixed #4525: Crash when closing an effect editor when multiple other effect editors are opened, and rendering is using D3D12
  • Fixed #4524: Crash when hovering timeline tracks in effects where a layer exports an invalid output pin (a pin which is not an event)
  • Fixed #4518: Content browser: Cannot specify filename with non-ascii characters: Says "Invalid filename"
  • Fixed #4518: Propertygrid: When an asset path points to a non-existing asset, opening the browse window to pick a new asset makes it start in a garbage location (usually program files)
  • Fixed #4519: Mesh importer window: Settings icon opens rendering settings instead of mesh editor settings as advertised by the tooltip
  • Fixed #4515: Script properties: type dropdown of inputs & outputs have an inconsistent ordering of the types
  • Fixed #4351: Project launcher doesn't refresh its project list when a .pkproj is removed
  • Fixed #4529: Nodal editor: "Clone template locally" does not work properly when cloning templates that contain layers
  • Fixed #4372: Sim GPU / Rendering : cannot render material that does not have the feature 'enabled'
  • Fixed #4186: Light Renderers are not axis-system independent
  • Fixed #3730: Image sampler: BGRA4 linear clamp: Incorrect colors returned, slightly yellowish
  • Fixed #4411: Effect editor: Capturing a thumbnail shows all billboard particles as unlit in the captured thumbnail
  • Fixed #4417: Export to package: Treeview shows directory contents with files first then subfolders at the very end. Should show subfolders first
  • Fixed #4520: UE4: Skeletal mesh attribute samplers are always rebuilt when attribute sampler is destroyed/created
  • Fixed #4527: UE4: Profiler displays nans when no effects are active
  • Fixed #4537: UE4: FloatRGBA (hdr) image formats are not correctly supported
  • #4495: UE4: Add LLM markers
  • #4526: UE4: Add particle count per effect to the profiler
  • #4528: UE4: Add config option to enable PopcornFX profiling markers

Changelog 2.5.2 patch

Builds (Apr 16th 2020)

  • Fixed #4458: Timeline payloads: Orientation payloads produce garbage when used
  • Fixed #4460: Timeline payloads: Cannot edit keyframe "Time" value
  • Fixed #4479: When determinism is forced in the timeline user configuration, effect editor recompiles entire effect twice when switching compilation mode from editor to shipping, or the other way round
  • Fixed #4464: effect.orientation sometimes returns NaN, depending on what transform nodes are already present in the current layer.
  • Fixed #4483: Crash when enabling CustomSortKey + Slicing
  • Fixed #4477: AssetBaker recompiles every effect twice: takes twice as much time to bake as it did in 2.4.x
  • Fixed #4463: Animtrack backdrop: Produces incorrect effect.velocity values
  • Fixed #4465: AnimTrack backdrop: Switching back and forth between different tracks messes up transforms
  • Fixed #4474: IR Panel: "Events" tab does not show event rate for root event when viewed from inside a layer
  • Fixed #4473: 'orientation' types produce warnings when used with discretization paths (for example using the "PreviousFrameValue" template)
  • Fixed #4498: User can create "Output Node" for input value, followed by a crash
  • Fixed #4459: Payload extract node: When extracting an orientation payload, if the payload presence could not be determined at compile time, and the layer was triggered without the payload, would output a invalid orientation instead of the identity orientation.

Changelog 2.5.1 patch

Builds (Apr 9th 2020)

  • Fixed #4451: Editor crashes when cross-referencing asset are unloaded: Can happen when deleting nodes, closing effect editor, and other operations...
  • Fixed #4405: Nodal editor: Crash when deleting a template while the nodal editor is viewing one of its child graphs more than 1 level deep
  • Fixed #4415: Renaming an asset in the content browser and choosing to patch references misses some refs in files when the uppercase/lowercase mismatches with the filename ondisk
  • Fixed #4419: Timeline: Editing timeline keyframe payloads when paused sometimes updates the sim and resims (as you would expect), sometimes doesn't.
  • Fixed #4422: Timeline: Payload warnings in layergraph do not show actual timeline track name when the event comes from a root event node, says "layer "Track"", instead of "timeline track "ActualTrackName"", which doesn't help
  • Fixed #4454: Nodal editor shows many false-positive info messages "Event ... sends payload ... which is not used by any of its targets"
  • Fixed #4423: VersionControl: Incorrect command-lines called when assets are saved by the dialog-box when closing the last editor window
  • Fixed #4424: SDK: FOV assertion when calling mediumCollection->UpdateView(), with Z-Up worldspace but Y-up viewspace.
  • Fixed #4452: SDK: Runtime asserts when loading effects which declare attributes without using them
  • Fixed #4109: Constant-fold chained XForms calls: w2l+l2w -> w2w
  • Fixed #4455: Content browser: Always display folder full names even if they contain dots in their filenames
  • Fixed #4367: Sampling normals from mesh sampler does not work when D3D12 GPU sim is enabled
  • Fixed #4363: Release assert when copy pastin ShapeSample node and D3D12 GPU sim is running
  • Fixed #4364: Shape samplers do not refresh until effect is restarted when properties are edited and GPU sim is enabled
  • Fixed #4338: Ribbon renderers do not support atlas blending

Changelog 2.5.0

Builds (Mar 30th 2020)


Nodal editor

  • #4313: Improved error message when a non-existing submeshID is used
  • #4262: Templates: When disabling node, allow specifying which input should passthrough into which output.
  • #4183: Nodal editor search: Keep a list of recent searches & save settings from one editor launch to another
  • #3996: Auto-exporting a property which other properties depend on now makes those other properties visible regardless of the current visibility rules, so you can auto-export them as well if needed.
  • Fixed #4370: Picking colors in nodegraph UI & color-picker is not gamma-correct (fix does not change existing effects, but the colors shown in the color picker now match the colors injected in the graph)
  • Fixed #4396: Renderers: Picking a new feature-set in any renderer node always pops file browser window at project root
  • Fixed #2423: Hard to resize annotate box

New script functions

  • #4232: Expose script function to extract side, up, and forward axes from an orientation: 'orientation_axisSide', 'orientation_axisUp', and 'orientation_axisForward', as well as corresponding corelib helper nodes: 'orientation.axisSide/Up/Forward', and 'orientation.basisVectors', which outputs all 3

Graph compiler & optimizer

  • Fixed #4321: Compiler: incorrect constant-folding and instruction-combination with 'log'/'log2' math functions
  • Fixed #4286: Layergraph payload optimizer: hitting the max iteration count on certain FXs
  • #4240: Optimizer ICB: detect basis vector extraction from effect orientation and combine into simpler effect axis getter
  • #4239: Optimizer ICB: detect rotation of a basis vector by an orientation and simplify into a basis vector extraction from the orientation + a mul


  • Fixed #4303: Curve integral in "Spline" mode is incorrect when control-point segments do not have the same length, produces broken CDF curves.
  • Fixed #4401: Curve probability sampling / CDF: When two curve keyframes have the same 'x' coordinate, breaks the CDF and makes it uniform
  • Fixed #4400: Texture sampler: Texture specified through an inline template property are always converted to BGRA8 at runtime and loose all HDR information
  • Fixed #4399: Texture sampler: Cannot sample the density of a texture specified through an inline template property, only works with an actual texture node.
  • Fixed #4391: view.distance() and view.unprojectedAxis() return an incorrect value when no camera views are registered in-engine. They should return +inf
  • Fixed #4390: Curve sampler: Crashes on x86-SSE machines when sampled with a NaN value
  • Fixed #4294: Some orientation helper nodes with nothing wired in produces a NaN orientation (orientation from forward, from up, from forward up, and from axis angle)
  • Fixed #4403: Mesh sampler: Always reformats vertex-buffer when loading effect, even when format is fine. Wastes time for no reason
  • #4172: Sim interfaces: Allow "partial" binding of sim interfaces when not all inputs are needed by the actual implementation

Simulation: GPU

  • Fixed #3997: GPU simulation glitches when starting some effects


  • #3967: Unify meaning of "Size" property between planar-aligned billboards and other billboard types: "Size" is now the particle radius for all billboard types. Was previously radius for all except planar, where it was the diameter.
  • #3940: Add GPU particles support for vertex shader billboarded particles
  • #3939: Add slicing support for vertex shader billboarded particles
  • #1523: Editor viewport: Add default renderer/material/shader to avoid invisible particles
  • Fixed #4326: Default material does not work with vertex shader billboarded particles
  • Fixed #4323: Rotation is inverted for planar aligned billboard with vertex billboarding
  • Fixed #4306: Incorrect display of editor cubemaps in overdraw view
  • Fixed #2005: Incorrect display of debug shapes in overdraw view
  • Fixed #4119: Particles disappear when modifying renderer properties
  • Fixed #4235: CPU-billboarding: normals and tangents are not rotated for screen-aligned billboards
  • Fixed #4288: Useless texture fetch for alpha when using an AlphaTest Opaque material
  • Fixed #4385: Bounding boxes: invalid bbox generated when the 'size' of the renderer is negative


  • #4407: Image loaders: Add support for .hdr files
  • #4292: Add experimental version-control settings to make life with perforce easier
  • Fixed #4349: Hot reload: Meshes hot reload doesn't work until assets are manually built
  • Fixed #4347: Hot reload: Samplers do not refresh when used resource is removed/renamed
  • Fixed #4348: Hot reload: D3D12 Rendering API crash when removing/renaming texture used by rendering
  • Fixed #4346: Hot reload: Renaming a file outside editor does not trigger a refresh of the resource
  • Fixed #4327: Hot reload: Render system does not pick up deletion notifications
  • Fixed #4296: Crash when importing package from an older version with different library directory setup than target project

Effect editor

  • #2383: Viewport: add color saturation in the post-FX parameters
  • Fixed #4369: crash when two renderers are compatible feature-wise, but have mismatching billboarding modes, and are rendered using vertex shader billboarding

Mesh importer

  • #4298: Mesh importer: Add "Import" button to manually reimport after having changed some settings
  • #4293: Add support for Granny's .gr2 meshes (if you have a granny SDK and want to use your .gr2 meshes in popcorn, you will need to tell the editor where to find your Granny dll, drop us a line)

Material editor

  • Fixed #4389: Material editor takes a long time to open
  • Fixed #4322: Material editor: huge stall on main thread when launching async shader compilation
  • Fixed #4319: Material editor: huge performance hit when shaders are compiling

Content browser

  • Fixed #4275: Occasional crash on editor startup during asynchronous effect analysis
  • Fixed #4300: Baking/importing assets ignores the list of allowed asset extensions setup in the project settings


  • New upgrader @ v2.5.0.62099: Renamed corelib templates. (ex: 'OrientationFromForward' -> 'orientation.fromForward', 'SceneProperties' -> '')
  • New upgrader @ v2.5.0.62233: Unify meaning of 'Size' property between planar-aligned billboards and other billboard types: Change 'Size' to always mean the radius
  • New upgrader @ v2.5.0.62501: User configuration file: Reorganized/renamed some settings
  • New upgrader @ v2.5.0.63107: Upgraded corelib files
  • New upgrader @ v2.5.0.63165: Angle fixes: orientation.fromEuler is not axis-system independent + All 'orientation.fromXXX' with an 'AngleOffset' arg now expect an 'orientation' instead of 'float3' euler angles

Assets & core-lib

  • #4105: Added scene wind support in Physics node
  • Fixed #4162: Templates corelib: 'Collision' template: Particles fall through the floor
  • Fixed #4320: Templates corelib: 'PreviousFrameValue' node doesn't work with 'bool' types
  • #4398: Templates corelib: New 'Timer' template, that counts the elapsed time since started, with 'Start' and 'Stop' bool inputs
  • #4397: Templates corelib: New 'Counter' template that counts the number of times an input condition is 'true'
  • #4297: Templates corelib: New 'PivotMesh' helper template to specify a pivot to a mesh renderer
  • #4249: Templates corelib: New autoinlined templates: Suffixed with "(rig)": sampling helpers that drop the sampling node AND the resource node, spatial layer helper rigs, simple emitter rigs, rand float, rand float2, rand float3, and rand float4 helpers.
  • #4230: Templates corelib: 'TimeBasedCursor' is now available as a public template
  • #4228: Templates corelib: Add ability to rotate vector-field in physics node and vector-field sample node
  • #4227: Templates corelib: Add 'transform inverse' node to complete existing 'transform' node
  • #4225: Templates corelib: 'effect.orientation' : Add static orientation offset like in 'OrientationFromXXX' nodes
  • #4224: Templates corelib: 'OrientationFromEuler' template is not axis-system independent, and inconsistent with OrientationFromXXX templates
  • #4242: Templates corelib: 'EventMultiplier' adds new payloads to its output event
  • #4395: Fork 'SmallPointAA' to 'SmallPointAA_Attribute', and make original 'SmallPointAA' not automatically expose an attribute
  • Fixed #4394: 'SmallPointAA' template: Behaves badly when no camera views are registered in-engine: produces infinite sizes
  • Fixed #4226: Templates corelib: 'OrientationInvert' node cannot be used without an input: Produces compile error



  • #4361: UE4: Improve auto scene actor creation
  • #4332: UE4: Add support for volumetric fog particles
  • #4055: UE4: Hook onto scoped profile nodes so PopcornFX profiler nodes appear in UE Insights
  • Fixed #4362: UE4: Vertex shader billboarding mismatch with PK-Editor rendering
  • Fixed #4334: UE4: ParticlePosition, ParticleSize, ParticleRadius are incorrect when using vertex shader billboarding
  • Fixed #3875: UE4: Enabled pin not supported for light and sound renderers


  • #4011: Unity: Support exported events
  • #4010: Unity. Add Option to enable localized pages
  • #4005: Unity: Implem DX12 RenderAPIData
  • #4002: Unity: Make distortion work with GPU billboarding

Content examples update

New "Tutorials" effects

New 'Counter' template New 'Timer' template Wind backdrop
Shows how to use the 'Counter' template Shows how to use the 'Timer' template scene.sampleSceneWind sim-interface &
wind backdrop