crosire / d3d8to9

A D3D8 pseudo-driver which converts API calls and bytecode shaders to equivalent D3D9 ones.
BSD 2-Clause "Simplified" License
911 stars 83 forks source link

Graphical issue with Project64/Jabo's Direct3D 8 1.7/Banjo-Kazooie #93

Open Fanatic-64 opened 5 years ago

Fanatic-64 commented 5 years ago

I've been using this wrapper with the Project64 emulator (latest version) and its default graphics plugin/module, Jabo's Direct3D 8 1.7. The reason for this is that I've found using this wrapper helps solve many graphical issues (primarily regarding texture Z-fighting) and allows V-sync to work, on Intel GPUs (AMD/Nvidia GPUs do not exhibit these issues). So far it has worked excellently, but there is one graphical issue that I came across. When playing the game Banjo-Kazooie, any time the camera goes underwater, the whole screen turns white, which makes the game unplayable. This does not happen when not using the wrapper, and interestingly enough enabling the option "Force legacy pixel pipeline" within the graphics configuration of the emulator also fixes it (but causes other emulation issues, not related to the wrapper or GPU). I know this is a very edge case, but I think it's worth looking into, specially since it might also help some other games out there. I've included a picture showing the issue and what it looks like either without the wrapper or with the "Force legacy pixel pipeline" option enabled. d3d8to9pj64jabod3d817bk

slightlyoutofphase commented 3 years ago

Aren't there newer, superior renderers for Project 64 that natively use more up-to-date graphics APIs to begin with?

Fanatic-64 commented 3 years ago

Aren't there newer, superior renderers for Project 64 that natively use more up-to-date graphics APIs to begin with?

Well yes, but back when I opened this issue, Jabo was still the default rendering plugin for Project64, and really the only newer one is GLideN64, which is OpenGL 4.5 (and there's a good chunk of GPUs that support DirectX 9 but not OpenGL 4.5, including a lot of laptops with Intel IGPs).

Moreover, I opened this issue because it means there's likely a problem with the way that d3d8to9 handles transparent polygons (on original hardware, this game draws a semi-transparent blue rectangle over the image, while Jabo normally renders it as fully transparent, and with d3d8to9 it is rendered as opaque white), which might also affect other games/applications, and I figured the developers might like to know about the issue, however specific it is.