Trying to replicate Forza Tech Demo on PC for Reasons *spawn*

I guess before I begin, I agree with the sentiment about the personal attacks here; as people we should always attack the argument and not the person making the argument, it keeps things at a neutral level without animosity.

That being said, I don't think your argument is lost on the console folks here.
Most visual options affect both the CPU and GPU to variable degrees. Hanging your entire argument on the premise that reflections affect both the CPU and GPU and thus are not excluded is senseless, and naive. In this case, Reflections affect the CPU because it needs to render multiple different viewpoints of the world at a specific frame rate and accuracy, it affects the GPU because it has to have a decent resolution/shading for the reflection, both elements are dependent on each other. You can't max out reflections on Scorpio because it has a massive CPU hog element, and that is irrelevant to whether Scorpio can handle the GPU element of that process or not.

I think you've actually made this argument more clear for me, is that PCs in general suffer greatly more during the render block of code than consoles do. In particular, previously with DX11 this becomes more and more apparent, CPU is overloaded due to death by draw calls/API overhead. So when we talk about doing reflections, where effectively we are re-drawing the screen multiple times at different angles and viewpoints, then, I can actually see this being a CPU killer; on PC.

But with Scorpio and its command processor customization (additional 50% reduction), the lower level DX12 API, and general baseline of technology (HUMA, executeIndirect, async compute etc), there are a variety of options available for Scorpio to reduce this CPU overhead during render() down significantly. Generally speaking, I'm pretty positive these options together are how this generation of consoles have been keeping up in the CPU scene despite it's anemic CPU capabilities, and I'm confident enough to feel that this applies across the board here with that statement (XBO + PS4). While it may be possible that PS4 may not have all the command processor changes XBO Family has, it's still got most of it.

It's difficult for me to prove anything here, but if we agree that render() makes up a majority of the CPU processing power, and reflections are just more render() call blocks, there's no reason to suggest that consoles would not be able to handle it (just because they're weaker); these consoles are designed to deal with draw calls. That's a big part of the difference between a dedicated gaming hardware versus high performance general hardware.

edit: some developer notes from a long time ago on PS4 and XBO
Oles Shishkovstov: Let's put it that way - we have seen scenarios where a single CPU core was fully loaded just by issuing draw-calls on Xbox One (and that's surely on the 'mono' driver with several fast-path calls utilised). Then, the same scenario on PS4, it was actually difficult to find those draw-calls in the profile graphs, because they are using almost no time and are barely visible as a result.

In general - I don't really get why they choose DX11 as a starting point for the console. It's a console! Why care about some legacy stuff at all? On PS4, most GPU commands are just a few DWORDs written into the command buffer, let's say just a few CPU clock cycles. On Xbox One it easily could be one million times slower because of all the bookkeeping the API does.
 
Last edited:
But with Scorpio and its command processor customization (additional 50% reduction), the lower level DX12 API, and general baseline of technology (HUMA, executeIndirect, async compute etc), there are a variety of options available for Scorpio to reduce this CPU overhead during render() down significantly
True, despite that however, Reflections have never been a strong point for consoles, they usually have them on low/medium compared to the PC version of multi-platform games. Forza 6 also utilizes DX12 (as the only API) on PC so it is able to relieve the CPU hit as well. This helps the PC version achieve an even higher quality of reflection than previously possible.

And there other factors to reflections other than draw calls that makes them such a huge CPU hog. These factors depend on the methodology used for rendering the reflections (Planar/Cubemaps/SSR/Voxel Cone Tracing), each method has it's own relative CPU/GPU limitation.
 
True, despite that however, Reflections have never been a strong point for consoles, they usually have them on low/medium compared to the PC version of multi-platform games. Forza 6 also utilizes DX12 (as the only API) on PC so it is able to relieve the CPU hit as well. This helps the PC version achieve an even higher quality of reflection than previously possible.

And there other factors to reflections other than draw calls that makes them such a huge CPU hog. These factors depend on the methodology used for rendering the reflections (Planar/Cubemaps/SSR/Voxel Cone Tracing), each method has it's own relative CPU/GPU limitation.
agreed, there are limitations to where I was going with my argument lol. It's clear they need more CPU, otherwise they would never had bothered to continue to beef up the CPU for Scorpio if the consoles were never close to reaching a bottleneck on the CPU side of things.

I do agree its all going to be about how it's implemented. On a side note, this discussion point may be resolved by asking the developers directly (via twitter etc). It doesn't seem like sensitive information.
 
Is anyone claiming that the Scorpio demo definitely maxed out all PC settings including those that impact CPU performance either independently of or in conjunction with GPU impact? And that as a result of that, the CPU performance seen in the PC version with everything maxed out is exactly comparable to the CPU performance in the Scorpio demo.

Well, Richard Leadbetter said this:

Richard Leadbetter said:
Turn 10 is still working on this, but the quality settings from Forza Motorsport 6 Apex on PC can be fully invoked on Scorpio. Turn 10 literally ramped up everything to ultra and it just worked, with the game retaining a 4K60 performance level.

However this is ForzTech not APEX. It has more features (like dynamic weather) and further optimizations.

Hanging your entire argument on the premise that reflections affect both the CPU and GPU and thus are not excluded is senseless, and naive.

My entire argument is what I read in this article. If you think believing in what Leadbetter reported means being naive or senseless, then that's okay.
 
But with Scorpio and its command processor customization (additional 50% reduction), the lower level DX12 API, and general baseline of technology (HUMA, executeIndirect, async compute etc), there are a variety of options available for Scorpio to reduce this CPU overhead during render() down significantly. Generally speaking, I'm pretty positive these options together are how this generation of consoles have been keeping up in the CPU scene despite it's anemic CPU capabilities, and I'm confident enough to feel that this applies across the board here with that statement (XBO + PS4). While it may be possible that PS4 may not have all the command processor changes XBO Family has, it's still got most of it.
Yes, consoles still have significantly cheaper draw calls than PC, and more direct GPU hardware access. DirectX 12 (PC version) and Vulkan need to support multiple different GPU vendors. Commands still need to be translated and API can't be perfect fit for any IHV, as it must suit them all. All commands and data (constant buffers, dynamic resources) need to be transferred from CPU memory over PCI-express to GPU memory every frame. On a console, a resource binding is basically just a raw memory pointer.

But the biggest difference is simply the fact that games are specially tailored for the console hardware. If reflections have a CPU bottleneck, then you optimize that bottleneck in one way or another. If something else has a GPU bottleneck, then you optimize that bottleneck. No game is perfectly optimized for any PC configuration, since there's so many of them and all have different bottlenecks. On consoles you will analyze the bottlenecks and analyze what resources aren't perfectly utilized. Often you find ways to shift the bottlenecks and utilize the underutilized resources better. If you don't find a way to fit some technique to your performance budget, you redesign the technique until it fits. This targeted developer effort is the biggest advantage that consoles have. And it is bigger than any advantages you get from cheaper draw calls and more direct GPU access.
 
But the biggest difference is simply the fact that games are specially tailored for the console hardware. If reflections have a CPU bottleneck, then you optimize that bottleneck in one way or another. If something else has a GPU bottleneck, then you optimize that bottleneck. No game is perfectly optimized for any PC configuration, since there's so many of them and all have different bottlenecks. On consoles you will analyze the bottlenecks and analyze what resources aren't perfectly utilized. Often you find ways to shift the bottlenecks and utilize the underutilized resources better. If you don't find a way to fit some technique to your performance budget, you redesign the technique until it fits. This targeted developer effort is the biggest advantage that consoles have. And it is bigger than any advantages you get from cheaper draw calls and more direct GPU access.

Okay, so PC's have too much variation to target specific bottlenecks because they are unknown, so developers simply count on the "brute force" of the CPU and GPU in order to get the job done. Right? On the consoles, the bottlenecks are specific and known so they can be targeted by the developer and avoided. If the games are being designed on PC's, isn't it a great deal of work for the developers to then "redesign their techniques until they fit" for consoles? Especially if by virtue of both systems being W10 and DX, the games would already run on the XB but not as well as on the PC because of the XB bottlenecks and lack of "brute force"?
 
Okay, so PC's have too much variation to target specific bottlenecks because they are unknown, so developers simply count on the "brute force" of the CPU and GPU in order to get the job done. Right? On the consoles, the bottlenecks are specific and known so they can be targeted by the developer and avoided. If the games are being designed on PC's, isn't it a great deal of work for the developers to then "redesign their techniques until they fit" for consoles? Especially if by virtue of both systems being W10 and DX, the games would already run on the XB but not as well as on the PC because of the XB bottlenecks and lack of "brute force"?

Most if not all AAA titles are designed with consoles in mind first and foremost. PC is secondary.

Functionally this means that for most AAA games, the console versions will get extensive optimizations while the PC version just has to run. Sometimes some of those console optimizations will also benefit the PC version (Doom for example).

Gears of War 4 is an interesting side note in this. Since Microsoft were in the process of developing Project Scorpio they took the opportunity to develop it slightly differently than the norm. Instead of a bottom up approach (develop to console and scale up for PC), they took a top down approach. IE - Develop with high end PCs in mind and then scale down and optimize for console (XBO). It sounds like they may have taken a similar approach with Forza Horizons 3. In both cases however, this was more WRT to asset creation than the base engines (which started development before Project Scorpio was a thing).

Forza Apex is part of that as well, but obviously has no console counterpart (at least publicly). It's just an engine test for PC and high end development.

What's interesting is that instead of using Forza Horizon 3 for their Project Scorpio test, they instead used Forza 6. Which makes sense as Forza Horizon 3 wasn't done by Turn 10. It was also important as it represented how easy or difficult it would be for a developer to take a title with an XBO codebase and make it work on Project Scorpio. And not just make it work, but make it work at higher resolutions and with increased graphics IQ.

Regards,
SB
 
Last edited:
FH3 may have been too optimized for console I feel. the game seems to have issues operating outside of 30fps, but locked at 30fps on PC, the game can run without hiccups, 4K/Ultra on my 1070 setup. Though its tight ;)
 
I feel this is a bit late, but it is interesting never the less.

So I tried Forza 6 on PC on my non OC'ed 1070, @4K and 4X MSAA, rainy tracks, 16 cars, Max settings. The game can't achieve locked 60fps indeed, it often drops to 50fps. But then I noticed these drops occur in the same spots, even if only my car is on the screen, and only in the third person camera (behind the car). if I switch to the cockpit camera, the game will lock to 100fps no matter what! If I switch to the "look back" camera (front of the car), it locks to 80~90fps. Which is a huge difference simply by switching cameras.

So I load these tracks again, this time with only one opponent, and to my surprise, the same drops in fps happen again, even with only my car on the track. This leads to the conclusion that the game suffers an optimization issue in these tracks. I confirmed this once and for all by arriving through the spots where the drops to 50 happen, then switching to the look back and cockpit camera, and watching my fps skyrocket to ~90 and 100fps respectively.

It's quite obvious the DF's experiment was a quick one just to get a glimpse of the situation, they didn't investigate the issue further, they should have though, considering the game runs amazingly well @4K (90+ fps) in any daylight crowded track with 16 cars on screen, doesn't make sense for it to drop below 60 in rainy tracks. The issue is an optimization problem limited to the third person camera, and only the one behind the car.
 
Last edited:
Back
Top