github ConfettiFX/The-Forge v1.28
Release 1.28 - May 24th, 2019 - SWB Level Editor | Micro Profiler Re-Write | Log and File System improvements | better macOS/iOS support

latest releases: v1.57, v1.56, v1.55...
5 years ago

We added a new section below the Examples to show screenshots and an explanation of some of the Tools that we integrated. We will fill this up over the next few releases.

  • We were helping James Webb with his level editor for 'Star Wars Galaxies' called SWB that now uses The Forge

Here is a screenshot

SWB Level Editor

SWB is an editor for the 2003 game 'Star Wars Galaxies' that can edit terrains, scenes, particles and import/export models via FBX. The editor uses an engine called 'atlas' that will be made open source in the future. It focuses on making efficient use of the new graphics APIs (with help from The-Forge!), ease-of-use and terrain rendering.

  • Memory tracking:
    • Fluid memory tracker cross-platform for Windows, macOS and Linux
    • We used MTuner to remove many memory leaks and improve memory usage. MTuner might be integrated in the future.
  • Micro Profiler: our initial implementation of Microprofiler needed to be re-done from scratch. This time we wanted to do the integration right and also implemented the dedicated UI.

Microprofiler in Visibility Buffer

Microprofiler in Visibility Buffer

To enable/disable profiling, go to file ProfileEnableMacro.h line 9 and set it
to 0(disabled) or 1(enabled).
It's supported on the following platforms:

  • Windows
  • Linux
  • macOS (GPU profiling is disabled)
  • iOS (GPU profiling is disabled)
  • Android(WIP will be enabled later on)

We can find MicroProfile integrated in the follwing examples (more will follow):

  • Unit Test 02_Compute
  • VisibilityBuffer

How to use it:
MicroProfile has different display modes. The most useful one when running inside
the application is Timers. We can change the display mode going to Mode and right
clicking the one we want.

If we are on Timer, we will be able to right click on the labels. This will enable
a graph at the bottom left.

If we wanted to just see some of the groups inside the profile display, go to Groups
and select the ones you want.

The other options are self explanatory.

If the user wants to dump the profile to a file, we just need to go to dump,
and right click on the amount of frames we want. This generates a html file in the
executable folder. Open it with your prefered web browser to have a look.

Dumping is useful, because we will be able to see the profile frame by frame,
without it being updated every frame. This will be useful when displaying in Detailed
mode.

There is also a Help menu item.

  • Log system improvements:
    • Support for multiple log files
    • Easy to use log macros
    • Scoped logging
    • Multithreaded support
    • New log format: date, time, thread, file, line, log level and message
    • No need to declare global LogManager, it will be created on demand
  • Filesystem improvements: this is fed back from one of our game engine integrations of The Forge
    • file time functions now use time_t
    • added FileWatcher class for Windows/Linux/macOS
    • added CombinePaths function
  • macOS / iOS Metal:
    • added Barriers with memoryBarrierWithScope for Buffers,Textures and Render targets
    • added GPU sync with MTLFence as fallback (for cross encoder synchranization and BlitEncoder where memoryBarrier isn't available). Removed force fence on render targets change because it is no longer necessary. There might be a small performance improvements coming from this
    • support of Microprofiler see above
    • refactor of windows support code: replaced MTKView for iOS and macOS with a custom NSview and NSWindow implementation. We have more explicit control now over the window.
  • Issues fixed:
    • #112 - cmdBindDescriptors performance issue (DX12)
    • #110 - RenderDoc compatibility with SM6+

Don't miss a new The-Forge release

NewReleases is sending notifications on new releases.