Today, we’d like to announce the new Flax 1.4! This version brings lots of new features like Realtime Global Illumination, better licensing, crowd navigation, large world support , and tons of good stuff.
For this update together with our contributors, we’ve made over 643 commits and merged 23 Pull Requests into Flax repositories. Thanks for your support!
Feel free to discuss the update here
Contributors: mafiesto4, GoaLitiuM, iainmckay, PrecisionRender, mxruben, whocares77, ScottLongley, tom-weiland, Wolfos
PRs merged: 23
Changelog:
- Add Dynamic Diffuse Global Illumination with real-time irradiance probes
- Add
JobSystem.Execute
utility for quick jobs running - Add Global Sign Distance Field rendering
- Add Distance to box/point for Bounding Box
- Add
LineHitBox
toCollisions.hlsl
- Add flip presentation mode and tearing support to D3D11
- Add
MeshAccelerationStructure
utility for robust triangles geometry queries - Add more utilities for using
Matrix3x3
- Add
IsSingleFrame
toRenderView
for thumbnails/pre-render views drawing without temporal effects and LOD transitions - Add
DynamicStructuredBuffer
andDynamicTypesBuffer
utilities - Add automatic group panels hiding if all properties are hidden by
VisibleIf
rule - Add utilities for Model SDF generation (on import, in editor window, or batch for all models on a scene)
- Add Sample Global SDF node to materials and particles
- Add
Collision (Global SDF)
particle module - Add
Conform to Global SDF
module to GPU particles - Add
Position (Global SDF)
module to GPU particles - Add utility
Copy
option for various labels in assets editors - Add
ISceneRenderingListener
for using scene information in the renderer cache - Add utility to editor CodeDocs for tooltips from C# types and members
- Add
CustomBuffers
for injecting custom state intoRenderBuffers
- Add support for implicit casting from Quaternion to other types in shaders
- Add
Rotate Vector
node to Visject Surface graphs - Add Screen Space Reflections for transparent materials
- Add
Array Add Unique
node to Visual Scripting - Add support for sampling Scene Color in transparent materials (forward pass)
- Add keyboard key navigation to Content View based on items name first character
- Add
JsonAsset.Instance
for C# asset object - Add
Delegate::BindUnique
- Add Dictionaries to Visual Scripting
- Add support for array of Visual Script objects
- Add support for
constexpr
fields in Scripting API - Add World Triplanar Texture node to materials
- Add playback speed option for Scene Animation rendering
- Add Smoothstep and Step material nodes
- Add preserving existing value of the Visual Script parameter when changing its type
- Add
View Size
node for GUI materials - Add additive scene opening in Editor via drag&drop into Scene Tree window
- Add
Custom Global Code
node to materials for injecting custom code, includes or constants - Add
loopCount
toPlaySlotAnimation
for looping slot animation - Add
Color.FromRGBA
- Add confirmation dialog for Scenes Data building in Editor toolbar (prevent misclicks)
- Add cursor clipping (for RTS, MOBA games)
- Add
Double2
,Double3
,Double4
to C# scripting API - Add Large Worlds support for 64-bit world coordinates (enable
UseLargeWorlds
in custom engine build) - Add relative-to-camera rendering for large worlds
- Add support for the latest Windows 11 SDK (22H2)
- Add support for Physics Scene origin shifting
- Add support for Double2/3/4 for native storage in
Variant
- Add custom floats formatting to prevent scientific notation
- Add selectable Environment Probes resolution (in Graphics Settings or per-probe)
- Add support for dispatching jobs within jobs in JobSystem
- Add Transparent Lighting Modes for material with option to use non-directional shading
- Add Global Illumination sampling option to transparent materials (eg. particles)
- Add utility buttons to check/uncheck all Material Instance parameters overrides in Editor window
- Add separate GBuffer view modes in Editor viewport widget
- Add real-time environment probes support
- Add support for baking env probes in cooked game
- Add new trace mode to Screen Space Reflections for DDGI Scene tracing
- Add showing model screen size in the Model Preview
- Add editor camera speed up for gamepad right trigger
- Add
GamepadDPadX
/GamepadDPadY
input axes for gamepad DPad - Add
Engine.FocusGameViewport
to implement game menu with camera focus gather - Add HTML tags processing in Rich Text Box
- Add
HtmlParser
to engine utilities (with unit tests for it) - Add option to disable text clipping in text boxes
- Add option to disable selecting text in text box
- Add utility for parsing Color from text (hex or named color)
- Add
Content.GetEditorAssetPath
- Add
EditorPlugin.DeinitializeEditor
to properly cleanup Editor extensions on exit - Add support for generic types in Scripting API with
Template
flag - Add waiting for model to be loaded in
SetMaterial
- Add
NavCrowd
for navigation steering behaviors system for a group of agents - Add support for renaming GPU resources (development builds only)
- Add new
API_TYPEDEF
metadata for Scripting API types instantiation (withAlias
option) - Add
FLAX_BUILD_BINDINGS
define for Scripting API parser to be used if needed - Add various improvements for C# math library
- Add Content Search window to searching Visual Scripts and other assets
- Add
Find references
utility for graph parameters and methods - Add public events for Editor play mode flow
- Add setting timer resolution to lowest possible value in all Windows systems
- Add support for main view information in Surface materials during subpass rendering (eg. shadow depth)
- Add support for font size and color in
Header
attribute - Add
TypeReference
attribute to actors/scripts searching utilities for easier type picking in Visual Script - Add support for setting C++ version for build module compilation
- Add Nested Animations for compositing animation clips
- Add new Noise library for C++/C#/VisualScript/HLSL utilities
- Add
Default
auto-generated member to scripting structures and improve deserialization - Add
UseAlpha
toRenderBuffers
for pass-though renderer with alpha channel - Add late initialization to Content Finder tool in Editor
- Add support for virtual Prefab assets created from code
- Add GPU Dispatch calls in GPU profiler draw calls collumn
- Add batching undo actions for Surface editing to prevent undo actions spam during a single edit
- Add missing pipeline barriers after Dispatch on Vulkan to prevent race conditions with UAVs
- Add support for using mipmaps with 3D textures
- Add support for in-built color constants in Visject (eg. red/blue/violet)
- Add drawing
RenderList
if it was not batched/sorted - Add
Actor::GetOrAddChild
to C++ - Add auto-selecting new item created in Content window
- Add shader getter to
IMaterial
interface - Add shader reloading on header file edit for shaders with compilation errors
- Add support for Volume textures to have residency changed as regular textures
- Add events for streamable resources residency changes tracking
- Optimize empty comments parsing in Scripting API
- Optimize ProbesFilter shader
- Expose
IsDuringPlay
property for actors and scripts to use in scripting - Improve
StaticModel
to register for Scene Rendering once the model has any LOD streamed-in - Improve initial name for static model collision data asset
- Improve properties display (group all parameters from the same group together)
- Improve JetBrains Rider installation detection
- Improve Linux source code editor detection (Rider and VSCode)
- Improve property names displayed in UI
- Change search boxes in Editor to stick to the top of the panel
- Update to .Net Framework 4.5.2
- Update DirectXShaderCompiler to version 1.7 (July 2022)
- Move
Actor.DestroyChildren
to C++ - Remove disabling temporal reprojection from Volumetric Fog
- Remove
FlaxException
- Remove warning on missing initial entry state for Anim Graph state machine
- Refactor model Import Options to display only relevant properties for asset Type
- Refactor
PhysicsActor
intoRigidbody
(useIPhysicsActor
interface manually) - Refactor
HashSet
to support custom allocator - Refactor
API_INJECT_CPP_CODE
intoAPI_INJECT_CODE
to support code injection in other languages - Refactor Visject reroute node to support reconnecting and have more usability
- Refactor scene objects initialization to call
OnAwake
before allOnStart
- Refactor engine to support double-precision vectors
- Refactor
OrientedBoundingBox
to useTransform
for transformation instead ofMatrix
(for large worlds) - Refactor
FlaxTests
to run as Editor with all engine services initialized - Format engine codebase with ReSharper
- Fix
Lightmap UVs Source
not working in model import options - Fix for macOS dylib path
- Fix text box not consuming key down event causing editor shortcuts to activate when typing
- Fix preserving Alpha channel when changing color with Value slider
- Fix Android build with NDK 25
- Fix editor options startup to not log error on a missing file
- Fix for faster models exporting
- Fix opening and editing animation with missing Anim Events
- Fix
Vector2
equality comparison - Fix sampling Curves with keyframes that have negative time value
- Fix displaying multiple structure parameters in Visject Surface parameters panel
- Fix opening material or particle emitter in editor if shader compilation fails
- Fix picking to properly select closest triangle for meshes
- Fix Directional Light color alpha in Sky atmosphere color
- Fix CSM split point when using 3 cascades
- Fix
TextureBrush
to return valid size if texture is not yet loaded - Fix editor viewport capturing mouse if window is not foreground
- Fix looping streamable audio clips with multiple chunks
- Fix enum operators to be
constexpr
- Fix game ticking in editor during cut-scene rendering at edit time
- Fix
Ctrl+S
in timeline view to not split the camera shot media - Fix debug name for DirectX resources
- Fix Surface parameter attributes editor popup location
- Fix Constant Buffer binding on D3D12 when using Graphics after Compute pass with the same constants
- Fix the Depth Of Field to be consistent no matter the resolution
- Fix borders sampling in Depth Of Field to reduce leaking artifacts on screen edges
- Fix editor error when selecting foliage type
- Fix
FlaxStorage
refs counting to be atomic - Fix pasting/duplicating nodes in Visject to call spawn event
- Fix error when loading surface from not yet loaded asset
- Fix drag&drop into Scene Tree if move goes over valid drop target first
- Fix wrong timestamps in C# profiler events
- Fix copy pasting multi-line text into a single-line textbox
- Fix removing Gameplay Globals
- Fix Multi Blend 2D node if all blend points are on the same line
- Fix selecting Debug Log window entries with the left-mouse button
- Fix errors in Editor when editing particle emitter if effect that uses it is selected
- Fix missing Properties window focus after adding script to the actor
- Fix
ParticleEmitter.Spawn()
with default duration - Fix
[AssetReference(typeof(typeName)]
not working for arrays of assets (fix for collection types) - Fix PhysX crashes due to lazy actors adding by adding PhysX actors to the scene immediately
- Fix foreach loop in Visual Script to continue flow on null array or dictionary
- Fix default value in
Dot
andDistance
graph nodes - Fix editing
LinearCurve<Color>
in properties window (color picker window closed keyframe editing popup) - Fix using null array of dictionary in Visual Script for init
- Fix invoking anim events for multi-blend animations
- Fix mouse hovering controls under expanded dropdown list panel
- Fix
Spline::GetSplineLength
freeze - Fix Editor Analytics tracking option file SetupStyle
- Fix duplicated actors after reparenting actor in Prefab
- Fix Reroute node in Visual Script impulse flow
- Fix Editor play mode exit bug after closing maximized Game window
- Fix using preprocessor define values in Flax.Build bindings parsing
- Fix processing
else
andelif
preprocessor blocks inFlax.Build
bindings parser - Fix parsing comments for Scripting API types that are templates
- Fix snapping object to the group in Editor to skip trigger volumes
- Fix error when double-clicking empty RichTextBox
- Fix minor issue with Visual Script set parameter node calling flow during debugger value evaluation
- Fix uploading volume texture data to GPU in D3D12
- Fix shader source code encoding error on a compilation error
- Fix font rendering and alignment with custom DPI scales
- Fix
Dictionary::Remove
return value if empty - Fix error in Forward Shader Feature when rendering directional light shadow map
- Fix ParticleEffectEditor issues after emitter editing if selected
- Fix
UsedSRsMask
/UsedUAsMask
when binding arrays to the shader - Fix normal map when importing materials for model files
- Fix sorting items in various contextual list popups in Editor
- Fix
InstanceOrigin
,PerInstanceRandom
andLODDitherFactor
to not use interpolation between shader stages - Fix
Multiply
(and similar) nodes result value in Visject if the first input is disconnected - Fix highlighting the first error/warning from the Output Log message text
- Fix opening particle emitter editor window if shader compilation fails
- Fix invalid Rigidbody bounds if it has no shapes attached
- Fix crash if D3D device gets
DXGI_ERROR_DEVICE_REMOVED
during init - Fix crash with Vulkan when using Blur Panel in Screen Space canvas
- Fix crash on macOS due to Vulkan timestamp queries error
- Fix crash due to GPU Particles define not used in some headers
- Fix crash when setting up recursive Material Instances inheritance
- Fix crash when changing actor scene
- Fix crash on opening skeleton mask window
- Fix crash in scripting init if current localization is null
- Fix crash on API event in C# after Editor hot-reload
- Fix crash on Linux with empty log message
- Fix crash when spawning prefab without scenes loaded
- Fix crash when loading empty json for Variant structure data