dege-diosg / dgVoodoo2

Glide/DirectX implementation on D3D11/12
933 stars 40 forks source link

Final Fantasy XI - POL viewer jittering in DX12 output modes (v2.75.1/WIP82) #93

Open djc5166 opened 3 years ago

djc5166 commented 3 years ago

v2.75.1 (also up to and including WIP82)

Using DX12 output API (both feature level 11.0 and 12.0) introduces a quick jittering effect on the POL viewer GUI. DX11 output and lower seems to be fine. FFXI itself seems unaffected so far.

I realize this is not a very important issue, I don't think most people even care to use dgvoodoo2 for the POL viewer, but I thought it could be an indicator of a bug that might affect other games.

djc5166 commented 3 years ago

https://user-images.githubusercontent.com/19207074/137806096-cdbe61b6-afd9-4dd8-ab45-a9f0604e1dfc.mp4

Here is an example of the jittering.

dege-diosg commented 3 years ago

Indeed, I can reproduce but as it turned out, not only D3D12 is affected and it's not really a bug in dgVoodoo. There are 2 renderer paths in the POL viewer:

I don't know what the choice of the path depends on, in the renderer, but seems to be some kind of timing (it also works for me on a non-high DPI monitor as expected). The window client area is 636x476 (instead of 640x480), so the 2 paths give different results, that's what appears as jittering. This all could be easily fixed in the POL renderer code, by changing the lpSrcRect parameter of the Blt method updating the window.

Btw, FFXI: there is a topic about it on Vogons with fog issue. I can't check it out myself, because my account expired long ago, but could you verify if it's really a bug (dgVoodoo and native DX8 gives different results)? https://www.vogons.org/viewtopic.php?f=59&t=82346

djc5166 commented 3 years ago

For the jittering, it doesn't seem to happen in native DX8/DD mode, or any DX11 output modes for me, only DX12.

You can freely resize the POL window, so maybe the render path is based on how large the window is?

If you don't have a retail XI account, you can easily setup a client and connect to a private server. I don't see why any of the renderer stuff would be any different private vs retail at this point.

I don't think I've ever noticed a fog issue, I don't play it too often tbh, but I can check it out.

dege-diosg commented 3 years ago

Yes, the window can be resized, but 636x476 was my test case for understanding what happens. I could reproduce it with D3D11 too for a short while. Some day I'll dig into deeper to see what causes the different rendering paths to be taken.