The Forge Cross-Platform Rendering Framework PC Windows, Steamdeck (native), Ray Tracing, macOS / iOS, Android, XBOX, PS4, PS5, Switch, Quest 2
APACHE-2.0 License
Bot releases are hidden (Show)
Published by AntoineConffx almost 5 years ago
macOS 1920x1080 AMD Pro Vega 64
iOS iPhone X 812x375
Windows 10 1080p NVIDIA RTX 2080 with DXR Driver version 441.12
Windows 10 1080p NVIDIA RTX 2080 with RTX Driver version 441.12
Linux 1080p NVIDIA RTX 2060 with RTX Driver version 435
Published by JenkinsConffx almost 5 years ago
The Forge Interactive Inc., the company behind The Forge became a Khronos Associate member.
Click on the following image to see a video:
Head over to Custom Middleware to check out the source code.
The Visibility Buffer example runs now faster on macOS
Published by JenkinsConffx almost 5 years ago
Path
s, where each Path
represents an absolute, canonical path string on a particular file system. You can query information about the files at Path
s, open files as FileStream
s, and copy files between different Path
s.FileSystemRoot
s has been replaced by ResourceDirectory
s. ResourceDirectory
s are predefined directories where resources are expected to exist, and there are convenience functions to open files in resource directories. If your resources don’t exist within the default directory for a particular resource type, you can call fsSetPathForResourceDirectory
to relocate the resource directory; see the unit tests for sample code on how to do this.Published by JenkinsConffx about 5 years ago
After only a bit more than one week we wanted to ship a quick update ...
Ozz Inverse Kinematic: This unit test shows how to use Aim and Two bone IK solvers
If you want to join us in sunny Encinitas, CA, USA as a graphics programmer, we would like to hear from you. If you are interested in working in our offices world-wide please let us know as well. We are in Spain, Netherlands, Ukraine, India, New Zealand and other places.
Published by JenkinsConffx about 5 years ago
Here are screenshots of the Microprofiler running a unit test on iOS:
Check out the Wikipage for an explanation on how to use it.
Descriptor System: @gavkar this is at least the fourth rewrite of the descriptor system now with support for the brand new argument buffers on macOS / iOS. It requires latest OS and XCode versions. This is a major update to the macOS / iOS runtime and it comes with many implementation changes:
improved Metal resource usage with useHeaps and useResorces
Metal shader reflection system was refactored
fixes and optimizations for some unit tests on MacOS and iOS platforms
initial support for paramIndex
more informative debug labels for Metal resources
This is probably the first engine integration of argument buffers, so there are issues with the following unit tests on iPadOS/iOS platforms:
04_ExecuteIndirect_iOS: GPU hangs due to argument buffers corruption in latest iOS 13.1. The bug doesn't occur if validation layer is enabled!
06_MaterialPlayground_iOS: Fails to compile shaders trying to write to Texture2DArray (iOS 13.1 beta 2 & 3)
10_PixelProjectedReflections on iOS: iOS Metal shader compiler crashes
Check out the Wikipage for a high-level view of the architecture.
Light & Shadow Playground: we cleaned up the code base of the Light & Shadow Playground and integrated missing pieces into The Forge Eco system.
Shader Translator: a lot of work went into the Shader Translator since the last release. Let us know how it works for you. There is a how-to on the Wiki page here:
Issues: fixed #129 "Metal backend buffer namespace collision"
Published by JenkinsConffx about 5 years ago
glTF model viewer running on iPad with 2048x1536 resolution
glTF model viewer running on Samsung Galaxy S10 with Vulkan with 1995x945 resolution
glTF model viewer running on Ubuntu AMD RX 480 with Vulkan with 1920x1080 resolution
Basis Universal Texture Support: TF now supports Binomials @richgel999 @google Basis Universal Texture Support as an option to load textures. Support was added to the Image class as a "new image format". So you can pick basis like you can pick DDS or KTX.
Shader Translator: since more than a year we are developing on and off a shader translator that allows us to define our own shader language. This shader language is an extension to HLSL and will in the future offer the opportunity to store more data for the various platforms. For example we will able to pre-compile pipelines with this setup. We are using it extensively to translate all the shaders you see in The Forge. You can find the source code in
Common_3/ThirdParty/OpenSource/hlslparser
The public version translates at the moment to HLSL, GLSL and Metal. Metal support is still work in progress. There is a test scenario where the shader translator translates most of the shaders of the unit tests and examples to HLSL and GLSL. It will be integrated into our Jenkins test system and it gets tested with every code change.
Input system: we re-architected the app level interface for our cross-platform input system based on gainput. Our previous interface somehow leaned toward PC input systems and we wanted to better focus on our main target platforms.
Ozz animation system: we cleaned up the code base. There was a lot of unused code because we wired up the system with all the "service providers" of The Forge. So Ozz like any other third party library is using the math, log, error, assert, file system, memory management and others sub-systems from The Forge. Previously, it had a lot of those implemented on its own.
Issues resolved:
Published by JenkinsConffx about 5 years ago
Click on the following screenshot to see a movie:
To achieve high-performance, the playground runs on our signature rendering architecture called Triangle Visibility Buffer. The step that generates the SDF data also uses this architecture.
Click on the following screenshot to see a movie:
The following PC screenshots are taken on Windows 10 with a AMD RX550 GPU (driver 19.7.1) with a resolution of 1920x1080.
Exponential Shadow Maps:
Adaptive Shadow Map with Parallax Correction Cache
Signed Distance Field Soft Shadow:
Signed Distance Field Soft Shadows - Debug Visualization
The following shots show Signed Distance Field Soft Shadows running on iMac with a AMD RADEON Pro 580
The following shots show Signed Distance Field Soft Shadows running on XBOX One:
Readme for Signed Distance Field Soft Shadow Maps:
To generate the SDF Mesh data you should select “Signed Distance Field” as the selected shadow type in the Light and Shadow Playground. There is a button called “Generate Missing SDF” and once its clicked, it shows a progress bar that represents the remaining SDF mesh objects utilized for SDF data generation. This process is multithreaded, so the user can still move around the scene while waiting for the SDF process to be finished. This is a long process and it could consume up to 8+ hours depending on your CPU specs. To check how many SDF objects there are presently in the scene, you can mark the checkbox "Visualize SDF Geometry On The Scene".
P.S: we have a new logo :-)
Published by JenkinsConffx about 5 years ago
Please note that we use the early beta system and XCode versions for development. So there might some instabilities.
Here is a screenshot: Macbook Pro 2017 with Radeon Pro 560 3360x2100 resolution
Android - we increased the number of unit tests support. With this release we additionally support on the devices mentioned below:
Vulkan:
Discord: we offer now also support through a discord channel. Sign up here:
Join the Discord channel at https://discord.gg/hJS54bz
User Group Meetings - there will be a user group meeting during GDC. In case you want to organize a user group meeting in your country / town at any other point in time, we would like to support this. We could send an engineer for a talk.
Support for Education - in case your School / College / University uses The Forge for education, we would like to support this as well. We could send an engineer or help create material. So far the following schools use The Forge for teaching:
Breda University of Applied Sciences
Contact:
Jeremiah van Oosten
Monseigneur Hopmansstraat 1
4817 JT Breda
Contact:
Andrew Hogue
Ontario Tech University
SIRC 4th floor
2000 Simcoe St N
Oshawa, ON, L1H 7K4
Published by JenkinsConffx over 5 years ago
For Ephemeris and the rest of our commercial custom middleware there is now a new GitHub repository here Custom-Middleware
We also have a skydome system for mobile hardware called Ephemeris 1, that will be released on GitHub later.
01_Transformations
02_Compute
05_FontRendering
09_LightAndShadow
13_imGUI
17_EntityComponentSystem
We added the Samsung S10 Galaxy phone (Qualcomm Adreno 640 Graphics Card (Vulkan 1.1.87)) to the test devices for Android.
ENTT: we decided to remove ENTT and replace it with our own ECS system that we use internally for tools. ENTT in debug is too slow for practical usage because it decreases execution speed and increases compile times substantially. It appears that "modern C++ 17" and probably also "modern C++ 14" is not ready for usage in a team environment because it decreases productivity too much. We tried to remove C++ 17 and 14 features to make it run faster but it ended up too much work. We went from more than 200 ms with ENTT to 60 ms with our own ECS running a Debug build on a Intel Core i7-6700T 2.8GHz. In release our own system is in the moment not as fast as ENTT but we will fix that.
Audio: we did a first pass on integrating SoLoud for all our platforms. There is a new unit test:
Linux: following STEAM, we are switching to the Mesa RADV driver in our test environment for AMD GPUs. For NVIDIA GPUs we are still using the NVIDIA driver.
Texture Asset pipeline: we did a first pass on a unified texture asset pipeline. On the app level only the name of the texture needs to be provided and then depending on the underlying platform it will attempt to load the "optimal compressed" texture, which in the moment is either KTX or dds. In the future there will be Google Basis support as well.
Please make sure you download the art asset zip file again with the help of the batch file.
Published by JenkinsConffx over 5 years ago
Published by JenkinsConffx over 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.
Here is a screenshot
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.
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:
We can find MicroProfile integrated in the follwing examples (more will follow):
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.
Published by JenkinsConffx over 5 years ago
Published by AntoineConffx over 5 years ago
PC Ubuntu Vulkan RTX, GeForce RTX 2070, Driver Version 418.56 1080p
PC Windows 10 RS5, DirectX12, GeForce RTX 2070, Driver version 418.81 1080p:
Mac Mini with Intel Core i5 3GHz cpu with integrated graphics Intel UHD Graphics 630 (Part No. MRTT2RU/A) with resolution 3440x1440:
iPad 6th Generation iOS 12.1.3 (16D39) with a resolution of 2048x1536
if mEnableVsync:
Try to find among available present modes, in this order: FIFO_RELAXED, FIFO
else:
Try to find among available present modes, in this order: IMMEDIATE, MAILBOX, FIFO (we prefer here FIFO_RELAXED instead)
if chosen mode == IMMEDIATE:
imageCount = (Fullscreen ? 2 : 3)
else if chosen mode == MAILBOX:
imageCount = 3
else if chosen mode == FIFO or FIFO_RELAXED:
imageCount = 2
imageCount = max(VkSurfaceCapabilitiesKHR::minImageCount, min(imageCount, VkSurfaceCapabilitiesKHR::maxImageCount))
Published by JenkinsConffx over 5 years ago
The purpose of the DescriptorBinder approach is to allocate all memory descriptor space at load time, instead of doing it on-demand at runtime, as it is commonly done. This is done in an effort to allow applications to have better control over memory footprint overhead, which is especially important on mobile targets, and to improve performance by avoiding runtime memory allocations.
The system will use shader reflection to determine the appropriate descriptor layouts in combination with descriptor update frequency knowledge. This knowledge will come from the client domain or from content editor tools.
With this information, we are able to allocate all necessary descriptor memory up-front, giving more control to the application about the memory footprint. This is one of the initiatives leading up to the new version of The Forge.
Read more Descriptor Management
The input system was refactored and streamlined. This is mostly a rewrite of the code layer above gainput.
Published by JenkinsConffx over 5 years ago
The Forge now allows to asynchronously load resources on all platforms. There are two ways to do this:
Chrome
Visibility Buffer on PC Windows 10
Linux Ubuntu
Published by JenkinsConffx over 5 years ago
Happy Valentines! Here is some love from The Forge team:
PC Windows 10 RS5, DirectX12, GeForce RTX 2070, Driver version 418.81 with resolution 3440x1440:
Mac Mini with Intel Core i5 3GHz cpu with integrated graphics Intel UHD Graphics 630 (Part No. MRTT2RU/A) with resolution 3440x1440:
iPad 6th Generation iOS 12.1.3 (16D39) with a resolution of 2048x1536
iMac with AMD RADEON 580 (Part No. MNED2xxA) with resolution of 5120x2880:
iPhone 7 iOS 12.1.4 (16D57) with a resolution of 1334x750:
Linux Ubuntu 18.04.1 LTS Vulkan 1.1.92 RADEON 480 Driver 18.30 with a resolution of 1920x1080:
macOS / iOS:
Improvements for all Platforms:
All the unit tests are now in one folder unit test and they are in one solution file
Published by JenkinsConffx over 5 years ago
This is the first release in 2019 and The Forge GitHub repository is today exactly one year old, with the first release on the same day last year :-) In 2018 we made 22 releases and we improved The Forge in many areas.
If you followed us so far ... why not just join us? We are looking for more graphics programmer joining our teams. We have offices in Encinitas, CA USA (Main) / Mumbai, India / Shanghai, China / Breda, Netherlands / St. Petersburg, Russia and in Lviv, Ukraine.
Now back to release notes: many years ago in 2012 / 2013, we helped AMD and Crystal Dynamics with the development of TressFX for Tomb Raider. We also wrote an article about the implementation in GPU Pro 5 and gave a few joint presentations on conferences like FMX. At the end of last year we revisited TressFX. We took the current code in the GitHub repository, changed it a bit and ported it to The Forge. It now runs on PC with DirectX 12 / Vulkan, macOS and iOS with Metal 2 and on the XBOX One. We also created a few new hair assets so that we can showcase it. Here are screenshots of our programmers art:
PC Windows DirectX 12 GTX 950 Driver 416.81:
iPad (Model A1803):
The current implementation is overall too slow to be used on some of our platforms but we are going to improve performance over time. We are also going to improve on the hair art assets.
Apart from Hair, the Material Playground now also has improved versions of Metal and a new material category Wood:
Metal:
Wood:
Published by JenkinsConffx over 5 years ago
The team will soon go into winter hybernation mode ... which means many Confetti people will fly home over the holiday season to spend time with their loved ones. We will be back with more releases next year, probably in February.
To send you season greetings, we extended our Ozz implementation by adding a new Skinning unit test:
PC Windows 10 DirectX 12 GeForce 950 Driver 411.63 with a resolution of 1080p
Linux Ubuntu 18.04.1 LTS Vulkan 1.1.92 RADEON 480 Driver 18.30 with a resolution of 1920x1080
iMac with AMD RADEON 580 (Part No. MNED2xx/A) with resolution of 1920x1080
iPhone 7 iOS 12.0.1 (16A404) with a resolution of 1334x750
XBOX One
Published by AntoineConffx almost 6 years ago
PC Windows 10 DirectX12 NVIDIA GeForce 1080 Driver 416.16 with a resolution of 3840x2160 in window mode (MSAA x2)
PC Windows 10 Vulkan 1.1.85 NVIDIA GeForce 1080 Driver 416.16 with a resolution of 3840x2160 in window mode (MSAA x2)
Linux Ubuntu 18.04.1 LTS Vulkan 1.1.85 AMD RX480 resolution of 1920x1080 in window mode (MSAA x2)
iMac with AMD RADEON 580 (Part No. MNED2xx/A) 2560x1440 in window mode (MSAA x1)
Xbox One resolution of 1920x1080
PC Windows 10 Vulkan 1.1.85 GeForce 950 Driver 416.81 with a resolution of 1920x1080 in window mode:
iMac with AMD RADEON 580 (Part No. MNED2xx/A) with resolution of 1920x1080 in window mode:
Linux Vulkan 1.1.85 RADEON 480 Driver 18.30 with a resolution of 1920x1080 in window mode:
Published by AntoineConffx almost 6 years ago
PC Windows 10 Vulkan 1.1.82.1 GeForce 1080 Driver 399.07 with a resolution of 1920x1080 in full-screen:
Linux Vulkan 1.1.82.1 RADEON 480 Driver 18.30 with a resolution of 1920x1080 in full-screen:
iMac with AMD RADEON 580 (Part No. MNED2xx/A) with resolution of 5120x2880 in full-screen:
iPad (Model A1803) with iOS 12.0 and a resolution of 2048x1536 in full-screen:
XBOX One: