Flax Engine Update 1.13

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 :slight_smile:

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 Array ctor from Span
  • 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 High by 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_MINOR macros to shaders compilation
  • Add PostProcessEffect.CollectDrawCalls to 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 IndirectShadowsStrength to GI settings for artist-controlled light leaking
  • Add NVIDIA PerfSDK plugin for Flax Engine
  • Add Graphics.Shadows.Dump command for profiling shadow mapping
  • Add Graphics.GI.Dump command for profiling DDGI/GlobalSDF
  • Add Graphics.GI.GetConvergence to use GI bounce progress for game loading screens/fades
  • Add new DDGI Reflections rendering mode for fully dynamic indirect specular
  • Add CanBuild to target for selective project references compilation
  • Add GIProbesSpacing and GlobalSurfaceAtlasResolution to global Graphics for 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 Lighting debug 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 C and Z keys
  • 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 MacWindow logo 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 Variant option 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 ScriptingObjectInterfaceReference to reference object with interface
  • Add rich text formatting to Debug Log title messages
  • Add Start/EndTextInput for 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_RETURN for checks in code that should continue function execution
  • Add VariantType::GetScriptingType for easier type information access
  • Add simpler Variant::Enum that 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 RealtimeSkybox mode to SkyLight for dynamic skylight
  • Add Brightness, ResolusionScale, DebugView, and LayerMask to viewport persistence
  • Add Video playback value on Video Player
  • Add way to get blackboard by type
  • Add AGENTS.md file (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 Escape key to deselect in Editor
  • Add VersionControlInfo to output game build info and log game version with branch/commit info
  • Add D3D12MemoryAllocator for resource allocations on DX12
  • Add GPUMemoryStats for GPU video memory stats
  • Add GPUDrawPass for 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 PCSS filter
  • Add SourceAngle property to Directional light that controls PCSS penumbra size
  • Add highlight to Motion Vectors Debug view for better content optimizing
  • Add Optimization sub-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 GetTextureData function 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 DateTime and TimeSpan
  • Add ShowInPlayMode to HideInEditor attribute for properties/fields that should display in editor only during play mode
  • Add new Level.PreloadSceneAsync for 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::GetSDK to query SDKs via Flax.Build from editor
  • Add FromMemory and LoadMemory to Texture for loading images from memory
  • Add GetUserAvarar to 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 ViewportRect to Camera and rendering for split-screen drawing
  • Add ViewportRect to UICanvas for UI placement
  • Add InputLatencyMs stat to ProfilingTools
  • Add Loaded event to Asset in scripting
  • Add BoundingSphere.Transform with Transform instead of Matrix
  • Add GPUQueryType::BinaryOcclusion for simpler visibility checks
  • Add MaterialTextureMipBias to 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::MinObjectScreenSize to skip too small objects from drawing motion vectors
  • Add mesh index buffer optimization based on meshoptimizer library
  • 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 CascadeBlendSize to Directional Light
  • Add DefaultProbeCubemapFormat to Graphics Settings with option to compress env probe textures
  • Add MeshAccessor.LoadBuffer with 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 ExpandChildSize option to vertical/horizontal panels to resize child controls to fill the panel size
  • Add DrawMaterial feature to RenderToTextureControl for custom post-processing the cached UI image
  • Add ConstantInvalidate option to RenderToTextureControl for no-cached image
  • Add Bypass feature to RenderToTextureControl to skip rendering cached image
  • Disable Motion Blur and Eye Adaptation by default
  • Deprecate the Direction actor property and replace with Forward
  • Remove deprecated UWP platform from Game Cooker window
  • Rename SceneRenderTask::RenderingPercentage to RenderScale
  • 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 Bounding prefix
  • Rename BRDF visibility functions prefix to V_ from Vis_
  • 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 GPUDrawPass to 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 FoliageInstance size 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 LightmapUVs to be stored already as Half4 to 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 Mathf function to use more inlining
  • Optimize Mathf to use float versions 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 int values
  • 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 BRDF roughness input to be squared
  • Refactor Temporal Anti-Aliasing shader to have less ghosting and quality scalability
  • Refactor RenderingUpscaleLocation enum item names
  • Refactor Wireframe view mode to draw wireframe on top of lit view
  • Refactor Asset events naming to match engine scheme
  • Refactor CommandLine parsing and processing
  • Refactor GeometryDrawStateData storage into RenderBufers for correct split-screen rendering
  • Refactor ISceneRenderingListener events to contain more data
  • Refactor rendering code by moving RenderContext to a separate harder file
  • Refactor Actor::Draw to use only variant with RenderContextBatch to simplify rendering code
  • Refactor NetworkMessage and NetworkStream to handle errors gracefully, including in Release builds
  • Refactor engine shaders folder to have better organization
  • Refactor OnlinePlatformXboxLive and OnlinePlatformSteam into shared FlaxEngine.Online namespace
  • Update to .NET 10
  • Update LZ4 library to v1.10
  • Update to the latest Vulkan SDK 1.4.350
  • Update Vulkan API to 1.2 on Windows
  • Update Vulkan API to 1.1 on Android
  • Update Vulkan API to 1.4 on macOS and iOS
  • Update DirectX12Agility to 1.619.3
  • Update DirectXShaderCompiler to 1.9.2602
  • Update actor LookingAt to be a more descriptive name
  • Fix deprecated flag usage when loading scenes over multiple frames
  • Fix loading SceneReference property 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 Guid diff 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 CultureInfo values
  • Fix ForDistribution build option to not be explicitly enabled in Release builds
  • 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 CanvasScaler point 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 .git repo
  • 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 Tools menu 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 null renderer
  • 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 ENet packet leak after receive event
  • Fix ENet network driver to use 3 separate channels for different packet types
  • Fix ENet network driver stats from all peers
  • Fix assertion on shader load failure
  • Fix missing Int2/Int3/Int4 in Variant support 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 MeshAccessor triangle 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 ProgressBar fill 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 NodesCache desync after hot-reload in Editor
  • Fix C# std lib detection due to RepositoryUrl change
  • 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 null for 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 NuGet package with different dependencies
  • Fix Game Cooker wait on code compile/load end before cooking starts
  • Fix ParseFloat rejecting 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/Out attribute 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 null class
  • 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 GPUBuffer creation fails on D3D11
  • Fix crash when skeleton node has invalid binding in Animated Model pose
  • Fix crash StringUtils::Copy on 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 DebugCommands from async threads
  • Fix crash when using WheeledVehicle as player pawn in Arizona Framework
  • Fix crash on invalid Multi Blend 1D indices
4 Likes