PK-Editor v1.12

From PopcornFX
Revision as of 05:04, 16 June 2021 by JBilalte (talk | contribs)
Jump to navigation Jump to search

Back to anouncements
Pre-Released ~August 2017, Released September 4th 2017
Will upgrade assets: Projects upgraded to 1.12 cannot be opened with earlier versions

Release highlights

Attribute samplers at evolve Custom script update rates Regular sampling patterns Decal parent-fields
Attribute samplers at evolve Custom script update rates Regular sampling patterns Decal parent-fields


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

If you encounter problems installing the editor, please see the Troubleshooting page.

Plugin status

  • Unity plugin status : Available for v1.12.3 (Plugin version v2.9p8)
  • UE4 plugin status : Available for v1.12.3 (Plugin version v1.8.0)

Known issues

Known issues in the latest 1.12.5 build (May 9 2018):

  • 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. (Fixed in v1.13.0)

Please contact support at if you encounter any other problem

Latest fixes

Patch 1.12.5

Build: PopcornFX-Editor_Setup_v1.12.5.45318_x64.exe (May 9 2018) (Latest Preview) NewIcon.png

  • Fixed a rare crash when selecting scripts after cloning an effect with "SaveAs"

Patch 1.12.4

Build: PopcornFX-Editor_Setup_v1.12.4.44844_x64.exe (Apr 25 2018) (Latest) NewIcon.png

  • Fixed editor not setting proper viewport values on first frame when opening the effect editor, causing view.* functions to not work properly on the first frame.
  • Billboard renderer Billboard renderer : Fixed incorrect bent normals and tangents in screen-aligned billboards
  • Fixed a crash when terminating effect instances that had attribute samplers bound and were sampling them at evolve.
  • Fixed bug where resetting the FluxFactorExpression was not taken into account until the next reset.
  • Fixed particles sometimes colliding with editor camera.
  • Fixed curve editor freeze when displaying a curve containing infinities and/or Framing a curve whose min and max limits were set both to +infinity or both to -infinity.
  • Now displaying a warning in the viewport HUD when editing an effect that has been baked.
  • Changing the type of a particle field with transform flags now switches the flags to 'none' if changing the type to something else than float3 : avoids warnings, and need to go back to float3 to remove the flags manually, as the option is grayed-out when the type is not float3.
  • Fixed editor restoring windows outside the screen when the window was last closed in a minimized state
  • Fixed distortion shader incorrecly mapping texture vectors, was impossible to have a zero distortion vector required a color of 127.5, it now properly treats color (128, 128, 0) as an identity distortion texture (for 8-bit textures whose channels are in the [0, 255] range)
  • Texture viewer : Fixed "R B G A" buttons -> now "R G B A"
  • Fixed attributes being reset to their default value whenever the attribute list was modified (new attribute added, attribute removed, attributes reordered)
  • Fixed: color-picker exposure property is now correctly initialized

Patch 1.12.3

Build: PopcornFX-Editor_Setup_v1.12.3.42400_x64.exe (Jan 19 2018)

  • Fixed minor multithreading performance issue on Skylake processors and above.
  • Fixed 1.12.0 bug that caused some AVX instructions to be executed even on non AVX-capable CPUs
  • Editor frame-export : Fixed crash when opening or saving an effect after using the frame-export feature.
  • Editor frame-export : Fixed bad camera coordinates when using multiple camera backdrops.
  • Fixed small memory leak when saving an image using the PNG codec
  • Scripts : Fixed inconsistent behavior in integer modulus : when divisor == 0 : for some particles, returned 'x%0 = x', for some others, returned 'x%0 = 0', now both are returning 'x'
  • Probability Curves : Fixed bug causing some specific curves to produce a NaN mapping (in practise did not cause trouble at runtime, bug causes floating-point exceptions)
  • FBX Importer : Fixed pkmm corruption when the mesh contained BlendShapes.
  • Added warnings about Localspace and SpatialInsertion evolver not working properly when Evolve state Micro-Updates are enabled.
  • Fixed lighting on all AxisAligned billboarding modes (Billboard renderer): VelocityAxisAligned, VelocityCapsuleAlign and VelocitySpheroidalAlign

Patch 1.12.2

Build: PopcornFX-Editor_Setup_v1.12.2.40448_x64.exe (Nov 08 2017)

  • Fixed an infinite loop when loading corrupt effects or configuration files (caused editor to hang when opening project settings in some projects)
  • Events : Fixed subtle regression in v1.12.0 where all layers triggered from events were delayed til the next frame. Used with patterns like "event.trigger(condition); kill(condition)", would cause a 1-frame span where neither the parent nor the child particle(s) would be displayed. Based on the effect, could cause some visual popping artifacts.
  • Fixed potential 'ParentID' collisions when asynchronously loading different effects
  • Fixed potential rare spatial layers crash when asynchronously loading different effects
  • Saving effect files : doesn't corrupt ondisk file anymore when write fails (or if editor crashes while saving).
  • Scripts : Internal particle fields (such as SpawnerID) were incorrecly exposed to scripts, and could be written to (causing havok in the runtime internals during simulation)
  • Scripts : Compiler optimizer incorrectly removed redundant stores across Event.trigger() calls.
  • Scripts : builtin 'kill' generated unnecessary operations in some cases.
  • Scripts : Random-number-generator : fixed a rare crash.
  • Layer scripts : could not use any 'rand' functions in layer-scripts anymore.
  • Changing the texture of an image sampler did not properly update the texture preview in the "specialized node editor" panel
  • Save-as on an effect file did not update the 'recent files' list of the project
  • AnimTrack Sampler : axisSide(), axisUp(), and axisForward() functions were not properly respecting axis system.
  • FBX AnimTrack importer : fixed AnimTrack rotations import which sometimes produced messed-up rotations depending on the axis system used.
  • Fixed cloning an effect and forcing the new filename to the old filename : doesn't leave randomly-named temporary files dangling anymore.
  • AssetBaker : Fixed bug when using the AssetBaker-Lib or the command-line asset baker (in fact, anything else than the asset-baker built in the editor), the editor nodes were never removed even if 'RemoveEditorNodes' was explicitely set to 'true' in the asset-baker configuration.

Patch 1.12.1

Build: PopcornFX-Editor_Setup_v1.12.1.39129_x64.exe (Sep 22 2017)

  • Compiler optimizer : Now detects and folds compare ops of the form ((a cmp1 b) cmp0 c) and (c cmp0 (a cmp1 b)) where 'c' is a constant, and 'cmp0' is a strict equality or inequality op.
  • Scripts : 'select' and 'iif' builtins are now safer : works properly for any 'int' input as the condition, not only 'true' or 'false'. giving it any nonzero integer as the condition will work as if 'true' was passed in. 'select(a, b, c)' now internally expands to 'select(a, b, c != 0)'.
  • Billboard renderer Billboard renderer : Now emits a warning when using soft animation blending without a texture atlas specified.
  • Fixed minor memory-leak when loading font resources.
  • Fixed crash in TIFF loader that would make editor crash when viewing some tiff images in the content browser. Now also supports more formats.
  • Fixed attribute samplers node displaying garbage in the propertygrid
  • Added a folder browser when specifying baking paths in the project settings: no need to enter the relative paths by hand anymore.

Changelog 1.12.0

Build: PopcornFX-Editor_Setup_v1.12.0.38926_x64.exe (Sep 15 2017)


  • Runtime
    • Texture sampler Texture sampler : fixed memory corruption when CPU sampling failed (out of memory scenarios, or bad data)
    • Shape sampler cone Shape sampler cone : fixed sampleNormal() in surface mode without pCoords : did not take rotations into account.
    • Shape sampler cylinder Shape sampler cylinder : fixed old bug producing slightly incorrect point distribution when surface-sampling a cylinder with a nonzero inner radius.
    • Script frontend : fixed bug in 'select' function : select(scalar, scalar, vector) was not handled properly and produced a compilation error.
    • Scripts : fixed bug in CPU backend when running the 'pow' function on 2D, 3D, or 4D vectors when the exponent was constant and had different values for its different xyzw components: would always use the 'x' component to compute the pow.
    • PVR Loader : more solid, fixed a few bugs due to some incorrect format assumptions, and now recovering when loading incomplete files (for some reason some encoders seem to write the total possible mip count in the header, even if they only write a single one in the file).
    • Billboard and Ribbon renderers would crash if given a 'NaN' value in the TextureID field. (ex: 0.0/0.0, 0.0*infinity, etc...)
  • Editor
    • Content browser : Fixed 'Export to package' feature that did not include all cache files when exporting mesh dependencies (was skipping animation and editor material files)
    • Content browser : Fixed a freeze when trying to 'Export to package' a folder containing a pkmm
    • Fixed a crash when importing a model with an effect open using a backdrop mesh of this model
    • Fixed a crash when undoing a new layer


  • Runtime
    • Scripts : Script optimizer now folds calls to 'sin' and 'cos' with an identical parameter into a single 'sincos' instruction.
    • Scripts : Dramatically improved performance of the internal 'sincos' instruction, was unusually slow before.
    • Scripts : 'pow' functions are now faster, and can be optimized by the optimizer if multiple 'pow' are called with different values but the same exponent.


  • Runtime
    • Attribute samplers can now be sampled at evolve. Implemented for Shape sampler Shape, Curve sampler Curve, DoubleCurve sampler DoubleCurve, Texture sampler Texture, and Text sampler Text samplers.
      Warning : can cause performance hits if many different instances of the effect are alive at the same time and localized pages are NOT enabled for the layers sampling attribute samplers at evolve.
    • Shape sampler Shapes : moved all 'buildParametricCoords*' functions to a new 'shape' namespace. Replaced 'MyShapeSampler.buildParametricCoords*()' by 'shape.buildParametricCoords*()'. [UPGRADER v1.11 > v1.12] will patch effects
    • Scripts : Renamed all '*ParametricCoords*()' functions to a shorter '*PCoords*()' form. [UPGRADER v1.11 > v1.12] will patch effects
    • Spatial insertion evolver Spatial insertion evolver : can now specify a custom float3 particle-field to be used as the insertion position. Defaults to "Position"
    • Shape sampler Shape sampler : removed unused property 'Sampler = Random|Regular', was ignored by the runtime, and always using 'Random' mode.
    • Shape sampler Shape sampler : new 'intersectPCoords' function, that returns an int4 result containing the pCoords at the intersection in '', and the intersection distance in 'asfloat(result.w)', returns an infinite distance if no hit.
    • Shape sampler Shape sampler : new 'sampleSurfacePCoordsFromUV' function, that takes an UV coordinate and returns the pCoords of the mesh for that UV. assumes the mesh is cleanly unwrapped and has no overlapping triangles.
    • Decal layers Decal layers : are now taking into account the Size and Color fields.
    • Sound layers Sound layers : added new 'VolumeField' property where you can specify the parent particle field to be used as an audio-volume scaler.
    • Shape sampler Shape sampling : added new functions 'SamplePCoordsSphereRegular', 'SamplePCoordsBoxRegular', 'SamplePCoordsCylinderRegular', and 'SamplePCoordsConeRegular' that generate pseudorandom regular-looking sampling patterns.
    • Curve sampler Curve sampler : can now specify a 'Quality' hint if sampling the exact curve is less important than high performance. Switches sampling algorithms and allows to fine-tune curve samplers to get the best performance out of them, roughly 3 to more than 10 times faster than using exact sampling, depending on the curve dimension and number of control-points.
    • Spatial layers Spatial layers : added a new 'closest2' function, that allows to specify an inner query radius, and returns the closest neighbor between the inner and outer radius.
    • Text sampler Text sampler : added support for font kerning by specifying the .ttf or .otf font file to use, and added 'charOffset(int lineID, int firstCharId, int lastCharID)' function, that returns the display distance between 'firstCharId' and 'lastCharId', taking into account proper character spacing and kerning.
    • Scripts : moved all 'fast_' functions to a 'fast' namespace. Ex: 'fast_sin(x)' is now 'fast.sin(x)'. [UPGRADER v1.11 > v1.12] will patch effects
    • Scripts : removed 'sincos()' functions : you should now use 'sin()' and 'cos()' instead. Script compiler will optimize internally into a single sincos instruction if appropriate.
    • Scripts : added 'accurate' namespace for explicit high-precision versions of math functions. Ex: 'accurate.sin(x)'
    • Script evolver Script evolver : Can now specify a custom update rate for every script evolver: half-rate (runs once every 2 frames), quarter-rate (runs once every 4 frames), or eighth-rate (runs once every 8 frames).
    • Physics evolver Physics evolver : now warns when using things that have no effect (such as a turbulence used with zero drag or zero mass).
    • Scripts : added 'randsign()' function, that returns a random sign, either -1.0 or +1.0. Can take an optional parameter to skew the random distribution, like the 'randsel()' function.
  • Editor
    • Added new 'Scene Settings' node in particle treeview, and moved all scene-specific properties from the 'Editor Properties' root node to 'Scene Settings'
    • Added a timeline and timeline-specific controls, which can be activated through the 'ShowTimeline' property in the 'Scene Settings' node
    • Added 'Capture Settings' button in the viewport toolbar that allows to playback an effect, capture the rendered frames and dump them to a folder on-disk. (Was previously available in private builds, now available in the public editor build)
    • Simcache : Improved UI, can now control field interpolation independently.
    • Can now save & load custom layouts for editor windows.
    • New project window : added iClone preset
  • Assets
    • AssetBaker : Particle oven has a new 'RemoveSource' property, enabled by default, that removes all script sources (to be used in combination with serialization of the script/IR caches)
    • AssetBaker : Mesh oven Renamed 'Kd-Tree' section to 'Intersect/Project'
    • AssetBaker : Mesh oven Added sampling and UV2PCoords accel build config : can now explicitly save them in baked mesh files and avoid rebuilding at runtime