PK-Editor v2.7

From PopcornFX
Revision as of 08:24, 25 October 2020 by JBilalte (talk | contribs)
Jump to navigation Jump to search

Back to anouncements
Released Sep 17th 2020. (preview-1 released Sep 10th 2020)
make sure you upgrade your runtime / plugins as well before switching to this version.

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

Release highlights

Effect instance time-scaling Atlases/Sub-UVs for decal renderer Color-picker improvements Multi-selection dropdowns for custom nodes
Effect instance time-scaling Atlases/Sub-UVs for decal renderer Color-picker improvements Multi-selection dropdowns for custom nodes


64-bits Windows build MacOS build Linux-64 build
PopcornFX-Editor_v2.7.2.1438_x64.exe (Latest) NewIcon.png
PopcornFX-Editor_v2.7.2.1438_x64.pkg [Experimental] (Latest) NewIcon.png
PopcornFX-Editor_v2.7.1.1153_x64.pkg [Experimental]
PopcornFX-Editor_v2.7.0.899_x64.pkg [Experimental]
PopcornFX-Editor_v2.7.2.1438_x64.tgz (Latest) NewIcon.png

Changelog 2.7.2 patch

Builds (Oct 22nd 2020)

  • Fixed #5478: Effect editor: crash when removing an attribute sampler in an effect containing several attribute samplers and D3D12 GPU sim is enabled
  • Fixed #5432: Effect editor: crash when disabling a layer in an effect containing several attribute samplers and D3D12 GPU sim is enabled
  • Fixed #5480: Effect editor: removing an attribute sampler in an effect containing several ones messes other attribute sampler instances (CPU sim)
  • Fixed #5328: Effect editor: When first opening an effect, the effect editor sometimes spawns it multiple times, leading to 5 to 10 times the number of particles, until Ctrl+R is hit
  • Fixed #5402: Effect editor: Viewport memory stats do not work anymore
  • Fixed #5416: Nodal editor: Annotations: When the annotation edit window auto-closes, the text is lost if it hasn't explicitly been applied before
  • Fixed #5505: Cannot drag & drop assets from the content-browser or OS explorer onto the asset-picker widget
  • Fixed #5420: Occasional crash when closing asset windows
  • Fixed #5412: GPU sim: crash when a texture sampler uses an atlas texture (D3D12)
  • Fixed #5411: GPU sim: Some view.axis*() functions are not implemented in the GPU sim
  • Fixed #5410: GPU sim: view.axis*() functions are flipped on some axis systems
  • Fixed #5407: Importing a package will pick-up the wrong package version if it had been previously downloaded with a more recent editor version
  • Fixed #3868: Allow controlling viewport camera rotation sensitivity
  • Fixed #5417: Content browser: Selecting multiple assets and showing their dependencies only shows the dependencies of the last clicked asset, not of the entire list of selected assets
  • Fixed #5403: Sample effects baked with D3D12 GPU simulation on desktop are massive
  • Fixed #5245: Timeline: Timeline & prev/next buttons are not disabled when the debugger is active
  • Fixed #2967: Compiler: IR's constant storage never get compacted by removing unused entries, leaves overhead in final compiled IRs and baked effects
  • Fixed #5375: Materials: ShaderInput1.Input1 particle pin does not work in integration code
  • Fixed #5392: Project constants: Adding a new constant while an effect is opened recompiles the effect as many times as there are constants.
  • Fixed #5507: Hitting 'Esc' on the save confirmation dialog when closing an window with pending changes doesn't cancel the closing of the window, instead, does as if the 'No' button was clicked
  • Fixed #5496: Trying to use "select" or "if" nodes on non-numeric values does not show any error in the graph, even though it is not a legal operation
  • Fixed #5485: UE4: Game/editor sometimes freezes when GPU simulation is enabled & game is stopped, or PopcornFXSceneActor is destroyed
  • Fixed #5374: UE4: Dynamic Parameter nodes do not work anymore since UE4.23
  • Fixed #3389: UE4: Effect preview viewport queues emitter restarts indefinitely when UseLessCPUWhenInBackground is actived, leading to crashes
  • Fixed #5359: UE4: crash when unloading scene & D3D11 GPU sim is enabled

Changelog 2.7.1 patch

Builds (Oct 8th 2020)

  • Fixed #5329: When a layer uses an attribute sampler and doesn't compile, editor crashes after making it compile again
  • Fixed #5279: script function 'scene.ea_from_orientation()' is broken, returns 'orientation' instead of returning 'float3' (broken since 2.0.0)
  • Fixed #5269: User settings shortcuts: Cannot bind some keys to shortcuts (for example the "Return" key)
  • Fixed #5319: Color-picker: Slider are not clamped in the [0,1] range, annoying when you want to bump a slider to max range
  • Fixed #5311: Resource nodes: Don't show the "Asset > Show in Explorer" or "Asset > Show in Content Browser" menu on resource nodes that have no assets (for example curves)
  • Fixed #5321: Nodal editor: Allow setting curve preset by right-clicking on curve node directly
  • Fixed #5322: Propertygrid: When multiple curve nodes are selected, setting a curve preset using the right-click menu on the inline curve widget only updates the first selected curve node
  • Fixed #5326: Mesh backdrop: Animation stops when the effect instance dies, even if 'Mesh Backdrop Follows Instances' is unchecked
  • Fixed #5327: Mesh backdrop: Seeking back in the timeline with the effect paused messes up the backdrop animation
  • Fixed #5335: Mesh backdrop: Seeking back in the timeline with a mesh backdrop skeletal animation is super slow, even slower with multiple instances of an effect
  • Fixed #5336: Skinned mesh backdrop bound as attribute sampler: When backdrop is scaled, normals are also scaled. They should not.
  • Fixed #5297: GPU sim: editing turbulence sampler Global scale, Strength, .. does not refresh simulation until a graph rebuild is triggered
  • Fixed #4329: GPU sim: D3D11 shader compilation failing: max sampler register index
  • Fixed #5364: Nodegraph compiler: regression in discretization path detection: 'TriggerOnce' template is broken
  • Fixed #5350: UE4: Various crashes when UE garbage collect is forced using gc.CollectGarbageEveryFrame
  • Fixed #5316: UE4: Shadow rendering artefacts when billboards are generated on GPU, and stateless collect is disabled
  • Fixed #5315: UE4: Shadows flicker when billboard particles are generated on CPU and stateless collect is disabled
  • Fixed #5313: UE4: PopcornFX stats are unreadable when bRecordProfileMarkers is enabled for project
  • Fixed #5369: Upgrader: Upgrade v2.7.0.70 unnecessarily clone shaders when pins from different pkri share the same name

Changelog 2.7.0

Builds (Sep 17th 2020)

Assets & core-lib

  • #5207: New "IsInEditor" node, which tells whether or not the effect is running inside the editor. Useful to switch off things used for debugging purposes.
  • #5070: 'Color' node: Add "AlphaShift", "AlphaVar", and "AlphaBias"
  • #5005: 'ShapeSample' node: Add outputs for all possible 'Color' and 'UV' channels
  • #5255: 'Projection' node: Hard to use, requires using explicit discretization nodes on Position and Velocity outputs to have something usable
  • #5004: Add a 'RandomStartFrame' checkbox to the 'Flipbook' node
  • #4816: Add missing 'view.velocity' node
  • #4561: Add 'VersionTest' node returning true/false
  • #4279: Add layergraph 'Version' node to block events based on the build version
  • Fixed #5065: 'SmallPointAA' node doesn't work properly if a value evaluated at spawn is wired into its 'Position' input.
  • Fixed #4068: 'self.age' template doesn't work properly if forced at evolve
  • Fixed #4793: 'Trail' node: 'Color' input does not have the color semantic


Nodal editor

  • #5079: Display previews on resource (sampler) nodes
  • #5038: When double-clicking on a Sampler/Resource node, open an asset viewer on the corresponding asset
  • #5153: When hovering a wire or a pin, highlight the entire wire across multiple nodes, allows to quickly see where the value originates from and where it goes to
  • #5257: Export input nodes: Allow setting up dropdowns as "multi-selection" / "bitfield" dropdowns
  • #5258: Export input nodes: Allow auto-populating dropdowns with project constants
  • #5263: Annotations: Detect & auto-expand builtin tags "$(Graph.Description)" and "$(Graph.Name)"
  • Fixed #5244: Node creation menu: Node names which are larger than the popup cause a broken horizontal scrollbar to appear
  • Fixed #5184: Script editor: Syntax highlighting isn't properly refreshed when the input list is changed
  • Fixed #5183: Template pin rules work for output pins, but the "Visible Outputs" category in the propertygrid is still populated with all checkboxes of all outputs, regardless of the pin rules.
  • Fixed #5222: Annotations do not support rich-text formatting available in node & pin description tooltips
  • Fixed #5221: Node creation dialog does not properly format template descriptions in the tooltips.
  • Fixed #5159: Scripts: Editing existing pins when multiple scripts are selected does not apply the change to all selected nodes (same goes for spatial layer storage & timeline track payloads)
  • Fixed #5158: Selecting multiple EventPayloadExtract nodes removes the "PayloadName" dropdown and converts it to a regular text field
  • Fixed #5157: Selecting multiple nodes of the same type hides some properties
Display previews on resource nodes (4 min 52 sec)

Graph compiler & optimizer

  • #3757: Renderers: remove them completely in the final effect when the pin 'enabled' gets constant-folded to false
  • #5021: dxdt node: Implement analytical time-based derivative of 'effect.position'
  • #5018: dxdt node: Implement analytical time-based derivative of 'view.position'
  • Fixed #5072: Optimizer VRP: Replace 'clamp' by 'max' or 'min' if the range of the input is proven to not intersect the upper or lower bounds, respectively
  • Fixed #5071: Optimizer VRP: Bad VRP collapse of 'clamp' : Not equivalent to individual 'min' and 'max' collapses
  • Fixed #5185: 'dxdF(effect.age())' is not expanded to 'scene.dt'


  • #5229: Per-effect instance time-scaling ("time dilation", speedup, slowdown or pause specific effect instances)
  • #5154: Detect and handle when an effect has been teleported, to allow cutting-off things like trail distance-based emission, to avoid spawning zillions of particles when teleporting effects across a level
  • #4976: Spatial layers: Add "Min" and "Max" queries
  • #3090: DxDt: add support of XForm nodes: Allows having proper cubic interpolation in trails with most effects
  • Fixed #5231: Spatial layer 'sumKernel' query: If all neighbors sample the kernels at a location where it equals zero, query returns inf instead of zero
  • Fixed #5217: shape.buildPCoordsCone() : 'height' input is inconsistent between surface and volume pcoords: Flipped when building volume pcoords, treated as '1 - height' compared to surface pcoords

Simulation: GPU

  • #4989: Sim interfaces: GPU sim support
  • Fixed #5197: GPU sim: scene.lodBias() always returns 0


  • #5057: Sort by camera distance instead of camera direction
  • #4924: Triangle renderer: Add support for vertex shader billboarding (DrawInstanced)
  • #5260: Automatically process IBL environment maps to allow user to specify non prefiltered cubemaps in latlong / cubemap format, in LDR or HDR
  • #5208: Texture atlas / sub-UVs for decal renderers
  • Fixed #4048: Differences in generated tangents/normals in GPU and CPU billboarding implementations
  • Fixed #5235: One side of ribbons has shifted color values.
  • Fixed #4983: Emissive decals do not work properly
  • Fixed #5142: Using AlphaRemap & Atlas on billboards makes (some) billboards invisible with Geometry Shader & D3D12 rendering


  • #5261: Open assets in external applications
  • #5107: Associate all PopcornFX file extensions during editor installation
  • #5256: Project settings: New "Project constants" list, which can be referenced from nodes. Old physics surface types & collision filters moved to this global constant list.
  • Fixed #5181: Package import: Importing a package with different project paths (ex: different corelib path) does not auto-unselect conflicting items, will force-overwrite all existing items by default.
  • Fixed #5169: macOS editor: Assert window is unreadable, has black text on dark background
  • Fixed #5140: Project settings: Crash when adding a new build version while an effect editor is opened
  • Fixed #5133: Color picker: Custom colors do not support alpha
  • Fixed #5129: PK-ShaderTool generates shaders for disabled renderers

Effect editor

  • #5112: Add multi-selection support for the viewport gizmo
  • #5105: When a node is selected, bind the gizmo on fields that have 3D_Coordinate semantic or orientation type
  • #4993: Improve effects creation containing GPU simulated particles
  • Fixed #5143: Backdrop mesh transform only updates itself if Mesh Backdrop Collisions are enabled
  • Fixed #5162: Propertygrid: Array properties are never shown as being divergent when multiple nodes are selected
  • Fixed #4997: Renderer properties exposed as pins are prefixed with their category


  • #5302: Color-picker improvements: New colorspace visualizations
  • #5303: Color-picker improvements: TMI support
  • #5304: Color-picker improvements: Blackbody helpers
  • #5305: Color-picker improvements: Misc UI improvements
Color picker (3 min 29 sec)

Material editor

  • #5165: Material editor: display rendering interface name instead of full path
  • Fixed #5177: Material editor: all shader defines for stage are not displayed in properties panel

Plugins & Third-Party

UE4 plugin

  • #5211: UE4: Bind actor TimeDilation to effect instance's time scale
  • #5006: UE4: Bind actor visibility to effect visibility flag
  • #4272: UE4: Houdini VATs materials
  • Fixed #5054: UE4: Texture sampling does not work until textures are manually set to "ColorLookupTable"
  • Fixed #4790: UE4: effect.scale isn't connected to the actual effect scale.


  • #4944: Add PopcornFX export preset in Houdini's VAT render node
  • Fixed #4994: Houdini pack : wrong normals with VAT
  • Fixed #5052: Flipped rotations for Rigid VAT materials


  • Fixed #5147: Upgrades aren't run on .pkma/.pkri files when opened from content browser
  • Fixed #5050: Missing upgrader patching custom .frag/.vert SceneInfo and LightInfo members
  • Reset revision IDs due to 65536 overflow (messes up .exe versions on windows)
  • New upgrader @ v2.7.0.27: Removed inverted orientation sampled from animtrack
  • New upgrader @ v2.7.0.59: Removed 'Gpu Enabled' property of effects: this is now the default
  • New upgrader @ v2.7.0.68: Add a valid CategoryName to all rendering feature properties (if none are set: 'General')
  • New upgrader @ v2.7.0.69: Patch effects renderer nodes properties: 'Position', 'BillboardingMode' & 'Color' become 'General.Position', 'General.BillboardingMode' & 'Diffuse.Color'
  • New upgrader @ v2.7.0.70: Patch .frag/.vert files per particle values & defines
  • New upgrader @ v2.7.0.258: Patch .vert/.frag files SceneInfo and LightInfo members
  • New upgrader @ v2.7.0.320: User settings: Added 'ExternalApplications' settings
  • New upgrader @ v2.7.0.431: Project settings: Split editor-specific settings into new 'Editor' category
  • New upgrader @ v2.7.0.475: Export nodes: Changed 'UseDropDown' checkbox to a dropdown, allowing to expose a multi-select dropdown
  • New upgrader @ v2.7.0.476: Project settings: Moved physics-specific enums to project constants
  • New upgrader @ v2.7.0.649: Per effect instance time-scale: Replaced 'scene.dt' by 'effect.dt'
  • New upgrader @ v2.7.0.666: CoreLib template renames: 'scene.dt' -> 'effect.dt' (effect.dt now takes into account the new per-effect timeScale), and renamed effect.age node output from 't' to 'Age'
  • New upgrader @ v2.7.0.705: Cleanup node pins leftover values
  • New upgrader @ v2.7.0.743: CoreLib template renames: 'Projection' -> 'Projection_NoStore'
  • New upgrader @ v2.7.0.835: Corelib upgrade
  • New upgrader @ v2.7.0.878: Finalize upgrade: Rewrite *.pkfx, *.pkma, *.pkri, *.pkcf, *.pkbo