https://bugs.winehq.org/show_bug.cgi?id=38760
Bug ID: 38760 Summary: Tropico 3 doesn't render water correctly when anti-aliasing enabled Product: Wine Version: 1.7.45 Hardware: x86 URL: http://www.gamershell.com/download_50826.shtml OS: Linux Status: NEW Keywords: download Severity: minor Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: gyebro69@gmail.com Distribution: ---
Created attachment 51694 --> https://bugs.winehq.org/attachment.cgi?id=51694 screenshot - AA enabled
When in-game anti-aliasing is enabled sea water doesn't appear properly, it's missing and lots of small pixels are drawn instead of water. The same problem in Wine 1.4, 1.6 and 1.7.45 The problem is reproducible with the open source nouveau and the proprietary drivers (340.76) as well.
Terminal out shows a bunch of these lines: err:d3d:resource_unload Resource 0x728ee7c8 is being unloaded while mapped. err:d3d:resource_unload Resource 0x728ee4f8 is being unloaded while mapped. err:d3d:resource_unload Resource 0x728ee7c8 is being unloaded while mapped. err:d3d:resource_unload Resource 0x728ee4f8 is being unloaded while mapped
Fedora 22 nouveau 1.0.11 + mesa3D 10.5.7
https://bugs.winehq.org/show_bug.cgi?id=38760
--- Comment #1 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 51695 --> https://bugs.winehq.org/attachment.cgi?id=51695 screenshot - AA disabled (water looks good)
https://bugs.winehq.org/show_bug.cgi?id=38760
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |matteo.mystral@gmail.com
--- Comment #2 from Matteo Bruni matteo.mystral@gmail.com --- I thought we had a bug for this one already but I can't find it.
Anyway, I debugged this in the past and the issue here is that the game wants to do a multisample resolve of the depth buffer. There isn't a generic D3D9 way of doing this but Nvidia and AMD offer different hacks for that. The AMD way is RESZ, which is implemented in wined3d (actually IIRC I implemented it for this game). The Nvidia way is through nvapi.dll, which we don't implement.
Unfortunately this game (like WoW and probably most / all the games using this hack) doesn't check for RESZ at all on Nvidia GPUs but only looks for NVApi, fails to find it and skips the multisample resolve altogether. Broken water is the result.
It's not possible to use native nvapi.dll since it hooks into the Nvidia drivers. A workaround which should work instead is to override the GPU reported by wined3d to some AMD model e.g. via the VideoPciVendorID and VideoPciDeviceID registry keys.
https://bugs.winehq.org/show_bug.cgi?id=38760
Béla Gyebrószki gyebro69@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Tropico 3 doesn't render |Tropico 3, Grand Ages: Rome |water correctly when |don't render water |anti-aliasing enabled |correctly when | |anti-aliasing enabled | |(Nvidia)
--- Comment #3 from Béla Gyebrószki gyebro69@gmail.com --- Grand Ages: Rome also has this bug.
Overriding VideoPciVendorID and VideoPciDeviceID so that Wine thinks that it's an AMD card did the trick.
wine-2.0-rc2 OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: GeForce GT 730/PCIe/SSE2 OpenGL core profile version string: 4.5.0 NVIDIA 375.26
https://bugs.winehq.org/show_bug.cgi?id=38760
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #4 from joaopa jeremielapuree@yahoo.fr --- Is still a bug in current wine(3.20)? I can not test, since I don't own a nvidia GPU
https://bugs.winehq.org/show_bug.cgi?id=38760
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Tropico 3, Grand Ages: Rome |Tropico 3, Grand Ages: Rome |don't render water |don't render water |correctly when |correctly on Nvidia GPUs |anti-aliasing enabled |when anti-aliasing enabled |(Nvidia) |(games require depth buffer | |multisample resolve via | |NVAPI)
https://bugs.winehq.org/show_bug.cgi?id=38760
--- Comment #5 from Andrey Gusev andrey.goosev@gmail.com --- Still valid with 3.21
https://bugs.winehq.org/show_bug.cgi?id=38760
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net URL|http://www.gamershell.com/d |https://web.archive.org/web |ownload_50826.shtml |/20210227141220/http://dl.4 | |players.de/f1/pc2/tropico3/ | |Tropico3Demo.exe