Skip to content

Commit

Permalink
1.59 release
Browse files Browse the repository at this point in the history
  • Loading branch information
wolfgangfengel committed Sep 6, 2024
1 parent c461b0d commit 06c0073
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 20 deletions.
89 changes: 69 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
<img src="Screenshots/The Forge - Colour Black Landscape.png" width="108" height="46" />

The Forge is a cross-platform rendering framework supporting
The Forge framework is a cross-platform programming framework supporting the following platforms:
- Windows 10/11
* with DirectX 12 / Vulkan 1.1
* with DXR / RTX Ray Tracing API
* with DirectX 12
* with DXR
* DirectX 11 fallback for older Windows platforms
* Steam Deck
* with Vulkan 1.1
* with VK_KHR_ray_query Ray Tracing API
- Android Pie or higher
* with Vulkan 1.1
* OpenGL ES 2.0 fallback for large scale business application frameworks
* Apple
* iOS 14.1 / 17.0
* iPad OS 14.1 / 17.0
Expand All @@ -21,29 +20,44 @@ The Forge is a cross-platform rendering framework supporting
- PS5 *
- Switch using Vulkan 1.1 *

*(only available for accredited developers on request)
*(the console platforms are only available for accredited developers on request. Please note that you need a license from us to use the console platforms.)

The Forge framework (TF) provides building blocks to
- extend
* Existing game engines so that they support more platforms (Starfield ...)
* Old games (e.g. 20+ years) can be brought back to modern gaming platforms
* … and/or write custom game engines from scratch (most notable Supergiant Hades, Hypixel Game Engine)
- write SDKs (Adreno SDK, Oculus / Qualcomm VR SDKs, Dolby AR SDK, Dolby Vision etc.), enable new technology (Google Stadia, Dolby Vision, Meta App framework etc.)
- Supports most of the gaming platforms
As such it is a core part of our service business.

Particularly, the graphics layer of The Forge supports cross-platform
- Descriptor management. A description is on this [Wikipage](https://github.com/ConfettiFX/The-Forge/wiki/Descriptor-Management)
- Multi-threaded and asynchronous resource loading
- Shader reflection
- Multi-threaded command buffer generation
We offer many platforms (PC, macOS / iOS, Android, Steamdeck, Quest) under the Apacke License Version 2.0 here on Github.
We offer a commercial license for game consoles (Playstation, XBOX, and Switch).

The Forge is used to provide the rendering layer for custom next-gen game engines. It is also used to provide building blocks to write your own game engine. It is like a "lego" set that allows you to use pieces to build a game engine quickly. The "lego" High-Level Features supported on all platforms are at the moment:

Here is an overview:
![The Forge Overview](Screenshots/TheForgeOverview.png)

- Game Layer (partially provided)
- App
- Renderer / Scene (not provided) / Resource Streaming (not provided) / Resource Loading / Animation
- Graphics / OS / Utilities
What is not there: Physics / Networking / Sound

The "lego" High-Level Features supported on all platforms are at the moment:
- Resource Loader capable to load textures, buffers and geometry data asynchronously
- [Lua Scripting System](https://www.lua.org/) - currently used for automatic testing and in 06_Playground to load models and textures and animate the camera and in several other unit tests to cycle through the options they offer during automatic testing.
- Animation System based on [Ozz Animation System](https://github.com/guillaumeblanc/ozz-animation)
- Consistent Math Library based on an extended version of [Vectormath](https://github.com/glampert/vectormath) with NEON intrinsics for mobile platforms. It also supports now Double precision.
- Consistent Memory Managament:
* on GPU following [Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) and the [D3D12 Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/D3D12MemoryAllocator)
* on CPU [Fluid Studios Memory Manager](http://www.paulnettle.com/)
- Input system with Gestures for Touch devices based on an extended version of [gainput](https://github.com/jkuhlmann/gainput)
- Custom Input system library with Gestures for Touch devices written in C
- Fast Entity Component System based on [flecs](https://github.com/SanderMertens/flecs)
- Cross-platform FileSystem C API, supporting disk-based files, memory streams, and files in zip archives
- UI system based on [Dear imGui](https://github.com/ocornut/imgui) extended for touch input devices
- Shader Translator using a superset of HLSL as the shader language, called The Forge Shading Language. There is a Wiki page on [The Forge Shading Language](https://github.com/ConfettiFX/The-Forge/wiki/The-Forge-Shading-Language-(FSL))
- Various implementations of high-end Graphics Effects as shown in the unit tests below
- Various implementations of high-end Graphics Effects and game engine sub-systems as shown in the unit tests below

Please find a link and credits for all open-source packages used at the end of this readme.

Expand All @@ -68,12 +82,45 @@ The Forge Interactive Inc. is a [Khronos member](https://www.khronos.org/members

# News

## Release 1.58 - June 17th, 2024 Behemoth | Compute-Driven Mega Particle System | Triangle Visibility Buffer 2.0 |
## Release 1.59 - September 6th, 2024 - STAR WARS™: Bounty Hunter™ | Replaced Gainput with our own Input library | Removed Vulkan from Windows Run-Time | Removed API Switch | Third-Party Integration

STAR WARS™: Bounty Hunter™
Bounty Hunter was ported with the help of The Forge framework to all the platforms mentioned in the screenshot:
[![STAR WARS™: Bounty Hunter™](Screenshots/StarWars.png)](https://www.youtube.com/watch?v=jiBmgse9GTc)

### Replaced Gainput with our own Input library
We wrote a new input library from scratch in C. Its design follows the architecture of the rendering API. So one high-level interface file IInput.h and then platform specific files for each of the target devices. It has less lines of code compared to gainput and is easier to maintain for a small team. We are still testing it as we speak. Let us know if you see any bugs.

### Removed Vulkan from Windows Run-time
Over the last couple of years in many of our projects, it became apparent that the best option to ship a PC / Windows game is DirectX 12. The main reason is the reduced QA effort and reliability. The other reason is that we constantly get forced to upgrade on PC to a newer version, while mobile -which is the more important platform- stays far behind. So we are not officially supporting the Vulkan run-time on Windows anymore. We have an internal version that we test and obviously we support Vulkan on Android, Switch and Steamdeck (native support).

### Removed API Switch from the Run-time
Concluding that Vulkan is not a good API for PC anymore, we removed the switching functionality we had in there before to switch between DirectX 12 and Vulkan on PC and OpenGL ES 2.0 and Vulkan on Android.
For Android we utilized the switching functionality to switch between OpenGL ES 2.0 and Vulkan for a business class application that we helped to build (Facebook Application framework). This was necessary to run on billions of mobile devices. Looking at the latest numbers it doesn't make sense for us to support OpenGL ES 2.0 and therefore we dropped support and also don't need switching anymore.

### Removed Commercial Middleware from GitHub
We decided to remove our commercial middleware from GitHub. Development will now happen in our internal repositories only.

### Commercial Console licenses
For the last seven years we offered TF for free to anyone asking. We are going to change this now for the console platforms Steamdeck, XBOX, Playstation and Switch. You will require a commercial license to use those from here on.

### Removed unit tests
- 09a_HybridRaytracing

### Third-Party Libraries
We are improving our Third-Party Library integration substantially by making the ones we use more integrated into The Forge Eco System. While doing so we removed the ones we do not use anymore. Here is a list:
- soloud
- rmem
- cjson
- MTuner
- TinyXML


## Release 1.58 - June 17th, 2024 Behemoth | Compute-Driven Mega Particle System | Triangle Visibility Buffer 2.0 Update

### Announce trailer for Behemoth
We helped Skydance Interactive to optimize Behemoth last year. Click on the image below to see the announce trailer:


[![Behemoth Trailer from June 2024](Screenshots/Behemoth/Behemoth.png)](https://youtu.be/hTmjjzwSp-E?si=rj0G6yrqv5Cr6Gn9)


Expand All @@ -87,15 +134,15 @@ http://www.conffx.com/WolfgangEngelParticleSystem.pptx
It is meant to be used to implement next-gen Mega Particle systems in which we simulate always 100000th or millions of particles at once instead of the few dozen ones contemporary systems simulate.

#### Android Samsung S22 1170x540 resolution
This screenshot shows 4 million firefly-like particles, with 10000 lights attached to them and a shadow for the directional light. Those numbers were thought to be not possible on mobile phones before.
This screenshot shows 4 million firefly-like particles, with 10000 lights attached to them and 8 shadows. Those numbers were thought to be not possible on mobile phones before.
![Mega Particle System Android Samsung S22](Screenshots/Particle%20System/AndroidS22_1170x540.png)

#### Android Samsung S23 1170x540 resolution
Same setting as above but this time also with 8 Shadows from Point Lights additionally.
Same setting as above.
![Mega Particle System Android Samsung S23](Screenshots/Particle%20System/Android_S23_1170x540.png)

#### Android Samsung S24 1170x540 resolution
Same setting as above but this time also with 8 Shadows from Point Lights additionally.
Same setting as above.
![Mega Particle System Android Samsung S24](Screenshots/Particle%20System/Android_S24_1170x540.png)

#### PS5 running at 4K
Expand Down Expand Up @@ -1520,17 +1567,19 @@ The Forge utilizes the following Open-Source libraries:
* [WinPixEventRuntime](https://blogs.msdn.microsoft.com/pix/winpixeventruntime/)
* [Fluid Studios Memory Manager](http://www.paulnettle.com/)
* [volk Metaloader for Vulkan](https://github.com/zeux/volk)
* [gainput](https://github.com/jkuhlmann/gainput)
* [Dear ImGui](https://github.com/ocornut/imgui)
* [DirectX Shader Compiler](https://github.com/Microsoft/DirectXShaderCompiler)
* [Ozz Animation System](https://github.com/guillaumeblanc/ozz-animation)
* [Lua Scripting System](https://www.lua.org/)
* [TressFX](https://github.com/GPUOpen-Effects/TressFX)
* [MTuner](https://github.com/milostosic/MTuner)
* [meshoptimizer](https://github.com/zeux/meshoptimizer)
* [TinyImageFormat](https://github.com/DeanoC/tiny_imageformat)
* [flecs](https://github.com/SanderMertens/flecs)
* [CPU Features](https://github.com/google/cpu_features)
* [HIDAPI](https://github.com/libusb/hidapi)
* [bstrlib](https://github.com/websnarf/bstrlib)
* [cr](https://github.com/fungos/cr)
Binary file added Screenshots/StarWars.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 06c0073

Please sign in to comment.