We got it!

We’d like to present you with a brand 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!

DOWNLOAD

As always, we will do a short check around new features and highlights. To see detailed information visit the official release notes.


Highlights

Realtime Global Illumination

Realtime Global Illumination comes to Flax! This was one of the most requested features and now it’s available to use in games and architectural visualization projects. You can see it in action in the video above. We implemented it using DDGI algorithm with scrolled-probes volumes around the camera which utilizes our custom Software Ray Tracing solution that runs on all modern GPUs – no need to have RTX-ready GPU. Instead, we added support for Signed Distant Fields for models to rasterize them into a global volume which can be ray traced in shaders on a GPU. Together with Global Surface Cache, we can simulate the GI effect in a dynamic environment where lighting conditions are constantly changing (eg. via time of the day).

To learn more see the Realtime GI docs.

Download Tech Demo

Flax Engine Tech Demo 2022 with Realtime GI

To showcase the capabilities of the new Global Illumination rendering we made a small demo presenting the ArchVis scene with dynamic lighting, dynamic objects, and adjustable time of the day. It’s a small sandbox where you can playtest how the GI looks in an actual production project and how it performs. You can download it now from our server or wait for the official release on Steam.

In the demo, you can control the camera with a mouse and keyboard or play with a gamepad. Use D-pad or UHJK keys to rotate the sun and play with the time of the day in the scene to see how it affects the dynamic lighting.

Licensing Changes

Together with a massive amount of new features coming to Flax in this update we wanted to do even more. Thus we updated our licensing terms by increasing the minimum revenue threshold to $250k from $25k. Now, it’s free to use Flax if your game or product earns less than $250k in a calendar quarter. Any revenue above this value is using a 4% revenue share, as it was before. For example, if your game earns $300k you pay $2k, which is 4% out of $50k above that new threshold.

We believe this change will make the engine more affordable for small developers. It begins to be effective including with this calendar quarter (Q3 2022).

64-bit World Coordinates

Large Worlds Support 64-bit

Flax Engine contains various features to create large and rich worlds such as async data streaming, different content tools (for foliage and terrain), and optimized multi-threading. In this update, we’re bringing 64-bit precision support for World Coordinates to enable building even larger worlds. Together with relative-to-camera rendering and physics scene origin shifting large worlds can be efficiently simulated and rendered which makes it possible for the game scenes to be as large as the whole Solar System while still maintaining good quality and precision.

By default, the engine still uses 32-bit floats precision which can be upgraded to 64-bits in Custom Build. To learn more see the docs.

Global SDF

Global Sign Distant Field
Global SDF debug view

In order to implement real-time GI, we needed a way of tracing through the scene to simulate light transport for diffuse light bounces and specular light with reflections. Nowadays, the most common way to do it is through hardware raytracing which is limited to high-end GPUs only. We decided to use Signed Distance Fields which provide an efficient way for ray tracing. To do it, we rasterize model SDFs into an array of volume textures (called Global SDF) to provide up to 10cm precision nearby the camera at a distance of 200m or more. This gives a rough approximation of the scene geometry and can be used for software raytracing.

To learn more see the Global SDF docs.

Global SDF in Content

Particles Global SDF Collisions
Full scene particle collisions with Global SDF

Additionally, the benefit of maintaining Global SDF for a whole scene is the ability to use it in materials, particles, and shaders. We added new Sample Global SDF and Sample Global SDF Gradient nodes to materials and particles for sampling SDF at any position. Also, particle emitters have new modules for Global SDF collisions and Global SDF forces to drive the realistic VFX simulation.

Particles Sampling Global SDF
GPU VFX can interact with nearby objects

Crowd Navigation

BeforeAfter
Nav Crowd BeforeNav Crowd After

For game projects that use AI with NavMesh-based navigation, we’ve added a new NavCrowd system which allows to efficiently simulate pathfinding with avoidance for crowd of agents. Above you can see 2 groups of simple navmesh agents that are colliding with each other. NavCrowd is a navigation steering behaviors system for a group of agents. It handles avoidance between agents by using an adaptive RVO sampling calculation. It can be used to implement automatic avoidance and movement for a crowd of agents using navmesh and supports asynchronous calculations which can run on our Job System (as shown in docs).

Rich Text Formatting

Rich Text Box Styling

For this release, we improved Rich Text Box GUI control by adding HTML tag formatting with styling, layout, and inlined image support. This notably makes it easier to style text in UI and create more elegant content. Our simple HTML parser is very extensible and can use custom tags (eg. defined by plugins). Follow the documentation to learn which tags are supported and how to use them in your projects.

Visual Scripting improvements

Visual Script Dictionaries

Every update, we bring many features and improvements for Visual Scripting users. Our goal is to make it a very extensible and usable solution for gameplay scripting. This time we added Dictionaries support, new editor features for easier script editing, as well as, Finder tool. New Finder tool allows you to quickly search anything in the graph or even in all scripts in projects (bring it via Ctrl+F in all graph editors). This can be also used to search for something in all materials, particles, and animation graphs in a whole project (eg. to search usages of a certain texture or method).

Finally, Reroute node got more usability and now can be easily connected to other nodes including multiple inputs/outputs (depending on the type). This will improve reusing graph parts and help organize visual scripts or material graphs.

Screen Space Reflections for transparency

SSR Transparency

Transparent materials have new options for performing per-pixel depth-buffer raytracing to render reflections which improve the realism of water surfaces like puddles. Also, transparency can sample new Global Illumination and/or use Non-Directional Lighting mode which is useful when creating smoke, fog, or dust particle materials (shown below).

Volumetric Particles Lighting

Nested Animations

Nested Animations

Animations can have nested animations inside to create sub-clips or composites (aka montages). This allows to easily reuse existing animation assets (eg. single reload gun animation duplicate 3 times for each gun shell).

Noise utilities

Noise Nodes in Material

Now, Flax contains various utilities for different noise functions such as: Perlin, Simplex, Worley, Voronoi, Custom. Those can be accessed via scripting FlaxEngine.Utilities.Noise static class and used to enrich procedurally generated worlds and content.

Noise Utilities

All visual graphs (materials, particles, animations) can sample noise functions both on CPU and GPU to enrich the content. All noise functions return normalized results in the range 0-1. Some of them return more noise components, such as Voronoi Noise where X=minDistToCellY=randomColorZ=minEdgeDistance. Depending on the context only one or even all components can be used. Follow the tooltip with documentation for every node.



Wojciech Figat

Lead Developer

1 Comment

Bruno Massa · September 23, 2022 at 6:47 PM

Congrats Wojciech. Great work! I would like to hear from you the plans for the future, I follow the Trello board but would be nice to hear from you the what, how and whys

again super contratulations

Leave a Reply

Avatar placeholder

Your email address will not be published.