Flax Engine Update 1.11

Here comes new Flax 1.11 ! This update brings many new features to graphics, editor tooling, and stability.

For this update together with our contributors, we’ve made over 929 commits and merged 129 Pull Requests into Flax repositories. Thanks for your support!

Download

Feel free to discuss the update here :slight_smile:

Contributors: mafiesto4, GoaLitiuM, xxSeys1, Tryibion, zetcom89, Weyzu, alsed, fibref, will11600, Zode, Swiggies, GasimoCodes, IceReaper, MineBill, ZaPx64

PRs merged: 129

Changelog:

  • Add new memory profiler
  • Add suport for Tracy profiler on Mac
  • Add integration with Tracy profiler to plot main memory categories
  • Add new Arena Allocator for optimized dynamic memory allocations with a shared lifetime
  • Add memory alloc profiling for virtual pages (on Win32)
  • Add process memory stats for Apple platforms
  • Add version to game settings
  • Add variable DDGI probe size in debug view based on cascade
  • Add GPU profiling support to Tracy integration
  • Add debug tool detection for Nsight Graphics
  • Add explicit GPU resource transitions, memory and compute barriers
  • Add logging missing instance layer on Vulkan
  • Add debug name for PSO catching on D3D12/Vulkan during profiling incl. Development builds
  • Add Platform::Yield
  • Add PLATFORM_CONSOLE define and fix desktop to be as Windows/UWP, not Win32
  • Add support for using custom memory allocator in lambda bind to Function
  • Add GPUResourceMapMode.NoWait flag to control buffer data reading
  • Add nvapi third party module (NVIDIA driver extensions)
  • Add AGS third party module (AMD driver extensions)
  • Add nvapi/AGS libs to D3D11 for efficient UAV writes overlaps on NVIDIA/AMD GPUs
  • Add automatic periodic Vulkan Pipeline State Cache serialization
  • Add red color to Tracy profiler zones that cause CPU waiting to improve profiling
  • Add time slicing to Deserialization stage of async scenes loading to avoid hitching
  • Add higher level streaming time budget in frame based on idle time
  • Add UseLogInRelease to engine config to disable logging in Release builds
  • Add new Custom Lit shading model for custom lighting in materials (eg. Cel Shading)
  • Add resizing to Custom Code nodes in Materials
  • Add improved way of ColorValueBoxes drawing transparent colors
  • Add support for building engine without logging
  • Add label/button text to string convertion for better debugging
  • Add CharacterController.Resize for quick crouching implementation for characters
  • Add option to change Character Controller capsule origin to start at feet location
  • Add SCOPE_EXIT macro
  • Add PositionFormat and TexCoordFormat to model import option for mesh data encoding
  • Add GPUDevice.VideoOutputs with a list of attached monitors
  • Add stencil buffer usage with object layer information
  • Add new scene textures SceneStencil and ObjectLayer to sample Stencil buffer
  • Add render layer mask to decals
  • Add ReadWriteLock to platform api
  • Add support for large 16kb page sizes on Android
  • Add Android native crashes caching
  • Add new PreIntegratedGF with 80% smaller memory but more accurate data
  • Add hot-reload support for material feature template sources on material generation
  • Add and use Max Mesh Position Error to Build Settings for automatic mesh vertex positions storage
  • Add improved import path UI
  • Add LayoutElementsContainer.Image with IBrush for Editor
  • Add new UIBrush that uses UIBrushAsset json resource with a brush data
  • Add hotkey to quick focus debug console input (Ctrl+~)
  • Add highlighting to layers matrix editor to improve UX
  • Add node alignment formatting options to Visject
  • Add highlight to the Visject socket with context menu and improve button texts
  • Add additive (box) and subtractive selection to Visject surfaces (with Ctrl to add or Shift to remove from selection)
  • Add shortcuts for View flags and Debug View modes in Editor
  • Add shortcuts for windows in Editor
  • Add accent colors to Content Finder tool
  • Add wrap scrolling items list with arrow keys and simplify scrolling logic
  • Add GetOrAddButton utility for MainMenu
  • Add GPUTexture.UploadData for changing texture contents via TextureData container
  • Add Texture Size node to particles
  • Add option for debug shapes drawing for particle emitters
  • Add option to show vertices and triangles of collision model in a collider data window
  • Add unscaled time to Material Time node
  • Add support to move Visject socket connections
  • Add skybox rotation feature
  • Add model import options auto-restore from model prefab
  • Add more color gradiant node stops (count from 8 to 12)
  • Add particle data layout debugger tab
  • Add editor option for disabled transform gizmo brightness
  • Add showing added and removed Actors from Prefab Diff menu
  • Add collection item duplication via context menu
  • Add Editor option to auto resize Properties List splitter bar based on longest text
  • Add custom Editor splash screen image (import texture SplashImage inside project Content folder)
  • Add shortcut for editor settings
  • Add controls and filter to actor Toolbox search
  • Add option to add capsule in add colliders menu
  • Add more Editor options for windows and tabs behaviour/logic
  • Add new APIs to Animated Model for more control over custom nodes
  • Add slider with time position to Audio Source editor
  • Add ClipStarted and ClipFinished events to Audio Source
  • Add option to create a new projects from within the Editor
  • Add support for parsing inheritance with preprocessor blocks inside it
  • Add support for Visual Studio 2026 and v145 MSVC toolset
  • Add drawing RigidBody center of mass and attached colliders
  • Add a info message on Debug Log pause on error
  • Add a broken link icon (used in actor scale editor)
  • Add a better way of displaying transparent colors in color properties
  • Add InvokeOnUpdate to C++ scripting api
  • Add more utility methods for Layer Mask api
  • Add initial work on nuget package support
  • Add shift selection for tree nodes in Editor
  • Add VSCode organization for project plugins into own folders
  • Add maximum supported .NET SDK version to 10
  • Add prefab UI viewport scaling
  • Add surface formatting option to straighten node connections
  • Add Visual Script editor method override context menu searchable
  • Add Visject editor panning with RMB over nodes
  • Add options for viewport icons
  • Add preventing autosave when using editor context menus
  • Add Output Window console to show all commands on spacebar
  • Add editor option for build configuration when using cook and run
  • Add support for using shadow maps from linked scene rendering (eg. for 1p weapons)
  • Add shader header proxy for easy .hlsl files creation within Editor
  • Add support for negative Fog Cutoff Distance on fog to draw it in front of the camera Far Plane, no matter the setup.
  • Add actor name to prefab diff view
  • Add quick toggle to debug window group buttons
  • Add Tag editor quick expand with Shift key
  • Add ability to unfold folded categories when scrolling with keyboard in dropdown list in Editor
  • Add better keyboard navigation to Content Finder and fix right click clearing search
  • Add button to quickly jump into Localized String Table that contains it
  • Add viewport icons scale relative to the distance and editor control over it
  • Add utility for if in play mode that returns true for shipped applications (Engine::IsPlayMode)
  • Add auto selecting first item in item list context menu if no selection and the user presses enter
  • Add better logging of unsupported .NET version in tools
  • Add Import/export warning message boxes
  • Add SortOrder to Environment Probe
  • Add exception and crashes catching with processing on iOS/macOS
  • Optimize asset references to support direct registration to reduce Delegate memory allocations and overhead
  • Optimize editor profiler allocations when capturing data
  • Optimize actors registration in SceneRendering to track free items
  • Optimize async scene loading to run in separate stages with time-slicing
  • Optimize physics simulation with higher limit of 8 threads
  • Optimize physics transformation updates propagation in async via Job System
  • Optimize updating actor rendering entry with better thread locking that support async writes on actor update
  • Optimize Actor::DestroyChildren
  • Optimize ContainerControl.DisposeChildren
  • Optimize CSharp scripting runtime to use arena allocator per-assembly
  • Optimize dynamic memory allocations for managed runtime interop collections with a new Arena Allocation
  • Optimize ProbesRenderer to use time-slicing for cubemap faces rendering and filtering
  • Optimize SpriteRenderer to lazy-init
  • Optimize Particles drawing to use a whole RenderContextBatch
  • Optimize GPU Particles simulation to perform memory buffer copies/updates before dispatch
  • Optimize GPU particles Bitonic sort to use separate buffers for indices and keys to avoid additional buffer copy
  • Optimize GPU particles simulation, sorting and drawing with better resource transition barriers
  • Optimize GPU particles simulation by scheduling larger sims first to overlap more work
  • Optimize compute shader pipeline binding on D3D12 and Vulkan when unchanged
  • Optimize sorted particle indices format to 16-bit for small emitters
  • Optimize environment probes filtering shader
  • Optimize foliage rendering with concurrent arena allocator
  • Optimize textures/buffers uploading on Vulkan with page allocator
  • Optimize GPU textures and buffers uploads with a batched memory barrier
  • Optimize Global SDF dispatches with UAV write overlaps
  • Optimize DDGI probes update to overlap both irradiance and distance data dispatches at once
  • Optimize Debug Draw performance of splines to use frustum culling
  • Optimize Debug Commands name building and support nested classes with name hierarchy
  • Optimize Asset::GetPath in cooked build
  • Optimize Spline debug rendering far from camera
  • Optimize particles drawing to run in async jobs
  • Optimize scripting objects spawning on AOT platforms
  • Optimize Audio streaming to reduce lock contention
  • Optimize Color Grading LUT to be cached if unchanged from the previous frame
  • Optimize memory allocations in text rendering related functions
  • Optimize debug drawing of terrain shape in Physics Colliders view mode
  • Optimize slow Tree expansion/collapsion with large amount of tree nodes
  • Optimize decals rendering with depth test
  • Optimize memory alloc on Animated Model init
  • Optimize memory allocation when reading animated model pose by cloth
  • Optimize NavMesh builder when updating a large number of tiles
  • Optimize PhysX work dispatcher to be shared by all scenes
  • Update Tracy to v0.12
  • Update OpenAL to 1.24.3
  • Update volk to version 1.4.304
  • Update to the latest Nintendo Switch SDK version 20.5
  • Update minimum Windows version to 10 (to match .NET 8)
  • Update minimum CPU arch requirement on Windows to SSE4.2
  • Update minimum macOS version to 13 and iOS to 15
  • Update minimum Clang version 14 for Linux
  • Refactor material instance to not override all public parameters by default (need explicit set)
  • Refactor level actions to support time budget and time slicing
  • Refactor Color Grading LUT rendering to have config for 2D/3D mode
  • Refactor specular lighting to properly map specular as reflectance in BRDF
  • Rename Prefetch to MemoryPrefetch
  • Remove ConcurrentSystemLocker and use ReadWriteLock instead for better threading synchronization
  • Fix memory leak on sequential mesh buffers update
  • Fix missing BoundsScale usage on AnimatedModel
  • Fix various margins and spacings between UI elements in Editor to be consistent
  • Fix profiler memory propagation (in events hierarchy)
  • Fix camera view matrix calculations to use double vector types if Large World enabled
  • Fix output log console to remove executed command from history no matter the placement
  • Fix output log console to resize width to contain whole item text
  • Fix missing sphere bounds update for splines
  • Fix support for nesting classes inside other scripting classes
  • Fix AutoFocus on ContainerControl to be false by default
  • Fix game UI focus loss when hiding focused control to maintain gamepad navigation in Editor
  • Fix memory leak on material instances when updating layout of Text Render
  • Fix draw calls batching to ignore distance in opaque passes for better draw calls instancing
  • Fix reflection probes capture seams on cube face edges due to volumetric fog
  • Fix shader asset path in debug name in cooked build
  • Fix Asset.WaitForLoaded to yield or sleep thread for proper multithreading on some platforms
  • Fix MClass::GetNamespace typo that returned name instead
  • Fix .NET version to use selection for consoles with fixed setup
  • Fix missing TypeConverter support in AOT build
  • Fix AOT libs rebuild when corlib was modified to avoid version mismatch
  • Fix game splash screen to wait for texture to be streamed in, not just allocated
  • Fix GPUBufferDX11::Map to wait on data to avoid missing data when reading staging buffers
  • Fix PSO init to release old data on recreation
  • Fix profiler tables to use column headers aligned to center
  • Fix Vulkan descriptor sets pooling
  • Fix debug command type detection when it’s used with argument
  • Fix deadloop in HtmlParser when parsing text with incorrect tags
  • Fix ManagedDictionary cache to be cleared on hot-reload
  • Fix ConcurrentSystemLocker to guard for a single writer at once
  • Fix incorrect image buffer usage in Render Output Control
  • Fix fullscreen borderless window on macOS
  • Fix bug in CustomEditorWindow usage
  • Fix scroll bars not updating when dragging items
  • Fix GUI input when edit GUI option is false and game is being played
  • Fix crammed color grading editor value boxes
  • Fix tree nodes drawing in Editor
  • Fix trying to add scene to actor group
  • Fix atan2 node to use default box value
  • Fix deprecated asset saving to skip temporary or virtual assets
  • Fix crash on invalid particle data to be a soft check instead
  • Fix new asset file creation dialog button if asset can’t be created
  • Fix newly created skeleton mask to be able to open
  • Fix json guid parsing to check for correct hex characters
  • Fix timeout calculation in Task::Wait
  • Fix loading models with no meshes
  • Fix particle emitters to wait for used textures to be loaded and streamed in for proper usage in a graph
  • Fix automatic collision importing from mode to remove unused material slots
  • Fix transparency-related material options when using material with deferred shading
  • Fix animation preview bounds scale
  • Fix scene lightmaps removal clearing actors linkage to lightmaps
  • Fix missing default value of localized string in editor
  • Fix scroll to selected actor in view when emptying out search box
  • Fix zoom behavior when zooming in and out in Visject surface editor
  • Fix Visject surface select with Control to toggle selection of the node
  • Fix node delete button not checking if the user is performing certain actions on the surface
  • Fix focusing on custom actors in editor that have missing bounds
  • Fix particle emitter editor source code button enable/disable itself
  • Fix performing layout after changing selected tab
  • Fix scroll to node on selection in Prefab editor
  • Fix Content window search to be cleared when selecting asset picker asset
  • Fix skipping scene tree scroll to node when play is starting or ending
  • Fix panel scroll bars update to be performed once again if controls are gets changed during layout
  • Fix prefab diff in Editor on mesh reference
  • Fix prefab instance root name to never apply from scene instance
  • Fix missing Physics Colliders view if Debug Draw is disabled
  • Fix fog to draw Fog Cutoff Distance via a plane, not sphere test
  • Fix changing CharacterController center at runtime to maintain actor placement
  • Fix duplicating json assets to properly remap object IDs
  • Fix issue with toolstrip not updating on scene reload
  • Fix terrain collision debug draw flickering when moving camera in Large Worlds
  • Fix Terrain shader error when using Position Offset
  • Fix vector and quat equality checks to use exact component value
  • Fix Android NDK version parsing when using beta build
  • Fix BitArray bit indexing
  • Fix Array::RemoveAt to move element and avoid data copies
  • Fix hot-reload files not getting cleaned up during startup
  • Fix infinite loop on rich text box tag parsing with incomplete end of tag
  • Fix edge case for anim event on min or max frame when looping
  • Fix anim event playback when is reversed
  • Fix using material VS to PS node directly within material input
  • Fix saving skinned models with blend shapes
  • Fix minor artifacts on terrain normals
  • Fix sampling textures in decals to use custom mip-level
  • Fix shadow bias artifacts on Low shadows quality
  • Fix motion vector stability on Large World origin changes
  • Fix SSAO artifacts with flat normals look
  • Fix Motion Vectors rendering skipping when not needed by SSR
  • Fix memory leak on recast objects when building NavMesh tile
  • Fix missing/incorrect toolchain exception to log only once
  • Fix incorrectly rendered transparency in Physics Colliders view mode
  • Fix not attaching updated collision data to rigid body
  • Fix CheckBox to display check state when created in game without editor icon atlas
  • Fix HashSet::Add returning incorrect value
  • Fix reverting prefab object reference in nested prefabs
  • Fix duplicate and remove options being clickable on non-resizable collection editors
  • Fix editing UI Brush in prefabs
  • Fix prefab window to use UI Mode for empty UI Control prefab
  • Fix prefab root name and transform being changed when applying local changes of sub-object
  • Fix object ids remapping inside nested prefabs
  • Fix debug drawing wheeled vehicle in prefab viewport
  • Fix incorrect Lambert Diffuse shadowing to use just N dot L for accurate lighting
  • Fix model import scale on nodes that could be applied multiple times on the same mesh
  • Fix Blend Poses nodes to smoothly blend back when transition goes back
  • Fix Content Window navigation bar to expand toolstrip for proper scroll bar display
  • Fix Output Window console to resize pupup window
  • Fix Editor undo on collection properties that return different object on get
  • Fix script fields prefab diff showing and reverting with undo
  • Fix warning when cloning actor from prefab that is not a root
  • Fix scene object pointer serialization in C++ to use correct serializer
  • Fix scaling for TextRender
  • Fix rich textbox vertical alignment
  • Fix Volumetric Fog flicker on camera cuts
  • Fix missing Volumetric Fog affecting transparent materials
  • Fix sun shadows when direction is perfectly vertical
  • Fix view distance light property from affecting brightness all of the time
  • Fix importing emissive, roughness, metalness and wireframe properties of materials with Assimp
  • Fix terrain exporting to properly calculate size and sample positions
  • Fix particle effect parameter to apply overrides when emitter is changed and when activated in the tree
  • Fix particle material compilation error when using position offset
  • Fix sky rendering in ortho and oblique projection
  • Fix missing root motion copy when using input skeleton pose (eg. IK node)
  • Fix loading projects that have similar path to engine folder
  • Fix terrain physics error on end play when it’s disabled
  • Fix changing Rigid Body center of mass offset
  • Fix duplicating splines with parents
  • Fix font hit test on multi-line text past the line end character
  • Fix using enums as Scene Animation Event parameters
  • Fix crash when rendering bloom or lens flares in too small viewport
  • Fix crash when existing engine while content streaming is active
  • Fix crash on invalid GPUBuffer vertex layout in empty buffer
  • Fix crash when memory stream reading fails and perform soft error handling
  • Fix crash when using material instance that has more parameters that base due to material error
  • Fix crash when importing mesh with incorrect triangulation
  • Fix crash when importing model as prefab and handle duplicated object names
  • Fix crash on stack overflow exception in shader graph recursion to be detected
  • Fix crash in GPU Memory profiler if resource went null
  • Fix crash on memory access in Vulkan descriptor set data
  • Fix crash on particles sorting memory access
  • Fix crash when prefab root object failed to deserialize
  • Fix crash when unloading texture with leftover streaming task that was idle
  • Fix crashes of scripting backend on Android
3 Likes