libretro / beetle-psx-libretro

Standalone port/fork of Mednafen PSX to the Libretro API.
GNU General Public License v2.0
309 stars 131 forks source link

PGXP Graphics Issues #626

Open subvitte opened 4 years ago

subvitte commented 4 years ago

If I activate PGXP (memory only) it produces breaks in the map. This happens with all 3D games I've tried (Gran Turismo, Spyro, etc.)

Tested in Retroarch 1.8.4 witch Vulkan and OpenGL. Windows 10 x64. Nvidia GTX770.

Renderer: OpenGL (also Vulkan) Software Framebuffer: On Adaptive Smoothing: Off Internal GPU Resolution: 8x (also 1x) Texture filtering: nearest Internal Color depth: 32bpp Wireframe Mode: Off Display Full VRAM: Off PGXP operation mode: Memory only PGXP vertex cache: Off PGXP perspective correct texturing: On (the others parameters all default)

aktau commented 4 years ago

This also happens on Linux (Debian Bullseye, Intel Gen7, Vulkan).

Beetle PSX commit c7c8ffd3d2cf1c780ccf98417e60908f9adf970d.

Common options to all tests:

Option Value
CPU Dynarec Disabled (Beetle Interpreter)
MSAA 1x
Texture Filtering Nearest
Dithering pattern OFF
Internal GPU Resolution 4x (but doesn't matter, they appear on all resolutions

No gaps:

Option Value
PXGP Operation Mode OFF
PXGP Vertex Cache OFF
PXGP Perspective Correct Texturing OFF

Mild flickering gaps (this really also happens when PXGP Operation Mode is set to off, despite the documentation claiming that the PGXP Vertex Cache value is not respected if PXGP Operation Mode is not enabled. This at least is a documentation bug):

Option Value
PXGP Operation Mode OFF or MEMORY_ONLY (similar result)
PXGP Vertex Cache ON
PXGP Perspective Correct Texturing OFF

Slightly wider, persistent gaps (this is unexpected, MEMORY_ONLY + Vertex Cache ON is better than MEMORY_ONLY and Vertex Cache OFF. Enabling each one individually is bad but their badness does not seem to combine, and in fact MEMORY_ONLY but Vertex Cache ON is better than just MEMORY_ONLY).

Option Value
PXGP Operation Mode MEMORY_ONLY
PXGP Vertex Cache OFF
PXGP Perspective Correct Texturing OFF

Heavy, wide gaps (not always the same locations as the previous section):

Option Value
PXGP Operation Mode MEMORY_ONLY
PXGP Vertex Cache OFF
PXGP Perspective Correct Texturing ON

No gaps (as expected because the docs state that Perspective Correct Texturing depends on PXGP operation mode not being OFF:

Option Value
PXGP Operation Mode OFF
PXGP Vertex Cache OFF
PXGP Perspective Correct Texturing ON
subvitte commented 4 years ago

This also happens on Linux (Debian Bullseye, Intel Gen7, Vulkan).

I've tried PGXP + Vertex Cache, but it produces artifacts in graphics. Is there any solution to the problem?

lmills87 commented 4 years ago

I seem to get similar behavior in Metal Gear Solid, in addition to clipping through the map boundaries (more severely when memory+CPU is enabled compared to just memory).

Sanaki commented 3 years ago

This may have been fixed by PGXP Primitive Culling. Worth rechecking.