While I agree that the DX11 is noticably better than the DX9 mode (especially on Nvidia), I've found that using DX11 mode and the appropriate DXVK wrapper is even smoother than just DX11 on AMD cards (zergs in WvW). Which leads me to wonder why ANET didn't just re-code the engine for the more advanced and current Vulkan (which is supported in just about everything other than stupid Apple, which has MoltenVK as a workaround) in the first place?
I'm not trying to sound ungrateful; I hugely applaud the effort and noticable gains from moving to DX11, but it just seems curious to me that in 2021 a major graphics API update wouldn't be Vulkan or DX12 (DX12 at least has the excuse of being Windows/Xbox-only).
I have to wonder if their testing ever extended to WvW with normal sized zerg battles, because there is definitely a noticeable difference in framerates to me using the wrapper+DX11 than just using DX11. At least on AMD cards---which have never been as good as Nvidia at DX11 optimization (apparently due to their architecture, which is why Mantle (Vulkan) was originally developed).
There was a streamer called Summit that did streams and when people told him to reduce character limits to get decent frames he was baffled as to how that was a solution because people were disappearing right ahead of him. It just isn't normal in a game to be so limited like that to get decent performance. Something really needs to be done. It only gets worse each year. DX11 did not fix it. Anet should at least give us a clear roadmap on what is being done for performance like ZoS started doing for ESO a couple of years ago.
i'll be honest, i'd MUCH prefer DX12, because of even better multithreading performance and raytracing, which gives better lighting, shadows, and reflections at a better performance for those 3 things. plus DX12 can use multiple GPU setups without the need for SLI or crossfire bridges, since SLI and crossfire aren't really a thing anymore. (Nvidia abandoned SLI tech for the newest generation of GPUs, except for the RTX 3090)
BUT: the steam hardware survey says that windows 10 is used by about 90% of users, windows 11 is less than 2%, so there's still about 9% of users still using older forms of Windows or MAC operating systems. when you consider that the estimated steam user base is over 125 million people (monthly active userbase), you can extrapolate that 11 million active gamers or more use older operating systems. that's almost as many as the total existing GW2 player-base.
so it's easy to see why ANET chose DX11... they know better there own survey results than we ever could. so, even though i use windows 11 and have a DX12 Ultimate ready premium gaming PC (according to 3DMARK), i have guildmates that still use windows 7 (according to them in discord voice-chat). i don't want to see them left behind in the performance upgrades of GW2. besides, i see a very significant framerate performance increase on my PC of at least 25%. on a new CPU. i know some guildmates are seeing at least 10% on older CPUs, too. my 8 year old i7-4930K saw 20% increases or more (it was a 6 core/ 12 thread gen 4 intel extreme chip)
Have you ever played BDO? That game is eye candy but draw distance is nothing like GW2, and this stinks on their end. If you want to compromise on draw distance then yes you can even play with highest character model limits but nothing 5 yards and further will be ever be rendered to maintain performance. I prefer lower char limits over lower draw distance and this is what Anet also prefers.
Oh yes, BDO and draw distance. My God, that was horrendous. That's why I thought there was something wrong with my setup----people were saying "BEST GRAPHICS in an MMO EVER OMG" and i remember laughing at the pathetic draw distance. It absolutely kills the immersion.
Not only you but me included n the entire linux community have been running dxvk all this time.
And with this 'crash fest' happening, i'm not even using arcdps anymore.
And yeah, I truly wish they use vulkan instead of this.
In fact, if you observe the way assets still pop in and are loaded, as well as the fact that the game has to be relaunched to perform the renderer shift, this appears to be because there IS NOT a separate rendering or IO pipeline whatsoever. The frame diagnostic images later in the post make this more evident based on the bursts of activity that can be observed.
While this is only a hypothesis -- and I do want to make that clear -- I'm relatively certain that the only thing which occurs is a change of some init-time flag which tells the BGFX library which runtime to initialize and run. It is, quite simply, an intermediary or "proxy" in the same way that WINE on linux is (or DXVK, as OP points out); a DirectX command is intercepted, recompiled, and dispatched to the requested rendering backend (from DX9 to DX11, in this case, much like MSWindows to Linux in WINE), while using various internal mechanisms created by the library for managing and nominally optimizing graphics state.
This makes sense from an enterprise project management and software development standpoint, because it would not require having to completely redevelop the internals of the GW2 client from the ground up, which would be required in natively adopting DX11, adding the requisite multi-context support (the entire reason of adopting the newer version), and, moreover, being able to fully exploit multi-core hosts. James Fulop says as much himself in the third line of that quote up there -- if they had fundamentally changed the client to support parallel IO and asset loading (or multiple rendering threads which synchronize against the graphics device when a new frame is presented), there would have been no quantifiable way to ascertain the level of improvement.
Or, put simply, you've eliminated the baseline by using an entirely different solution, even though the entire point appears to be improving framerates and reducing rendering execution overhead ... you know, the entire point of using the more modern DX11 backend.
Go to the x64 folder, copy both d3d11 and dxgi dlls to your gw2 directory (not the bin64 directory as with d912pxy), then run. Make sure your client is in dx11 mode per the graphics setting menu. If not, click it and restart.
"So what we've really gotten until DX9 is phased out, BGFX is deprecated for native DX11, and the GW2 client is rewritten to actually make use of the new functionality is, quite simply, a big cop-out."
I tried using dxvk with dx11 and the game started to stutter A LOT in Lion`s Arch. The FPS was good while stading still but would crank when I started walking, maybe that is not true in WvW as I did not go there to test it.
I'm using a 5950X and 6900XT, so the shader compiling probably takes a shorter time for me (cpu dependent), but I've had no issues with stutter in WvW at all, even at 4k with shadows at medium in large zergs.
Also, you misread his statement about not changing the renderer. He specifically said they aren't making significant changes to the current renderer, which is on DX9. The new one is still a single thread, but the performance improvement was large enough that they didn't need to go through the effort of making it multithreaded.
As time goes on, they're going to keep updating the new renderer to be even more performant as they are able to make larger changes to how it works after they are confident that its visually identical to the current one (which was their primary goal, to keep GW2 looking the same as it has for the past 9 years).
DX12 would mean that anyone on windows 7 would no longer be able to play GW2 (once the old renderer is retired), which is still a sizeable number of people. Vulkan is also significantly more work to port to since its a fundamentally different architecture for doing graphics than DX is. Its a lot more work, would mean that they can support fewer platforms, and the benefits of switching to it don't justify the extra cost of implementing it
c01484d022