Next Generation Emulation banner

PCSXR-PGXP

660K views 1K replies 155 participants last post by  helpmesimba 
#1 · (Edited)
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.

Features
  • High Precision Vertex Data (more stable geometry)
  • Reduced Triangle Culling (more detailed models)
  • Perspective Correct Texture Mapping (reduced texture distortion)

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.

Links
Most Recent Builds:
WIP_PGXP_build_19_03_02.zip


Source Code:
PCSXR-PGXP: https://github.com/iCatButler/pcsxr
Tapeq's OpenGL Tweak Plugin with PGXP: https://github.com/iCatButler/PeteOpenGL2Tweak

Additional Links:
Official PCSX-Reloaded Home Page: https://pcsxr.codeplex.com/
Pete's OpenGL2 PSX GPU Plugin: http://www.pbernert.com/html/gpu.htm#OGL2
Visual C++ Redistributable 2015: https://www.microsoft.com/en-us/download/details.aspx?id=48145
Visual C++ Redistributable 2010 (may be needed for other plugins): https://www.microsoft.com/en-gb/download/details.aspx?id=5555
Tapeq's Tweak Plugin Thread: http://ngemu.com/threads/peteopengl2tweak-tweaker-for-peteopengl2-plugin-w-gte-accuracy-hack.160319/

Previous Builds:
WIP_PGXP_build_18_12_16.zip

WIP_PGXP_build_17_04_25.zip
WIP_PGXP_build_17_03_19.zip
WIP_PGXP_build_16_08_01.zip
WIP_PGXP_build_16_08_31.zip
WIP_PGXP_build_17_03_17.zip


Thanks to:
Tapeq
Pete Bernert
Edgbla
Simias
The PCSX-R team
And everyone who has provided feedback.
 
See less See more
5
#836 ·
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.
 
#839 ·
@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.
 
#841 ·
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.
 
#843 ·
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.
 
#845 · (Edited)
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!
 
#846 ·
#849 ·
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.

Info-Links.txt
Code:
Version:
  https://ci.appveyor.com/project/iCatButler/pcsxr/build/job/ai2w66fyb1rhf440/artifacts
  https://buildbot.orphis.net/pcsx2/index.php?m=dl&rev=v1.5.0-dev-2515-gd09ac6d58&platform=windows-x86

Plugins:
http://www.pbernert.com/html/gpu.htm
https://buildbot.orphis.net/pcsx2/
https://www.ngemu.com/threads/p-e-op-s-soft-driver-refresh.202433/#post-2689025
http://www.emu-france.com/divers/18-plugin-psx/189-gpu/6625-peteopengl2tweak/

Try new plugins at:
http://emu-russia.net/en/files/plugins/psx/
http://www.emu-france.com/divers/18-plugin-psx/189-gpu/
http://emulation.gametechwiki.com/index.php/Recommended_PS1_Plugins

VirusTotal:
https://www.virustotal.com/en/file/389b855155c36070cacf00657d4e9fd927403fe296f256f4c39b537c58c14658/analysis/1535404443/
any difficulty let me know. usually it is just unpacking, configuring plugins and play. cheers
 

Attachments

#857 ·
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.
 
#859 ·
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.
 
#867 ·
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.
 
#869 ·
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.
 
#872 · (Edited)
@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

The rest of the bt can be found here.

https://pastebin.com/DaDEY8L1
 
#877 ·
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 :p), 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.
Top