Changelog 2.21.5

Builds (Jul 17th 2025)

  • Fixed #14544: Rendering crash when a GPU layer is failing to run and it contains triangle-renderer
  • Fixed #14672: orientation.axisSide/Up/Forward return a vector of length 0.5 instead of 1.0 for some of the particles, since v2.21.0
  • Fixed #14539: Nodegraph & Simulation: Improve performance of integer bitshifts on AVX2-capable CPUs
  • Fixed #14358: Nodegraph: Using a pow node with a negative integer exponent causes the optimizer to produce incorrect instructions, resulting in incorrect values.
  • Fixed #14536: Nodal editor: Significant UI lags when layers get recompiled, even though it’s supposed to be fully async. Most visible when tweaking curves, in layers that have large textures referenced in renderer nodes.
  • Fixed #14542: Editor: Searching for ‘Bill’ in node will put ‘BillboardScreenControls’ before ‘Billboard Renderer’
  • Fixed #14538: Unity: Custom Materials get reset on reimport with Unity 2022.1+
  • All v2.20.10 LTS fixes
  • Fixed #14653: Texture sampler: SampleDensity is broken for images that have a wavelet density profile setup in their bake settings
  • Fixed #14435: Propertygrid: Unsigned integer properties will not properly take min/max into account when typing a negative value directly or using Ctrl+click+drag in the inputbox to go below zero, wrapping the unsigned value to 4.2G
  • Fixed #14627: Release assert (sometimes seen by users as a crash) when loading corrupt TIFF files
  • Fixed #14671: Project Launcher: Freeze for a couple seconds when project launcher appears AND a lot of projects are in the project list AND the threadpool settings have been changed from the defaults in the editor user settings
  • Fixed #14555: Project launcher: Vault: Typing something in the search bar before scanning has finished displays “Vault is Empty” message instead of saying it is still scanning.
  • Fixed #14552: Editor: Crash when changing threadpool settings and some background tasks are running
  • Fixed #14546: Crash when stopping the instrumentation driver on Windows
  • Fixed #14598: Unity: PS5NGGC renderer crash
  • Fixed #13897: UnrealEngine: Default Materials: Implement Basic TransformUVs

 


Changelog 2.21.4

Builds (Jun 5th 2025)

  • All v2.20.9 LTS fixes
  • Fixed #14506: The effects baked on some AMD vs some Intel machines sometime produces different binary outputs
  • Fixed #14494: AssetBaker: add –max_threads=%d commandline option, to specify how many threads should be spawned in the default threadpool.
  • Fixed #14488: Instant crash when launching editor on a machine with 128 or more processors.
  • Fixed #14504: Editor: Add effect right-click menu entry in developer mode to rewrite binary-baked effect as text
  • Fixed #14505: Add effect right-click menu entry in developer mode to dump the bytecode disassembly of a baked effect
  • Fixed #14472: Unreal Plugin: Havok: Particle collisions are now 2x faster when using Havok instead of Chaos, by using havok raycasts on projects that use Havok physics.

 


Changelog 2.21.3

Builds (May 6th 2025)

  • Fixed #14468: Freeze when simulating a lot of mediums and some of them use sim-stage fences
  • Fixed #14469: grid.dimensions: Value range of the output dimension is incorrect, has a min of 0 instead of 1
  • Fixed #14426: Unity: Crash on importing an effect using distortion in HDRP
  • Fixed #14425: Unity: legacy distortion shader is not found in HDRP

 


Changelog 2.21.2

Builds (Mar 27th 2025)

  • Fixed #14398: Texture loader: BC4-ATI1 images fail to load properly
  • Fixed #14397: Textures: BC5 decompression generates an incorrect blue channel, producing unnormalized RGB vectors
  • Fixed #14414: Editor: Occasional “random” crash when Ctrl+S asset
  • Fixed #14348: Script editor: ‘Exec rate’ coloring does not work if scripts are contained inside templates, only works for scripts that are directly inside a layer.
  • Fixed #14332: GPU debugger: Most of the time when selecting particles the debugger shows all values as zeroes, or no values at all
  • Fixed #14265: Node search popup: When invoking the popup on a wire with Ctrl+space, searching for “- 2”, “+ 2”, or “^ 2” to insert a sub, add, or pow node display constants first and the node last in the list, making it extremely impractical.
  • Fixed #14396: Asset Baker: Baking textures with ‘ExportPixelFormat’ set to ‘BC5_UNorm’ or ‘BC5_SNorm’ in the bake config bakes garbage texels in the final texture
  • #3187: Editor Installer: Create linux package
  • All v2.20.8 LTS fixes
  • Fixed #14385: Grids: Lowering the dimension of a grid still outputs the old dimension in the higher-order components when using a grid.dimensions node
  • Fixed #14387: Mesh importer: Viewport is black when opening a mesh with no valid geometry, or where all the vertices are located in a single point, producing a zero-size bbox
  • Fixed #14357: Index asset content of files created or modified by external applications sometimes fails
  • Fixed #14356: Opening a pkma while not in developer mode throw an internal error message
  • Fixed #14355: Opening a pkri while not in developer mode does not open the experimental error message box
  • Fixed #14353: Drag/dropping external files inside the content-browser is not working with buttons other than left click
  • Fixed #14352: Refusing to save the changes when closing the mesh importer does not discard them
  • Fixed #14386: Content browser right-click menu: Expand all folders & Collapse all folders menu items have no icon
  • Fixed #14375: Linux: Incorrect glslangValidator path on linux
  • Fixed #14354: Linux: Drag/dropping external files inside the content-browser is not working on linux
  • Fixed #14337: Linux: Vulkan fatal error when closing an effect editor on linux
  • Fixed #14410: O3DE: Missing shaders in gem seed list
  • Fixed #14409: O3DE: Product asset dependencies are not correctly set

 


Changelog 2.21.1

Builds (Feb 13th 2025)

 


Changelog 2.21.0

Builds (Jan 30th 2025)

Templates & Corelib

  • #13917: ‘shape.sampleDistanceField’: Add an ‘IsInside’ output helper
  • #13984: Add an ‘orientation.fromForwardSide’ node and a ‘scene.orientation_fs()’ script helper
  • #14271: Corelib: ‘Trigger’, ‘TriggerOnce’, and ‘OnDeath’ currently only accept ‘float’ values for their ‘Size’ input. Allow passing ‘float2’, ‘float3’, and ‘float4’ values as well
  • #14232: Corelib: Add ‘InterpolateTriangle’ helper template, that takes 3 vertex values, a 2D barycentric coordinate, and returns the interpolated result
  • #14188: Event-graph: Add event switch node, that takes an index specifying which output event to trigger
  • #14194: EventRandSwitch node: Allow specifying a custom [0,1] selector, not necessarily the builtin ‘rand(0,1)’
  • #14193: Placement templates: Add local vector to event payload in event-graph versions of the templates, otherwise impossible to extract reliably
  • #14186: Atlas sample node: output aspect ratio from atlas sample node
  • #12499: Physics node: Implement resting state for the physics node
  • #14185: Collision node: Add option to reduce collision misses by stopping particle at contact point in the current frame instead of doing a single bounce across a solid wall
  • #14032: Animtrack sampler: Add ‘animtrack.transform’ helper node in the corelib
  • #13916: shape.project: Allow grabbing the distance & direction vector
  • Fixed #14210: EaseToTarget node: Cannot specify ‘Target’ value inline. Annoying, no good reason for it anymore.
  • Fixed #14200: Corelib: ‘drawVector’ template does not allow switching between additive and alphablend, unlike ‘drawLine’ template
  • Fixed #14084: ProjectVector node does not have proper 3DCoordinate semantics on its inputs, making it not coordinate-system independent

Simulation

  • #14208: Curve: Add geodesic cursor (walk a curve at constant speed)
  • #14192: Mesh sampler: Add script function & corelib node to allow getting the vertex IDs from a triangle ID
  • #14031: Animtrack sampler: Add new script function & corelib node to get the length of each track
  • Fixed #14238: Mesh KdTree acceleration structure build (Raycast & Projection): Bad quality, low-performance lookup is generated from triangle-strip meshes
  • Fixed #14237: CPU Mesh sampling: Incorrect clamping of out-of-bounds parametric coordinates when smapling meshes that use triangle strips
  • Fixed #14236: Mesh UV2PCoord acceleration structure build: Bad quality, low-performance lookup is generated from triangle-strip meshes
  • Fixed #14067: Compiler: cannot construct vector of bools (bool is always converted into int)
  • Fixed #4618: EXR loader: Memory leaks when loading some EXR images

Rendering

  • #13665: Editor: Add support for the triangle renderer in the GPU sim
  • #14190: Editor materials: Add the atlas feature to Ribbon_AnimatedMasked.pkma
  • #13987: Editor materials: Add the CustomTextureU feature to Ribbon_AnimatedMasked.pkma
  • #13591: Editor Materials: Implement CorrectDeformation for atlased ribbons
  • Fixed #4780: Editor: shader are not recompiled after project upgrade
  • Fixed #14247: Mesh renderer: ‘Use Vertex Colors’ render feature doesn’t work in new materials, only in legacy materials
  • Fixed #14234: Mesh importer viewport: Triangle strip meshes are not rendered properly.
  • Fixed #13600: Editor materials: Legacy and current ribbons with correct deformation don’t support atlas blending

Nodal Editor

  • #5293: Allow solo-ing layers & renderers using ‘Ctrl+Shift+T’
  • #5454: Add wire “portals” to avoid having long wires go through the graph
  • #12525: Allow switching an export node back to a local value/property again
  • #14206:Input/Output nodes: Add a 3rd possible pin visibility rule in addition to the existing 2 rules
  • Fixed #4844: Attributes: Copy-pasting attribute nodes cause false positive mismatch warning messagebox
  • Fixed #14280: Editing GPU-sim layers causes significant UI lag every time a change is made, for some effects can cause the UI to freeze for multiple seconds every time a change is made
  • Fixed #14270: Tweaking some values of sampler nodes requires manually recompiling the graph before seeing changes
  • Fixed #14207: Pin visibility rules are ignored and pin forced to visible whenever a dependent property is not found. Makes visibility rules useless when auto-exporting a partial number of pins.
  • Fixed #3339: Highlight of particle from the nodegraph does not work as excepted on the layer-graph

Effect Editor

  • #13218: Editor: Skinned meshes have horrible performance when multiple backdrop instances are present
  • #14246: Editor: Implement Sim Interface Scene Sample Wind Field on GPU
  • #14242: Propertygrid: Asset Picker: Display folder path & some details about the asset next to each search result
  • #14239: Propertygrid AssetPicker search: Allow also searching for a folder name to show the assets it contains
  • #9077: Add progress pop-up when the debugger takes long to launch (editor is freezing)
  • Fixed #5796: Renderers batching panel: Mouse hover highlight is half broken when a renderer is already selected
  • Fixed #10053: display a popup when a device removed or other fatal graphics API occurs

Editor

  • #14187: Mesh Importer: Add FlipNormals option to turn the surface of a mesh inside-out
  • #14196: Remove PKMA & PKRI editors from experimental status
  • #14070: Allow cancelling asset analysis when opening a project
  • #14044: Build tags: Add a build-tag inside each specific game-engine plugin to allow graphs to switch logic based on the target engine if necessary
  • #14043: Build tags: Add a popcorn editor-specific build tag that can be tested inside a graph
  • #2948: Project-wide asset contents search
  • Fixed #14235: Mesh importer: UV Panel displays buggy triangles when importing a mesh using triangle strips
  • Fixed #14030: FBX importer: Fails to import all the animation tracks of some FBX files.
  • Fixed #14245: Material editor: Saving the material with a bad shader path will create the shader file and save the error message inside: “Shader content is generated or not available.”
  • Fixed #4127: Material editor: shader path widget doesn’t refresh when path is undo/redo-ed

All v2.20.7 LTS fixes

  • Fixed #14268: Crash when using shape.intersect when ‘Enabled’ pin varies per-particle
  • Fixed #14275: Crash when rendering opaque multi-plane ribbons
  • Fixed #14278: Crash when importing vector-field with non-equal dimensions and that needs to be transposed in a different axis system
  • Fixed #14279: GPU Sim: Bad payload-extract (and possibly crash) when some payloads are not used
  • Fixed #14262: CPU sim: hadd nodegraph & script function is bugged for float2 & float4 values when running on AVX-capable CPUs
  • Fixed #14267: Unity: HDRP Material factory reference deleted members
  • Fixed #14255: UnrealEngine: animtrack assets don’t get imported in unreal when used only inline in the nodegraph.
  • Fixed #12621: UnrealEngine: texture sampling does not work in packaged games