rdoeffinger / xwa_ddraw_d3d11

Direct3D 11 implementation of DDraw.dll for XWA
MIT License
63 stars 2 forks source link

When MSAA is disabled this causes graphical corruption when running with ReShade #16

Closed bazrrrr closed 5 years ago

bazrrrr commented 5 years ago

I thought I would put this in as it has been recently seen in XWA as well here: https://www.xwaupgrade.com/phpBB3/viewtopic.php?p=157850#p157850

The fix suggested here does work for XVT BOP as well which involves enabling MSAA via the cfg file to remove the graphical corruption that occurs when using the most recent version of ReShade in either games.

Like many other's I'm using the 60 fps patch and when MSAA is turned off I constantly get the maxed 60fps. When MSAA is turned on for me I'm dropping to 10-15 fps in the same mission to around 45-50 fps in XvT BOP.

It is only a minor drop but I have a i7 4770 running at ~4GHz and an nvidia 660 ti and even though that's not high spec I would have thought it would still handle 60 fps easily with MSAA enabled. I'm using all default opts no other mods.

The version of ReShade I normally use is 3.1.1.242 which gets this bug to occur about 1 in 20 missions. The latest version of ReShade causes it constantly.

rdoeffinger commented 5 years ago

I have to admit I was hoping someone knew of a more concrete description of something that would be wrong with the ddraw wrapper. As far as I call tell there is only 2 lines that are different with multisampling: renderTargetViewDesc.ViewDimension = this->_useMultisampling ? D3D11_RTV_DIMENSION_TEXTURE2DMS : D3D11_RTV_DIMENSION_TEXTURE2D; (well, and sample count settings for depth buffer and off-screen colour buffer) Without further indications this seems most likely an issue in ReShade unfortunately and not much to be done about it.

As for MSAA performance, it is possible part of the issue is that the highest quality MSAA mode is selected: this->_sampleDesc.Quality = numQualityLevels - 1; Though finding documentation on the exact meaning is rather hard.

rdoeffinger commented 5 years ago

Hm, actually can't even explain the performance issue (unless it is also caused by ReShade). Or maybe if you are not the latest release? On a GTX960 even with higher MSAA settings I get 60 fps and both CPU and GPU usage are clearly below 20%.

JeremyAnsel commented 5 years ago

Maybe there is a bug here: https://github.com/crosire/reshade/blob/master/source/d3d11/runtime_d3d11.cpp

rdoeffinger commented 5 years ago

Yeah, that does raise some questions. Is the ReShade depth buffer capture even still working in MSAA mode? The code reads to me like it is not. That depth buffer capture logic just uses heuristics, which may well get confused. One particular thing that XvT does is clear the depth buffer for the HUD for it is rendered ignoring what is drawn "below" the HUD in the scene. Well, my hack just clears the whole frame buffer, the game would manually clear just the HUD area. There are some ReShade options around this depth capture logic, maybe some actually help (though I didn't see if/how it can be turned off completely?).

JeremyAnsel commented 5 years ago

Instead of enabling MSAA, you can set "DepthBufferRetrievalMode=1" in "ReShade.ini". It seems to work.

rdoeffinger commented 5 years ago

Since it seems fixable by a ReShade option, does it make sense to close it?

bguthrie1 commented 5 years ago

I would close this. The issue is not on part of your ddraw.

rdoeffinger commented 5 years ago

Thanks, closing