Release 1.51 - December 21st, 2021 - ECS uses flecs | Better Borderless Window | Descriptor Management improvements | sRGB | Android Game Development Extensions | FSL Improvements | Ray Tracing | Meshoptimizer | Buildbox | Lethis
Happy Holidays! ๐๐
๐ฅ๐๐งจ
We wish you and your loved ones all the best for the Holidays and a Happy New Year 2022!
This update is again a mixture of things we learned while integrating The Forge and feedback and contributions from our users. Thanks for all the support!
In one of the next updates we will remove EASTL and offer dedicated containers compatible with C99. Over time EASTL was a huge productivity burner. The inefficient memory access patterns hugged too much CPU time in games where we integrated TF and we always had to go back and fix those later manually.
We know this is a breaking change but considering that STL was a good idea on CPUs 20+ years ago, we would like to align more with what modern CPUs are expecting.
- We keep moving towards C99 usage. We replaced the old ECS code with Flecs:
Now our build times are much better and the overall system runs faster:
CPU: Intel i7-7700k
GPU: AMD Radeon RX570
Old ECS
Debug
Single Threaded: 90.0ms
Multi Threaded 29.0ms
Release:
Single Threaded: 5.7ms
Multi Threaded: 2.3ms
flecs
Debug
Single Threaded: 23.0ms
Multi Threaded 6.8ms
Release
Single Threaded 1.7ms
Multi Threaded 0.9ms
-
Descriptor Management improvements - we changed the rendering interface for all platforms - cmdBindPushConstants now takes an index instead of a name, we also allow partial updates of array descriptors
-
Borderless window - there are improvements to borderless windows support
- remove borderless window "top white bar" on Windows OS
- add "Win Key + arrow" behavior (for standard maximize/minimize/split of the borderless window using keyboard)
- top resize area necessarily overlaps rendering (this is how we can remove the top white bar)
-
FSL improvements
- incremental shader generation and build with header dependencies
- improved error reported by extending line directives, errors now show up at the correct line in source fsl file
- extended matrix column/row access functions for all targets
- vec type padding to match our math lib datatypes
-
sRGB - all examples should be now more correct when it comes to linear lighting and sRGB
-
Android Game Extension usage: in one of our AAA game engine projects, we are now using successfully for the first time Android Game Extensions. So we also brought it to The Forge.
We redid a lot of the Android development setup to streamline the experience a bit. We still use Visual Studio 2017 because it allows to be more productive compared to other IDEs. Two years ago we went back and forth between IDEs but concluded that the only IDE that we could efficiently integrate into our Jenkins testing setup was Visual Studio.
Please check out the new Readme below and let us know if we missed anything.
-
Vulkan: moved to KHR ray tracing extensions. Upgraded max spec to Vulkan SDK 1.2.162 and tested ray tracing support on an AMD RX 6700 XT GPU
-
meshoptimizer - somehow the integration of meshoptimizer "got lost" over time and we just re-integrated it into the resource loader. Here are some numbers that we got
meshoptimizer on various art assets
- Buildbox
The game engine BuildBox is now using The Forge (click on Image to go to Buildbox website):
- Lethis
The game Lethis Path of Progress uses The Forge now (click on image to go to the Steam Store)