DirectX 12

Asobo have said in an interview that the engine is based on ForzaTech (used in the Forza Motorsport series). It was modified with help from Turn 10 Studios to support rendering of the entire world, and lots of code was lifted from the Flight Simulator X engine for other functionality.

2 Likes

Dunia was the engine created for Far Cry 2.

The wiki says MS initially started working with Asobo 6 years before release on the Hololens stuff which would be 2014. Assuming development of MSFS started after that, it would be around the same time or after the releases of both Windows 10 and Dx12 (2015) at the earliest.

Jƶrg said in an interview that they showcased the Seattle tech demo sometime in 2017, and they were given the Flight Simulator X engine a short while after that.

We need this for more improvements performance.

1 Like

Of course I voted.
But how will DŠ„ 12 help ŠœSFS 2020?

I believe the main hope is that DX12 will take advantage of multi-core CPUā€™s rather than what we have now with one core being hammered by the main string.

Blockquote ā€œDX12ā€™s focus is on enabling a dramatic increase in visual richness through a significant decrease in API-related CPU overhead,ā€ said Nvidiaā€™s Henry Moreton last year.

For myself I have 4 cores sitting idle that I would like to see join in the workload.

Also other parts of the latest API that video card(s) can take advantage of.

If the folks at Asobo and Microsoft make all 16 cores of my i9-9900K work, Iā€™ll give them a beer and wash all their cars. Weā€™ll seeā€¦

Iā€™ll give them a beer but skip the car washing. For too long, weā€™ve been getting these new CPUs with all these cores and our sims donā€™t efficiently use them. It would be really nice if that could change.

Iā€™m getting FSX flashbacksā€¦ the horrorā€¦

2 Likes

Have a look in this thread, Post 15:

Good education.

DX12 can just as little look into the future as DX11 can but it can deal with the presence a little better.

CPU cores count in benchmarks and closed workload scenarios (CAD/3d-animation) but not in real time environments where the possible future changes every microsecond. @MSFSRonS brings that to the point.

I donā€™t agree with that. Yes, the simulation is linear and you canā€™t predict the future, but that doesnā€™t mean you cannot distribute workload over cores. For example, you could split up the flight model over several cores, with one thread computing a wing, another thread the other wing, some other thread the tail, etc. You can have a thread updating the weather. Another thread taking care of AI. Yet another thread taking care of scenery animation. And so on. There is no reason to cram all of these unrelated things into one single thread and then torture a single core with it. Split them up, distribute them over multiple cores, and then put all the data together at the end of each timestep.

How would you keep all these threads in sync? What master process ties all this together, and which core does this then run on?

Note that there is already a fair amount of work distributed across threads; if you watch your CPU graphs youā€™ll see low-level usage across every logical processor. This is most likely from parts of the code that are processing a lot of things in parallel because theyā€™re easy to parallelize, while other parts of the code are harder to parallelize, either inherently or because of the existing codebase which was created when most CPUs had only 1 or 2 cores.

Iā€™m also not at all convinced that the CPU usage of the graphics rendering thread is the blocking factor for most people; it seems to usually be the CPU usage of the main simulation thread which I donā€™t think will be affected by DX12 at all, or the GPU usage which wonā€™t go down either.

There are also already separate threads for ā€œmanipulatorsā€ (control of AI vehicles etc), drawing of the glass displays, etc.

3 Likes

Yes, i agree with that. Seems like if there is any improvement to be had from DX12, Asobo first needs to split up the simulation thread into multiple pieces. As you say, that is probably one monolith for legacy reasons. And even without DX12, splitting that thread up will have a positive performance impact. But i cannot imagine it to be a trivial endeavour.

2 Likes

Thats what I want to say with my words. DX12 brings us probably not so many more frames but I beg it will bring us the same fps with more detail, better PG, better LOD :pray: again, better lighting, smoother displays, better frame interpolation, less morphing mesh, improved foveated rendering (while in cockpit it is not necessasary to render the terrain below or behind in high quality, aircraft windows are usually small) and so on and so on.

And dont forget VR.

2 Likes

Even Intel stated that with its Multithreading:

Having 2 Threads, which is 2 Logical Cores, working on a Core will not double the processing power/speed. The 2 Logicals have to share their common Core.

Intel stated that at best there may be 30% increase. And I think this figure included ā€œTileā€ processing while FS2020 is not ā€œTileā€ but is ā€œLinearā€ like all games.

30% would be a massive improvement.

Are you thinking of Intelā€™s ā€œHyperthreadingā€?

Hyperthreading (which AMD calls SMT or Symmetric Multithreading) is not the same as what is in all other places called multithreading, itā€™s a very different thing.

Multithreading refers generally to the practice of running multiple threads of execution. They may run at the same time in different CPU logical cores, or they might run on the same core, time-shared.

Hyperthreading/SMT is a specific technique which pairs more than one separate execution context (ā€œlogical coreā€) together with one shared set of actual execution units used to implement instructions (ā€œphysical coreā€).

If there are multiple running threads on the two (or more) logical cores on the same physical core, they may get some modest improvement over running in sequence via time-sharing on the same logical core: this is the ā€œup to 30%ā€ figure, which is usually much much much much less than 30% in practice.

However this isnā€™t really relevant to anything being discussed here ā€“ the primary thing is making sure itā€™s possible to break up work over multiple threads that can run on multiple separate indepdenent physical cores for a roughly 100% speedup thread per thread.

There may then in some cases be additional much smaller benefit from using the additional logical cores of Hyperthreading/SMT, however this would only ever happen when there are more threads than physical cores in the system.

On an 8-core/16-thread processor, that means you need more than 8 simultaneously running active threads to get any benefit from Hyperthreading/SMT. This generally ends up happening only on the portions of the simulation that are heavily parallelized, which produces low-level usage on all logical cores which you can see in Task Manager.

1 Like

Yes, I was writing about Intel ā€œHypertheadingā€.

You can spread it across all the other threads ( independent physical cores) as you like but that is what is being done now by the ā€œmainthreadā€.

The only problem you have is it is a ā€œlinearā€ process. As another person said:
Do step A
When step A completes
Do step B

Linear. You have to accept the fact that all Games are Linear.

Otherwise, you will have all knobs, dials, buttons, scenery, clouds,
yoke, throttle, etc. all simultaneously demanding (fighting) to get their
data displayed on the cockpit and screen.
Mayhem. (Synonyms: chaos, disorder, confusion, havoc)