http://bugs.winehq.org/show_bug.cgi?id=59693 Bug ID: 59693 Summary: Direct3DMaterial3::SetMaterial does not update the active material Product: Wine Version: unspecified Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: d3d Assignee: wine-bugs@list.winehq.org Reporter: winehq@tiger.wah.net.au Distribution: --- The current implementation of Direct3DMaterial <= 3 does not directly update the render state on SetMaterial. Only a call of Direct3DDevice3::SetLightState(D3DLIGHTSTATE_MATERIAL) updates the active material properties. This differs from the behaviour on Windows: at least for Direct3DMaterial3, you can call SetLightState(D3DLIGHTSTATE_MATERIAL) once with the material, and then just call SetMaterial on the material itself to change the properties for each batch of primitives. This is visible in the game "I've Got Some BALLS", which uses this pattern of a single SetLightState followed by many SetMaterial/primitive batches. Under Wine, all primitives are rendered with the material values that were present at the SetLightState call, which happen to have a diffuse colour of 1,0,0 so everything is red. Under Windows (tested most recently on Server 2022) this renders correctly in full colour and with specular, etc changing as well. I'm sorry I haven't got a stand-alone test case, and the game itself has what I think is a lifetime bug which causes it to crash on both Wine and newer Windows - a fixed version is available here: https://codeberg.org/abrasive/IveGotSomeBalls-patch -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.