20 days ago - /u/RSPN_Thieamy - Direct link

Hey, Legends.

Below are some details from our dev team around our ongoing support for DirectX 12 (DX12)! Read on to learn more about us moving off of beta and what you can expect moving forward. Let us know your questions and feedback in the replies!

For future updates, follow Respawn on X/Twitter and/or check out the Apex Tracker Trello for bugs or concerns we’re continuing to investigate. 

--------

Let’s talk about DirectX 12 (DX12) and the foundation we’ve been laying out to modernize Apex’s rendering engine. As you may have seen in the patch notes: DX12 is no longer in beta as of From the Rift! 

Our data shows that DX12 offers a better experience overall. The stability of our DX12 build was better than DX11 with our last patch, and overall game performance is better for the majority of PC players in BR matches. While there are a couple of known issues, this season includes some significant fixes, especially to performance when you’d first join the lobby.

As DX12 continues to shine, we want to share some future plans: our intention is to make DX12 the default and eventually drop DX11 support. While there’s a small percentage of PC players still on GPUs that don’t support DX12, this is an important step for improving our rendering engine. Let's get into it.

WHY NOT SUPPORT BOTH DIRECTX 11 AND DIRECTX 12?

We estimate that 80-90% of players will have better performance in BR matches after switching to DX12, but we can’t ensure that number will get up to 100% before dropping DX11. However, committing to DirectX 12 allows us to improve the engine more quickly, which will benefit performance for all players in the long-term.

It should come as no surprise that our biggest rendering priority for Apex is making the game perform better. We also want to enable our artists and designers to build their vision without being held back by performance issues. We’ve learned a lot about the most restrictive performance constraints and what performance issues most commonly affect development and players after a new patch. When looking at the major improvements that can address these problems, a common theme keeps coming up: these changes could be better if we focused on DirectX 12.

For those unfamiliar, DX11 and DX12 are graphics interfaces (APIs) between our code and the graphics drivers, which allow us to communicate with the GPU. Console graphics APIs and DX12 have advanced features that can push significantly higher performance, but DX 11 is missing those features. This means the more that we want to improve the game’s performance, the more we end up having two versions of the engine: one for DX11 and one for every other platform. This isn’t impossible, but it does significantly slow down development as any time we spend on DirectX 11 could be spent modernizing the engine further.

PERFORMANCE ANALYSIS

With the basics out of the way, we can dive into the specifics of how we calculated that 80-90%.

There are two difficult problems when comparing Apex’s PC performance between DX11 and DX12. First is the very large number of PC configurations. Over two weeks, we see around 150 different CPUs and over 100 different GPUs, with over a thousand different combinations. Additionally players have different video settings, resolutions, and monitors. There are too many combinations to test, so we need to look at the data from real players.

The second difficult problem is opt-in bias. Players who chose to play on the DX12 beta aren’t the same as the players who have stuck with DX11. They tend to have newer machines, be more performance conscious with lower settings, etc. If we do a naïve comparison between DX12 and DX11 framerates, of course we see that DX12 has much higher average frame rates, but that doesn’t mean it will actually be faster for most players.

There are three ways we analyze the performance of DX12 to deal with these problems.

METHOD 1: INTERNAL TESTING

We do performance tests and collect data on a number of different PC configurations (CPU, GPU, and Video Settings). While we can’t come close to testing the full set of configurations in the game, we can choose popular configurations across multiple generations of hardware and at different price points. In these tests we find that most of the configurations, even with older and low-end hardware, get better performance in our DX12 game. It’s difficult to generalize these tests to the overall impact to the player base, but they help to validate the next two methods where we look at live player data.

METHOD 2: PLAYERS WHO HAVE USED BOTH DX11 AND DX12

Many players have used the DX12 Beta, so we can compare their framerates just before they used DX12 and just after (and vice versa, for those who switched back). This still has some bias because the analysis is weighted towards players who are likely to at least try out DX12, but it’s not as biased as simply taking average performance across the game. Focusing on the few days around the introduction of the DX12 Steam option, we have data from over 10,000 players who played both versions of the game. These players averaged 13 matches each in both DX11 and DX12, and 80% had better performance in DX12; with an additional 10% having performance that was within 5% of DX11.

METHOD 3: PERFORMANCE ESTIMATION

Our goal is to estimate what every player’s performance would be in DX11 and DX12. The main factors that affect a player’s performance are their CPU, GPU, video settings, and what game mode and map they are playing. With these in mind, we can form groups of performance metrics where we look at the frame rates for players in a particular game mode, with a specific CPU, GPU, and video settings. Within each group, we know the typical performance for that group.

This lets us guess what the performance would be for players with similar setups when they switch to DX12, even if they have never played it. From Shockwave data, we estimate that 80-90% of players would have better performance in DX12, depending on the exact performance metric chosen. The graph below shows the overall distribution of performance changes that we expect for players.

Estimated Dx12 Performance Change Chart

None of these three analyses are perfect in isolation. Each has drawbacks in terms of its biases and how well it generalizes to the player base as a whole, but taken altogether they clearly tell us that DX12 is now a better experience overall.

DETAILS ON MEASURING PERFORMANCE

While average frame rates matter for the experience of playing the game, unexpected frame drops make the game feel much worse even when average frame rates are high. For that reason, we generally focus on lower 10th and 1st percentile frame rates. 0.1 percentile frame rates also matter a lot, but there is a ton of variation measuring them in live data that makes these analyses difficult. The chart above is for 10th percentile frame rates, but we see similar results with 1st percentile.

We also focus specifically on what we call unlocked or uncapped FPS. While many players hit a maximum framerate (imposed either by the game, or by their monitor and VSync), under-the-hood we measure how fast the game is actually running, and what kind of FPS they could hit if they weren’t limited. Many players who are already hitting their maximum framerate have said that DX12 feels better; one reason is that a higher internal frame rate leads to lower input latency even when their screen isn’t showing more frames. That unlocked FPS is what we use to compare performance. 

There are still a few situations where we can’t accurately measure a player’s performance. For example, if they are using an external software framerate limiter. However we can detect these cases and exclude these players from the analysis.

CPU AND GPU PERFORMANCE

When rendering engineers look at performance, we often look at CPU and GPU performance individually. Some players might find that DX12 appears to perform worse in the Firing Range, but actually they get higher frame rates in full Battle Royale matches. This is because the Firing Range is extremely light on the CPU (fewer objects and players), but slightly heavy on the GPU with more complex lighting and a lot of highlighted loot.

The most time intensive portion of Apex on the CPU is generating data and commands to be sent to the GPU for rendering. DX12 makes it possible to parallelize this work across multiple threads in ways that DX11 can’t and player data backs that up with >99% having better CPU performance in our DX12 build.

The results are more mixed on the GPU: a significant majority of players’ GPUs perform better in our DX12 build, but some do perform worse right now. Internal testing on recent drivers has found that some of the most popular GPUs were over 30% faster, while others were up to 15% slower. That said, the largest differences are likely due to how the drivers compile shaders into machine-level GPU code, and there are too many different GPUs (not to mention GPU and driver combinations) to test. 

We’re working to improve GPU performance for players who have some regression with DX12, but these improvements may not come immediately. We have also seen a small number of players who have had extreme performance drops when switching to DX12 even though they have the same hardware as other players who are getting significant performance gains. If you’re one of these players, and you’re willing to share information (ideally gameplay videos, system specs, and any third-party software you have that might be interacting with Apex), please drop us a reply.

SHADER COMPILATION

Finally, let’s discuss shader compilation a bit since shader compilation stutter is such a common issue on PC DX12 games. Apex’s engine and content pipeline allows us to know every shader that can be used in-game before we need to render it. This allows us to precompile all the shaders and avoid any shader compilation during gameplay, which fixes many “microstutters” that players experience on DX11.

The typical challenge in DX12 is that shader compilation is often slower than in DX11. Many players correctly guessed that this was behind slow performance in the lobby in the DX12 beta, while shader compilation is happening in the background. However, there was a bug that caused the background compilation to interfere with the game’s UI and general rendering much more than expected. This is now fixed in From the Rift and players shouldn’t experience such severe performance drops when first entering the lobby, despite shaders compiling in the background.

Apex’s initial shader compilation can take longer in DX12 before loading into the lobby, but this has been significantly improved for many CPUs this season. There’s better multithreading of shader compilation, but it typically still takes longer than DX11. After running through the shader compilation once, the results are saved so the next time should be much faster, although a full recompile may be necessary after a major patch, or after you update your graphics drivers. 

FEEDBACK AND QUESTIONS

We hope you’ve enjoyed this extra insight into DX11 and DX12. If you’ve got any questions around DX12, rendering in Apex, or performance analysis, drop them in the replies and we’ll do our best to answer as many as we can without going into details about future features. And again, if you’re experiencing really significant issues with DX12, please let us know: share your system specs, the issue you’re having, and anything else you think might be relevant. For performance issues, also make sure to let us know any third-party software or overlays you might be using that could affect performance.

External link →
20 days ago - /u/RSPN_Thieamy - Direct link

Hey, Legends.

Below are some details from our dev team around our ongoing support for DirectX 12 (DX12)! Read on to learn more about us moving off of beta and what you can expect moving forward. Let us know your questions and feedback in the replies!

For future updates, follow Respawn on X/Twitter and/or check out the Apex Tracker Trello for bugs or concerns we’re continuing to investigate. 

--------

Let’s talk about DirectX 12 (DX12) and the foundation we’ve been laying out to modernize Apex’s rendering engine. As you may have seen in the patch notes: DX12 is no longer in beta as of From the Rift! 

Our data shows that DX12 offers a better experience overall. The stability of our DX12 build was better than DX11 with our last patch, and overall game performance is better for the majority of PC players in BR matches. While there are a couple of known issues, this season includes some significant fixes, especially to performance when you’d first join the lobby.

As DX12 continues to shine, we want to share some future plans: our intention is to make DX12 the default and eventually drop DX11 support. While there’s a small percentage of PC players still on GPUs that don’t support DX12, this is an important step for improving our rendering engine. Let's get into it.

WHY NOT SUPPORT BOTH DIRECTX 11 AND DIRECTX 12?

We estimate that 80-90% of players will have better performance in BR matches after switching to DX12, but we can’t ensure that number will get up to 100% before dropping DX11. However, committing to DirectX 12 allows us to improve the engine more quickly, which will benefit performance for all players in the long-term.

It should come as no surprise that our biggest rendering priority for Apex is making the game perform better. We also want to enable our artists and designers to build their vision without being held back by performance issues. We’ve learned a lot about the most restrictive performance constraints and what performance issues most commonly affect development and players after a new patch. When looking at the major improvements that can address these problems, a common theme keeps coming up: these changes could be better if we focused on DirectX 12.

For those unfamiliar, DX11 and DX12 are graphics interfaces (APIs) between our code and the graphics drivers, which allow us to communicate with the GPU. Console graphics APIs and DX12 have advanced features that can push significantly higher performance, but DX 11 is missing those features. This means the more that we want to improve the game’s performance, the more we end up having two versions of the engine: one for DX11 and one for every other platform. This isn’t impossible, but it does significantly slow down development as any time we spend on DirectX 11 could be spent modernizing the engine further.

PERFORMANCE ANALYSIS

With the basics out of the way, we can dive into the specifics of how we calculated that 80-90%.

There are two difficult problems when comparing Apex’s PC performance between DX11 and DX12. First is the very large number of PC configurations. Over two weeks, we see around 150 different CPUs and over 100 different GPUs, with over a thousand different combinations. Additionally players have different video settings, resolutions, and monitors. There are too many combinations to test, so we need to look at the data from real players.

The second difficult problem is opt-in bias. Players who chose to play on the DX12 beta aren’t the same as the players who have stuck with DX11. They tend to have newer machines, be more performance conscious with lower settings, etc. If we do a naïve comparison between DX12 and DX11 framerates, of course we see that DX12 has much higher average frame rates, but that doesn’t mean it will actually be faster for most players.

There are three ways we analyze the performance of DX12 to deal with these problems.

METHOD 1: INTERNAL TESTING

We do performance tests and collect data on a number of different PC configurations (CPU, GPU, and Video Settings). While we can’t come close to testing the full set of configurations in the game, we can choose popular configurations across multiple generations of hardware and at different price points. In these tests we find that most of the configurations, even with older and low-end hardware, get better performance in our DX12 game. It’s difficult to generalize these tests to the overall impact to the player base, but they help to validate the next two methods where we look at live player data.

METHOD 2: PLAYERS WHO HAVE USED BOTH DX11 AND DX12

Many players have used the DX12 Beta, so we can compare their framerates just before they used DX12 and just after (and vice versa, for those who switched back). This still has some bias because the analysis is weighted towards players who are likely to at least try out DX12, but it’s not as biased as simply taking average performance across the game. Focusing on the few days around the introduction of the DX12 Steam option, we have data from over 10,000 players who played both versions of the game. These players averaged 13 matches each in both DX11 and DX12, and 80% had better performance in DX12; with an additional 10% having performance that was within 5% of DX11.

METHOD 3: PERFORMANCE ESTIMATION

Our goal is to estimate what every player’s performance would be in DX11 and DX12. The main factors that affect a player’s performance are their CPU, GPU, video settings, and what game mode and map they are playing. With these in mind, we can form groups of performance metrics where we look at the frame rates for players in a particular game mode, with a specific CPU, GPU, and video settings. Within each group, we know the typical performance for that group.

This lets us guess what the performance would be for players with similar setups when they switch to DX12, even if they have never played it. From Shockwave data, we estimate that 80-90% of players would have better performance in DX12, depending on the exact performance metric chosen. The graph below shows the overall distribution of performance changes that we expect for players.

Estimated Dx12 Performance Change Chart

None of these three analyses are perfect in isolation. Each has drawbacks in terms of its biases and how well it generalizes to the player base as a whole, but taken altogether they clearly tell us that DX12 is now a better experience overall.

DETAILS ON MEASURING PERFORMANCE

While average frame rates matter for the experience of playing the game, unexpected frame drops make the game feel much worse even when average frame rates are high. For that reason, we generally focus on lower 10th and 1st percentile frame rates. 0.1 percentile frame rates also matter a lot, but there is a ton of variation measuring them in live data that makes these analyses difficult. The chart above is for 10th percentile frame rates, but we see similar results with 1st percentile.

We also focus specifically on what we call unlocked or uncapped FPS. While many players hit a maximum framerate (imposed either by the game, or by their monitor and VSync), under-the-hood we measure how fast the game is actually running, and what kind of FPS they could hit if they weren’t limited. Many players who are already hitting their maximum framerate have said that DX12 feels better; one reason is that a higher internal frame rate leads to lower input latency even when their screen isn’t showing more frames. That unlocked FPS is what we use to compare performance. 

There are still a few situations where we can’t accurately measure a player’s performance. For example, if they are using an external software framerate limiter. However we can detect these cases and exclude these players from the analysis.

CPU AND GPU PERFORMANCE

When rendering engineers look at performance, we often look at CPU and GPU performance individually. Some players might find that DX12 appears to perform worse in the Firing Range, but actually they get higher frame rates in full Battle Royale matches. This is because the Firing Range is extremely light on the CPU (fewer objects and players), but slightly heavy on the GPU with more complex lighting and a lot of highlighted loot.

The most time intensive portion of Apex on the CPU is generating data and commands to be sent to the GPU for rendering. DX12 makes it possible to parallelize this work across multiple threads in ways that DX11 can’t and player data backs that up with >99% having better CPU performance in our DX12 build.

The results are more mixed on the GPU: a significant majority of players’ GPUs perform better in our DX12 build, but some do perform worse right now. Internal testing on recent drivers has found that some of the most popular GPUs were over 30% faster, while others were up to 15% slower. That said, the largest differences are likely due to how the drivers compile shaders into machine-level GPU code, and there are too many different GPUs (not to mention GPU and driver combinations) to test. 

We’re working to improve GPU performance for players who have some regression with DX12, but these improvements may not come immediately. We have also seen a small number of players who have had extreme performance drops when switching to DX12 even though they have the same hardware as other players who are getting significant performance gains. If you’re one of these players, and you’re willing to share information (ideally gameplay videos, system specs, and any third-party software you have that might be interacting with Apex), please drop us a reply.

SHADER COMPILATION

Finally, let’s discuss shader compilation a bit since shader compilation stutter is such a common issue on PC DX12 games. Apex’s engine and content pipeline allows us to know every shader that can be used in-game before we need to render it. This allows us to precompile all the shaders and avoid any shader compilation during gameplay, which fixes many “microstutters” that players experience on DX11.

The typical challenge in DX12 is that shader compilation is often slower than in DX11. Many players correctly guessed that this was behind slow performance in the lobby in the DX12 beta, while shader compilation is happening in the background. However, there was a bug that caused the background compilation to interfere with the game’s UI and general rendering much more than expected. This is now fixed in From the Rift and players shouldn’t experience such severe performance drops when first entering the lobby, despite shaders compiling in the background.

Apex’s initial shader compilation can take longer in DX12 before loading into the lobby, but this has been significantly improved for many CPUs this season. There’s better multithreading of shader compilation, but it typically still takes longer than DX11. After running through the shader compilation once, the results are saved so the next time should be much faster, although a full recompile may be necessary after a major patch, or after you update your graphics drivers. 

FEEDBACK AND QUESTIONS

We hope you’ve enjoyed this extra insight into DX11 and DX12. If you’ve got any questions around DX12, rendering in Apex, or performance analysis, drop them in the replies and we’ll do our best to answer as many as we can without going into details about future features. And again, if you’re experiencing really significant issues with DX12, please let us know: share your system specs, the issue you’re having, and anything else you think might be relevant. For performance issues, also make sure to let us know any third-party software or overlays you might be using that could affect performance.

External link →
20 days ago - /u/RSPN_Thieamy - Direct link

Originally posted by Baz135

is there any reason some of these updates seem to no longer be posted on the official site? this looks to just be posted here (at least the moment) and the announcement of linux support being dropped was only posted on twitter. would be nice to always know you can find them all in one place rather than on disparate sites that one could easily miss. and that's kind of the entire point of having an official site for the game, so that all the news and info can be found there? just seems weird to not use it.

That's good feedback and I agree that having a singular source is always good. Blogs vs. dev post can depend on a number of factors. As an example, one of the reasons the Linux news was posted on reddit (with social amplification) was because that audience is quite present here. I'm all for blogs personally, especially if there's enough turnaround time for approvals, proper localization, etc. (that's a tad biased though since I write most of them).