We’re happy to release Flax 1.13! Huge update with various new features and fixes.
For this release, together with our contributors, we’ve made over 999 commits and merged 130 Pull Requests into Flax repositories. Thanks for your support!
Feel free to discuss the update here ![]()
Contributors: mafiesto4, lifeformed, Muzz, HydrogenC, Niko, GoaLitiuM, xrEugene, RomanZhu, Snakemonster, envision3d, xxSeys1, ThePhantomMask, Tryibion, Duroxxigar, ifromstone, jb-perrier, Alewinn-TerizKoming, luchu1993, TyGrze, ZaPx64, CodeForBeauty, DanielMacura, daveranan, Swiggies, vaibhav8a, ghueldre-pierre, Withaust, killerdevildog, fibref, vthirulo, TONYflare123, hallister, meet-brad-ch
PRs merged: 130
Changelog:
- Add Hardware Occlusion Culling to models, foliage, particles, terrain and local light shadows
- Add HZB Occlusion Culling
- Add more logging on GPU crash
- Add
Arrayctor fromSpan - Add security limits for network to avoid too many messages processing
- Add option to hide debug commands (eg. one auto-added within container class)
- Add new defaults to Graphics settings to target
Highby default - Add auto-fill to plugin project clone based on clipboard
- Add debug preview to selected resource in GPU Memory tab
- Add API to draw Skinned Model from code with Animated Model pose
- Add
FLAXENGINE_VERSION_MAJOR/FLAXENGINE_VERSION_MINORmacros to shaders compilation - Add
PostProcessEffect.CollectDrawCallsto properly draw custom meshes - Add temporal dithering and more accurate blending for contact shadows
- Add volume debug draw highlight to the selected env probe
- Add Light Overlap debug view mode
- Add
IndirectShadowsStrengthtoGIsettings for artist-controlled light leaking - Add NVIDIA PerfSDK plugin for Flax Engine
- Add
Graphics.Shadows.Dumpcommand for profiling shadow mapping - Add
Graphics.GI.Dumpcommand for profiling DDGI/GlobalSDF - Add
Graphics.GI.GetConvergenceto use GI bounce progress for game loading screens/fades - Add new DDGI Reflections rendering mode for fully dynamic indirect specular
- Add
CanBuildto target for selective project references compilation - Add
GIProbesSpacingandGlobalSurfaceAtlasResolutionto globalGraphicsfor runtime editing - Add noise to Global SDF and Surface Atlas debug preview to smooth the tracing
- Add Global SDF dynamic chunks updates between full cascade updates to hide latency on fast moving objects
- Add new
Lightingdebug view mode for both diffuse and specular lighting preview without material colors - Add option to render DDGI indirect lighting in half-res with bilateral upscaling
- Add zooming in and out (FOV) in editor viewport using
CandZkeys - Add support for Windows 11 SDK version
28000 - Add auto focus on model when changing Base Model in Anim Graph
- Add direction gizmo rotation while holding right mouse button
- Add help support to Debug Commands via XML docs parsing
- Add client-side window decorations support for macOS editor windows
- Add
MacWindowlogo loading and use correct one for Editor - Add Volume to audio clip import options
- Add material instance creation out of other instance
- Add filtering whitespaces to Xml doc comments of type members and optimize filtering
- Add type picker when creating abstract class or interface
- Add cross button to unset abstract class or interface object value
- Add layers settings shortcut to actor layer dropdown
- Add support for building Android targets from macOS
- Add navigation to Slider control
- Add
Create Prefab Variantoption to Prefab asset context menu - Add utility UI Control spawn menu inside scene/prefab context-menu
- Add middle and right mouse button actions to asset/object pickers to clear value or show popup quickly
- Add shortcut to show editor windows content (
Ctrl + 0) - Add max .NET version to 11
- Add hiding tooltips when mouse buttons are pressed
- Add custom animation inputs to Multi Blend nodes
- Add improved tooltips to Visual Script types with file name
- Add auto-scroll the Content Window navigation bar to the current folder
- Add grey display for deprecated enum options
- Add improved Rider projects C++ preprocessor definitions (Linux/macOS)
- Add new
ScriptingObjectInterfaceReferenceto reference object with interface - Add rich text formatting to Debug Log title messages
- Add
Start/EndTextInputfor control to toggle character input events - Add MSDF font enhancement (eg. shared size per-asset)
- Add word wrap support to Rich Text Box
- Add various improvements to CSG Brushes editing workflow
- Add more useful titles for BT decorator nodes
- Add red/green highlights to debug BT node decorator result
- Add editable keyframe proxies for linear and bezier curve editors, including time/frame fields and curve values
- Add tangent editing support for bezier curve keyframes in the keyframe edit popup
- Add curve keyframe edit popup draggable so it can be moved away from the curve view
- Add CLion support (via CMake project files)
- Add option when entering play mode to always restore to the editor window after exiting play mode
- Add auto-select of newly copied/moved content items
- Add
CHECK_NO_RETURNfor checks in code that should continue function execution - Add
VariantType::GetScriptingTypefor easier type information access - Add simpler
Variant::Enumthat auto-setups variant type from enum scripting info - Add more LOD Generation options to model import settings (eg. borders lock, preserve UVs)
- Add
Physics::DeleteScene - Add properties search field
- Add distance-scale to vertex paint vertices
- Add vertex paint brush size changing with shift+scroll
- Add improvements to Gameplay Globals editing
- Add auto-renaming newly added Visject parameters
- Add Texture and Cube Texture support to Gameplay Globals
- Add
RealtimeSkyboxmode toSkyLightfor dynamic skylight - Add
Brightness,ResolusionScale,DebugView, andLayerMaskto viewport persistence - Add Video playback value on Video Player
- Add way to get blackboard by type
- Add
AGENTS.mdfile (to Engine repo) - Add auto scroll to new track when adding track to animation
- Add groups to Animated Model properties and improve skeleton debug drawing
- Add GetValue by type in c# for gameplay globals
- Add
Escapekey to deselect in Editor - Add
VersionControlInfoto output game build info and log game version with branch/commit info - Add
D3D12MemoryAllocatorfor resource allocations on DX12 - Add
GPUMemoryStatsfor GPU video memory stats - Add
GPUDrawPassfor more efficient render attachments setup - Add detecting Vulkan SDK version in build tool
- Add scalability via AA Quality setting for TAA
- Add realistic soft shadows on Ultra quality with
PCSSfilter - Add
SourceAngleproperty to Directional light that controls PCSS penumbra size - Add highlight to Motion Vectors Debug view for better content optimizing
- Add
Optimizationsub-group in view modes list in Editor Viewport - Add VSync support to Vulkan
- Add support for loading custom mouse cursor images
- Add support for using macros in scripting function parameter default values
- Add
GetTextureDatafunction to texture API in C# - Add ‘GPUBuffer’ parameter type to materials and particles
- Add rendering stats for Data Upload
- Add Reversed Z rendering for higher depth buffer precision in open-worlds
- Add in-built editors for
DateTimeandTimeSpan - Add
ShowInPlayModetoHideInEditorattribute for properties/fields that should display in editor only during play mode - Add new
Level.PreloadSceneAsyncfor streaming levels before they need to be loaded in - Add debug prints for logs init for console issues troubleshooting
- Add missing serialization and empty ctor to
CultureInfo - Add
EditorUtilities::GetSDKto query SDKs viaFlax.Buildfrom editor - Add
FromMemoryandLoadMemorytoTexturefor loading images from memory - Add
GetUserAvararto Online Platform interface - Add rich-presence to Online Platform interface (status text and game id)
- Add game overlay UI utilities to Online Platform interface
- Add online platform implementation for PSN on PS5
- Add GDK manifest localization to fix packaging issue
- Add half-res DDGI reflections resolving to optimize rendering on low-end devices
- Add Global SDF trace step scale for SSR reflections to handle SSR Quality
- Add
ViewportRecttoCameraand rendering for split-screen drawing - Add
ViewportRecttoUICanvasfor UI placement - Add
InputLatencyMsstat toProfilingTools - Add
Loadedevent toAssetin scripting - Add
BoundingSphere.TransformwithTransforminstead ofMatrix - Add
GPUQueryType::BinaryOcclusionfor simpler visibility checks - Add
MaterialTextureMipBiasto control texture mip bias in materials for better frame upscaling - Add new temporal upsampling option (TAAU) when using location
DuringAntiAliasing - Add new FSR 4.1 plugin update (SDK 2.3)
- Add
Graphics::MotionVectors::MinObjectScreenSizeto skip too small objects from drawing motion vectors - Add mesh index buffer optimization based on
meshoptimizerlibrary - Add Global SDF Overdraw debug mode for content optimizations
- Add improvements to DDGI sampling and filtering in areas far from probes
- Add improved fallback GI outside the DDGI range to use a special ambient probe for stability
- Add
CascadeBlendSizeto Directional Light - Add
DefaultProbeCubemapFormatto Graphics Settings with option to compress env probe textures - Add
MeshAccessor.LoadBufferwith format for Index Buffers - Add Temporal Antialiasing as default AA method
- Add selection drawing and picking gizmo to Foliage Types editing tab
- Add audio device change detection in OpenAL backend
- Add
ExpandChildSizeoption to vertical/horizontal panels to resize child controls to fill the panel size - Add
DrawMaterialfeature toRenderToTextureControlfor custom post-processing the cached UI image - Add
ConstantInvalidateoption toRenderToTextureControlfor no-cached image - Add
Bypassfeature toRenderToTextureControlto skip rendering cached image - Disable Motion Blur and Eye Adaptation by default
- Deprecate the
Directionactor property and replace withForward - Remove deprecated
UWPplatform from Game Cooker window - Rename
SceneRenderTask::RenderingPercentagetoRenderScale - Rename Sphere Mask node A and B inputs to be more clear what they do
- Rename Actor bounding box and sphere properties to be more verbose with
Boundingprefix - Rename
BRDFvisibility functions prefix toV_fromVis_ - Change default for showing Debug Draw in game window
- Optimize XML documentation reference parsing and overall performance
- Optimize model actors entries serialization
- Optimize auto generated Variant Types in bindings to reduce dynamic memory allocs in game builds
- Optimize dirty shadow bounds update for particles and foliage
- Optimize Vulkan texture clears with render pass attachments clear operation
- Optimize Vulkan render passes with a new
GPUDrawPassto manually control attachment operations in higher-level API - Optimize various rendering effects with
GPUDrawPass - Optimize GPU memory allocations on D3D12 with
D3D12MemoryAllocator - Optimize foliage serialization by batching instance data, performing quantization, and LZ4 compression
- Optimize first scene startup by preloading it during loading screen
- Optimize content modifications watching events processing in large projects
- Optimize CPU rendering of shadowed foliage by splitting draw contexts into separate async jobs
- Optimize foliage instance bounds calculations
- Optimize
FoliageInstancesize to cut down memory by and reduce cache misses when drawing foliage - Optimize foliage rendering with less cache misses
- Optimize foliage drawing by caching per-instance world matrix
- Optimize large scene files loading by aligning json pool allocator pages to 64kB
- Optimize large scene/prefa/json assets metadata loading by avoiding parsing full contents
- Optimize draw calls batching and instancing with better sort keys generation and processing
- Optimize shadows and depth rendering with instancing support for transparent shaders
- Optimize
LightmapUVsto be stored already asHalf4to avoid runtime conversions during rendering - Optimize scene rendering loop performance
- Optimize Global Surface Atlas to cache objects shader data
- Optimize Global Surface Atlas updates distribution for subobjects (eg. foliage instances)
- Optimize Global Surface Atlas with object draws limit per frame
- Optimize Global Surface Atlas defragmentation with copying old atlas to avoid redrawing all objects
- Optimize Global Surface Atlas full direct lighting redraw to copy whole emissive atlas at once
- Optimize basic
Mathffunction to use more inlining - Optimize
Mathfto usefloatversions of intrinsic - Optimize Animated Model rendering with hardware instancing
- Optimize animated model startup to avoid double init of the bones buffer and pose
- Optimize resizing dictionary to add new unique keys faster for primitive and
intvalues - Optimize DDGI probes debug with a batched instanced draw
- Optimize DDGI indirect lighting resolving to use depth bounds test
- Optimize rendering when using TAA to draw PostFX directly to backbuffer
- Optimize development-only shaders and rendering code to compile it out in Release game builds
- Refactor
BRDFroughness input to be squared - Refactor Temporal Anti-Aliasing shader to have less ghosting and quality scalability
- Refactor
RenderingUpscaleLocationenum item names - Refactor
Wireframeview mode to draw wireframe on top of lit view - Refactor
Assetevents naming to match engine scheme - Refactor
CommandLineparsing and processing - Refactor
GeometryDrawStateDatastorage intoRenderBufersfor correct split-screen rendering - Refactor
ISceneRenderingListenerevents to contain more data - Refactor rendering code by moving
RenderContextto a separate harder file - Refactor
Actor::Drawto use only variant withRenderContextBatchto simplify rendering code - Refactor
NetworkMessageandNetworkStreamto handle errors gracefully, including in Release builds - Refactor engine shaders folder to have better organization
- Refactor
OnlinePlatformXboxLiveandOnlinePlatformSteaminto sharedFlaxEngine.Onlinenamespace - Update to .NET 10
- Update
LZ4library tov1.10 - Update to the latest Vulkan SDK
1.4.350 - Update Vulkan API to
1.2on Windows - Update Vulkan API to
1.1on Android - Update Vulkan API to
1.4on macOS and iOS - Update
DirectX12Agilityto1.619.3 - Update
DirectXShaderCompilerto1.9.2602 - Update actor
LookingAtto be a more descriptive name - Fix deprecated flag usage when loading scenes over multiple frames
- Fix loading
SceneReferenceproperty in Visual Script - Fix Global Surface Atlas rasterization of objects with negative scale
- Fix Global Surface Atlas tiles padding and position precision to have proper stability
- Fix DDGI sampling when using non-directional lighting (eg. smoke particles or volumetric fog)
- Fix default shadow depth bias values and control them based on shadow resolution/quality mix
- Fix Directional Light fade at distance
- Fix Directional Light rendering to be skipped when color alpha is zero
- Fix
Guiddiff serialization and loading invalid values - Fix editing flag enum to properly toggle bits incl. bit masks
- Fix missing SDK print for ones from modules or plugins
- Fix editing array of
CultureInfovalues - Fix
ForDistributionbuild option to not be explicitly enabled inReleasebuilds - Fix various shader warnings
- Fix UI double-click actions to work only with left mouse button
- Fix editor fonts resolution scale on High DPI screens
- Fix main camera by proper active cameras list ordering
- Fix delay on virtual GPU texture upload to be immediate
- Fix Quad Overdraw pass to skip draws from materials that don’t support it
- Fix
CanvasScalerpoint projection when using location offset - Fix for flickering tree structures on expand/collapse
- Fix Windows SDKs and Toolsets log from build tool to be sorted descending by version
- Fix compiling project with plugins for Web
- Fix project version control info for empty
.gitrepo - Fix Global Surface Atlas sampling sub-texel error
- Fix self-shadowing artifacts in DDGI on fast moving objects
- Fix DDGI/SDF quality in editor view when moving static objects around
- Fix Debug Draw shapes manual depth test when using resolution upscaling
- Fix various rendering elements when using upscaling
- Fix using
Toolsmenu without Game Settings asset - Fix custom draw calls submission within post-process callback
- Fix Global Surface Atlas with large worlds
- Fix height fog density calculation with large worlds
- Fix warnings when running on
nullrenderer - Fix rendering transparent material on WebGPU without shadows
- Fix occlusion queries on WebGPU and Vulkan
- Fix missing network messages reading init to avoid crashes on incorrect message
- Fix various edge-cases in network replication system to avoid crashes
- Fix dangling replication queue items and parts after client disconnected
- Fix saving virtual Material Instance asset
- Fix safety of the network handshake and C# network stream
- Fix
ENetpacket leak after receive event - Fix
ENetnetwork driver to use 3 separate channels for different packet types - Fix
ENetnetwork driver stats from all peers - Fix assertion on shader load failure
- Fix missing
Int2/Int3/Int4inVariantsupport implementation parts - Fix Rider detection on macOS when installed in the user Applications folder
- Fix Vulkan Tracy timestamp queries on MoltenVK
- Fix macOS popup/tooltip windows handling
- Fix drag&drop on X11 Linux with SDL
- Fix mouse position in events reported from caption area on Windows
- Fix window decoration buttons not clickable with DPI scale
- Fix property get/set function name length in dotnet bindings
- Fix output log history popup management to smoother usage
- Fix
MeshAccessortriangle count calculation bug - Fix Variant static typenames caching bug in Editor
- Fix asset ‘Reload’ option to be available when asset failed to load for manual load
- Fix asset storage handling when file is locked
- Fix asset cache eviction for locked files to retain cached info
- Fix reloading assets that failed to load
- Fix dirtying scenes after building navmesh in Editor
- Fix scene texture node with
WorldPosition - Fix model material access with empty entries
- Fix Web build when python is installed in folder with whitespaces in path
- Fix building deps for Windows ARM64
- Fix UI focus entries list when opening import files dialog
- Fix auto-selecting newly imported or created assets in Editor
- Fix prefab Script track IDs for Scene Animation remapping
- Fix vertex paint brush size to match the highlight sphere
- Fix Editor Grid jitter after TAA resolve
- Fix
ProgressBarfill with large margin - Fix spline editing in Large Worlds
- Fix alternating table row coloring
- Fix Render2D line thickness scaling
- Fix procedural Skinned Mesh creation from code
- Fix t-posing when Multi Blend 2D when one of the triangulated point animations is empty or loading
- Fix timeline curve expanding to properly show whole curve area
- Fix GUI blur panel to respect input image alpha
- Fix Camera Space canvas rendering to properly clip viewport
- Fix collapsed curve keyframes display bug
- Fix mesh vertices deduplication to use relative error, not fixed value
- Fix Large World offset bug in triplanar texture nodes
- Fix eye adaptation to be turned off in editor asset previews
- Fix shader error when using non-ASCII characters in material
- Fix importing skinned models with multiple LODs
- Fix text box highlighting not using DPI
- Fix material drag over highlights to not flicker
- Fix missing distortion rendering on Deformable materials
- Fix missing treeview folder shortcuts
- Fix project generation when configuration/platform is unsupported
- Fix Editor toolbar to exclude project path but only name
- Fix dynamic C# scripting features in Editor by preloading stdlib assembly
- Fix indexed properties from displaying in Editor (throws exception)
- Fix terrain resolution in editor
- Fix terrain collision leftover when destroyed manually
- Fix terrain patch add mode not picking patches in scaled terrain
- Fix game window resize to maintain placement within screen (eg. centered)
- Fix game window resolution when resizing during fullscreen on Windows
- Fix game window to maintain resolution and be centered when going out the fullscreen on Windows
- Fix window layout when changing System DPI on Windows
- Fix infinite grid actually infinite
- Fix mesh index buffer when using 32-bit indices
- Fix content browser stealing focus from popup asset windows on SDL
- Fix Wayland window not getting attached to the drag operation
- Fix Vulkan swapchain surface to be preserved during resize
- Fix the release of Vulkan samplers
- Fix
NodesCachedesync after hot-reload in Editor - Fix C# std lib detection due to
RepositoryUrlchange - Fix nested prefab stack overflow when adding new object to nested prefabs hierarchy
- Fix nested prefab stack overflow when applying changes with animated models inside hierarchy
- Fix CSG Brush face moving bugs
- Fix mesh collider updates after recooking collision data
- Fix curve track right-drag panning responsiveness
- Fix curve track resize handling
- Fix Scene Animation preview playback controls and time comparison behavior
- Fix scripts/content files getting deleted after file modifications
- Fix scripting assembly file loading when file is locked
- Fix Editor’s Game window minor stability issues
- Fix Editor windows order when restoring after scripts reload
- Fix floating editor window ordering and focus restoration on macOS
- Fix default value in Editor when it’s
nullfor value-type - Fix GUI traversal during child removal
- Fix streaming of wide/tall textures
- Fix discarding unsaved asset editor changes
- Fix Roslyn analyzer include resolution
- Fix using
NuGetpackage with different dependencies - Fix Game Cooker wait on code compile/load end before cooking starts
- Fix
ParseFloatrejecting a ‘+’ sign in the exponent - Fix slider control with negative minimum range value
- Fix spawning actors in viewport to have better origin placement
- Fix animation slot bugs and stabilize scripting playback
- Fix BT node size when renaming decorator
- Fix bug in BT sub tree knowledge type validation
- Fix C# ‘IsByRefLike’ types that cannot be created on heap
- Fix
In/Outattribute warning in generated bindings for boolean arrays - Fix Multi Blend animations reversed playback when using negative speed
- Fix missing mutex lock in Game Cooker thread
- Fix Wayland dragging events racing with SDL data offers- #4279
- Fix crash in scripting bindings when unboxing
nullclass - Fix crash on custom Assimp logger
- Fix crash on headless Editor game run
- Fix crash on inactive DDGI probes on 1st frame
- Fix crash on D3D11 init with debug when Direct3D debug layer is missing
- Fix crash when looping BT with Force Success node
- Fix crash when loading invalid
VisjectMeta - Fix crash when using curves inside Anim Graph
- Fix crash when encoding CJK characters from UTF-16 into UTF-8
- Fix crash when
GPUBuffercreation fails on D3D11 - Fix crash when skeleton node has invalid binding in Animated Model pose
- Fix crash
StringUtils::Copyon Win32 when length is zero - Fix crash on D3D11 draw without valid state set
- Fix crash on too long path on Unix
- Fix crash when reading process output on Windows with an empty data
- Fix crash when calling
DebugCommandsfrom async threads - Fix crash when using
WheeledVehicleas player pawn in Arizona Framework - Fix crash on invalid Multi Blend 1D indices
