PK-Editor v1.11

From PopcornFX
Jump to navigation Jump to search

Back to anouncements
Pre-Released ~November 2016, Released ~December 2016

Release highlights

Simulation Cache Animtrack & Default backdrops Script Cache
Realtime playback of offline simulations (Ex: houdini sims) Animtrack backdrop &
Default backdrops
Script cache, faster loading times


64-bits Windows build
PopcornFX-Editor_Setup_v1.11.7.38348_x64.exe (Latest Preview) NewIcon.png
PopcornFX-Editor_Setup_v1.11.6.37632_x64.exe (Latest) NewIcon.png

If you encounter problems installing the editor, please see the Troubleshooting page.
Note: since v1.10, we stopped providing 32-bits builds of the editor. If this is a problem for you and if you need one, please contact us on Support mail.png

Plugin status

  • Unity plugin status : Available for v1.11 (Plugin version v2.9p2)
  • UE4 plugin status : Available for v1.11 (Plugin version v1.4.0)

Known issues

Known issues in the latest 1.11.7 build (Aug 24 2017):

  • Collision evolver sometimes misses collisions when particles are sliding on surfaces.
  • Collision evolver produces slightly unstable bounces when framerate is not stable.
  • Infinitely self-triggering particles that use event recursion will keep all their previous instances in memory until the last child particle is killed.

Please contact support at if you encounter any other problem

Latest fixes

Patch 1.11.7

Build: PopcornFX-Editor_Setup_v1.11.7.38348_x64.exe (Aug 24 2017) (Latest Preview) NewIcon.png

  • Billboard renderer Billboard renderer : fixed crash in some cases when clearing the 'TextureIDField' property in the renderer but still having a valid atlas definition.

Patch 1.11.6

Build: PopcornFX-Editor_Setup_v1.11.6.37632_x64.exe (Jul 07 2017) (Latest) NewIcon.png

  • Fixed bug in 'select' that produced runtime asserts and falled-back to a slow implementation when selecting between per-particle values using a per-frame value as the selector
  • Script optimizer : Fixed bug when using compare operators that got optimized down to an identity compare that evaluated to true (ie: 'a == a'): the optimizer was baking the wrong constant for 'true', producing incorrect results if used directly as the parameter to a 'select' or an 'iif'
  • Fixed performance regression since v1.9 : when the overall particle memory used by the runtime exceeded the garbage collection threshold (by default 8Mb), spawn pages were freed and re-allocated each frame, producing serious performance hits in the spawners.
  • Baking an effect with .pksc simcache dependencies would fail baking the .pksc files, now works properly.

Patch 1.11.5

Build: PopcornFX-Editor_Setup_v1.11.5.37132_x64.exe (Jun 09 2017)

  • Fixed occasional crash on Windows 10 ("invalid handle" exception)
  • Fixed bugs in script integer division: when dividing by a constant, incorrect values were returned (always incorrect when result of division negative, and incorrect for some specific constant divisors, even when result positive)
  • Attributes over external events : attributes are now broadcasted over an event that triggers an external effect, at the condition that attributes of both the parent and child effects contain no attribute samplers, and are an exact match (same count, same names, same types, same order)
  • Localized Pages: Layer's BoundsPositionField is now properly used as position field to compute page localization.

Patch 1.11.4

Build: PopcornFX-Editor_Setup_v1.11.4.36481_x64.exe (May 18 2017)

  • Script caches : added missing safety checks at load time to avoid reading garbage if pkfx files get corrupt.
  • Script caches : now able to skip hash checks and still load a serialized cache if the script source has been cleared at bake time.
  • Fixed a crash on mobile/NEON when using the 1D 'noise' function.
  • Removed 'No suitable script IR cache found' warnings
  • Sound renderer Sound renderers : fixed a bug that disabled all sound renderers when activating the 'CastShadows' property of any Light backdrop backdrop light.
  • Fixed bug When particles died at the frame they spawned at, messed-up sub-frame dts of other particles spawned in the same batch at the same frame.
  • Resetting the scene now clears all Decal decals
  • Fixed bug when using 'SaveAs' and overwriting an already existing effect : failed saving as, all further changes were applied to the original file.

Patch 1.11.3

Build: PopcornFX-Editor_Setup_v1.11.3.33940_x64.exe (Apr 03 2017)

  • Fixed critical crash when editing curves in projects setup with an empty "Cache" path in the project settings
  • Fixed crash when a camera backdrop is set to active (crashes when scene is reset, or when effect is re-opened with the camera backdrop already active).

Patch 1.11.2

Build: PopcornFX-Editor_Setup_v1.11.2.33771_x64.exe (Mar 18 2017)

  • TIFF loader : updated to libtiff 4.0.7
  • AssetBaker : now looking for ".fbx" and ".FBX" files to fix case-sensitive file systems (linux/mac)
  • Billboard renderer Billboard & Ribbon renderer Ribbon renderers : Only allow float3 Colors for NoAlpha and Distortion BillboardingMaterial, throw an error otherwise, rendering implementations silently supported them, but uploaded bad data to the GPU, producing visual glitches.
  • Removed access to old legacy nodal editor. Contact us if you need to access it again.
  • Script compiler : Fixed false warning when triggering or broadcasting events
  • Flocking evolver Flocking evolver : now properly refreshes warnings in build report, also warns when spatial layer doesn't contain a "Velocity" field (as flocking cannot run without)
  • Scripts : added view.fov(), view.fovHorizontal() and view.fovVertical(). Each can take an optional parameter being the view index. 'view.fov()' is equivalent to 'max(view.fovHorizontal(), view.fovVertical())'
  • Fixed atlas-viewer display bug on non-square textures
  • Rotation evolver Rotation evolver : screen space rotation now uses the first registered view of the MediumCollection (if no view registered, falls back on old behavior: __TEMP_HACK_LastCamPos)
  • Spatial insertion evolver Spatial insertion evolver : now properly does NOT insert particle with infinite position.
  • Fixed bad detection of BMI2-capable CPUs, was always ignored in editor
  • Layer (Descriptor): now exposes BoundsPositonField and BoundsSizeField: particle fields used to compute Bounds (page/medium/mediumCollection).
  • Fix 1.11.0 performance regression in editor when saving a pkfx file
  • Editor now cleans-up effect files when opening them: previous versions of the editor were sometimes leaving dangling nodes in the effect, that didn't appear anywhere in the UI.

Patch 1.11.1

Build: PopcornFX-Editor_Setup_v1.11.1.33374_x64.exe (Feb 07 2017)

  • Scripts : Added view.aspect() and view.resolution() functions
  • Script compiler : Now suggests to use some builtin constants instead of manually typing them (ex: typing '3.14159' by hand in the script will produce a suggestion to use the 'pi' builtin instead)
  • Script optimizer : Fixed 1.11.0 incorrect constant-folding of compare operators, when comparing two fully constant float values, an integer compare of the values was done, instead of a floating-point compare.
  • Script optimizer : Now iteratively applies optimization passes as long as optimizations are still being made. Currently all scripts converge within 1 to 2 passes only.
  • Editor : Fixed bad HUD display position on latest NVidia drivers + win10
  • Camera backdrops : fixed minor memory leak when resetting scene.

Changelog 1.11.0

Build: PopcornFX-Editor_Setup_v1.11.0.32777_x64.exe (Dec 09 2016)


  • Runtime
    • Flocking evolver Flocking evolver : Fixed a warning in the editor : 'MeanNeighborDirection' was declared with an incorrect rotate flag.
  • Editor
    • Fixed bad FBX animation path import when importing paths that were exported with a non-identity transform from the origin. Rotations were messed-up.


  • Runtime
    • Vastly improved script optimizer, moved most optimizations from AST-level to the SSA-based IR level.
    • Script compiler can now factorize common sub-expressions
    • Script compiler can now remove all redundant loads and stores to particle fields
    • Script compiler can now remove dead computations that don't contribute to anything
    • Script compiler can now do more aggressive constant-folding
    • Revamped particle page allocator : faster, better heuristics, better memory usage
    • Spatial layer Spatial layers : Slightly improved performance.


  • Runtime
    • Script IR can now be pre-compiled and cached in pkfx files, entirely skipping the compilation of scripts at runtime during loading, resulting in much faster effect load times.
    • Particle evolver All evolvers : 'Active' checkbox status now saved in the pkfx file. Inactive evolvers do not contribute to particle declaration anymore (any auto-field they insert will be removed). Inactive evolvers are removed at bake-time by the AssetBaker. Allows to keep development-only nodes inside effects.
    • Flocking evolver Flocking evolver : Doesn't need the 'MeanNeighborDirection' field anymore, allows to save memory by clearing the 'MeanNeighborDirectionField' property of the evolver.
    • New feature : simulation caches. Layers can now be setup to playback a cached simulation stored in a .pksc fime (pksc = PK Simulation Sache). The particles will have all fields stored in the simcache file, which will be updated each frame accordingly. Additional spawn and evolve logic can be added as usual.
    • Scripts : new 'linear2srgb', 'srgb2linear', 'fast_linear2srgb', and 'fast_srgb2linear' functions, that perform colorspace conversions. they accept either float3 RGB or float4 RGBA colors. If an RGBA color is passed, won't modify the alpha. The 'fast' versions apply a simple 2.2 gamma, whereas the non-fast perform the proper sRGB conversions.
    • Texture sampler Image formats : Added support for ETC2 : RGB8, RGBA8, and RGB8A1
  • Editor
    • New backdrop : Animtrack backdrop Animtrack backdrops. Can now parent backdrops together, Animtrack backdrop moves all its childs along a path imported from an FBX file. Useful to create test-rigs for effects that need to be previewed in movement. Can also bind an animtrack backdrop to an animtrack attribute sampler.
    • Can now open projects inside a new editor window and keep the project selection window opened, useful when working on multiple projects at the same time.
    • 'New asset' window now has a checkbox to auto-open the new asset right after it has been created. Useful when content-browser has too many items displayed or a filter active and you don't want to reset the filter to find and open your asset. Can also be accessed from the "User" category of the project settings.
    • PK-Editor.exe : now accepts a '-h' or '--help' command-line switch to display the list of available switches.
    • Renderers : Can now trim particle textures to reduce overdraw (Experimental). Texture viewer now displays trimmed vertices if the texture has a .pkat containing trimming data. The particle renderers used in the editor and the Unity/UE4 plugins currently ignore the trimming information, and will still render the particles as regular billboards, however, if you are using the SDK in your in-house engine, you now have access to that trimming data.
    • Mesh backdrop Mesh and Animtrack backdrop Animtrack backdrops now provide default builtin backdrops for convenience. They have a dropdown that allows you to pick either a custom backdrop as before (path to an FBX file), or one of the new default builtin backdrops.
    • Revamped atlas viewer.
  • Assets
    • AssetBaker can now selectively bake Script IR cache (default=ON), by setting the 'EnableScriptCache' property of the 'COvenBakeConfig_Particle' configuration object in the .pkcf bake config files (on by default).
    • AssetBaker can now replace asset paths extensions referenced in .pkfx files when baking (ex: dds -> gnf when baking for PS4, fbx -> pkmm, ...), through a custom 'ExtensionsRemap' property in 'COvenBakeConfig_Particle'.
    • AssetBaker can now remove inactive nodes through the 'RemoveInactiveNodes' property in 'COvenBakeConfig_Particle' (on by default).
    • AssetBaker can now properly bake HBO files with different per-platform settings : if settings differ, will load the HBO file in a local context, once per config, and process everything.
    • AssetBaker can now generate texture trimming (cutouts) and store the optimized vertices in the .pkat file