http://bugs.winehq.org/show_bug.cgi?id=15683
Summary: Battle Engine: Aquila: high terrain detail doesn't work properly Product: Wine Version: 1.1.6 Platform: PC-x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: S.vanDrongelen@students.uu.nl
Created an attachment (id=16745) --> (http://bugs.winehq.org/attachment.cgi?id=16745) Annotated, shortened stderr output of wine running BE:A with modified wined3d.
In Battle Engine: Aquila, high terrain detail doesn't seem to work properly. All terrain faces seem to be changing constantly while flying or walking through a level.
In the tutorial level, random terrain faces are (partially) dark blue (stencil-related errors?).
In "Weathering the Storm", the beach you start at is very much like the ground during the tutorial level: random faces are dark brown (fog or stencil-related errors?).
In "Weathering the Storm", flying over the area of land right past the beach will show that the texture of the terrain is completely different when viewed from long or short distance (mipmap-related errors?).
I don't recall wether these errors also occurred on Windows; I guess they didn't. I'm currently using the official nVidia drivers for Linux, version 173.14.12 (will try later with 177.80) for my GeForce 7600 GS, and use the "virtual desktop" with pixel shaders disabled for Wine (otherwise, BE:A won't run).
---
Attached is whatever wine spits out to stderr, with one difference: I replaced the checkGLcall macro in state_fogdensity in wined3d by specialized code to debug this error. Instead of
fixme:d3d:state_fogdensity >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glFogf(GL_FOG_DENSITY, (float) Value) @ state.c / 1220
it now always prints a message when err (in checkGLcall) equals GL_NO_ERROR (normally a TRACE) and GL_INVALID_VALUE (normally printed like above).
From the log, it seems all calls to state_fogdensity are alternating between
faillure (with GL_INVALID_VALUE, because 0xF0CCFACE is not really a sensible value when you convert it to floating point numbers) and succes (with only GL_NO_ERROR, in case the fog density is approx. 0.0052f).