protonscr

[d3d9] SpellForce 2: Faith in Destiny - Water tiles momentarily appear black when walked on by units.

dxvkclosed appid 65530
doitsujin/dxvk#1645 · opened 2020-05-27 by ZereoX · updated 2020-06-01 · 4 comments · github · game page · search this game
ZZereoX 2020-05-27 github

Description:

In SpellForce 2: Faith in Destiny (65530) when units collide with water tiles, the collided tiles will appear completely black before slowly transition back to being transparent.

This issue occurs on both Proton 5.0-7 and Windows using DXVK 1.7 or master (a21e0d4). Issue is not present on WineD3D or Native Windows D3D. eed57ed is the last known good commit (35a9934 appears to be the breaking commit).

DXVK WineD3D / Native
SpellForce2FaithInDestiny - 65530 - Black Water Tiles D9VK SpellForce2FaithInDestiny - 65530 - Water Tiles WineD3D

Video: https://www.youtube.com/watch?v=L88BqN_iuBM

Please let me know if any additional information is required or if additional testing is needed.

Notes:

  • Log indicated that "Custom border colors" was not supported, so we confirmed the issue is still present with Mesa git and Nvidia's beta vulkan drivers (the warning does disappear from the log).

Software information

SpellForce 2: Faith in Destiny (65530)

System information

OS: Ubuntu 18.04 / Windows 10 Pro 1909
GPU: Radeon RX 580 / Nvidia GeForce GTX 1060
Beta Drivers: 20.2~git2005270730.ddfd2e~oibaf~e / 440.66.15 (443.24 for Windows)
Stable Drivers: 20.0.7~kisak1~b / 440.82-0ubuntu0~0.18.04.1 (446.14 for Windows)
Wine version: Proton 5.0-7
DXVK version: 1.7 / Master (a21e0d4)

Apitrace file(s)

Log files

d3d9.log: SpellForce2FaithInDestiny_d3d9.log

warn: ConvertFormat: Unknown format encountered: D3D9Format::AL16
warn: ConvertFormat: Unknown format encountered: D3D9Format::R16
warn: D3D9DeviceEx::SetRenderState: Unhandled render state D3DRS_LASTPIXEL

Tested froggi.es builds:

master - a21e0d4 (❌)
1.7 - 2e37825 (❌)
1.5.3 - 6a5d472 (❌)
1.5.2 - e242d7f3 (❌)
35a9934 (❌) - Showcases the current behaviour
eed57ed (✔️)
caae5d1 (✔️)
7c53a99 (❌) to b954ab8 (❌) - Fails to get in-game and throws a bunch of D3D9 errors.
18450f4 (✔️)
a7b4c29 (✔️)
64ece36 (✔️)
1.5.1 - 4308d9b (✔️)
1.5 - 3cdae3a (✔️)

Mmisyltoad 2020-05-27 github

Fixed !

This game should work better than native or WineD3D now, there's actually a missing splashy effect there because the game binds a 2D texture to a 3D (volume) sampler which causes the readback to be 0 0 0 0 on native, whereas we can workaround it and see the intended texture and cool refracty effect that would have rendered on older real hardware :clap:

ZZereoX 2020-05-27 github

Thanks. I can confirm that the issue is fixed by applying forceSamplerTypeSpecConstants and that we can now see the small circles emanating from the unit position as they move through water.

f92d604
image

SpellForce 2 has a bunch of other spin-off titles. I'll make sure to verify if those are also affected by this so I can provide you with a full executable list.

WWinterSnowfall 2020-05-28 github

SpellForce 2 has a bunch of other spin-off titles. I'll make sure to verify if those are also affected by this so I can provide you with a full executable list.

I've checked SpellForce 2 - Anniversary Edition, which uses a slightly revamped SpellForce 2 engine (the latest, as far as I'm aware), and the black tiles over water issue is present there as well. I think the override should match SpellForce2.*\.exe (assuming I got the regex right).

ZZereoX 2020-06-01 github

Hey @Joshua-Ashton,

I've confirmed the issue affects 2 other Spellforce 2 titles. Spellforce 2 - Anniversary Edition (As mentioned by @WinterSnowfall) as well as Spellforce 2 - Demons of the Past is also affect. The regex above should cover all 3. I've however not been able to confirm if the issues occurs in the Editors as they require require vulkan child window rendering support.

Full executable list:

SpellForce2.exe
SpellForce2DemonsofthePast.exe
SpellForce2FaithInDestiny.exe
SpellForce2DemonsofthePastEditor.exe
SpellForce2FaithinDestinyEditor.exe

Proton versions