https://bugs.winehq.org/show_bug.cgi?id=37313
Bug ID: 37313 Summary: Incorrect processing of post-transform vertex data Product: Wine Version: 1.7.27 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d Assignee: wine-bugs@winehq.org Reporter: iamalannoble@hotmail.com
When using post-transformed vertex data (using D3DDECLUSAGE_POSITIONT or D3DFVF_XYZRHW) and a pixel shader, WINE incorrectly applies transforms to the non-position components of the vertex data. e.g. texgen and texture matrix is incorrectly applied to texture coordinates.
The specification of post-transformed data is scattered across several pages, but here's a quote:
D3DDECLUSAGE_POSITIONT ... When a declaration containing this is set, the pipeline does not perform vertex processing.
D3DFVF_XYZRHW implies the same thing, as this is the output format of IDirect3DDevice9::ProcessVertices.
At http://source.winehq.org/git/wine.git/blob/7f29fc7e91aa7eb88cdb3220ebcbb7a49... wined3d generates a vertex program to match the fragment program, but only the position is handled differently when settings->transformed is true.
The specification for post-transformed data indicates that lighting is not evaluated at all and texture coordinates are just copied. The WINED3DTSS_TCI_PASSTHRU case is not sufficient, as that still applies the texture matrix.
This function and any related functions should be updated to handle settings->transformed correctly.
https://bugs.winehq.org/show_bug.cgi?id=37313
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #1 from joaopa jeremielapuree@yahoo.fr --- What is the status of this bug? No application with this bug related is given.
To be marked as INVALID?
https://bugs.winehq.org/show_bug.cgi?id=37313
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |INVALID Status|UNCONFIRMED |RESOLVED
--- Comment #2 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to joaopa from comment #1)
What is the status of this bug? No application with this bug related is given.
To be marked as INVALID?
Why would that make the bug invalid?
It seems to me though that all the "vertex processing" the OP mentions is actually disabled with transformed vertices (see how wined3d_ffp_get_vs_settings() e.g. disables lighting in that case). It is true that texture matrices are still applied with transformed vertices but they are set to identity in that case (specifically, that's right at the top of compute_texture_matrix() in the current code).
For THIS reason I'm marking the bug invalid. If someone can come up with a testcase showing that Wine is doing something wrong in this regard, please attach it here and reopen the bug.
https://bugs.winehq.org/show_bug.cgi?id=37313
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #3 from Bruno Jesus 00cpxxx@gmail.com --- Closing invalid bugs.