PGXP (Parallel/Precision Geometry Transform Pipeline) is an enhancement for PlayStation emulation that produces high precision fully 3D geometry data that was not available on the original console hardware.
It is currently integrated with PCSX-Reloaded via Pete's OpenGL v1.78 plugin and Tapeq's Tweak extension to Pete's OpenGL v2.9 plugin.
Note: This project is still very much a work in progress.
Chrono Cross: Distortion of model geometry is significantly reduced, especially at a distance.
Ridge Racer Type 4: Higher precision culling calculations mean that small triangles are no longer culled
Tomb Raider: 3D vertex coordinates mean affine texture mapping can be replaced by perspective correct mapping
Setup Instructions
Download the required files (links to these can be found below):
A WIP build of PCSXR-PGXP
A complete install of PCSX-Reloaded
Pete's OpenGL2 PSX GPU Plugin v2.9
Copy the PCSXR-PGXP.exe file from the WIP build to the root folder of the PCSX-Reloaded (the one with the PCSXR.exe file in it). Then copy the gpuPeopsOpenGL.dll and gpuPeteOpenGL2Tweak.dll files to the "Plugins" folder.
If you don't already have it copy the "gpuPeteOpenGL2.dll" file to the Plugins folder too (this is required for the Tweak plugin to work).
Note: If the plugins fail to appear in the "Graphics" menu of the "Plugins & Bios..." window then you may need to install the Visual C++ Redistributable 2015 (x86).
Debug Visualisations
Various shading modes are available by pressing F11 when using the OpenGL 1.78 plugin each of which show different information regarding vertices. There are currently three such modes that can be cycled through, the first shows the different states of each vertex:
Blue: Successfully tracked from transformation on the GTE to the GPU.
Cyan: Tracked but has lost its 'w' component.
Yellow: The vertices belong to a 2D sprite element.
Red: No valid value was found so it falls back on the native low precision values.
Green: A suitable high precision value has been found in the cache
Magenta: Multiple high precision values were found at the same position of the cache, making the result ambiguous, so the low precision value is used.
The other two modes display depth values as a spectrum through blue, green and red. The second mode being the 'w' components of the vertices (in older versions this was grey scale).
The last shows depth information taken from the Ordering Table used by the PlayStation to sort primitives so they can be rendered from furthest to nearest.
Hey, I noticed there were updates on the GitLab (couples of months back).
Will they be rolled over into a new build of PCSXR-PGXP? If not, can we assume the development as "dead" since its been quite a while since a new release...
You can find windows builds up to the latest commit on appveyor, if you are on linux or mac you will have to build from source because I haven't configured travis to produce artifacts yet. As for a proper release, I have no clue, there haven't been any advances in PGXP as far as I can tell from the commits, and my commits have been mostly cleanup and automation.
@loathingkernel I noticed you were the one who packaged this for Arch, thank you for that! One question, when running on fullscreen, I get distorted colors. I've tried changing many settings with no success. It seems to happen when I run at my native resolution (1920x1080) or when I have a gamepad plugged in (very strange). I'm running on Intel drivers. It's not major since I can run windowed, but if you happen to know a fix I'd greatly appreciate it.
I wanted to throw my two cents of appreciation in here. Until recently, I've been using RetroArch with _HW.dll but I never really had that best of luck in compatibility (broken textures with PGXP etc, although it does well for what it is) then I discovered this thread. After 3 days.. yes, I'm a little slow lol I FINALLY figured out how to get it to work building it with files I found off the net because it seems the original links, a couple are down or maybe my out of date Edge browser won't let me open.
Anyways, here is my buddy playing Medal of Honor in ePSXe with GTE enabled.
Here is me playing with PCSXR-PGXP with GTE Mem Hack only all 3 options checked and OpenGL GTE accuracy.
iCatButler you are awesome sir, I've never ever seen my PS1 games look so good. I find that even tho the _HW.dll for RetroArch is a direct port (I think?) that the standalone PGXP works much better for me even a lot faster. The GPU overclock on RetroArch breaks my games, for example setting it to 2.75 results in the game being extremely choppy at areas and smoother the next. Standalone lets me use 2.75 for Medal of Honor for a buttery smooth 30fps thruout the game.
Trying to do this, but I get an error when I try to switch plugins. I installed it exactly as said. I already have the VC 2015 installed. I tried to reinstall it, but said a newer version is installed, so yeah.
Visual C++ 2017 Redistributable replace the 2015 redistributables. In any case, the AppVeyor build uses 2017.
In addition, other plugins may require another redistributable versions (Visual C++, DirectX, .NET, etc).
Personally, I can't think of any third-party plugin that fits at all with "PCSXR-PGXP". Maybe those from here?
Dunno, getting too technical for me I think. Damn. Thanks though, which it would just "work". Can't find a way to download from those links...really wanna give it a try though!
I downloaded this and it said the Input plugins were missing. I grabbed them from a normal release of pcsxr. But it still won't start and there is no link cable plugin and I'm not sure where to get it.
I downloaded the version and put it together with the most common audio and video plugins, tested Tekken 3 and Gran Turismo using Logitech Dual Action USB.
The slow boot looks a bit off with PGXP with the current build so I usually leave it off for PGXP but leave it on when I use my main ePSXe build. Sweet sweet sounds
It can be improved, but it's extremely difficult and would require lots of work and time that not many people can invest into this project.
There's also the issue that no one is working on updating or making new plugins for it, everyone to this days use 10 year old plugins.
Just want to share a fix to a problem I was encountering in case anyone comes across this. Some of the PCSX-R builds I was downloading were missing the "Link Cable" plugin, which caused PCSX-R to fail on the initial configuration with the message "Configuration not OK". This was due to the missing plugin. I finally found a build with the "sio1Blade 1.1" plugin, and placing it in the plugins folder fixes the problem. Here is a link to download it in case anyone needs it: https://drive.google.com/file/d/1G6kaXaAL9vH-27G1LNNzWiTMfwrTFobd/view?usp=sharing.
You didn't, no, but not every game is a best case scenario; Grandia actually has worse jitter with PGXP enabled. Some games are looking a bit better in Beetle PSX HW now (which is where development has apparently shifted to), but some games still work better than others.
Some games are looking a bit better in Beetle PSX HW now (which is where development has apparently shifted to), but some games still work better than others.
I really with it didn't, I just can't stand RetroArch and it's UI approach. I wish somebody just made a frontend for Beetle that looks and works exactly like ePSXE/PCSX-R.
Development of PGXP has not shifted exclusively to Beetle, it's just stalled in general for the moment.
Most of the reasons for that lie with me and the way my life's been going for some time. There are a lot of features and improvements that I'd like to implement for PGXP that could be rolled out across both PCSX-R and Beetle but the scope of those features is beyond what I can deal with at the moment (not to mention the changes needed to integrate them into the various renderers).
The build of PCSXR-PGXP that supports a depth buffer and depth testing is stuck mid-development, at present it doesn't run even a single game without glitches and various hard coded hacks. Not to mention it totally wrecks Pete's mask bit emulation which uses the depth buffer as a sort of per-pixel counter.
My recent contributions to Beetle have been initially to fix some long standing issues with the PGXP integration that resulted in errors with perspective correction that weren't present in PCSX-R, they're not improvements to PGXP nitself. Beyond that I've been helping with a few problems with other features like texture filtering and support for games like Doom and Dark Forces, being able to refer to Pete's solutions made it easy to get a good idea of what was going on. They're small enough in scope to be manageable but still useful to people.
It shouldn't be too difficult to bring across some of these fixes to the OpenGL 1.78 such as the improved line hack used for Doom, Soul Blade, etc. as well as using some of the shader tricks to implement better texture filtering and texture window handling. It would still need a lot of work to supplant the OpenGL 2 plugin though, let alone reach parity with Beetle's Vulkan renderer, so in isolation they might not get much use.
How compile pcsxr? I tried with Visual Studio 2017, but with SDK 8.1 it does not work. I tried to redirect to SDK 10, but I have some problems ... The program then appears without an image, when you open it the main screen is gray.
I use Visual Studio 2015 with SDK 8.1 set as the target, I haven't upgraded to 2017 but it should migrate the solution automatically.
I think the PCSX-R logo that used to appear in the main window was broken when I merged one of the recent pull requests, it's missing on my local builds too, but I haven't got around to looking through the commits to find out what happened to it. It shouldn't cause problems for the emulator itself and I was too busy trying to fix issues with the depth buffer implementation.
@iCatButler Just so you know i get segfaults with both the Xvideo and OpenGL drivers from pcsxr-pgxp. Here
is some of the bt.
Thread 1 "pcsxr" received signal SIGSEGV, Segmentation fault. 0x00007fffcd31615d in FillSoftwareAreaTrans ()
from /home/owner/.pcsxr/plugins//libDFXVideo.so
(gdb) bt #0 0x00007fffcd31615d in FillSoftwareAreaTrans ()
at /home/owner/.pcsxr/plugins//libDFXVideo.so #1 0x00007fffcd30d583 in primTileS ()
at /home/owner/.pcsxr/plugins//libDFXVideo.so #2 0x00007fffcd308e7d in GPUwriteDataMem ()
at /home/owner/.pcsxr/plugins//libDFXVideo.so #3 0x00007fffcd3092d4 in GPUdmaChain ()
at /home/owner/.pcsxr/plugins//libDFXVideo.so
@iCatButler Are you aware that PGXP operation mode "memory + CPU" doesn't work at all on Retroarch's Beetle? The "memory" mode works just as good as on PCSX-R.
You're both right. I crawled through all the CPU instruction handling in Beetle and there were a couple that weren't hooked up to PGXP for some reason. That's why it was working with some games but not others (to the extent that it works at all anyway ), any time the missing instructions were called it just invalidated the vertex data and carried on.
I'll get the changes checked in and make a pull request soon. I've got some other Beetle stuff I was trying to fix, but that's behaving even more strangely.
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.
Related Threads
?
?
?
?
?
Next Generation Emulation
2.2M posts
459.8K members
Since 2001
A forum community dedicated to all emulation enthusiasts. Come Join discussion on all platforms from Nintendo, Microsoft Xbox, Sony Playstation, to PC. Coding, tips, builds, specs, tricks and more.