Finally after a couple of Months of wait, Flax Engine 1.4 has been released and ready to be tested.
This version adds many cool new features, including real-time global illumination, better licensing, mass navigation, big world support, and much more.
Together with our contributors, we have created over 643 commits and merged 23 Pull Requests into the Flax repository for this update. Thank you for your support.
As always, here is a quick checklist of new features and highlights. For more information, please see the official release notes.
Flax Engine 1.4 Highlights
Real-time Global Illumination
Real-time global illumination is now available in Flax! This was one of the most requested features and is now available for games and architectural visualization projects. You can see it in action in the video above, implemented using the DDGI algorithm, scrolling a probe volume around the camera with our proprietary software ray tracing solution that works on all modern GPUs, even those that are not RTX-capable. Instead, we added Signed Distant Fields support to the model and rasterized it into a global volume that can be raytraced by shaders on the GPU. Combined with the global surface cache, the GI effect can be simulated in dynamic environments where lighting conditions are constantly changing with time of day.
For more information, see the Realtime GI documentation.
The Tech Tutorial
To demonstrate the capabilities of the new Global Illumination rendering, we have created a small demo showing an ArchVis scene with dynamic lighting, dynamic objects, and time of day adjustments. This is a small sandbox where you can try out how GI looks and works in a real production project. Download it now from our servers or wait for its official release on Steam.
In the demo, you can control the camera with the mouse and keyboard or play with the gamepad; you can rotate the sun with the D-pad or UHJK keys and play with the time of day in the scene to see how it affects the dynamic lighting.
With the huge amount of new features added to Flax in this update, we wanted to do even more. That’s why we have updated our license terms by raising the minimum revenue threshold from $25,000 to $250,000. Going forward, Flax will be free to use as long as its games and products generate less than $250,000 in revenue in a calendar quarter. For revenues above that, we will continue to use the same 4% revenue share as before. For example, if your game generates $300,000 in sales, you will pay $20,000, or 4% of the $50,000 above the new threshold.
We believe this change will make the engine more affordable for smaller developers. This change will be effective this calendar quarter (Q3 2022).
64-bit world coordinates
The Flax Engine has a variety of features for creating large, rich worlds, including asynchronous data streaming, different content tools (leaves and terrain), and an optimized multi-threaded runtime. In this update, support for 64-bit precision in world coordinates makes it possible to build even larger worlds. Together with camera relative rendering and physics scene origin switching, large worlds can be simulated and rendered efficiently to create large game scenes, such as entire solar systems, while maintaining quality and accuracy.
By default, the engine still uses 32-bit floating point precision, but can be extended to 64-bit with Custom Build. For more information, please see the documentation.
To implement real-time GI, a way to track the scene was needed to simulate diffuse reflections and specular light transport due to glare. Today, hardware ray tracing is the norm, limited to high-end GPUs. We decided to use a signed range field that could track rays efficiently. To achieve this, we rasterized the SDF model into an array of volume textures (called global SDF) and achieved an accuracy of up to 10 cm at distances greater than 200 m near the camera. This gives a rough approximation of the scene geometry and can be used for software ray tracing.
For more information, see the Global SDF documentation.
Global SDF content
An additional advantage of maintaining global SDF for the whole scene is that you can use it in materials, particles and shading. For materials and particles, new Sample Global SDF and Sample Global SDF Gradient nodes have been added, allowing you to sample the SDF at any location. The particle emitter also includes new modules for Global SDF collision and Global SDF forces to create realistic VFX simulations.
For game projects using AI for NavMesh-based navigation, a new NavCrowd system has been added that can effectively simulate pathfinding and evasion against swarms of agents. Above, two simple NavMesh agent swarms are shown colliding with each other; NavCrowd is a navigation maneuvering behavior system for agent swarms. It handles avoidance between agents using adaptive RVO sampling computations. Navmesh can be used to implement automatic avoidance and movement of a swarm of agents, and supports asynchronous computations that can be performed by our work system (shown in the documentation).
Rich text formatting
In this release we have enhanced the Rich Text Box GUI controls and added HTML tag formatting with style, layout and inline image support. This makes it easier to style text in the user interface and create more elegant content. Our simple HTML parser is very extensible and allows the use of custom tags (e.g. those defined by plugins). Follow the documentation to find out which tags are supported and how to use them in your projects.
Visual scripting enhancements
Each update brings new features and improvements for Visual Scripting users. Our goal is to make it a highly scalable and easy to use solution for creating gameplay scripts. This time we have added support for dictionaries, new editing features to make script editing easier, and a Finder tool. The new Finder tool allows you to quickly search for any script in a graph or project (Ctrl+F in any graph editor). It can also be used to search for something in all materials, particles and animation graphs of an entire project (for example, to search for the use of a specific texture or method).
Finally, the redirection node has been made more user-friendly and can be easily linked to other nodes with multiple inputs/outputs (depending on the type). This improves the reuse of graph parts and helps to organise visual scripts and material graphs.
Screen Space Reflections for transparency
Transparent materials have a new option that performs per-pixel depth-buffer ray tracing to render reflections to improve the realism of water surfaces such as puddles. Transparent materials can also try out a new global illumination and use an omnidirectional illumination mode, which is useful for creating smoke, fog and dust particles (see below).
Animations can be nested to create sub-clips or composites (also known as montages). This makes it easier to reuse existing animation assets (e.g., duplicate a single reload gun animation three times, one for each projectile).
Flax includes utilities for various noise features, such as Perlin, Simplex, Worley, Voronoi and Custom. These can be accessed through scripts in the FlaxEngine.Utilities.Noise static class and used to enrich procedurally generated worlds and content.
All visual graphs (materials, particles, animations) can take noise functions on both the CPU and GPU to enrich content. All noise functions return normalized results in the range 0-1; some return multiple noise components, such as Voronoi noise, with X=minDistToCell, Y=randomColour and Z=minEdgeDistance. Depending on the context, only one or all components can be used. For a description of each node, see the tooltip.
We have opened a thread on our newly created forums, why don´t you share your opinions about the engine.
Check also our tutorials on the Flax Engine.