Jump to content
  • Sign Up

Gw2 DX12pxy needs to be implemented directly


Recommended Posts

@maddoctor.2738 said:

@"Astralporing.1957" said:Those solutions work most of the time, vith varying degree of actual improvement. Problem is, sometimes they do not work, and sometimes they actually make stuff worse. In example, with d912pxy enabled i am unable to see a few of the in-game cinematics. They just don't render properly.That's not something that can pass muster in an official release.

That's because those "solutions" are not using actual in-game assets and those that create them have no access to the game's code. If they did, for example if the company itself took those "solutions" and implemented them inside the game, then those issues could be resolved.Sure, but it would likely require much more work than d912pxy did. Which, i remind you, took several years of development to get to the point it is now (which is still short of the standard required of official release).

Link to comment
Share on other sites

DX9 is only part of the problem.Here's what testing a year or two ago resulted in , per deltaconnected:

if I disable the client's graphics rendering system entirely?

On a 4770k @ 4.6ghz, 980ti SLI, 5760x1080 mostly high:

before - ~32fps

after - ~44fpshttps://old.reddit.com/r/Guildwars2/comments/9ojyio/how_much_will_dx12_really_help/

DXVK is more of a universal solution (albeit only "supported" on Linux) and the developer has stated the reason why d912pxy has "glitches" as people call it is due to workarounds.

https://github.com/doitsujin/dxvk/issues/1648

Should be noted that d912pxy runs pretty much nothing but GW2 and cuts a lot of corners whereas dxvk is a more or less complete D3D9 implementation, so you're basically comparing apples and oranges, but it should still be competitive with Windows Dx9.

Link to comment
Share on other sites

Let me post my own results. They are from the same location as I load into the guild hall (I used the snipping tool to take the picture) and as you can see in the screenshots the same settings.

No DX12PY:wbOpioO.png

DX12PY:3F6GQEH.png

On average I get 19-24 fps without dx12py running around in the guild hall (we have a few decorations filled with particples there), but get between 47-53 fps while using dx12py, that's an absolutely massive difference. Also, do note the much higher VRAM usage, which is the "negative" of using dx12py. And remember this is at maximum settings, including supersampling and SMAA.

As for those that experience graphic issues, especially in cutscenes, that's "normal" because dx12py needs to compile all shaders and compiles them as it sees them for the first time. So if this tool was incorporated into the game, Arenanet could run all assets with it before releasing it, or force it to create assets on load time (like most games do anyway) to avoid those glitches.

  • Like 1
Link to comment
Share on other sites

DXVK works better on Navi-based AMD GPUs and older AMD GPUs based on GCN have lower performance in DX9 for whatever reason due to the multi-threading inherent in Nvidia drivers. Nvidia driver incurs a higher CPU overhead as a result due to splitting the draw calls across threads via command lists. Deltaconnected's testing was with a recent Nvidia GPU (Pascal based GTX 1070).

Are you using global shader cache for the DX9 test?

If there's any work to be done on the engine, it's better if Vulkan is supported because of the greater platform support. Valve supported DXVK for this reason.

Link to comment
Share on other sites

The studio making this game is trying to do too much with an old engine and it is really hurting the game.My game runs so poorly now and characters pop in and out within feet of my character but that is the only way to play it now. Requiring players to upgrade to hardware that can completely brute force its way into proper performance is not practical or accessible.

  • Like 2
Link to comment
Share on other sites

@"Infusion.7149" said:Are you using global shader cache for the DX9 test?

Yes shader cache is activated. I chose that particular area on purpose, most notably because it has a lot of particle effects, which is one area the game suffers the most.

What I find the most interesting about the game's rendering engine is how effects that are usually very expensive, have very little effect here.

For example, removing AA and putting Render Sampling to Native, offers just 4 fps:

! SX1LuUa.png

In other games adding AA or increasing the rendering resolution would completely tank fps. This is of course because the bottleneck is on the CPU side and the MOST important setting in Guild Wars 2 is shadows.

Moving Shadows to High from Ultra offers +7 fps (more than disabling AA/Render sampling), moving to Medium... reduces performance on my system

High Shadows:

! ajZiXQP.png

Medium Shadows:

! pZwJtVg.png

LOL? And that's actually consistent. With High Shadows it went up to 39 fps, while on Medium it went as low as 34 and high 36. That's curious to say the least.Setting Shadows to low provides a very nice performance boost of another 8 fps. Setting Shadows to None doesn't appear to make a noticeable difference on my system.

In conclusion, from 27-30 fps I go to 49-50 fps (+20 fps!) by tweaking the Shadows setting, giving me performance equivalent to dx12py. Of course on dx12py I have render sampling to supersample and SMAA (if I activate this on vanilla GW2, even with Shadows to none, performance goes to 40-41 fps, meaning still lower than dx12py, but at least closer.

! 9MM5oGE.png

Finally I got the performance with everything set on lowest:

! 26ngQbj.pngBut in my case, that's not playable, looks incredibly ugly, and still can't exceed 60 fps. Do note that in this screenshot with lowest settings, I disabled the frame limiter, for obvious reasons.

tl;dr: if you don't want, or can't, run dx12py, set your Shadows to low or none and you will have very close performance.

Link to comment
Share on other sites

Now the same settings as above, but with dx12py enabled.

Everything max, Render Sampling set to Native and AA set to none:

! 6kpYESP.png

Yep... 68-70 fps, I had to remove the limiter. So from 48-50 fps to 68-70 fps if I remove AA and reduce Render Sampling to native, that's more like it! gaining 20 fps is more "normal", unlike the measly 4 fps gain when doing the same in vanilla Guild Wars 2.

Next we have Shadows:Ultra -> High goes to 80High -> Medium goes to 76, so the same issue I found out with vanilla Guild Wars 2 is replicated on dx12py. There IS something wrong with the medium shadow settingMedium* -> Low goes to 83None doesn't seem to have any performance gains on my system, same with vanilla Guild Wars 2.

Comparison with the above image with Shadows on Low:

! HfpyWhP.png

Finally the comparison with my "lowest" screenshot:

! U9BhORm.png

Link to comment
Share on other sites

For anyone that doesn't want to read my 2 previous posts, here is a recap:

Everything on maxvanilla: 23 fpsdx12py: 48 fps

Removing AA and setting Render Sampling to Native:vanilla: 27 fpsdx12py: 68 fps

Above + High Shadows:vanilla: 37 fpsdx12py: 76 fps

Above + Low Shadows:vanilla: 49 fpsdx12py: 80 fps

Low settings:vanilla: 60 fpsdx12py: 94 fps

I just noticed LOD has an ultra setting, I'm not gonna go back and do all the screenshots with LOD on Ultra, I have it on high. My low settings is not the actual best performance preset. The difference is absolutely massive on all levels, but dx12py does offer way more benefits at higher settings (double performance) and this performance gain is gradually reduced as we got to lower overall settings.

Please notice the MASSIVE difference Shadows make on the vanilla game compared to dx12py. And given my results of Medium Shadows offering worse performance than High, maybe there is a serious bug with the game's shadow system, tanking performance more than it should.

Also, using dx12py, max settings, with Render Sampling: native and no AA provides 60+ fps giving a smooth and stutter free 1080/60 experience. I need to drop most settings to LOW to get 60 fps but it's still stuttering and not smooth at all.

Link to comment
Share on other sites

@Astralporing.1957 said:

@Astralporing.1957 said:Those solutions work most of the time, vith varying degree of actual improvement. Problem is, sometimes they do not work, and sometimes they actually make stuff worse. In example, with d912pxy enabled i am unable to see a few of the in-game cinematics. They just don't render properly.That's not something that can pass muster in an official release.

That's because those "solutions" are not using actual in-game assets and those that create them have no access to the game's code. If they did, for example if the company itself took those "solutions" and implemented them inside the game, then those issues could be resolved.Sure, but it would likely require much more work than d912pxy did. Which, i remind you, took several years of development to get to the point it is now

The best "Thing" that Anet can do when they include the tool into the game, is to allow it to run "on load", just like the regular game compiles shaders at load time. That way the glitches and the pop-in can be removed. The reason dx12py looks "buggy" is because it compiles shaders -after- the game actually loads, compiling shaders usually happens -during- load, but the tool cannot do that during loading. If it was integrated into the game itself, instead of being an external addon, it could easily be "fed" the important shaders during load time, so by the moment your loading is finished, everything is ready to be presented. This would also solve most issues with cutscenes, or area of effect markers not showing.

(which is still short of the standard required of official release).

Testing shadows in this game, and their terrible implementation absolutely killing performance, testing reflections that for some reason "work" and reduce performance even there are no reflecting surfaces around, testing the LOD filter that doesn't seem to do anything, tells us that there are a lot of graphics options in this game that are short of the standards of official release. And besides, as I said above, integrating the tool and allowing it to run on load time, instead after loading, would solve most of the drawbacks of the tool.

Link to comment
Share on other sites

Yeah I came back to the game with a reasonably beefy setup: 7700K and 1080Ti.When I first started playing again, the abyssmal frame rates really turned me off from coming back; no one wants to play a choppy mess.Then I installed D912pxy and the performance improvement made me happy to play.Then the next patch broke D912pxy, and I realized that this one hobbyist modder taking a break could regress performance massively.

If Arenanet wants to sell cash shop items and expansions in 2021, they should update the game to run at least mildly well on 2021 hardware. If there is low-hanging fruit like incorporating elements of d912pxy, then that's a great place to start.

Link to comment
Share on other sites

@"maddoctor.2738" said:Testing shadows in this game, and their terrible implementation absolutely killing performanceI would call it "normal" implementation for the time. Dynamic shadows used to be terrible in all games. The only reason they ran was due to raw performance but even that isnt enough for something like GW2 where you can have 100+ players in front.

In GW2 you should always be using blob shadows (low setting I believe it is), not dynamic. It changes little visually but is a massive performance boost especially with many players around.

Link to comment
Share on other sites

@Dawdler.8521 said:

@"maddoctor.2738" said:Testing shadows in this game, and their terrible implementation absolutely killing performanceI would call it "normal" implementation for the time. Dynamic shadows used to be terrible in
all
games. The only reason they ran was due to raw performance but even that isnt enough for something like GW2 where you can have 100+ players in front.

In GW2 you should always be using blob shadows (low setting I believe it is), not dynamic. It changes little visually but is a massive performance boost especially with many players around.

Shadow settings in Guild Wars 2 affect the main thread, reducing performance. Meanwhile, when using d912py they are much "cheaper" on the frame rate. I get almost 80% more fps if I set shadows to low from ultra with vanilla Guild Wars 2 (!!!), and about 20% with d912py. So there IS something the game doing wrong with its Shadow implementation, that's undeniable. Maybe at the very least some developer could look into what d912py is doing with Shadows and get that performance boost. (Even when Shadows are on low, d912py offers much superior performance)

Link to comment
Share on other sites

So... Fun fact...

I tried d912pxy a while back and for some reason it never cached most of the textures and was glitchy no matter how long i gave it to render.I thought, my gfx card is probably too weak (even if it supports DX12 natively) and uninstalled, thought nothing of it.

Today i thought i'd give it another go, maybe the version difference will make it work and... It's a MASSIVE difference, even on my 1GB gfx card!!! :astonished:I can only imagine what performance benefit it is on more modern cards!

If they can somehow implement d912pxy into GW2 nativey, they need to do it, this is hardly even up for debate, you can't argue with results!Making the game run better should be baseline priority for any developer, without optimal performance, people won't play the game, let alone buy anything.Good optimised performance is the basis of player's enjoyement of the game, especially in "action oriented" pieces like GW2.

Anyway... Just thought i'd share because, this really is a great tool. And Anet should do better and held to a higher standard than what we get by default.

Link to comment
Share on other sites

Big shock when I installed DX12pxy for the first time. First thoughts were 'SO, this is what guild wars 2 is suppose to look like and run?' The difference is like night and day.If a modder can do this from his toilet it does make you think why haven't A-net give us the option years ago? I mean, if they can't be bothered just buy the mod of this guy.

Link to comment
Share on other sites

@Redfeather.6401 said:The studio making this game is trying to do too much with an old engine and it is really hurting the game.My game runs so poorly now and characters pop in and out within feet of my character but that is the only way to play it now. Requiring players to upgrade to hardware that can completely brute force its way into proper performance is not practical or accessible.

imo it kinda feels they are trying to put batman engine in a mini one :| this is a overbeefed game engine from gw1, i cant possible imagine the amount tourniquets in the programing :P

yet they have been adding so much aoe and visual clutter kinda :| wich makes isues sometimes on cliente to render all the visuals.IDK its a bit strange.

Link to comment
Share on other sites

@"Joote.4081" said:Big shock when I installed DX12pxy for the first time. First thoughts were 'SO, this is what guild wars 2 is suppose to look like and run?' The difference is like night and day.If a modder can do this from his toilet it does make you think why haven't A-net give us the option years ago? I mean, if they can't be bothered just buy the mod of this guy.

It probably doesn't meet their standards for glitching textures and such.

DXVK has run without issues because it is supported by Valve indirectly (works for all DX9 / DX11 games if you pull the DX11 version as well but the performance impact may be negative if you use it in Windows for DX11) and is the default way for Steam Proton to use Windows games on Linux. It is possible to use DXVK in Windows and it even provides greater performance than d912pxy.

"so a crowd is 75fps on dx912prxy and dxvk is 120fps"

Note the video doesn't use the dxvk.enableAsync = true variable or "DXVK_ASYNC = 1". This drops stutter when compiling async pipelines at the cost of ~10% more shader cache size.

Link to comment
Share on other sites

@Infusion.7149 said:DXVK has run without issues because it is supported by Valve indirectly (works for all DX9 / DX11 games if you pull the DX11 version as well but the performance impact may be negative if you use it in Windows for DX11) and is the default way for Steam Proton to use Windows games on Linux. It is possible to use DXVK in Windows and it even provides greater performance than d912pxy.

and if you have an amd gpu, the mesa+amdgpu open source drivers are much more performant on vulkan over the official ones that performance when running the same hardware on linux (rt kernel + esync/fsync) may exceed that when running it on windows with the same hardware on amd's proprietary drivers.

Link to comment
Share on other sites

@Infusion.7149 said:

@"Joote.4081" said:Big shock when I installed DX12pxy for the first time. First thoughts were 'SO, this is what guild wars 2 is suppose to look like and run?' The difference is like night and day.If a modder can do this from his toilet it does make you think why haven't A-net give us the option years ago? I mean, if they can't be bothered just buy the mod of this guy.

It probably doesn't meet their standards for glitching textures and such.

DXVK has run without issues because it is supported by Valve indirectly (works for all DX9 / DX11 games if you pull the DX11 version as well but the performance impact may be negative if you use it in Windows for DX11) and is the default way for Steam Proton to use Windows games on Linux. It is possible to use DXVK in Windows and it even provides greater performance than d912pxy.

"so a crowd is 75fps on dx912prxy and dxvk is 120fps"

Note the video doesn't use the
dxvk.enableAsync = true
variable or
"DXVK_ASYNC = 1"
. This drops stutter when compiling async pipelines at the cost of ~10% more shader cache size.

Ooh, i have to try that as well! I thought this was linux only for some reason!

Link to comment
Share on other sites

@"Veprovina.4876" said:Ooh, i have to try that as well! I thought this was linux only for some reason!

it is "linux only", but it just so happens to work in windows because they are dlls. if you use it on windows and you encounter issues with any game (including gw2) don't expect support or any kind of help from the devs if things work fine and as intended on linux

Link to comment
Share on other sites

@Astyrah.4015 said:

@"Veprovina.4876" said:Ooh, i have to try that as well! I thought this was linux only for some reason!

it is "linux only", but it just so happens to work in windows because they are dlls. if you use it on windows and you encounter issues with any game (including gw2) don't expect support or any kind of help from the devs if things work fine and as intended on linux

Aah, i see. Thank you for explaining. :smile:Yeah, i never expect support when dealing with 3rd party stuff, after all, if it doesn't work or works janky, i can always delete the whole thing and switch back to d912pxy.

Link to comment
Share on other sites

@The Boz.2038 said:

@TheQuickFox.3826 said:As long as there remains a way for Windows 7 users to continue playing GW2. (Windows 7 does not support DirectX 12 unless a game is specifically made to do so.)

Official support for Windows 7 has ended. The maker of the OS is no longer supporting it. Why should this be a critical issue?

I'm not saying it is critical, but it would be nice if the Windows 7 users can benefit from an improvement or at least keep playing the game. WoW has a custom implementation that even allows DX12 with Windows 7.

Link to comment
Share on other sites

@TheQuickFox.3826 said:

@TheQuickFox.3826 said:As long as there remains a way for Windows 7 users to continue playing GW2. (Windows 7 does not support DirectX 12 unless a game is specifically made to do so.)

Official support for Windows 7 has ended. The maker of the OS is no longer supporting it. Why should this be a critical issue?

I'm not saying it is critical, but it would be nice if the Windows 7 users can benefit from an improvement or at least keep playing the game. WoW has a custom implementation that even allows DX12 with Windows 7.

You can use d912pxy on Windows 7 if it's patched. See https://github.com/megai2/d912pxy/wiki/Installing

Windows 7 64-bit with the Platform update or Windows 10 64-bit (update to the latest build) - No Windows 8 support folks

However, dxvk is a far superior solution that also happens to run on Windows 7 and Linux. A port to DX12 also kills off any hope running it on Mac with Parallels Desktop since DX12 isn't supported.

It is highly likely many assets are built in Unreal Engine 3 , which means the most direct upgrade path if they want to dump code on top of an engine is Unreal Engine 4 which has been licensed to NCSoft (parent company of Arenanet) for other titles such as Lineage II.

Any port to Vulkan allows for GW2 to be run on Google Stadia and other cloud platforms , whereas DX12 would not. That's why suggesting DX12 is not a good idea , it doesn't expand the potential userbase and shrinks it instead. If the client scales down far enough then you would be able to run it on Android platforms since Android supports Vulkan and so do macOS / iOS devices via MoltenVK. With added effort maybe could even put it on new consoles.

The #1 concern in terms of an investment perspective for any client-side improvements is whether it can ROI.

TL;DR: Moving to Vulkan is faster performance-wise and opens up additional revenue streams. DX12 doesn't.

See also: https://www.khronos.org/assets/uploads/apis/Vulkan-Portability-Update_Jan21.pdf

Link to comment
Share on other sites

Quick question for whoever may know.

Does DXVK work with ArcDPS?

EDIT: Just tried DXVK and it was great and actally better than d912pxy until i cast a skill. Then it crashed. :tongue:I'm going back to d912pxy for now, but will keep DXVK in mind for the future. I just wonder if it also works with ArcDPS.

I wish i still had my Linux installation to try GW2 on linux with this...

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...