4/19/2023 0 Comments Gw2 directx 11![]() ![]() In other words: realise that the goal of ANet is not DX12, that DX11 will not bring the improvements we need or want, and that this whole announcement is a carrot for the uninformed. Also note how much effort it took Blizzard - with their infinite funds - to get a decent DX12 implementation. If the goal is to go to DX12, for actual performance improvements down the line, spending any amount of time on a DX11 implementation is a complete waste of time. There is no upgrade path from DX9, via DX11, to DX12. DX12 and Vulkan are low-level APIs, requiring an entirely different approach to building the engine. Those benchmarks also shows why we need to move to DX12 or Vulkan if we really want to do something about the poor performance in crowds.Īnd make no mistake: DirectX 12 is a completely different beast from all previous versions. ("DX11ST is DX11's single-threaded command list mode, "MT" is the multi-threaded variant.) ![]() But a picture is worth a thousand words, so look at these draw calls benchmarks and shudder. We can see this is the many MMOs that have added support for DX11 in addition to 9 and/or 10: the performance improvements in crowds were minimal at best - and sometimes it got worse due to the utilisation of other new effects that DX11 introduced that have a cost. As I mentioned before, DirectX 9 already supports multi-threading for most of the work that is done before sending the draw calls - but more importantly, DX11 does not address the draw calls issue properly! It adds support for multi-threaded command lists (batched draw calls), but does so poorly. (…) upgrading to DX11 opens a lot of doors for improving performance-CPU multithreading for instance Many people allude to DX11's 'multi-threaded' nature. At least in GW2 you have the choice to take the performance hit for seeing people around you at greater distances. BDO, for example, has a notoriously low draw distance - effectively locking you into a lower value of GW2's 'Character Model Limit' setting. Touching on point 3 above: other MMOs suffer from this all the same, but GW2 has a relatively high baseline for settings that impact this. This is why the 'Character Model Limit' affects performance so heavily (and 'Character Model Quality' too, but a little less). In other words, the number of draw calls scales roughly linearly with the number of characters in view in an MMO. Each model on your screen adds a whole bunch of draw calls, depending on the complexity and detail of the model, and any special effects. But MMOs and some other genres like RTS universally suffer from this limitation due to the relatively high amount of things to draw. Now, for most games this was historically not an issue. However, sending the actual rendering commands from the CPU to the GPU, knows as draw calls, is notoriously a single-threaded endeavour in DX9 and all older graphics APIs. ![]() This part is multi-threaded even in DX9, no worries there. Before a frame is rendered, a game engine will do a lot of processing to set up the data that needs to be rendered. Simply put, graphics APIs like DirectX, OpenGL and Vulkan provide a set of commands that developers can use to control the GPU in a standardized, structured way, with built-in abstractions for common use-cases. I touched on this with point 1 above, but let's look at what the issue with DirectX 9 really is. The game engine itself has been optimised quite a bit and while I'm sure there are still plenty of smaller things that could be improved, the main bottleneck today is certainly DirectX 9. ![]() This value used to be 10–20 in 2012! (Note that these are OS threads, which the OS thread scheduler will then distribute over available CPU threads.īecause of the previous point, the idea that "GW2 is very poorly optimised", still an oft-heard sentiment, is mostly bogus today. For me, it will show between ~55 and ~95, depending on location and crowdedness (and perhaps settings). You can easily verify this yourself by going into the task manager ( Ctrl+Shift+Esc), going to the 'Details' tab, enabling the 'Threads' column if it isn't already, and inspecting Gw2.exe or Gw2-64.exe. Utilisation of multiple threads has increased significantly over the years, as ANet has continuously off-loaded work from the (heavy) main thread to separate threads. It can make good use of at least 6–8 threads. Even more so because DirectX 9 can only utilise one thread for sending draw calls to the GPU, but more on that later. This means that single-threaded performance is very important. Guild Wars 2, like most games, and certainly online games, has a heavy main thread. Let me try to clear up some things.įirst, some general facts unrelated to the DX11 announcement specifically but relevant to the topic: So after seeing a lot of talk about the DX11 announcement, I noticed a lot of misinformation and misconceptions - as is usually the case when it comes to GW2's performance, the engine, versions of DirectX, and related topics. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |