Ciao!
Here comes brand new Flax 1.9! This update contains hundreds of new features such as Video playback, performance boost, DDGI improvements, new Shadow Mapping, editor usability additions, and more good stuff.
For this update together with our contributors, we’ve made over 1,134 commits and merged 169 Pull Requests into Flax repositories. Thanks for your support!
As always, we will do a quick check around new features and highlights. To see detailed information visit the official release notes.
Made with Flax
We’re excited to showcase two games made with Flax:
Highlights
Video playback
This release includes a video player to load .mp4
files and play them with video and audio. New VideoPlayer
actor can be added on a scene, to prefab, attached to UI, or spawned dynamically from code. It can play a local file or stream video via an HTTP URL.
We’ve prepared documentation and tutorials on how to use Video.
Rendering performance boost
Every Flax update brings new performance improvements to the rendering. This time we’ve enhanced:
- draw calls sorting (by optimizing draw key memory and using Merge Sort rather than Quick Sort),
- async drawing (by running draw calls sorting, shadows setup and DDGI setup on Job System),
- objects batching (by merging material constants setup for all meshes using this material),
- GPU objects data (by uploading all draw call instances at once in async for a whole scene),
- shadow maps draws reduction (by using material-sharing for opaque unmasked geometry).
Bistro scene sample
To better showcase both quality and performance improvements of Dynamic Diffuse Global Illumination (DDGI) solution in Flax Engine we’ve setup Amazon Lumberyard Bistro as a Flax project and released in on Github. Feel free to download it and use as a reference how to setup Global SDF for a scene and use it for accurate DDGI.
DDGI improvements
Dynamic Diffuse Global Illumination (DDGI) is using our custom sorftware-raytracing solution used to draw dynamic lighting. Flax 1.9 adds substantial quality and performance upgrades to this visual. We’ve added variable ray-count per-probe meaning the GI probes outside the view frustum or far from geometry or far from camera origin use less rays per frame. Probes relocation algorithm applies smooth probe movement to better adapt in dynamically changing scenes. Also, probes sampling supports fallback from other grid cells which reduces back artifacts. Overall, DDGI is ready for production and can be used to achieve realistic-looking lighting in large-scale games.
To showcase those improvements we’ve updated our Tech Demo from 2022 which can be downloaded on Steam:
Shadow Maps Atlas
Shadow Maps are depth textures used to draw shadows for lights in real-time. Flax used to have a fixed-size render target to draw shadows based on the global shadows quality setting. We’ve reimplemented shadow mapping to use shared atlas texture which comes with many benefits:
- variable shadow resolution (eg. based on the distance to light),
- variable update rate (eg. lower shadow map draw frequency for far lights),
- separate static atlas for static geometry (copied into dynamic atlas),
- shadowed lights in transparency (single atlas can be easily bound to shader),
- shadowed lights batching (eg. when rendering volumetric fog),
- better performance (depth drawing into a single texture).
GPU-based mesh SDF generation
Mesh SDF is now generated on a GPU by default. It cuts computation time (incl. model import time when SDF is enabled in a project). For example, a model with 3,700,000 vertices is generated in ~160ms. For some meshes (eg. thin objects like foliage) new GPU-generation results in artifacts (the different algorithm used) thus old CPU-based algorithm can still be used if necessary.
Missing references debug improvements
When working on larger Flax projects, often asset or object reference gets missing. For example, if someone deleted texture or material that was used it might lead to gameplay or visual artifacts. Now, any missing asset or object will be logged with contextual info about source reference (eg. specific asset path, type, and id or specific actor/script info). This greatly improves devs ability to quickly solve broken references to be more successful. We plan to keep improving this feature and make it even easier to find missing references or data problems.
Editor hierarchy guidelines
We’ve added showing guidelines to Editor tree hierarchy. This change greatly improves the readability of actors hierarchy or folders structure. This feature can be toggled off in editor interface options.
Infinite grid
For this update, we’ve enhanced the grid in Editor to look much nicer. It no longer uses debug lines but instead a shader on a large quad that follows the camera around and properly blends with the environment. Both color and distance are configurable in the Editor Options.
Reordering lists
Flax 1.9 adds a highly requested feature to Editor for arrays and lists editing. Now, you can use a small icon on the left side to drag the item up or down and reorder list. This feature works across the Editor, including material and visual script parameter lists.
Visject improvements
Visject is a name of system used for surface-based content creation such as: materials, visual scripts, particle emitters, animation graphs, and more. Over the past months we’ve added multiple important updates to Visject to empower creators:
Tooltip and description panel
Added node documentation section to the context menu, allowing users to distinguish nodes in the context menu list quickly. This is especially useful for visual scripting as it displays visual parameters and return values types of functions.
Search and filter improvements
Improved UX of searching nodes in the context menu even more by adding 2 new features: filtering by group
and type sorting priority
.
Straight lines
Editor Options contain a setting for line curvature that can make them look straight.
Radial Menu control
New RadialMenu
control can be used to build the interactive user interface, especially useful in games that allow users to pick items from the inventory or when porting games to consoles for gamepad controls.
General improvements
Flax Editor is under constant development towards making it the best game editor, this time we notably worked on:
- New content creation options (new prefab or widget root actor setup),
- UI Controls toolbox (toolbox section with UI Controls for drag&drop spawning),
- New material gradient nodes (cone, cycle, linear, radial, and ring gradients),
- Scene animation timelines gizmos (viewport gizmos to edit camera track curve),
- Animation events UI.
10 Comments
Antoine · October 17, 2024 at 5:59 PM
This update is amazing
Breaker · October 17, 2024 at 6:14 PM
A nice update as usual. I salute you and all the contributors. Keep it up!
Murry · October 18, 2024 at 12:38 AM
Hell yeah great work! appreciate the updates.
Igor · October 18, 2024 at 5:47 AM
destruction when? smth like nvidia blast?
madmax · October 18, 2024 at 7:31 AM
When will flax engine support the web platform? it’s a pretty big market!
HydrogenC · October 18, 2024 at 8:00 AM
Wonderful!
Amirhosein · October 19, 2024 at 1:01 PM
Keep going flax team
David · October 19, 2024 at 7:40 PM
Thank you! Great Job!
Dwigth · October 25, 2024 at 1:34 AM
Your doing great Flax!
Michael · December 18, 2024 at 9:18 PM
Great new version, congratulations and thanks 🙂
I see you’ve added a bullet point about Blast on Trello. It’s interesting, although I’d recommend you explore PhysX’s current capabilities, especially thanks to this recent version of the PEEL PhysX Edition evaluation lab :
https://github.com/Pierre-Terdiman/PEEL_PhysX_Edition
PEEL_PhysX_Edition on Github by Pierre Terdiman
Author’s twitter : https://x.com/PierreTerdiman/status/1869067673755353394
Among the 360 sourced examples, there’s a good deal on fractures, voronoi and convex debris. It’s even possible to compare several versions of the physics engine (including PhysX 5.1 through to the very recent PhysX 5.5.0), as well as Jolt.
In this regard, accessing to more PhysX APIs in C# for editor usage would already be huge.