Friday, March 16, 2018

PCSX2 [DX11]

3D Vision feature for PCSX2, the PlayStation 2 emulator (DX11 hardware renderer). It uses a manual shader stereoization method without using physical shader files, for better future compatibility.

ANOTHER IMPORTANT UPDATE (2018-03-16): updated for 3Dmigoto 1.3.6, now compatible with ReShade without needing extra steps unrelated to ReShade (I've tested it as dxgi.dll. Its ingame interface, shaders and hotkeys were working fine). Also, at some point in time it started triggering 3D without SpecialK (the old "d3d9.dll" and "d3d9.ini"). That means no more booting games in a weird manner! It isn't caused by the new 3Dmigoto. It may have been drivers or Windows updates, I'm not sure.
SBS, TAB and other 3D modes now run flawlessly. Check the updated instructions and delete all you had from the previous fix, except for the workaround to make 3Dmigoto load in Windows 10. Old version here.

IMPORTANT UPDATE (2018-01-19): fix updated. the new 3Dmigoto 1.2.70 allows me to stereoize render targets automatically. It means that custom resolution tweaks or "Large Framebuffer" aren't needed anymore.

Warning number 1: this isn't as "plug and play" as PC games fixes. It will need user involvement depending on how much you want a perfect experience, because it's impossible to have all games fixed at the same time. It also requires games to be booted a certain way.

- Get a recent PCSX2 build, equal or newer than "pcsx2-v1.5.0-dev-2324-g6aaae6970-windows-x86". Download links are here.
- Configure the graphics plugin (GSdx) to use the DX11 hardware renderer.
- For PCSX2 to be able to see the "d3d11.dll" of the fix on Windows 8.1 or higher, you need to apply this patch for the moment. If the bat file doesn't work, using the "sdbinst d3d11_fix.sdb" in CMD with admin rights may work.
- Download the fix here and unzip its contents in your PCSX2 folder.
- If you have Windows 7, chances are that PCSX2 won't trigger 3D Vision. If that's the case, unzip this there too and follow the old instructions to boot games.

Booting games
Nothing special is needed now. Just make sure you're using DX11 hardware mode and double click the window if you didn't configure PCSX2 to boot games in fullscreen directly. It will automatically use your full resolution and trigger 3D. Switching to other renderers won't crash the emulator anymore. They just won't be 3D.

Old instructions, not needed anymore:

This needs a special procedure. After installing all the needed files, if you try to open the GSdx configuration, the emulator will crash. Follow these steps:

- Open the emulator.
- Choose a game (choosing the ISO from the recent list, or searching one manually...) and boot it.
- After graphics of the game start to appear, or at any moment after that, open the GSdx configuration (you can press escape to close the game or just open the configuration directly), change settings if you want, and then close it. It doesn't matter if you apply changes or not. This action will unlock esclusive fullscreen, needed for the next steps.
- Double click on the game window so it's resized to borderless fullscreen.
- Press alt+enter, and the game should trigger exclusive fullscreen and 3D Vision.
- If it doesn't work at first try, double click again until it's borderless fullscreen and try pressing alt+ enter again.

GSdx configuration requirements and recommendations

1- Interlacing: games that shake when the option is set at "None" will most likely be perfect with the "Bob tff" option, and in some rare cases, "Bob bff". Knowing is a game is interlaced (half vertical resolution, which most of these shaky games have) is important for the next steps.

2- Large Framebuffer: it's needed for 3D when you play at 3x native resolution or higher IF the game doesn't have a "progressive scan" mode or cheat code. Warning number 2: this option increases VRAM usage A LOT at 5x-6x native resolutions and higher. Unneeded after the 2018-01-19 fix.

3- Custom resolution: it's needed for 3D IF you are playing an interlaced game (unless you play at native or 2x native) OR IF you really don't want to use "Large Framebuffer". Interlaced games need a higher than normal vertical resolution. Example: Devil May Cry only works in 3D with 3840 horizontal resolution if the vertical resolution is 2879 or higher.
Note: there are ways of forcing 3D via "TextureOverride" in "d3dx.ini". Read the shader overrides explanation. Unneeded after the 2018-01-19 fix.

4- Enable HW Hacks: some games need some of these to render right, especially "Align Sprite" (some Namco games like Soul Calibur 3 or Tekken 5), which demands native resolution multipliers, and "Half-pixel Offset", to have some bloom effects at their correct position. Things not related to 3D.

Use of regex toggles
This fix was done without using physical shader files, for better future compatibility. Instead, it uses a real time "find and replace" function for exactly three shaders that control all geometry in all games.

The problem is that some effects of those shaders need to not be stereoized, like the HUD or some double stereoized effects (sometimes bloom, blur filters, shadows...). The regex function tries to not stereoize things that have a depth value of 0 or 1, and in some games it works (most of the HUD of the Kingdom Hearts games).

The first and most simple solution, which may be partial or fix some things and break others but it's useful many times, is using three hotkeys I offer to disable stereoization in each of the three shaders that control geometry. They are "j", "k" and "l", and I'll refer to them as "regex 1", "regex 2" and "regex 3". And that's also their order of importance, as you'll almost never have to disable the first one. A lot of times a mix of regex 3 and regex 2 will fix HUD issues, but regex 2 is usually related to other effects. In the "PCSX2_3D_game_database.txt" file I include I made a compilation of results of games I have and when you need to disable regex 2 and/or 3 or none.

Use of shader overrides. Warning number 3: for advanced users and perfectionists
Sometimes, or usually, disabling some of the regex isn't enough to make a game perfect or almost perfect, because you will be disabling more things than needed. Or maybe the HUD is related to regex 1. In these cases, you need to tell the regex to not stereoize a specific pixel shader. This is where things get more complicated, for these reasons:

1- Future PCSX2 (specifically GSdx) builds may change the hash of the generated shaders, rendering all game specific fixes useless. Still, games don't usually need a lot of these. Most of the affected games need between 1 and 3 in my experience.
2- Fixing something in one game can break something else in another game, or even in the same game in some cases. So fixing all games at the same time is impossible. Even with a small library of 30 something games I found a little more than 10 conflicts between games.

Now about how to do a shader override. The fix includes working examples for games I own. Check the "d3dx.ini" file, under "Specific game fixes". The first elements you will see are:


Those are the three vertex shaders I stereoize with regexes, and their default values for stereoization. "x3" for regex 1, "y3" for regex 2, and "z3" for regex 3. "w3" is an extra option about the fix I made for the skybox in the Ratchet & Clank saga (it forces the skybos to max depth without breaking other things in those games).

The values after "Hash=" may change with future GSdx versions, but I will be able to recognize them and update the fix.

Sections below them are game fixes with comments saying what they fix. They contain the hash of the pixel shader, and the value they pass to their parent vertex shader. If you write for example "z3=1", it means that regex 3 won't stereoize that specific pixel shader. If it's "y3=0", it means it will stereoize it, the same as not writing the shader override at all. Useful if you want to enable/disable game fixes break effects in other games.

How to get the pixel shader hashes? Search the "hunting=0" line and change it to "hunting=2".

Warning number 4: this will make games less stable when switching out of fullscreen, and VRAM usage will be higher.

After that, run the emulator and play the game you want. Press "0" in the numpad and you will see a green overlay. Numpad keys 1 and 2 will cycle through the available pixel shaders, disabling the current one. Numpad key 3 will dump the shader inside the "ShaderFixes" folder. Get the hash (filename part before "-ps_replace.txt"), open the "ShaderUsage.txt" file that will appear in the emulator folder and search that hash. Example of a random pixel shader:

<PixelShader hash="07ee058e5bed1e6b">
  <ParentVertexShaders>6d64bfd710f98b05 </ParentVertexShaders>

The pixel shader "07ee058e5bed1e6b" is related to vertex shader "6d64bfd710f98b05". If you look a few paragraphs above in this post, you will see that it's regex 1. If you want to not stereoize that effect, write this in "d3dx.ini", below the other shader overrides:


Then you can go back ingame without closing it, make the game 3D with the explained method, and press F10. Changes should be applied instantly (it will also reset the state of all hotkeys).

When you are done, close the game and set "hunting" to 0 again. And you can delete your dumped shaders that are inside "ShaderFixes".

Note: the included "d3dx.ini" includes shader overrides for many games I have (with explanations about what they affect). There could be conflicts with other games, as I have explained. If you suspect they could be interfering with your game of choice, delete them, but not the regex ones that are at the start.

Texture overrides
With this, you can force games to be 3D that you want to play with native resolution multipliers, without needing "Large Framebuffer" or custom resolutions, for games without progressive scan mode. Dump any pixel shader, as previously explained. Check "ShaderUsage.txt" and go to lines starting with "<RenderTarget orig_hash=". Get the hash of all render targets there and write it like this Devil May cry example in "d3dx.ini":

;Stereoization of 3840x2160 in DMC.
Hash = c742d5b7
StereoMode = 1
Hash = 3e068917
StereoMode = 1
Hash = afead9ca
StereoMode = 1
Hash = 98dd53df
StereoMode = 1

After reloading with F10 or running the game again, it should be 3D. However, every resolution has different hashes. Remember to disable hunting mode.

 Unneeded after the 2018-01-19 fix.

You will probably need at least some of these hotkeys (which you can configure in "d3dx.ini") when playing:

- v: it changes the type of stereoscopic cameras. By default, both eyes get a modified view for 3D. With one click, the right eye will have the same camera angle as 2D and the left eye will do all the 3D work. One more click, and the opposite will happen. And the last preset returns it to normal. It can be useful for games that stereoize the HUD, making it invisible at normal convergence modes. With the dominant eye you will see all game effects normally.

- b: toggle to unstretch 4:3 games from 16:9. It will be buggy depending on the game, and the sides will flicker. Avoid using this if possible.

- j: regex 1 stereoization toggle.

- k: regex 2 stereoization toggle.

- l: regex 3 stereoization toggle.

- h: convergence presets. Different games may need wildly different convergence levels. I tried to cover as many cases as I could.

- g: multiple God of War 1 and 2 separation and convergence combination presets, from higher to lower. These games present geometry with very compressed depth. This is a workaround that makes them normal. Each preset was carefully crafted, so don't touch your Nvidia convergence hotkey or convergence presets. The Nvidia separation hotkey or wheel is OK to use. Don't use this hotkey with other games unless you find another like them.

- f: toggle for moderately higher max separation. Some games like Soul Calibur 3, Tekken 5, Ys IV and Ys V use a lower separation than the rest of games. 5.6cm instead of 7cm in my monitor. This hotkey makes them have the same depth as the other games. Don't use it with unaffected games unless you know you want it.

Fix updates
I will probably keep updating this if PCSX2 changes the regex shaders. Also, exclusive fullscreen may be an official feature in the future, which will make the included "d3d9.dll" and "d3d9.ini" unnecessary. And it will also make the game booting process simpler and more stable.

I also keep the "d3dx.ini" file in my github account. If the date of that file is newer on github, use it instead of the one that comes with the fix, because it may contain small fixes.

User contributions for shader overrides are welcome. Just know the risk of them becoming obsolete in future PCSX2 updates. The fix was first done using "pcsx2-v1.5.0-dev-2249-g49cd6bc78-windows-x86", and I can confirm a build few versions newer than this, used by a different person with different drivers, was compatible with all shader overrides.

Side By Side / Top And Bottom / Interlaced compatibility
Uncomment the ";run = CustomShader3DVision2SBS" line in "d3dx.ini" and then press F11 ingame (once it triggers 3D) until you have your desired mode.

This below was for the old version of the fix and it's unneeded now (I'm keeping it just in case):

Normally you would have to uncomment the ";run = CustomShader3DVision2SBS" line in "d3dx.ini" and then press F11 ingame (once it triggers 3D) until you have your desired mode. However, the game window stays black when you try to do it.

The workaround is not enabling that line, starting the booting process until after you have "unlocked" the exclusive fullscreen possibility, uncommenting the ";run = CustomShader3DVision2SBS" line, saving changes, going ingame in fullscreen mode, pressing F10 to reload the configuration, and then pressing F11 until your 3D mode is selected.

Painful, I know. I don't know a way to fix this completely. But the workaround works.

Special thanks
- All 3Dmigoto developers and contributors (bo3b, DarkStarSword, Flugan...).
- All PCSX2 developers and contributors. Without them, we wouldn't be able to even play these games in 2D.
- Kaldaien, for the specific SpecialK build I used in older fix versions to force exclusive fullscreen (0.7.0).
- RibShark, the one who made the compatibility patch to make 3Dmigoto work with PCSX2 on Windows 10.
- Kaimasta, for helping with testing and giving good ideas and inspiration, like the God of War hotkey.

If you liked this and want to contribute for more future fixes, you can donate to this PayPal account:


  1. Brilliant work Masterotaku!
    So many great game`s to try out :)
    Also thnx for all the other great work

  2. Thanks for the fix, let me know if anyone has gotten this working with Windows 7. I am using a passive 3D television display, I get the green text saying PCSX2 but no stereo.

    1. By green text, do you mean the driver profile thing? Have you followed the "Side By Side / Top And Bottom / Interlaced compatibility" section correctly (if it's correct, at the last step using F11 multiple times should be changing 3D modes. If 3D didn't trigger, F11 won't do anything)? And what game are you trying to play?

      You can post the information I need in this thread:

      Because I don't get notifications when there are new comments in the blog.

    2. masterotaku,You're really so great!a Silly question,anyone know how to enable vsync in the lastest version of the simulator ?

    3. The vsync setting that PCSX2 has is useless in my experience. But using "Vertical Sync" -> "Force on" in the drivers (PCSX2 profile or globally if you like it) works perfectly. It will apply when you are in exclusive fullscreen mode. You'll notice it because disabling the frame limiter won't let you surpass 60fps, and you won't see tearing in any case.

    4. Its ok, I was so excited about this fix went and got me a pair of 3D Vision 2 glasses and a decent display so I can enjoy this and all the other great work that has been done here!

  3. I'm sure i'm doing something silly but I am on windows 7 and cannot get anything other then a black screen. The normal green driver profile text appears as well as the game sound. Trying Final Fantasy 12, followed the "side By side...." with no luck, any help???

    Thank you so much for your hard work regardless.

    1. Never mind I was being silly, had a second display plugged in. Works perfect. Masterotaku you are the man!!! Thank you for being awesome and doing what you do (and a super cool name)

    2. Thank you. It's great that you solved that issue yourself, because I don't use more than 1 monitor and couldn't have helped about that.

  4. Thanks for the fix, followed your instructions and tried to make a fix for Forbidden Siren 2 (PAL) on Windows 10. Played through on normal difficulty and everything seems to be fine. Adding in case someone might find it helpful, although there's only one shader that really needs to be disabled and people could just do that with hunting mode...
    ------------add below lines to d3dx.ini----------------
    ;Forbidden Siren 2 (PAL)- needs shader overrides 2 and 3 disabled
    ;GSdx > Advanced Settings & Hacks- merge sprite can help a little with the vertical lines bug
    [ShaderOverrideSiren2_1] ;makes dog/memory sightjacking visible (may make some scenes darker?)
    [ShaderOverrideSiren2_2] ;removes some visual garbage when sightjacking

  5. @masterotaku

    Out of curiousity what advice can you give you give about PCSX2 [even ignoring 3d for a second]. I've put it off for years and been waiting for development to progress and I plug games and get anomalies from increasing resolution. Seems like thats just the way it is and options are go native or get anomalies.


    1. It's useful to check the wiki for specific games ( Some games need hardware hacks, and some don't. I don't have that many games to test, but in general most work fine.

      Some graphics issues are fixed in OpenGL and not in DX11, but we can't use this 3D fix with OpenGL, so sacrifices have to be made. But still, things are better than they were years ago in general.

      I don't have much else to say, other than "don't depend on savestates too much", "overclocking the EE is cool for some games that have variable internal fps", "try not to be GPU limited", etc.

  6. Dear masterotaku. You fix not working with reshade 3.1.0
    Can you check it and fix, if it possible? Reshade is absolutely necessary for pcsx2 - ambient light, fake hdr anm many more great fullscreen shaders there, that makes old games much better

    1. BTW Theese two things can work together (dxgi.dll and d3d11.dll) different dlls loadsame time. I use it both in ffx hd remake for example

      But in this game video plugin not loading

    2. Give me a few days for this. There are new versions of 3Dmigoto that added better Reshade compatibility. Getting 3D to work as it does right now was already difficult, so I won't be surprised if I encounter problems with Reshade even with a new 3Dmigoto build.

    3. Thank you. I hope this two great enchancers will work togathet with your help

    4. Done. ReShade works with this new version that I've just uploaded without problems. Also SpecialK isn't needed anymore (the "d3d9.dll" and "d3d9.ini" files).

      I have tested it in real time with the ingame interface. DoF and similar effects didn't seem to detect depth in the scene, but other effects were working fine.

  7. So i did this on thursday (before the march 16 update) and it didn't work. So ALL i have to do this time around is these instructions and it SHOULD work..?

    only doing this i mean:
    "- Get a recent PCSX2 build, equal or newer than "pcsx2-v1.5.0-dev-2324-g6aaae6970-windows-x86". Download links are here.
    - Configure the graphics plugin (GSdx) to use the DX11 hardware renderer.
    - For PCSX2 to be able to see the "d3d11.dll" of the fix on Windows 8.1 or higher, you need to apply this patch for the moment. If the bat file doesn't work, using the "sdbinst d3d11_fix.sdb" in CMD with admin rights may work.
    - Download the fix here and unzip its contents in your PCSX2 folder."

    ALL i need is these 4 steps to get sly 2 and 3 working in 3D..? or do i need anything else? i have no idea what this helix mod is btw, do i need to install this "helix mod" thing before i do the previous instructions..? and if yes, can someone please give me a link to the installation of helix mod?

    1. If you use Windows 10 with recent drivers, you just have to run that ".bat" file and unzip the contents of "PCSX2_3D_Vision_feature.7z" in the emulator folder. Then run a game using the DX11 hardware renderer. If it's Windows 7, the emulator may not trigger 3D Vision so you'll need a zip with two more files that I've included as a separate download ("d3d9.dll" and "d3d9.ini"). They complicate the game booting process, so let's hope you don't need them.

      Remember that I made the fix in the most general way possible. It's impossible to fix specific games (there could be exceptions) without breaking others, but I offer the tools and instructions to do it if you know what you have to sacrifice.

      By the way, "helixmod" is just the name of the blog, in honor to "Helix", the person that started the 3D fixing thing many years ago. If you have more problems after this, better post in this thread so I can follow comments more easily, because the blog doesn't notify me about comments:

    2. ahaa thanks a lottt man, i have windows 10 yeah. So i'll try it again on thursday and see if it works after the new update you released on 16 march. BTW, i'm playing sly 2 on it (or trying to make it work in 3D i should say)

  8. AMAZING !!! masterotaku is really a master :)

  9. Followed your instructions and got it to work with Windows 7, but couldn't get Windows 10 to work (will not switch in to 3d MOD with Win 10). Trying to play GOW 2. Have changed into full screen, I know 3d vision is working on my win10 system, but for whatever reason, it will not switch to 3d mode in Win 10. Looks awesome when it works in (win 7). Have the latest win 10 drivers. Installed the d3d11_fix_install.bat as an admin, but just can't get it to work.

  10. Greetings masterotaku! Good job!
    But! Unfortunately, I never managed to start 3D mode. Did everything according to your recommendations. Read here:

    Obviously, 3D Fix does not work in my case.
    WIN 10. is updated automatically. I use 3D TV PLAY and SONY HMZ T-3
     3D MIGOTO in other games is working!
    When the games are running in full screen mode - there is a green inscription. The pointer on the screen, also shows the included 3D mode. But! The image is absolutely flat. There is neither depth nor convergence.
    Please, Help! :-)

  11. ihunted 3 PS shader associated with HUD in Viewtiful Joe,i want to unstereoize shader,so i did this:
    all shader become 2D