3D Fix Manager - Application for installing 3D Vision Fixes

Post Reply
User avatar
schwing
Cross Eyed!
Posts: 171
Joined: Mon Sep 16, 2019 5:51 am

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by schwing »

    That looks similar to mine, though I have a 980 Ti. I was reading your Discord messages and was wondering if DDU or some refresh is needed to get 3D working again. Being on the latest Win 10 version requires the 1903+ mod to be enabled before starting a game.
Win 10 v1909 / 1x Nvidia 980Ti GPU (v452.22, 1080p)
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

nintynuts wrote: Mon May 11, 2020 1:56 pm

Code: Select all

Graphics Card: NVIDIA GeForce GTX 970 Path: C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll
Sorry, everything looks correct here. This is the normal driver path for your driver version. You can recheck this path (C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac) when clicking on "Settings" tab -> "Nvidia 3D Settings" tab. There is a button "Driver Store". If this points to the same directory 3DFM modifies the correct driver DLL. It seems that only LG OLED people got issues now. As posted above there is no way to test this for me unless you send me your OLED TV.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

nintynuts wrote: Mon May 11, 2020 1:56 pm

Code: Select all

Graphics Card: NVIDIA GeForce GTX 970 Path: C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll,C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac\nvldumdx.dll
It's just my GPU name and the same DLL path repeated 4 times.
Yeah that's absolutely fine. This call strangely delivers 4 times the same path but it lists all graphics card. Just wanted to see which graphics cards you have and where the driver of each of them are installed to.

Does BringBack Tool work for you?
nintynuts
One Eyed Hopeful
Posts: 8
Joined: Mon May 11, 2020 1:33 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by nintynuts »

schwing wrote: Mon May 11, 2020 2:01 pm     That looks similar to mine, though I have a 980 Ti. I was reading your Discord messages and was wondering if DDU or some refresh is needed to get 3D working again. Being on the latest Win 10 version requires the 1903+ mod to be enabled before starting a game.
Windows had forced a driver update since I last did shaderhacking. A month or two ago, I tried to patch in 3D vision, but it went wrong in an entirely different way.
I used DDU before I installed 425 to fix those issues. Since then, 425 on 1909 was working fine without the 1903+ fix (which only appeared since updating 3DFM today).
As I said, I tried launching games with and without the 1903+ toggle today with the 445 and 3D vision mod but it made no difference.
Pauldusler wrote: Mon May 11, 2020 2:01 pm Sorry, everything looks correct here. This is the normal driver path for your driver version. You can recheck this path (C:\WINDOWS\System32\DriverStore\FileRepository\nv_dispi.inf_amd64_9952681a7bb1dfac) when clicking on "Settings" tab -> "Nvidia 3D Settings" tab. There is a button "Driver Store". If this points to the same directory 3DFM modifies the correct driver DLL. It seems that only LG OLED people got issues now. As posted above there is no way to test this for me unless you send me your OLED TV.
Mine is an LG Passive 4K TV, but not OLED. I'm a developer so I can do more technical stuff if you want, but it sounds like I'm probably just going to have to revert to 425.

I've not heard of BringBack Tool.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

nintynuts wrote: Mon May 11, 2020 2:25 pm
Mine is an LG Passive 4K TV, but not OLED. I'm a developer so I can do more technical stuff if you want, but it sounds like I'm probably just going to have to revert to 425.

I've not heard of BringBack Tool.
Interesting. I didn't know that there have been 4K models on the market supporting 3D but not on OLED base.

You can find BringBack Tool here: viewtopic.php?f=105&t=23752

It prepacks the driver modification in the Geforce driver setup. After installation of the driver the modded DLLs automatically land on the correct place in Windows driver store. 3DFM however installs the original drivers and applies the driver hack afterwards (or undos the modification).
I decided that applying the hack afterwards is better as we can do all changes to a copy of the driver DLLs then. However I still have the code lines to do the same as BringBack Tool in 3DFM but commented them out ^^.

If BringBack tool does not work for you then 3DFM also definitely can't.
All you have to do for using bring back tool is just download the geforce driver manually (the default one - not the DCH version!!). Then place Bring back tool and the geforce driver setup file in the same directory and run bringback tool.
nintynuts
One Eyed Hopeful
Posts: 8
Joined: Mon May 11, 2020 1:33 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by nintynuts »

Having tried the BringBack Tool, the good news is the 3Dmigoto hacking overlay is accessible again, but the game (Splinter Cell Blacklist) now won't progress past the loading screen. It did load the first time I tried it, but the game crashed when I exited full screen mode (which is usually fine) with some UPlay error. I also tried the game in 2D mode (without unpatching the dlls) and it also fails to load in that case. I then tried with the original drivers (unpatched), that also fails to load...

Then I tried LEGO Star Wars: TFA and that loads fine. So I wonder If I somehow triggered some uplay dll validation that is failing and stopping me from playing the game?

UPDATE: I don't think it's a uplay validation issue. I got the game working by exiting full screen before the load screen, however 3dmigoto isn't being loaded again (even though the d3d11.dll is renamed back from "_disabled").
Last edited by nintynuts on Mon May 11, 2020 3:20 pm, edited 1 time in total.
User avatar
Isaacvigo
Two Eyed Hopeful
Posts: 78
Joined: Wed Sep 25, 2019 11:28 am

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Isaacvigo »

Crazy idea of ​​the day: (I forgot it in my last feed)
I remember that a few weeks ago you showed a modern project version to give a visual revision to 3DFM.
After giving it a few turns, I think you have in your hand a very simple way to give a modern look to the old application.
I think just using the same background color (possibly #191919, dont know if a 10% alpha transparency is possible for app background)
for all windows and sections, background of off buttons, and others ...
That added to straight corners, no curves.
This would give a unified, modern and minimalist look, away from the current web styled version.
It seems to me a very simple way to make a huge visual improvement.
Here is a quick aproach about ressults i´ve made
(Rockstar launcher is an example , the source of inspiration)
The same is applicable for the right click on the tray icon

Image

Image
Last edited by Isaacvigo on Mon May 11, 2020 7:44 pm, edited 5 times in total.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

Nintynuts it sounds like you have quite similar issues to me. My above workaround is dumb, but it works great for me so far. You can try it if you like. Does seem like some games are hit harder than others. I think the non oled 4k passive tvs use the same edids, mostly made by joker? Did you use the bringback3d tool in combination with dll and make sure to disconnect internet at the appropriate time? If you followed that linked guide it should have worked fine. With antivirus disabled of course as those tend to hate these mods and block components during driver installs. I am still working so haven't had time to do any more testing.

Pauldusler's testing of ff15 was not for not! He and you supplied strong evidence that the problem is related to passive 3d tv displays specifically and that everything works fine for the active 3d vision which displays Paul tested this on, which really helps us narrow this down. I owe Paul a donation. I haven't tried rolling back the 3d fix manager version but worth a try; that will help confirm whether it is the fix manager version or the Windows version that is causing issues. To my understanding the only big software difference between a 3d vision monitor and a passive tv is the use of an EDID override as well as 3dtvplay being vital. Which EDID are you using? A version of the original joker18 4k one, the joker18 hdr 4k one, or did you make your own? Maybe we should try and contact Joker who made my edid and possibly also yours. Joker was still active about a year ago and helped me set up my tv along with, as I recall, whyme466 on the Nvidea forums before I found MTBS. Dunno how active he is currently. Maybe the EDIDs themselves needs an update to work with current Windows of 3dfixmanager? If a new windows update does not like 3dtvplay drivers that may be a more complicated problem.

I'm not in the same galaxy of technical computer skill as Pauldusler and many others here, really just learning from scratch as I go (as is obvious from my posts), but I do have a 3d 4k display, so I can test it to the best of my ability.
nintynuts
One Eyed Hopeful
Posts: 8
Joined: Mon May 11, 2020 1:33 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by nintynuts »

Using the BringBack3DV tool got it all working again. There is an issue with 3DFM where it formats the 3dmigoto.ini and prevents it from loading that I would like to be able to fix, but everything else is working (as long as I've got enough RAM available and my shaders don't have mistakes - but that's not 3DFM's fault).
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

How specifically did you utilize the bringback3dv tool nintynuts? Did you use DDU first or just use bringback3d on top of your existing drivers? And which driver version did you install?

I have tried it previously to revert to 425, first using DDU for clean install. My thinking at the time was that if anything was going to work it would be 425, hence I had tried 425 with DDU and with and without bringback3dv. That let me install and use 3d fixes but did not fix 3d vision for me. Then I had tried updating the driver through 3dfix manager. Same issues. Just now I using bringback3dv to install 445.87 standard, including the DDU step for clean install. This time, during the NVIDEA custom install step, I did not have the option to select the 3d vision controller driver like I was supposed to. I allowed the installs to play out and 3d vision was installed along with 445.87. After reinstalling my EDID (which gets wiped whenever I reinstall graphics drivers), I could display the NVIDEA test pattern in 4k HDR and Launch 3d games, but the 3d was off. Convergence was incorrect in the test pattern and in games. For example in FF15 I could not get foreground, background, and midground to all converge at the same time as they should, making it unplayable. When I tried to launch through 3dfixmanager, 3d mode and the other toggle were both on, and the fix was installed, but I got the error "Error: Failed to launch game in stereoscopic 3D mode as one or more 3D components are missing or haven't been set up.". The error is consistent across games.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

russellk wrote: Mon May 11, 2020 9:24 am
Hans Davis wrote: Mon May 11, 2020 4:11 am CMU is unchecked. I also have Show CMU warning on so that it can't come on without me knowing. Display profile tab is set up as tv profile Acer HR274H-link profile to display, 65 inch, reversed line interlacing optimized for geforce passive 3d, preferred 3d format reversed line interlacing, game resolution 3840, 2160, 60hz (both 2d and 3d mode settings, also desktop settings, this is my native), default profile on startup: tv. This is the only profile that I have set up. I do have another monitor but I have tried unplugging it to rule that out.
I see that you're right about _47 being part of the game, but I promise you that it did not install with steam for me. Maybe it shows up after you have played for a bit and so I made a misinterpreted where it came from. Anyway, deleting both that and _46 and then manually installing and launching the fix did work swimmingly. I have no explanation. I had steam validate files and it put _47 back. Game still works normally through manual launch. Breaks the same way through 3d fix manager launch. Deleting _46 still seems important to reinstalling the fix manually. Even if I uninstall ff15 from steam that apparently modified _46 is still there. Probably a unique idiosyncrasy of the fix.

I have tried running the game from 3d fix manager with all 3d fix manager settings at default other than those listed above. No dice.

Oh and found the archived link to the EDID I use. Seems pretty standard. I don't use eyeswapper software because choosing reverse interleaved in 3d fix manager takes care of that.

viewtopic.php?f=181&t=23437

I wonder if a core component of 3d fix manager failed to install but I've tried reinstalling multiple times with no antivirus. I am at a loss. This problem did not happen until I had to reinstall drivers using the new version of 3d fix manager due to need for a windows reinstall. It worked fine with drivers that had been installed with a previous version. Most other users have probably had their drivers installed through 3d fix manager for a long time and so they don't get this issue. Alternative and parsimonious explanation is that I did something stupid somewhere. I gotta be diligent in ruling that out. Testing of more games is certainly in order but both aforementioned games worked previously with what-to the best of my competency-were the same settings.
Out of interest, what display is showing up in Nvidia control panel when you look at the stereoscopic 3d settings?
Also, it is possible to upload a picture of what you mean by overlapping non converging images?
The display that shows up is Acer Passive 3d LCD. That's what the EDID makes the computer think I have. As for what I see-it looked like this with or without 3d glasses (upside down or right side up). The pixels were not being arranged correctly to allow convergence through the glasses.
https://imgur.com/gallery/aYEyRBQ
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

nintynuts wrote: Mon May 11, 2020 7:41 pm Using the BringBack3DV tool got it all working again. There is an issue with 3DFM where it formats the 3dmigoto.ini and prevents it from loading that I would like to be able to fix, but everything else is working (as long as I've got enough RAM available and my shaders don't have mistakes - but that's not 3DFM's fault).
When 3DFM indeed breaks d3dx.ini then it's at least logical that 3D can't work any more. But the fact that 2D mode also doesn't work any more is completely unlogical. The 2D bug would affect all PCs then, not only yours.

I relooked at the code of 3DFM and it generally only edits the d3dx.ini file automatically if:
  • in display profile tab a 3D format was set (e.g. reversed interlacing). Then also software mouse cursor is enabled by 3DFM in d3dx.ini as the cursor often renders on one eye when using 3dmigoto's side by side shader. If the 3dmigoto version is too old to support side by side shader 3DFM asks during game start whether to update 3dmigoto in order to set line interlaced format. If the user agrees 3dmigoto is updated and the 3d format setting written to d3dx.ini
  • an upscale resolution was set manually in d3dx.ini. Then on game start 3DFM rechecks if the upscale resolution still matches the native resolution of the current display. If not, it's automatically corrected in d3dx.ini. (by default not the case for Final Fantasy 15 unless you enabled upscale shader in "Hotkeys" tab manually .
  • if a unity universal fix was installed. Then 3DFM checks which unity engine version is used and adjusts d3dx.ini automatically (not the case for Final Fantasy 15 as not Unity engine)
  • 3dmigoto was updated from older versions to a newer version (not the case for Final Fantasy 15)
  • 3DFM also writes to d3dx.ini when CMU is unticked. Then it sets Disable2DD = 1 in d3dx.ini under section "[profile]". I compared the file with original one for Final Fantasy and it still looks fine. Logical - as otherwise 3D would be surely broken for me either or 3dmigoto would give me some errors on game start
So indeed -> the d3dx.ini is modified every time you start a game through 3DFM due to the last point with CMU at least. This makes sure that the game does not start in Compatibility Mode when the CMU tick is not set. But the changes done here should be very minor and not breaking something.

@passive 3D users: Are your issues fixed if you replace the d3dx.ini modified by 3DFM with the original one and start the game via Steam then? If yes then please post your broken d3dx.ini here. I'll compare with the original d3dx.ini then.
If replacing d3dx.ini does not help then 3DFM didn't destroy the file. The issue lies somewhere else then.


Another suggestion:
Untick all options in Display Profile tab. As said I don't have a 3DTV play or a passive 3D device so I could never test but I think the combination of 3DTV Play mode + 3dmigoto's Inversed interlacing 3D format does not work? This should only work when passive EDID override was installed. But that's just an assumption by me.
Last edited by Pauldusler on Tue May 12, 2020 2:22 am, edited 11 times in total.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

Hans Davis wrote: Mon May 11, 2020 10:27 pm When I tried to launch through 3dfixmanager, 3d mode and the other toggle were both on, and the fix was installed, but I got the error "Error: Failed to launch game in stereoscopic 3D mode as one or more 3D components are missing or haven't been set up.". The error is consistent across games.
When you toggle 3D off and on again you will see which components are missing. Presumably 3D Vision controller driver. BringBack Tool won't install this driver when the IR pyramid is not plugged in / detected during Geforce driver installation. 3DFM will fix this for you by installing the controller driver afterwards.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

Pauldusler wrote: Tue May 12, 2020 1:53 am
Hans Davis wrote: Mon May 11, 2020 10:27 pm When I tried to launch through 3dfixmanager, 3d mode and the other toggle were both on, and the fix was installed, but I got the error "Error: Failed to launch game in stereoscopic 3D mode as one or more 3D components are missing or haven't been set up.". The error is consistent across games.
When you toggle 3D off and on again you will see which components are missing. Presumably 3D Vision controller driver. BringBack Tool won't install this driver when the IR pyramid is not plugged in / detected during Geforce driver installation. 3DFM will fix this for you by installing the controller driver afterwards.
I will try that tomorrow or later this week. For tonight I just system restored everything back so that I could at least play tonight by launching outside 3dfm.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

Pauldusler wrote: Tue May 12, 2020 12:51 am
nintynuts wrote: Mon May 11, 2020 7:41 pm Using the BringBack3DV tool got it all working again. There is an issue with 3DFM where it formats the 3dmigoto.ini and prevents it from loading that I would like to be able to fix, but everything else is working (as long as I've got enough RAM available and my shaders don't have mistakes - but that's not 3DFM's fault).
When 3DFM indeed breaks d3dx.ini then it's at least logical that 3D can't work any more. But the fact that 2D mode also doesn't work any more is completely unlogical. The 2D bug would affect all PCs then, not only yours.

I relooked at the code of 3DFM and it generally only edits the d3dx.ini file automatically if:
  • in display profile tab a 3D format was set (e.g. reversed interlacing). Then also software mouse cursor is enabled by 3DFM in d3dx.ini as the cursor often renders on one eye when using 3dmigoto's side by side shader. If the 3dmigoto version is too old to support side by side shader 3DFM asks during game start whether to update 3dmigoto in order to set line interlaced format. If the user agrees 3dmigoto is updated and the 3d format setting written to d3dx.ini
  • an upscale resolution was set manually in d3dx.ini. Then on game start 3DFM rechecks if the upscale resolution still matches the native resolution of the current display. If not, it's automatically corrected in d3dx.ini. (by default not the case for Final Fantasy 15 unless you enabled upscale shader in "Hotkeys" tab manually .
  • if a unity universal fix was installed. Then 3DFM checks which unity engine version is used and adjusts d3dx.ini automatically (not the case for Final Fantasy 15 as not Unity engine)
  • 3dmigoto was updated from older versions to a newer version (not the case for Final Fantasy 15)
  • 3DFM also writes to d3dx.ini when CMU is unticked. Then it sets Disable2DD = 1 in d3dx.ini under section "[profile]". I compared the file with original one for Final Fantasy and it still looks fine. Logical - as otherwise 3D would be surely broken for me either or 3dmigoto would give me some errors on game start
So indeed -> the d3dx.ini is modified every time you start a game through 3DFM due to the last point with CMU at least. This makes sure that the game does not start in Compatibility Mode. But the changes done here should be very minor and not breaking something.

@passive 3D users: Are your issues fixed if you replace the d3dx.ini modified by 3DFM with the original one and start the game via Steam then? If yes then please post your broken d3dx.ini here. I'll compare with the original d3dx.ini then.
If replacing d3dx.ini does not help then 3DFM didn't destroy the file. The issue lies somewhere else then.
First, 2D does in fact work in theory. Whatever is going wrong causes very high cpu usage which crashes the game unless you tweak the power settings in nvidea control panel to power through it. I haven't tested how long the cpu drain lasts during 2d gameplay, or if it's mostly a startup thing.

You may be onto something here with d2dx.ini. It is definitely different while functional after manual fix install and when dysfunctional after 3d fix manager launch. The formatting is quite different. I do see the mouse fix. But in particular, it looks like side by side 3d is uncommented in the nonfunctional file which makes no sense. That's not set up in my display profile and I don't see side by side when forcing the dysfunctional game to launch despite cpu usage. I don't have upscalling enabled so perhaps the reverse interleaving settings is not being implemented successfully. Reverting back to functional d3dx.ini DID make it work again for launching from outside 3d fix manager, though thorough testing of gameplay pending.

EDIT: Re-Commenting out the side by side 3d vision line in the non-functional d3dx.ini file seems to get it working again. Don't have time to monitor cpu usage and stuff tonight, but it brings back 3D. If I launch the game from 3dfixmanager again, sidebyside3d is activated again, making the 3d non-functional and the game too hardware demanding to launch easily. So for this game it appears that installing the mod or launching the game through 3dfixmanager (at least for me) enables side by side 3d on top of reverse interleaved 3d, and that the combination of the two causes crashes and incorrect 3d display (pic linked above). I will happily test more games throughout the week to see if the source of problems is consistent.

First the functional d3dx.ini code:

Code: Select all

; FINAL FANTASY XV 3D FIX BY MASTEROTAKU AND DJ-RK
; ------------------------------------------------------------------------------------------------------
; Additional configuration files
; ------------------------------------------------------------------------------------------------------
[Include]
; If you were using 3DMigoto as a full modding platform for a given game
; instead of just a single stand-alone mod (e.g. facilitating mesh/texture
; replacements or other graphics mods), you can include an entire directory
; where users can extract third party mods created by others and 3DMigoto will
; include every .ini file and any external files referred to by CustomShader /
; Resource sections (Replaced shaders in these mods should still go in
; ShaderFixes for now, unless the modders want to use CustomShaders or
; ShaderRegex to keep them standalone).
;include_recursive = Mods
exclude_recursive = DISABLED*

; Uncomment to enable a custom shader that allows the stereo output mode to be
; upscaled. NOTE: uncomment only if 'upscaling' and resolution are not zero in
; the [Device] section.
;include = ShaderFixes\upscale.ini

; Uncomment to enable a custom shader that implements a software mouse cursor.
; Use in games that use a hardware cursor if you want to be able to adjust the
; stereo depth of the mouse, or to work with the below 3DVision2SBS shader.
; Note that this shader has a higher latency than the hardware cursor!
;include = ShaderFixes\mouse.ini

; Uncomment to enable a custom shader that allows the stereo output mode to be
; changed to Side-by-Side or Top-and-Bottom via the F11 key. If you are using
; SLI and this isn't working properly (partially blank or stuck image) you may
; need to also set StereoFlagsDX10 = 0x00000008 in the [Profile] section. You
; can set a default mode by altering $\ShaderFixes\3dvision2sbs.ini\mode in the
; [Constants] section:
;include = ShaderFixes\3dvision2sbs.ini

; Fix includes
include = ShaderFixes\FFXV_fix.ini
;include = ShaderFixes\FFXV_debug.ini
include = ShaderFixes\help.ini

;include = ShaderFixes\debug_cb.ini

;------------------------------------------------------------------------------------------------------
; Logging options.
; Comment line or set value to 0 for no logging.
;------------------------------------------------------------------------------------------------------
[Logging]

; Log all API usage
calls=0

; Log Input key actions
input=0

; Super verbose massive log
debug=0

; Unbuffered logging to avoid missing anything at file end
unbuffered=0

; Force the CPU affinity to use only a single CPU for debugging multi-threaded
force_cpu_affinity=0

; Log NVAPI convergence modifications
convergence=0
; Log NVAPI separation modifications
separation=0

; Enable 3DMigoto's deadlock detection algorithm. If you get hangs (not
; crashes) this might help find out why.
debug_locks=0

; ------------------------------------------------------------------------------------------------------
; Command list to run on launch / after config reload.
; ------------------------------------------------------------------------------------------------------
[Constants]
; Declare named global variables here to use them from other command lists,
; [Key] bindings and [Preset]s. Named variables are namespaced so that any
; included ini files can use their own without worrying about name clashes:
;global $my_named_variable = 0.0

; Mark a variable as persist[ent] to automatically save it to the
; d3dx_user.ini on exit or F10 (config_reload). Use Ctrl+Alt+F10
; (wipe_user_config) to discard persistent values:
;global persist $some_persistent_variable = 1

; Set the initial value of "IniParams" variables, which are accessible from
; within shaders, but they are not namespaced and too many can become unwieldy:
;x = 0.8
;y = 1.0
;z = 1.2
;w = 2.0
;y1 = 3

; This is used by the 3DVision2SBS custom shader. To use, find the [Include]
; section above and uncomment the 'include = ShaderFixes\3dvision2sbs.ini'
; line. F11 will cycle between these modes while playing, and the current
; value will be automatically saved to the d3dx_user.ini on exit / F10:
; 0 = Regular 3D Vision
; 1 = Reversed 3D Vision
; 2 = Side by Side
; 3 = Reversed Side by Side
; 4 = Top and Bottom
; 5 = Reversed Top and Bottom
; 6 = Line interlacing
; 7 = Reversed Line interlacing
;$\ShaderFixes\3dvision2sbs.ini\mode = 0


;------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
;
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle forwards and/or backwards
; between several presets.
;
; Delays (type=hold only) and linear or cosine trasition periods (any key type)
; can be used to better synchonrise setting changes to the game's animations,
; or to smoothly adjust UI elements over a short period of time.
;
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; Key combinations can be specified by separating key names with spaces, e.g.
; "Shift Q". It is also possible to indicate that a key must *not* be held for
; the binding to activate, e.g. "NO_ALT F1" would prevent the binding from
; activating when taking a 3D Screenshot with Alt F1. "NO_MODIFIERS" may be
; used as a shorthand for excluding all standard modifiers (Ctrl, Alt, Shift,
; Windows).
;
; Keys can also be from XBox controllers using:
;   XB_LEFT_TRIGGER, XB_RIGHT_TRIGGER,
;   XB_LEFT_SHOULDER, XB_RIGHT_SHOULDER,
;   XB_LEFT_THUMB, XB_RIGHT_THUMB,
;   XB_DPAD_UP, XB_DPAD_DOWN, XB_DPAD_LEFT, XB_DPAD_RIGHT,
;   XB_A, XB_B, XB_X, XB_Y, XB_START, XB_BACK, XB_GUIDE
; By default all attached controllers are used - to associate a binding with a
; specific controller add the controller number 1-4 to the prefix, like
; XB2_LEFT_TRIGGER, though this may be more useful for hunting than playing.
;
; Multiple keys may be set in a single [Key] section to allow keyboard and xbox
; controller toggles and cycles to share the same state as each other.
;------------------------------------------------------------------------------------------------------

; Example for changing default settings
;[KeyBasicExample]
;Key = z
;separation = 100.0
;convergence = 4.0
;x = 0.98
; Named variables declared in [Constants] can be set here:
;$my_named_variable = 2

; Example to support momentary hold type overrides, like aiming. Shows how to
; bind two separate buttons to the same action.
;[KeyMomentaryHoldExample]
;Key = RBUTTON
;Key = XB_LEFT_TRIGGER
;convergence = 0.1
;type = hold

; Example for a toggle override that remembers the previous value and restores
; it automatically when pressed a second time.
;[KeyToggleExample]
;Key = q
;separation = 0.1
;type = toggle
;y = 0.0

; Example for using a smart cycle type instead of a toggle. Smart is now the
; default for cycles, and when activated it will quickly check if the current
; values match its current cycle preset and resynchronise if necessary. This is
; better than type=toggle if you always want to toggle between exactly two
; values specified here, while type=toggle is better if you want to remember
; some arbitrary current value and return to it:
;[KeySmartCycleExample]
;Key = w
;type = cycle
;smart = true
;$some_variable = 0, 1

; Example for a momentary hold, but with a delay followed by a smooth
; transition (ms) on hold and release to sync better with the game. Note that
; delay only works with type=hold (for now), while transitions will work with
; all types.
;[KeyDelayAndTransitionExample]
;Key = RBUTTON
;Key = XB_LEFT_TRIGGER
;type = hold
;y = 0.25
;delay = 100
;transition = 100
;transition_type = linear
;release_delay = 0
;release_transition = 500
;release_transition_type = cosine

; Example of a cycle transition that might be used to provide several presets
; that set both convergence and UI depth to suit different scenes in a game.
; Cosine transitions are used to smooth the changes over 1/10 of a second.
; Both keyboard and Xbox controller buttons are bound to this same cycle, so
; that they can be used interchangeably and remember the same position in the
; preset list. A second key is used to cycle backwards through the presets, and
; wrapping from one end of the list to the other is disabled.
;[KeyCycleExample]
;Key = E
;Key = XB_RIGHT_SHOULDER
;Back = Q
;Back = XB_LEFT_SHOULDER
;type = cycle
;wrap = false
;convergence = 1.45, 1.13, 0.98
;z           = 0.25,  0.5, 0.75
;transition = 100
;transition_type = cosine

; Keys can only directly set variables to simple values. If you want to do
; something more advanced, you may need to call a command list from the key
; binding. type=hold/toggle keys will run the post phase of the command list on
; release.
;[KeyCommandListExample]
;key = f
;run = CommandListF
;[CommandListF]
;if $foo == 0 && cursor_showing
;	$foo = $bar * 3.14 / rt_width
;else
;	$foo = 0
;endif

; Example of a preset override that can be referenced by one or more [ShaderOverride*]
; sections which can be activated / deactivated automatically when one of the shader
; overrides is activated / deactivated. This is useful for setting automatic
; convergence for specific scene.
;[PresetExample]
;convergence = 0
;$some_variable = 1
;transition = 100
;transition_type = linear


;------------------------------------------------------------------------------------------------------
; Shader hunting options.
; Default setup is to use keyboard similar to Helix presets
;------------------------------------------------------------------------------------------------------
[Hunting]

; 0: Release mode is with shader hunting disabled, optimized for speed.
; 1: Hunting mode enabled
; 2: Hunting mode "soft disabled" - can be turned on via the toggle_hunting key
hunting=0

; Highlight mode of currently selected shader / rendertarget.
; "skip" = skip shader. don't render anything using the currently selected shader.
; "original" = fall back to original shader if the currently selected shader was patched.
; "pink" = make the output hot pink to make it standout.
; "mono" = disable stereo for the selected shader / rendertarget.
marking_mode=skip

; Cycle through available marking modes. VK_DECIMAL VK_NUMPAD0
; means hold the dot on the number pad while pressing numpad 0:
next_marking_mode = no_modifiers VK_DECIMAL VK_NUMPAD0

; What action(s) to take when marking a selected shader/buffer
; "hlsl" = decompile shader to HLSL and copy to ShaderFixes
; "asm" = disassemble shader and copy to ShaderFixes (if hlsl is disabled or failed)
; "regex" = output ShaderRegex patched shader if applicable (NOTE: Will lose associated command list)
; "clipboard" = copy shader/buffer hash to clipboard
; "mono_snapshot" = take mono screenshot (previously called mark_snapshot=1)
; "stereo_snapshot" = take stereo screenshot (previously called mark_snapshot=2)
; "snapshot_if_pink" = limit mono/stereo_snapshot to when marking_mode=pink
marking_actions = clipboard regex hlsl asm stereo_snapshot snapshot_if_pink

; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; XBox controllers are supported using the same bindings as the [Key] sections
; (see above). If the game already uses the first controller you might try
; using the second controller for hunting with e.g. XB2_LEFT_SHOULDER

; rotate through all VISIBLE pixel shaders at the current scene.
previous_pixelshader = no_modifiers NO_VK_DECIMAL VK_NUMPAD1
next_pixelshader = no_modifiers NO_VK_DECIMAL VK_NUMPAD2
mark_pixelshader = no_modifiers NO_VK_DECIMAL VK_NUMPAD3

; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader = no_modifiers NO_VK_DECIMAL VK_NUMPAD4
next_vertexshader = no_modifiers NO_VK_DECIMAL VK_NUMPAD5
mark_vertexshader = no_modifiers NO_VK_DECIMAL VK_NUMPAD6

; rotate through all USED index buffers at the current scene.
previous_indexbuffer = no_modifiers NO_VK_DECIMAL VK_NUMPAD7
next_indexbuffer = no_modifiers NO_VK_DECIMAL VK_NUMPAD8
mark_indexbuffer = no_modifiers NO_VK_DECIMAL VK_NUMPAD9

; rotate through all USED vertex buffers at the current scene.
previous_vertexbuffer = no_modifiers NO_VK_DECIMAL VK_DIVIDE
next_vertexbuffer = no_modifiers NO_VK_DECIMAL VK_MULTIPLY
mark_vertexbuffer = no_modifiers NO_VK_DECIMAL VK_SUBTRACT

; rotate through all USED render targets at the current scene.
previous_rendertarget = no_modifiers VK_INSERT
next_rendertarget = no_modifiers VK_HOME
mark_rendertarget = no_modifiers VK_PAGEUP

; rotate through all USED compute shaders at the current scene.
previous_computeshader = no_modifiers VK_DECIMAL VK_NUMPAD1
next_computeshader = no_modifiers VK_DECIMAL VK_NUMPAD2
mark_computeshader = no_modifiers VK_DECIMAL VK_NUMPAD3

; rotate through all VISIBLE geometry shaders at the current scene.
previous_geometryshader = no_modifiers VK_DECIMAL VK_NUMPAD4
next_geometryshader = no_modifiers VK_DECIMAL VK_NUMPAD5
mark_geometryshader = no_modifiers VK_DECIMAL VK_NUMPAD6

; rotate through all VISIBLE domain shaders at the current scene.
previous_domainshader = no_modifiers VK_DECIMAL VK_NUMPAD7
next_domainshader = no_modifiers VK_DECIMAL VK_NUMPAD8
mark_domainshader = no_modifiers VK_DECIMAL VK_NUMPAD9

; rotate through all VISIBLE hull shaders at the current scene.
previous_hullshader = no_modifiers VK_DECIMAL VK_DIVIDE
next_hullshader = no_modifiers VK_DECIMAL VK_MULTIPLY
mark_hullshader = no_modifiers VK_DECIMAL VK_SUBTRACT

; Re-enable shaders once done with hunting:
done_hunting = NO_MODIFIERS NO_VK_DECIMAL VK_ADD

; Screenshot as pns
take_screenshot = no_modifiers VK_SNAPSHOT

; reload all fixes from ShaderFixes folder
reload_fixes = no_modifiers VK_F10

; Key to turn hunting itself on/off.  This will also show/hide overlay.
; Hunting must be set to either 1 or 2 to enable this toggle.
toggle_hunting = no_modifiers NO_VK_DECIMAL VK_NUMPAD0

; Key to reload the settings from the d3dx.ini without restarting. This can
; be the same key as reload_fixes for convenience, or a different key may be
; used to avoid resetting the ini parameters every time the shaders are
; reloaded. Note that not all settings can be reloaded, so if something doesn't
; work as expected you may still have to restart the game:
reload_config = no_modifiers VK_F10

; Deletes the d3dx_user.ini file and reloads settings to get a "clean slate"
wipe_user_config = ctrl alt no_shift VK_F10

; Hold this key to temporarily disable the fix - useful to quickly check what
; an effect looked like in the original game.
show_original = no_modifiers VK_F9

; Shows the CPU utilisation and performance impact of every active command list
monitor_performance = ctrl no_shift no_alt F9

; Freeze the current performance monitor display and log to the d3d11_log.txt
freeze_performance_monitor = no_ctrl shift no_alt F9

; Sets how often the performance monitor updates
monitor_performance_interval = 2.0

; Auto-repeat key rate in events per second.
repeat_rate=12

; Enabling this makes the overlay show the hashes of the currently selected
; shaders and index buffer during hunting. We don't actually recommend this,
; because writing down the hash from the screen is a bad habbit that tends to
; be very error prone - the recommended workflow is to dump the shaders to disk
; and check the most recently modified file in ShaderFixes, but advanced users
; can enable this if they want it:
verbose_overlay = 1

; tunable parameter to use in modified shaders as variable (StereoParams.Load(int3(1,0,0)).xyzw)
; enabling tuning results in a small performance hit because the parameter texture
;tune_enable=1
;tune_step=0.1
;tune1_up=VK_INSERT
;tune1_down=VK_DELETE
;tune2_up=X
;tune2_down=Z


; Dumps out a flight log of DirectX state changes and the contents of each
; render target after every immediate draw call for the next frame. Takes up a
; large amount of space, so disabled by default.
analyse_frame = no_modifiers VK_F8

; analyse_options specifies options for the frame analysis feature. Options can
; be combined by separating them with a space.
;
; Dumping selection (also refer to the "dump" command described below):
;        dump_rt: Dumps render targets and UAVs
;     dump_depth: Dumps depth/stencil targets
;       dump_tex: Dumps shader resources (textures)
;        dump_cb: Dumps constant buffers
;        dump_vb: Dumps vertex buffers
;        dump_ib: Dumps index buffers
;
; Texture2D format selection:
;        jpg/jps: Dumps out 2D/stereo resources as .jps files. These are the easiest
;                 to work with and don't take up as much space as DDS files, but
;                 they are not dumped for every resource and are missing some data.
;            dds: Dumps out 2D/stereo resources as .dds files. WARNING: This option
;                 may require hundreds of gigabytes and a long time! Only use it if
;                 you absolutely need more information than you can get otherwise.
;        jps_dds: Dumps out .jps when possible, .dds otherwise (default).
;           desc: Dumps out DirectX resource descriptions to .dsc files.
;
; Buffer format selection:
;            buf: Dumps out buffers as binary .buf files
;            txt: Decodes buffers as text, and includes some extra metadata not
;                 found in the .buf files. May not correctly decode all buffers.
;                 Default if dump_cb/vb/ib was specified.
;           desc: Dumps out DirectX resource descriptions to .dsc files.
;
; Misc options:
;           hold: Continue analysing subsequent frames while the key is held
;       clear_rt: Clears each render target the first time they are used in the
;                 frame. Makes it easier to see what is being drawn if the game
;                 doesn't clear them, but might cause some effects not to render.
;   filename_reg: Normally the draw number is the first part of the filename so
;                 that the files will be sorted in the order they were used in
;                 the game. Sometimes it is more desirable to examine how a
;                 specific output changed through the frame and this option will
;                 place the register number first in the filename to allow that.
;           mono: Dump out mono textures instead of stereo. To dump both, specify
;                 'mono stereo'. If neither are specified, defaults to stereo.
;  dump_on_unmap: Dumps buffers/textures whenever the game maps them to the CPU
;                 with the Map() / Unmap() calls. Typically used to update
;                 constant buffers.
; dump_on_update: Dumps buffers/textures whenever the game updates them with
;                 the UpdateSubresource() call. Alternative method used to
;                 update constant buffers.
;    share_dupes: Use a folder that is shared with subsequent frame analysis
;                 dumps for de-duplicating dumped resources. Makes future frame
;                 analysis dumps faster and use less disk space if there are a
;                 lot of identical textures, but less trivial to delete
;                 individual dump folders to reclaim disk space (i.e. all or
;                 nothing). Individual frame analysis folders are still
;                 de-duplicated regardless of this setting.
;        symlink: Try to use symbolic links when de-duplicating files in a
;                 frame analysis dump. Requires developer mode to be enabled in
;                 Windows 10, and will fall back to hard links or shortcuts
;                 when not possible. Useful to see the relationship between
;                 deduplicated files, especially when working with cygwin, but
;                 some Windows applications may behave worse when using these.
;
; Experimental Deferred Context (multi-threaded rendering) Frame Analyis Support:
;   deferred_ctx_immediate: Dumps resources from deferred contexts using the
;                 immediate context. Not suitable for dump_rt or other
;                 resources altered during the frame (by the GPU or CPU). May
;                 be ok for static unchanging resources, such as collecting HUD
;                 textures for filtering. Not thread safe - potential to crash.
;                 Recommended (not enforced) to use in conjunction with 'mono'.
;    deferred_ctx_accurate: Delays dumping resources from deferred contexts
;                 until after the GPU has updated them. Copies of *all*
;                 resources being dumped are held in memory, so it may run out
;                 - try to restrict using this option to specific resources
;                 where it is needed - preferably via the "dump" command rather
;                 than the global analyse_options. Works with 'stereo'.
;
; analyse_options can also be specified in [ShaderOverride*] sections (or other
; command lists) to set up triggers to change the options mid-way through a
; frame analysis, either for a single draw call (default), or permanently (by
; adding the 'persist' keyword).
;
; Alternatively, "dump" can be specified in a [ShaderOverride*] section (or
; any other command list) to dump specific resources with per-resource options
; (e.g. "dump = dump_tex dds share_dupes mono ps-t0"), dump resources at a
; specific point in time (e.g. "pre dump = o0") or dump a custom resource that
; frame analysis cannot otherwise see (e.g. "dump = ResourceDepthBuffer"). Use
; additional "dump" commands to dump multiple resources.
;
;analyse_options = dump_rt jps clear_rt



;------------------------------------------------------------------------------------------------------
; Chain load other wrapper DLLs instead of system DLLs.
;------------------------------------------------------------------------------------------------------
[System]

;proxy_d3d9=d3d9_helix.dll
;proxy_d3d11=d3d11_helix.dll

; We force all LoadLibrary calls back to the game folder, because games
; and nvidia both break the loading chain by going directly to System32.
; load_library_redirect=0 for off, allowing all through unchanged.
; load_library_redirect=1 for nvapi.dll override only, forced to game folder.
; load_library_redirect=2 for both d3d11.dll and nvapi.dll forced to game folder.
load_library_redirect=2

; Only enable key input processing when the game is in the foreground:
check_foreground_window=1

; Options to use hooking instead of wrapping. Used in MGSV. Possible objects to hook include:
;   deferred_contexts
;   immediate_context
;   device
;   all - all of the above
;   recommended - settings currently recommended by the 3DMigoto developers
;hook=recommended

; Options to allow ID3D11Device to be created and wrapped.  We have typically had good
; luck with returning an error for all non-dx11 requests, but some games error out
; with these checks in place.
; The allow_create_device allows D3D10 Device creation and is needed for some games.
; It has two options, allow_create_device=1, which will allow anything to go through
; without returning an error, and allow_create_device=2, which will force all requests
; to become D3D11 Devices, no matter what was passed in.
; The allow_platform_update option allows the D3D11Device1 and D3D11Context1
; interfaces introduced in Windows 8 and the platform update of Windows 7.
;
; Start with allow_check_interfaces, if that doesn't work
; then try allow_create_device=2, lastly try allow_create_device=1
;
allow_check_interface=1
allow_create_device=1
allow_platform_update=1

;------------------------------------------------------------------------------------------------------
; Settings used by the external 3DMigoto Loader
;------------------------------------------------------------------------------------------------------
[Loader]
; Target process to load into. You can optionally include part of the directory
; structure in case the game's executable name is generic.
;target = \Dead or Alive 6\DOA6.exe

; This tells the loader where to find 3DMigoto. This DLL must be located
; in the same directory as 3DMigoto Loader.exe and will be loaded in the target
; process under the same name. If d3d11.dll doesn't work try 3dmigoto.dll
;module = d3d11.dll

; Uncomment to always elevate the loader to support games that run as admin.
; This will display a UAC prompt so only enable it if you actually need it.
;require_admin = true

; Automatically launch the game from the loader. If you put the executable name
; here than the loader will need to be located in the game directory. You can
; use the full path, but that is not recommended to ship any fixes with since
; it will vary on a user's system. If the game is on Steam you can use the
; steam browser protocol to launch it, optionally passing it any command line
; arguments you need (unfortunately Steam pops a dialog to confirm command line
; parameters, which tends to end up behind other windows):
;launch = DOA6.exe
;launch = steam://run/838380/
;launch = steam://run/237850//-window-mode exclusive/

; Delay this many extra seconds after confirming that 3DMigoto was loaded in
; the target process. For games that respawn themselves or have multiple
; executables of the same name when the first process we see may not be the
; actual one we need. Set to -1 to disable automatic shut down.
;delay = 20

;------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
;------------------------------------------------------------------------------------------------------
[Device]

; (0) - disable upscaling
; (1) - enable upscaling and allows the game to disable and enable fullscreen mode
; (2) - enable upscaling and don't allow the game to switch fullscreen mode
;       (always force fullscreen). Try this if you get issues with the mouse cursor.
; Note if you enable upscaling please do not forget to:
;   1) Uncomment "run = CustomShaderUpscale" in the [Present] section,
;      otherwise you will see only a black window (with game sound).
;   2) Set a custom resolution here for width and height that the game will see.
;   3) Uncomment upscale_mode here.
upscaling = 0

; Force override the screen resolution.
; If upscaling is on, the resizing functionality is disabled.
; If upscaling is on, then you MUST specify the resolution the game will be upscaled to.
; To achieve the best visual result use the native resolution of your tv or monitor.
;width=1280
;height=720

; upscale_mode = 0: 3Dmigoto creates a texture and pushes it as the back buffer for the game.
; Seems to work with only few games but everything seems to run a bit smoother.
; upscale_mode = 1: 3Dmigoto creates a second swap chain and pushes the game to use it.
; Seems to work with most games. dont forget to activate upscaling shader in [present] section
;upscale_mode = 1


; overrides refresh rate set by game.
;refresh_rate=60

; filters available video modes to those providing given refresh rates.
; some games don't explicitely set the refresh rate, but use the video mode.
; use this if setting refresh_rate doesn't work.
;filter_refresh_rate=24,59,60

; full_screen=1 forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; full_screen=2 will also disable SetWindowPos which might help in some games.
full_screen=0

; This attempts to force exclusive full screen when this key is pressed, and
; may be useful in games where full_screen doesn't work or has undesirable side
; effects:
force_full_screen_on_key = SHIFT VK_F7

; This toggles forcing the full screen mode on and off. It will not take effect
; immediately, but will change what happens the next time the game tries to
; change the fullscreen mode. This is a specific hack to workaround a bug in
; Unity games, which crash when alt+tabbing out from exclusive mode fullscreen.
;
; To switch out of a Unity game without it crashing:
; Enable this option, Press F7, Alt+Enter, Alt+Tab
;toggle_full_screen = no_modifiers VK_F7

; some games explicitely disable stereo, prohibiting any stereo attempts.
; Setting this to 1 ignores all stereo disabling calls and also calls
; NvAPI_Stereo_Enable to force stereo on.
; Setting this to 2 sets 3Dmigoto to use 3D Vision Direct Mode
force_stereo=0

; almost all DX11 games deactivate window message handling.
; setting this to 1 reenables print screen handling, alt-tab key handling etc.
;allow_windowcommands=1

; Indicates where the resolution is obtained for texture hashes. Comment this
; out to never special case hashes that match the resolution or a multiple.
; Possible values are swap_chain and depth_stencil. Recommended to test which
; works for a given game (e.g. CryEngine always creates a swap chain that
; matches the native resolution so has to use depth_stencil).
get_resolution_from = swap_chain

; This will hide the hardware mouse cursor, and will be automatically enabled
; if the software mouse configuration file is included at the top of this file.
; The hardware mouse cursor cannot be moved to depth and cannot be used in
; conjunction with the side-by-side or top-and-bottom output modes, so using a
; software mouse cursor is recommended in those cases.
; NOTE: IT IS RECOMMENDED TO RESTART THE GAME AFTER CHANGING THIS SETTING!
hide_cursor = 0


;------------------------------------------------------------------------------------------------------
; Settings for NVidia stereo driver.
;------------------------------------------------------------------------------------------------------
[Stereo]

; games which have their own stereo renderer disable the NVidia automatic
; stereo mode and render themselves into stereo buffers (Crysis 3 for example).
; Setting this to 1 disables the game stereo renderer and enables NVidia auto stereo mechanism.
; This also forces 'false' as a return for any request for NvAPI_Stereo_IsEnabled.
automatic_mode=0

; Some games (CryEngine games, for example) lock the separation & convergence
; to a specific value, which can be undesirable. Set this to 1 to ignore these
; requests from the game to unlock the separation:
unlock_separation=0
unlock_convergence=0

; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
; Note that there is now a more flexible means to alter the game's profile -
; refer to the [Profile] section.
create_profile=0

; sets the global surface creation heuristic for NVidia stero driver.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings for surface creation mode.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - Always create stereo surfaces.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - Always create mono surfaces.
;surface_createmode=1

; overrides surface creation mode for square surfaces.
;surface_square_createmode=1

; Force the NvAPI_Initialize to return an error so that games think stereo and NVidia is unavailable.
force_no_nvapi=0


;------------------------------------------------------------------------------------------------------
; Settings for GPU manipulations.
; Render settings override
;------------------------------------------------------------------------------------------------------
[Rendering]

; GPU program manipulations.

; Type of shader hashes in use:
;   3dmigoto = Traditional hash used by 3DMigoto (unseeded software FNV-1)
;   embedded = Use the first half of the MD5-like hash embedded within the
;              shaders to skip the hash calculation altogether.
;   bytecode = Only hash bytecode and signatures with hardware accelerated
;              CRC32C. Used to minimise duplicate shaders in certain games, but
;              potentially carries a higher risk of hash collisions between
;              unrelated shaders in some games (e.g. that only differ in
;              variable names). May occasionally avoid hash changes on game
;              updates due to changes in the game developer's build environment
;              (shader compiler version, build path embedded in debug info,
;              constants renamed, etc). Will not avoid hash changes if the
;              shader code, constant values, etc are changed.
shader_hash = 3dmigoto

; Switch to newer texture hashes that are less susceptible to corruption and
; don't have collisions if part of the image matches. May have a slight
; performance penalty since more of the image is hashes. Do not enable if
; upgrading an existing fix!
texture_hash = 1

; Shaders in game will be replaced by these custom shaders.
override_directory=ShaderFixes

; Automatically patched shaders will be written here if caching is enabled.
cache_directory=ShaderCache

; Shaders that are directly compiled by the game, instead of binary, go here.
storage_directory=ShaderFromGame

; cache all compiled .txt shaders into .bin. this removes loading stalls.
cache_shaders=1

; Indicates whether scissor clipping should be disabled by default. A restart
; is required for this to take effect. If you need to do this on a per shader
; basis, you can use "run = BuiltInCustomShaderEnableScissorClipping" or "run =
; BuiltInCustomShaderDisableScissorClipping" from a [ShaderOverride], or define
; your own [CustomShader] section to change whatever render state you need and
; use "handling = skip" and "draw = from_caller" to transfer the draw call to
; them.
rasterizer_disable_scissor=0

; Tracks copies and updates to textures which may cause their hash to become
; out of sync with their contents - enable if texture hashes seem unreliable.
; You can also set this to 2 to disable hash contamination detection for better
; performance in hunting mode, but only do that if you are certain you won't
; be needing this in the game in question.
;track_texture_updates=1

; Registers where the StereoParams and IniParams textures will be assigned -
; change if the game already uses these registers. Newly decompiled shaders
; will use the new registers, but existing shaders will not be updated - best
; workflow is to remove ShaderCache after changing these and run a search and
; replace on all shaders in ShaderFixes. Set to -1 to disable if not required.
stereo_params = 125
ini_params = 120

; Set to 1 to assemble the Input / Output / Patch Constant signature comments
; in shader assembly to allow them to be changed for passing new values between
; pipeline stages. Be careful with these comments if this is enabled - treat
; them like code! If set to 0 the assembler will use the old behaviour and
; re-use the sections from the unmodified shaders.
assemble_signature_comments = 1

; Include raw "undecipherable custom data" when disassembling shaders for
; ShaderRegex - leaving this out is for backwards compatibility with patterns
; that may not expect to see it since we didn't used to include it. Shaders
; dumped via export or hunting always include any undecipherable data.
disassemble_undecipherable_custom_data = 1

; Replace constant buffer offsets with indices & components in the comment
; blocks when disassembling shaders so they match up with how they are accessed
; in the code, making things easier to follow and simplifying ShaderRegex.
patch_assembly_cb_offsets = 0

;------------------------------------------------------------------------------------------------------
; Analyzation options.
;
; save all autofixed shaders as HLSL
export_fixed=0

; save all shaders sent to DX11 as ASM, or as HLSL text files if compiled by game.
export_shaders=0

; save all shaders seen as HLSL code, autofixed or not. 1= HLSL only, 2=HLSL+OriginalASM, 3=HLSL+OriginalASM+RecompiledASM
export_hlsl=0

; stores a ShaderUsage.txt file on any marking button press.
dump_usage=0

; Stereoize all shader parameters with position semantic.
fix_sv_position=0


;------------------------------------------------------------------------------------------------------
; Shader manipulations without patches + shader filtering.
;------------------------------------------------------------------------------------------------------
;[ShaderOverride1]
;Hash=69732c4f23cb6c48
; Custom stereo separation value while rendering objects using this shader.
;Separation=0
; Custom stereo convergence value while rendering objects using this
; shader (e.g. convergence=0 will move an object to infinity).
;Convergence=0
; don't draw anything using this shader.
;Handling=skip
; Use replaced shader only when there is/is not an active depth buffer (for UI filtering)
; Deprecated: use 'x = oD' instead, and test for negative zero in the shader with
; if (asint(IniParams[0].x) == asint(-0.0)) { /* depth inactive */ } else { /* depth active */ }
;depth_filter = depth_inactive
;depth_filter = depth_active
; Override a value from [Constants] when this shader is used:
;x=2.0
; Pass the dimensions of the active render target and resolution (obtained with
; get_resolution_from) into the shader:
;x1=rt_width
;y1=rt_height
;z1=res_width
;w1=res_height
; Use t0 from active pixel shader for texture filtering. Will be 0 if no
; [TextureOverride*] section exists for the texture or 1 if one does. For
; advanced filtering, set a value for filter_index in the [TextureOverride]
; section. This also works with other slot types (like o0, oD, ib, etc). Will
; be -0.0 (needs a special test) if no resource bound in this slot:
;x2 = ps-t0
; Match the partner shader (any of vs/hs/ds/gs/ps/cs). Works in much the same
; way as texture filtering - set a filter_index in the [ShaderOverride] or
; [ShaderRegex] for the partner shader you want to match and it will be set in
; this variable, or 1 = ShaderOverride/Regex matched with no filter_index, 0 =
; No ShaderOverride/Regex matched, -0.0 = No shader bound. The filter_index
; from a ShaderOverride always takes priority over any matching ShaderRegex.
;local $partner = vs
; Override the shader model to allow using newer features like Texture2DMS:
;model=vs_5_0
; Activate a preset section when this shader override is in use.
;preset = PresetExample
; Enable/disable scissor clipping for this specific shader. This is an alias
; for "run = BuiltInCustomShaderDisableScissorClipping"
; or  "run = BuiltInCustomShaderEnableScissorClipping"
;disable_scissor = 1
; There's also support for copying textures, constant buffers, depth buffers,
; etc. from one shader to another. This is a complex topic - see this page:
;    https://github.com/bo3b/3Dmigoto/wiki/Resource-Copying

;[ShaderOverrideVol1]
;Hash=fa28d0fb582aa2f6
;Resource\ShaderFixes\debug_cb.ini\DebugCB = ps-cb1

;------------------------------------------------------------------------------------------------------
; On the fly regular expression shader patching engine
;------------------------------------------------------------------------------------------------------
;
; These sections define regular expressions to match against shaders and apply
; certain classes of fixes on the fly. Only assembly shaders are supported by
; this method for reliability and performance reasons.
;
; Every pattern must have a main section prefixed with ShaderRegex:
;
;[ShaderRegex1]
; shader_model is required and must be set to the types of shaders that this
; pattern will be applied against. Multiple shader models can be specified to
; match the pattern against multiple types. There are some differences in
; instructions between shader model 4 and 5 (such as in resource load
; instructions), so in some cases you may need separate patterns for each.
;shader_model = ps_4_0 ps_5_0
;
; temps is used to give names to temporary registers that you will use in the
; pattern. 3DMigoto will identify free register numbers and automatically
; adjust dcl_temps as required.
;temps = stereo tmp1
;
; This main section also acts as a command list so that you can define actions
; that will be applied on every matching shader, just as you would on any other
; command list enabled section, such as ShaderOverride, Present, etc.
;
;
; The next section of interest is the regular expression pattern. If this
; section is omitted than every shader of with matching shader_model will be
; matched (and have the command lists and InsertDeclarations processed). The
; first part of the section name must match the main ShaderRegex section you
; defined above, and it ends with ".Pattern". The regular expression grammar
; that we support is PCRE2, which is largely compatible with the powerful Perl
; and Python grammars. You can find the syntax reference here, but generally
; speaking any regular expression tutorial will give you a good primer:
;
;   http://www.pcre.org/current/doc/html/pcre2syntax.html
;
; Note that since this is parsed in an ini file that blank lines and ini
; comments are ignored, and preceding and trailing whitespace from each line
; will be stripped, so if you need to match an indented line you will need to
; explicitly match the whitespace at the start of the line with \s*
; You should also use \n to match the newline character at the end of each
; line. This should not be confused with extended mode activated by the (?x)
; switch, which will ignore *all* whitespace to allow complex patterns to be
; broken up for clarity.
;
; Multiline matching is enabled by default, as is case insensitivity (due to
; differences in the capitalisation produced by different versions of the
; disassembler), but PCRE2 provides switches for most of these options if you
; need something else.
;
; This is an example of how you might match a matrix multiply in a shader, and
; uses Python style named capture groups to pull out the registers and swizzles
; of the X and Z coordinates, and another named capture group to verify that
; the register used in the div instruction matches the one used in the multiply:
;
;[ShaderRegex1.Pattern]
;mul r\d+\.xyzw, r\d+\.yyyy, cb0\[28\]\.xyzw\n
;mad r\d+\.xyzw, (?P<pos_x>r\d+)\.(?P<swizzle_x>[xyzw])[xyzw]{3}, cb0\[27\]\.xyzw, r\d+\.xyzw\n
;mad r\d+\.xyzw, (?P<pos_z>r\d+)\.(?P<swizzle_z>[xyzw])[xyzw]{3}, cb0\[29\]\.xyzw, r\d+\.xyzw\n
;add (?P<result>r\d+)\.xyzw, r\d+\.xyzw, cb0\[30\]\.xyzw\n
;div r\d+\.[xyzw]{2}, (?P=result)\.[xyzw]{4}, r\d+\.wwww\n
;
;
; The next section specifies how to modify the matched pattern. Again the name
; must begin with the same name as the main section, and end in
; ".Pattern.Replace" (there is a reason the replacement is associated with the
; pattern, but that's coming soon). You can (and I highly encourage that you
; do) use named capture groups in the above pattern and substitute them in
; here. Temporary registers that you defined in the main ShaderRegex section
; are also available here with the same syntax as named capture groups. Use
; ${0} to indicate where the matched pattern goes, allowing you to insert code
; before and/or after it, or use additonal capture groups to insert code in the
; middle. Extended substitution is enabled in PCRE2, which among other things
; makes \n insert a newline.
;
;[ShaderRegex1.Pattern.Replace]
;\n
;// UE4 shadow correction:\n
;ld_indexable(texture2d)(float,float,float,float) ${stereo}.xyzw, l(0, 0, 0, 0), t125.xyzw\n
;add ${tmp1}.x, ${pos_z}.${swizzle_z}, -${stereo}.y\n
;mad ${pos_x}.${swizzle_x}, -${tmp1}.x, ${stereo}.x, ${pos_x}.${swizzle_x}\n
;\n
;${0}
;
;
; The final section allows you to insert new declarations into the shader, and
; 3DMigoto will check that this declaration has not already been inserted
; first. Typically this is used to get access to StereoParams in t125:
;
;[ShaderRegex1.InsertDeclarations]
;dcl_resource_texture2d (float,float,float,float) t125


;------------------------------------------------------------------------------------------------------
; texture / render target manipulations
;------------------------------------------------------------------------------------------------------
;
; NOTE: If you are trying to match a texture the same size as the resolution (or
; a /2, x2, x4 or x8 multiple), you should confirm that the same hash is used
; on different resolutions, and adjust get_resolution_from if necessary.
;
; NOTE: If you find a texture hash seems to change inconsistently, try enabling
; track_texture_updates in the [Rendering] section.
;
;[TextureOverride1]
;Hash=c3e55ebd
; NVidia stores surface creation mode heuristics in the game profile. setting
; this option overrides the creation mode for a given texture / buffer.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - create stereo surface.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - create mono surface.
;StereoMode=2

;[TextureOverride2]
;Hash = e27b9d07
; Prevent the game reading from this texture - will give the game a blank
; buffer instead. Used to prevent CryEngine games falsely culling objects. Use
; the frame analysis log and look for MapType:1 to identify possible hashes.
;deny_cpu_read=1
; Expand the region copied to this texture with CopySubresourceRegion (similar
; issue to rasterizer_disable_scissor). Used to solve issues with transparent
; refraction effects (like glass) in CryEngine games.
;expand_region_copy=1

;[TextureOverrideUAVNotRT]
; Example of fuzzy matching based on attributes instead of hash. Provides an
; alternative to driver heuristics that we have more precise control over.
;match_type = Texture2D
;match_width = height * 16 / 9
;match_height = !res_height
;match_msaa = >1
;match_bind_flags = +unordered_access -render_target
;match_priority = -1
;StereoMode = 2

;------------------------------------------------------------------------------------------------------
; Example of settings override by mouse button configuration
; Mapping of from game provided hard coded convergence values to custom values
; Those are values for L.A. Noir
; Example of settings override by mouse button configuration
;------------------------------------------------------------------------------------------------------
;[ConvergenceMap]

;Map1=from 3e99999a to 0.3
;Map2=from 3f800000 to 1.0
;Map3=from 3f666666 to 0.9


;------------------------------------------------------------------------------------------------------
; Updates the game's driver profile on launch.
;
; Any changes here will require the user to OK a UAC prompt the first time they
; run the game, but the DLL tries to only do that if it is actually required.
;------------------------------------------------------------------------------------------------------
[Profile]
StereoProfile = 1
StereoTextureEnable = 0x00000027
Disable2DD = 1
StereoFlagsDX10 = 0x00005008
StereoConvergence = 2.0
APP_COMPAT_SHIM = 2
Comments = "Final Fantasy XV 3D fix by masterotaku and DJ-RK"

; This setting should always be added to a profile - it is required for a
; number of other settings to work, as well as allowing the convergence to be
; saved. If you are customising a profile you should **always uncomment this**:
; StereoProfile = 1
;
; This setting enables stereo compute shaders (0x00004000), which is required
; to fix a lot of "one eye" type rendering issues in many DX11 games, and
; allows stereo2mono and the side-by-side / top-and-bottom output modes to work
; in SLI (0x00000008):
; StereoFlagsDX10 = 0x00004008
; StereoTextureEnable = 0x00000023
;
; This sets the default convergence in the profile. Note that 3DMigoto will
; happily override the default value from the driver, but will only override
; the user's custom convergence if it has another reason to update the profile,
; such as a change to another setting (adding a version tag to the Comments
; setting would be one way to force an update):
;StereoConvergence = 0.5
;
; This changes the green text that the driver displays, and is a good place to
; put any reminders to display to the user or just take some credit:
; Comments = "Gamename 3D fix by DJ-RK"
;
; Change the rating: "0": 3D Vision Ready, "1": Excellent, "2": Good,
;                    "3": Fair, "4": Not Recommended
;Compat = "0"
;
; If you have added some comments, you probably want to force the green text to
; show up when the game is next run. Note that like convergence, 3DMigoto will
; only override a user setting here if something else has also been updated
; (such as Comments), so this will usually only show up the first time a user
; runs the game after installing the fix (be sure to enable StereoProfile).
;StereoMemoEnabled = 1
;
; Disable compatibility mode to make sure users are seeing the real deal. Like
; convergence, 3DMigoto will respect the users custom settings here:
;Disable2DD = 1
;
; Put a reminder in the green text of compatibility mode that they are not
; seeing the real deal:
;2DD_Notes = "Compatibility mode is enabled. To use the fix, please disable it with Ctrl+Alt+F11"
;
; These two options change which constant buffers the driver uses to pass the
; separation and convergence to any Vertex and Domain shaders it has modified.
; The default value is 12, and you may need to change it if the game already
; uses that constant buffer for any purpose, which should be apparent as you
; will see 2D geometry on any shader that uses this. You should avoid using
; these constant buffers yourself unless you understand the nuances involved.
;DX10VSCBNumber = 12
;DX10DSCBNumber = 12
;
; Workaround crashes and hangs in games that violate DirectX threading
; constraints (e.g. Resident Evil 2/7, Devil May Cry 5). Set to 1 to always
; enable workaround or 2 to only enable workaround with 3D Vision:
; APP_COMPAT_SHIM = 2
;
; If a setting doesn't have a name or you don't know what it is (check the
; d3d11_log.txt for the names of all settings in this profile, or use the name
; from Nvidia Profile Inspector), you can use the hex ID (in fact, you can even
; paste a complete profile from Geforce Profile Manager - just be sure to
; delete any corrupt string settings if you do):
;0x1033cec2 = 0x00000002
;
; There are many more options, and we have tried to document them here -
; *please* edit this page if you figure out anything new:
; http://wiki.bo3b.net/index.php?title=Driver_Profile_Settings


;------------------------------------------------------------------------------------------------------
; This section defines a shortcut for unbinding all render and depth targets,
; which is commonly needed in [CustomShader] sections since all bound render
; and depth targets *must* be the same size, and leaving something else bound
; is a sure way for things to go weirdly wrong. Call it from any section that
; supports a command list with 'run = CommandListUnbindAllRenderTargets' after
; you have copied any state you need from these and before binding your own.
;------------------------------------------------------------------------------------------------------
[CommandListUnbindAllRenderTargets]
run = BuiltInCommandListUnbindAllRenderTargets

;------------------------------------------------------------------------------------------------------
; Commands to run from the Present call at the start/end of each frame
;
; Useful to clear custom resources or ini params at the start of each frame, or
; to run a custom shader to do whatever you can dream up. The post keyword will
; make an action run at the start of a frame instead of the end - as general
; guideline you want overlays drawn at the end of a frame and resources cleared
; at the start of a new frame.
;------------------------------------------------------------------------------------------------------
[Present]
; Example: Clear an ini param at the start of each frame:
;post x = 0
; Example: Undefine a custom resource until something is copied into it:
;post ResourceDepthBuffer = null
; Example: Clear a custom resource with black/zero at the start of each frame
; (beware that driver bugs may mean only one eye is cleared in some cases):
;post clear = ResourceFoo

; If you are looking for CustomShader3DVision2SBS, CustomShaderSoftwareMouse or
; CustomShaderUpscale, these are now enabled in the [Include] section at the
; top of this file instead. The other options related to these are still in
; the same place.
Last edited by Hans Davis on Tue May 12, 2020 6:50 pm, edited 4 times in total.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

Then the non functional d3dx.ini code after launching through 3dfm:

Code: Select all

; FINAL FANTASY XV 3D FIX BY MASTEROTAKU AND DJ-RK
; ------------------------------------------------------------------------------------------------------
; Additional configuration files
; ------------------------------------------------------------------------------------------------------
[Include]

; If you were using 3DMigoto as a full modding platform for a given game
; instead of just a single stand-alone mod (e.g. facilitating mesh/texture
; replacements or other graphics mods), you can include an entire directory
; where users can extract third party mods created by others and 3DMigoto will
; include every .ini file and any external files referred to by CustomShader /
; Resource sections (Replaced shaders in these mods should still go in
; ShaderFixes for now, unless the modders want to use CustomShaders or
; ShaderRegex to keep them standalone).
; include_recursive = Mods
exclude_recursive=DISABLED*
include=ShaderFixes\mouse.ini
include=ShaderFixes\3dvision2sbs.ini
include=ShaderFixes\FFXV_fix.ini
include=ShaderFixes\help.ini

; include = ShaderFixes\debug_cb.ini
; ------------------------------------------------------------------------------------------------------
; Logging options.
; Comment line or set value to 0 for no logging.
; ------------------------------------------------------------------------------------------------------
[Logging]

; Log all API usage
calls=0

; Log Input key actions
input=0

; Super verbose massive log
debug=0

; Unbuffered logging to avoid missing anything at file end
unbuffered=0

; Force the CPU affinity to use only a single CPU for debugging multi-threaded
force_cpu_affinity=0

; Log NVAPI convergence modifications
convergence=0

; Log NVAPI separation modifications
separation=0

; Enable 3DMigoto's deadlock detection algorithm. If you get hangs (not
; crashes) this might help find out why.
debug_locks=0

; ------------------------------------------------------------------------------------------------------
; Command list to run on launch / after config reload.
; ------------------------------------------------------------------------------------------------------
[Constants]
$\ShaderFixes\3dvision2sbs.ini\mode=7

; Declare named global variables here to use them from other command lists,
; [Key] bindings and [Preset]s. Named variables are namespaced so that any
; included ini files can use their own without worrying about name clashes:
; global $my_named_variable = 0.0
; Mark a variable as persist[ent] to automatically save it to the
; d3dx_user.ini on exit or F10 (config_reload). Use Ctrl+Alt+F10
; (wipe_user_config) to discard persistent values:
; global persist $some_persistent_variable = 1
; Set the initial value of "IniParams" variables, which are accessible from
; within shaders, but they are not namespaced and too many can become unwieldy:
; x = 0.8
; y = 1.0
; z = 1.2
; w = 2.0
; y1 = 3
; This is used by the 3DVision2SBS custom shader. To use, find the [Include]
; section above and uncomment the 'include = ShaderFixes\3dvision2sbs.ini'
; line. F11 will cycle between these modes while playing, and the current
; value will be automatically saved to the d3dx_user.ini on exit / F10:
; 0 = Regular 3D Vision
; 1 = Reversed 3D Vision
; 2 = Side by Side
; 3 = Reversed Side by Side
; 4 = Top and Bottom
; 5 = Reversed Top and Bottom
; 6 = Line interlacing
; 7 = Reversed Line interlacing
; $\ShaderFixes\3dvision2sbs.ini\mode = 0
; ------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
; 
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle forwards and/or backwards
; between several presets.
; 
; Delays (type=hold only) and linear or cosine trasition periods (any key type)
; can be used to better synchonrise setting changes to the game's animations,
; or to smoothly adjust UI elements over a short period of time.
; 
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
; 
; Key combinations can be specified by separating key names with spaces, e.g.
; "Shift Q". It is also possible to indicate that a key must *not* be held for
; the binding to activate, e.g. "NO_ALT F1" would prevent the binding from
; activating when taking a 3D Screenshot with Alt F1. "NO_MODIFIERS" may be
; used as a shorthand for excluding all standard modifiers (Ctrl, Alt, Shift,
; Windows).
; 
; Keys can also be from XBox controllers using:
; XB_LEFT_TRIGGER, XB_RIGHT_TRIGGER,
; XB_LEFT_SHOULDER, XB_RIGHT_SHOULDER,
; XB_LEFT_THUMB, XB_RIGHT_THUMB,
; XB_DPAD_UP, XB_DPAD_DOWN, XB_DPAD_LEFT, XB_DPAD_RIGHT,
; XB_A, XB_B, XB_X, XB_Y, XB_START, XB_BACK, XB_GUIDE
; By default all attached controllers are used - to associate a binding with a
; specific controller add the controller number 1-4 to the prefix, like
; XB2_LEFT_TRIGGER, though this may be more useful for hunting than playing.
; 
; Multiple keys may be set in a single [Key] section to allow keyboard and xbox
; controller toggles and cycles to share the same state as each other.
; ------------------------------------------------------------------------------------------------------
; Example for changing default settings
; [KeyBasicExample]
; Key = z
; separation = 100.0
; convergence = 4.0
; x = 0.98
; Named variables declared in [Constants] can be set here:
; $my_named_variable = 2
; Example to support momentary hold type overrides, like aiming. Shows how to
; bind two separate buttons to the same action.
; [KeyMomentaryHoldExample]
; Key = RBUTTON
; Key = XB_LEFT_TRIGGER
; convergence = 0.1
; type = hold
; Example for a toggle override that remembers the previous value and restores
; it automatically when pressed a second time.
; [KeyToggleExample]
; Key = q
; separation = 0.1
; type = toggle
; y = 0.0
; Example for using a smart cycle type instead of a toggle. Smart is now the
; default for cycles, and when activated it will quickly check if the current
; values match its current cycle preset and resynchronise if necessary. This is
; better than type=toggle if you always want to toggle between exactly two
; values specified here, while type=toggle is better if you want to remember
; some arbitrary current value and return to it:
; [KeySmartCycleExample]
; Key = w
; type = cycle
; smart = true
; $some_variable = 0, 1
; Example for a momentary hold, but with a delay followed by a smooth
; transition (ms) on hold and release to sync better with the game. Note that
; delay only works with type=hold (for now), while transitions will work with
; all types.
; [KeyDelayAndTransitionExample]
; Key = RBUTTON
; Key = XB_LEFT_TRIGGER
; type = hold
; y = 0.25
; delay = 100
; transition = 100
; transition_type = linear
; release_delay = 0
; release_transition = 500
; release_transition_type = cosine
; Example of a cycle transition that might be used to provide several presets
; that set both convergence and UI depth to suit different scenes in a game.
; Cosine transitions are used to smooth the changes over 1/10 of a second.
; Both keyboard and Xbox controller buttons are bound to this same cycle, so
; that they can be used interchangeably and remember the same position in the
; preset list. A second key is used to cycle backwards through the presets, and
; wrapping from one end of the list to the other is disabled.
; [KeyCycleExample]
; Key = E
; Key = XB_RIGHT_SHOULDER
; Back = Q
; Back = XB_LEFT_SHOULDER
; type = cycle
; wrap = false
; convergence = 1.45, 1.13, 0.98
; z           = 0.25,  0.5, 0.75
; transition = 100
; transition_type = cosine
; Keys can only directly set variables to simple values. If you want to do
; something more advanced, you may need to call a command list from the key
; binding. type=hold/toggle keys will run the post phase of the command list on
; release.
; [KeyCommandListExample]
; key = f
; run = CommandListF
; [CommandListF]
; if $foo == 0 && cursor_showing
; $foo = $bar * 3.14 / rt_width
; else
; $foo = 0
; endif
; Example of a preset override that can be referenced by one or more [ShaderOverride*]
; sections which can be activated / deactivated automatically when one of the shader
; overrides is activated / deactivated. This is useful for setting automatic
; convergence for specific scene.
; [PresetExample]
; convergence = 0
; $some_variable = 1
; transition = 100
; transition_type = linear
; ------------------------------------------------------------------------------------------------------
; Shader hunting options.
; Default setup is to use keyboard similar to Helix presets
; ------------------------------------------------------------------------------------------------------
[Hunting]

; 0: Release mode is with shader hunting disabled, optimized for speed.
; 1: Hunting mode enabled
; 2: Hunting mode "soft disabled" - can be turned on via the toggle_hunting key
hunting=0

; Highlight mode of currently selected shader / rendertarget.
; "skip" = skip shader. don't render anything using the currently selected shader.
; "original" = fall back to original shader if the currently selected shader was patched.
; "pink" = make the output hot pink to make it standout.
; "mono" = disable stereo for the selected shader / rendertarget.
marking_mode=skip

; Cycle through available marking modes. VK_DECIMAL VK_NUMPAD0
; means hold the dot on the number pad while pressing numpad 0:
next_marking_mode=no_modifiers VK_DECIMAL VK_NUMPAD0

; What action(s) to take when marking a selected shader/buffer
; "hlsl" = decompile shader to HLSL and copy to ShaderFixes
; "asm" = disassemble shader and copy to ShaderFixes (if hlsl is disabled or failed)
; "regex" = output ShaderRegex patched shader if applicable (NOTE: Will lose associated command list)
; "clipboard" = copy shader/buffer hash to clipboard
; "mono_snapshot" = take mono screenshot (previously called mark_snapshot=1)
; "stereo_snapshot" = take stereo screenshot (previously called mark_snapshot=2)
; "snapshot_if_pink" = limit mono/stereo_snapshot to when marking_mode=pink
marking_actions=clipboard regex hlsl asm stereo_snapshot snapshot_if_pink

; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
; 
; XBox controllers are supported using the same bindings as the [Key] sections
; (see above). If the game already uses the first controller you might try
; using the second controller for hunting with e.g. XB2_LEFT_SHOULDER
; rotate through all VISIBLE pixel shaders at the current scene.
previous_pixelshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD1
next_pixelshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD2
mark_pixelshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD3

; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD4
next_vertexshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD5
mark_vertexshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD6

; rotate through all USED index buffers at the current scene.
previous_indexbuffer=no_modifiers NO_VK_DECIMAL VK_NUMPAD7
next_indexbuffer=no_modifiers NO_VK_DECIMAL VK_NUMPAD8
mark_indexbuffer=no_modifiers NO_VK_DECIMAL VK_NUMPAD9

; rotate through all USED vertex buffers at the current scene.
previous_vertexbuffer=no_modifiers NO_VK_DECIMAL VK_DIVIDE
next_vertexbuffer=no_modifiers NO_VK_DECIMAL VK_MULTIPLY
mark_vertexbuffer=no_modifiers NO_VK_DECIMAL VK_SUBTRACT

; rotate through all USED render targets at the current scene.
previous_rendertarget=no_modifiers VK_INSERT
next_rendertarget=no_modifiers VK_HOME
mark_rendertarget=no_modifiers VK_PAGEUP

; rotate through all USED compute shaders at the current scene.
previous_computeshader=no_modifiers VK_DECIMAL VK_NUMPAD1
next_computeshader=no_modifiers VK_DECIMAL VK_NUMPAD2
mark_computeshader=no_modifiers VK_DECIMAL VK_NUMPAD3

; rotate through all VISIBLE geometry shaders at the current scene.
previous_geometryshader=no_modifiers VK_DECIMAL VK_NUMPAD4
next_geometryshader=no_modifiers VK_DECIMAL VK_NUMPAD5
mark_geometryshader=no_modifiers VK_DECIMAL VK_NUMPAD6

; rotate through all VISIBLE domain shaders at the current scene.
previous_domainshader=no_modifiers VK_DECIMAL VK_NUMPAD7
next_domainshader=no_modifiers VK_DECIMAL VK_NUMPAD8
mark_domainshader=no_modifiers VK_DECIMAL VK_NUMPAD9

; rotate through all VISIBLE hull shaders at the current scene.
previous_hullshader=no_modifiers VK_DECIMAL VK_DIVIDE
next_hullshader=no_modifiers VK_DECIMAL VK_MULTIPLY
mark_hullshader=no_modifiers VK_DECIMAL VK_SUBTRACT

; Re-enable shaders once done with hunting:
done_hunting=NO_MODIFIERS NO_VK_DECIMAL VK_ADD

; Screenshot as pns
take_screenshot=no_modifiers VK_SNAPSHOT

; reload all fixes from ShaderFixes folder
reload_fixes=no_modifiers VK_F10

; Key to turn hunting itself on/off.  This will also show/hide overlay.
; Hunting must be set to either 1 or 2 to enable this toggle.
toggle_hunting=NO_MODIFIERS NO_VK_DECIMAL VK_NUMPAD0

; Key to reload the settings from the d3dx.ini without restarting. This can
; be the same key as reload_fixes for convenience, or a different key may be
; used to avoid resetting the ini parameters every time the shaders are
; reloaded. Note that not all settings can be reloaded, so if something doesn't
; work as expected you may still have to restart the game:
reload_config=NO_MODIFIERS VK_F10

; Deletes the d3dx_user.ini file and reloads settings to get a "clean slate"
wipe_user_config=ctrl alt no_shift VK_F10

; Hold this key to temporarily disable the fix - useful to quickly check what
; an effect looked like in the original game.
show_original=no_modifiers VK_F9

; Shows the CPU utilisation and performance impact of every active command list
monitor_performance=ctrl no_shift no_alt F9

; Freeze the current performance monitor display and log to the d3d11_log.txt
freeze_performance_monitor=no_ctrl shift no_alt F9

; Sets how often the performance monitor updates
monitor_performance_interval=2.0

; Auto-repeat key rate in events per second.
repeat_rate=12

; Enabling this makes the overlay show the hashes of the currently selected
; shaders and index buffer during hunting. We don't actually recommend this,
; because writing down the hash from the screen is a bad habbit that tends to
; be very error prone - the recommended workflow is to dump the shaders to disk
; and check the most recently modified file in ShaderFixes, but advanced users
; can enable this if they want it:
verbose_overlay=1

; tunable parameter to use in modified shaders as variable (StereoParams.Load(int3(1,0,0)).xyzw)
; enabling tuning results in a small performance hit because the parameter texture
; tune_enable=1
; tune_step=0.1
; tune1_up=VK_INSERT
; tune1_down=VK_DELETE
; tune2_up=X
; tune2_down=Z
; Dumps out a flight log of DirectX state changes and the contents of each
; render target after every immediate draw call for the next frame. Takes up a
; large amount of space, so disabled by default.
analyse_frame=no_modifiers VK_F8

; analyse_options specifies options for the frame analysis feature. Options can
; be combined by separating them with a space.
; 
; Dumping selection (also refer to the "dump" command described below):
; dump_rt: Dumps render targets and UAVs
; dump_depth: Dumps depth/stencil targets
; dump_tex: Dumps shader resources (textures)
; dump_cb: Dumps constant buffers
; dump_vb: Dumps vertex buffers
; dump_ib: Dumps index buffers
; 
; Texture2D format selection:
; jpg/jps: Dumps out 2D/stereo resources as .jps files. These are the easiest
; to work with and don't take up as much space as DDS files, but
; they are not dumped for every resource and are missing some data.
; dds: Dumps out 2D/stereo resources as .dds files. WARNING: This option
; may require hundreds of gigabytes and a long time! Only use it if
; you absolutely need more information than you can get otherwise.
; jps_dds: Dumps out .jps when possible, .dds otherwise (default).
; desc: Dumps out DirectX resource descriptions to .dsc files.
; 
; Buffer format selection:
; buf: Dumps out buffers as binary .buf files
; txt: Decodes buffers as text, and includes some extra metadata not
; found in the .buf files. May not correctly decode all buffers.
; Default if dump_cb/vb/ib was specified.
; desc: Dumps out DirectX resource descriptions to .dsc files.
; 
; Misc options:
; hold: Continue analysing subsequent frames while the key is held
; clear_rt: Clears each render target the first time they are used in the
; frame. Makes it easier to see what is being drawn if the game
; doesn't clear them, but might cause some effects not to render.
; filename_reg: Normally the draw number is the first part of the filename so
; that the files will be sorted in the order they were used in
; the game. Sometimes it is more desirable to examine how a
; specific output changed through the frame and this option will
; place the register number first in the filename to allow that.
; mono: Dump out mono textures instead of stereo. To dump both, specify
; 'mono stereo'. If neither are specified, defaults to stereo.
; dump_on_unmap: Dumps buffers/textures whenever the game maps them to the CPU
; with the Map() / Unmap() calls. Typically used to update
; constant buffers.
; dump_on_update: Dumps buffers/textures whenever the game updates them with
; the UpdateSubresource() call. Alternative method used to
; update constant buffers.
; share_dupes: Use a folder that is shared with subsequent frame analysis
; dumps for de-duplicating dumped resources. Makes future frame
; analysis dumps faster and use less disk space if there are a
; lot of identical textures, but less trivial to delete
; individual dump folders to reclaim disk space (i.e. all or
; nothing). Individual frame analysis folders are still
; de-duplicated regardless of this setting.
; symlink: Try to use symbolic links when de-duplicating files in a
; frame analysis dump. Requires developer mode to be enabled in
; Windows 10, and will fall back to hard links or shortcuts
; when not possible. Useful to see the relationship between
; deduplicated files, especially when working with cygwin, but
; some Windows applications may behave worse when using these.
; 
; Experimental Deferred Context (multi-threaded rendering) Frame Analyis Support:
; deferred_ctx_immediate: Dumps resources from deferred contexts using the
; immediate context. Not suitable for dump_rt or other
; resources altered during the frame (by the GPU or CPU). May
; be ok for static unchanging resources, such as collecting HUD
; textures for filtering. Not thread safe - potential to crash.
; Recommended (not enforced) to use in conjunction with 'mono'.
; deferred_ctx_accurate: Delays dumping resources from deferred contexts
; until after the GPU has updated them. Copies of *all*
; resources being dumped are held in memory, so it may run out
; - try to restrict using this option to specific resources
; where it is needed - preferably via the "dump" command rather
; than the global analyse_options. Works with 'stereo'.
; 
; analyse_options can also be specified in [ShaderOverride*] sections (or other
; command lists) to set up triggers to change the options mid-way through a
; frame analysis, either for a single draw call (default), or permanently (by
; adding the 'persist' keyword).
; 
; Alternatively, "dump" can be specified in a [ShaderOverride*] section (or
; any other command list) to dump specific resources with per-resource options
; (e.g. "dump = dump_tex dds share_dupes mono ps-t0"), dump resources at a
; specific point in time (e.g. "pre dump = o0") or dump a custom resource that
; frame analysis cannot otherwise see (e.g. "dump = ResourceDepthBuffer"). Use
; additional "dump" commands to dump multiple resources.
; 
; analyse_options = dump_rt jps clear_rt
; ------------------------------------------------------------------------------------------------------
; Chain load other wrapper DLLs instead of system DLLs.
; ------------------------------------------------------------------------------------------------------
[System]

; proxy_d3d9=d3d9_helix.dll
; proxy_d3d11=d3d11_helix.dll
; We force all LoadLibrary calls back to the game folder, because games
; and nvidia both break the loading chain by going directly to System32.
; load_library_redirect=0 for off, allowing all through unchanged.
; load_library_redirect=1 for nvapi.dll override only, forced to game folder.
; load_library_redirect=2 for both d3d11.dll and nvapi.dll forced to game folder.
load_library_redirect=2

; Only enable key input processing when the game is in the foreground:
check_foreground_window=1

; Options to use hooking instead of wrapping. Used in MGSV. Possible objects to hook include:
; deferred_contexts
; immediate_context
; device
; all - all of the above
; recommended - settings currently recommended by the 3DMigoto developers
; hook=recommended
; Options to allow ID3D11Device to be created and wrapped.  We have typically had good
; luck with returning an error for all non-dx11 requests, but some games error out
; with these checks in place.
; The allow_create_device allows D3D10 Device creation and is needed for some games.
; It has two options, allow_create_device=1, which will allow anything to go through
; without returning an error, and allow_create_device=2, which will force all requests
; to become D3D11 Devices, no matter what was passed in.
; The allow_platform_update option allows the D3D11Device1 and D3D11Context1
; interfaces introduced in Windows 8 and the platform update of Windows 7.
; 
; Start with allow_check_interfaces, if that doesn't work
; then try allow_create_device=2, lastly try allow_create_device=1
; 
allow_check_interface=1
allow_create_device=1
allow_platform_update=1

; ------------------------------------------------------------------------------------------------------
; Settings used by the external 3DMigoto Loader
; ------------------------------------------------------------------------------------------------------
[Loader]

; Target process to load into. You can optionally include part of the directory
; structure in case the game's executable name is generic.
; target = \Dead or Alive 6\DOA6.exe
; This tells the loader where to find 3DMigoto. This DLL must be located
; in the same directory as 3DMigoto Loader.exe and will be loaded in the target
; process under the same name. If d3d11.dll doesn't work try 3dmigoto.dll
; module = d3d11.dll
; Uncomment to always elevate the loader to support games that run as admin.
; This will display a UAC prompt so only enable it if you actually need it.
; require_admin = true
; Automatically launch the game from the loader. If you put the executable name
; here than the loader will need to be located in the game directory. You can
; use the full path, but that is not recommended to ship any fixes with since
; it will vary on a user's system. If the game is on Steam you can use the
; steam browser protocol to launch it, optionally passing it any command line
; arguments you need (unfortunately Steam pops a dialog to confirm command line
; parameters, which tends to end up behind other windows):
; launch = DOA6.exe
; launch = steam://run/838380/
; launch = steam://run/237850//-window-mode exclusive/
; Delay this many extra seconds after confirming that 3DMigoto was loaded in
; the target process. For games that respawn themselves or have multiple
; executables of the same name when the first process we see may not be the
; actual one we need. Set to -1 to disable automatic shut down.
; delay = 20
; ------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
; ------------------------------------------------------------------------------------------------------
[Device]

; This attempts to force exclusive full screen when this key is pressed, and
; may be useful in games where full_screen doesn't work or has undesirable side
; effects:
force_full_screen_on_key=SHIFT VK_F7

; This toggles forcing the full screen mode on and off. It will not take effect
; immediately, but will change what happens the next time the game tries to
; change the fullscreen mode. This is a specific hack to workaround a bug in
; Unity games, which crash when alt+tabbing out from exclusive mode fullscreen.
; 
; To switch out of a Unity game without it crashing:
; Enable this option, Press F7, Alt+Enter, Alt+Tab
; toggle_full_screen = no_modifiers VK_F7
; some games explicitely disable stereo, prohibiting any stereo attempts.
; Setting this to 1 ignores all stereo disabling calls and also calls
; NvAPI_Stereo_Enable to force stereo on.
; Setting this to 2 sets 3Dmigoto to use 3D Vision Direct Mode
force_stereo=0

; almost all DX11 games deactivate window message handling.
; setting this to 1 reenables print screen handling, alt-tab key handling etc.
; allow_windowcommands=1
; Indicates where the resolution is obtained for texture hashes. Comment this
; out to never special case hashes that match the resolution or a multiple.
; Possible values are swap_chain and depth_stencil. Recommended to test which
; works for a given game (e.g. CryEngine always creates a swap chain that
; matches the native resolution so has to use depth_stencil).
get_resolution_from=swap_chain

; This will hide the hardware mouse cursor, and will be automatically enabled
; if the software mouse configuration file is included at the top of this file.
; The hardware mouse cursor cannot be moved to depth and cannot be used in
; conjunction with the side-by-side or top-and-bottom output modes, so using a
; software mouse cursor is recommended in those cases.
; NOTE: IT IS RECOMMENDED TO RESTART THE GAME AFTER CHANGING THIS SETTING!
hide_cursor=1

; ------------------------------------------------------------------------------------------------------
; Settings for NVidia stereo driver.
; ------------------------------------------------------------------------------------------------------
[Stereo]

; games which have their own stereo renderer disable the NVidia automatic
; stereo mode and render themselves into stereo buffers (Crysis 3 for example).
; Setting this to 1 disables the game stereo renderer and enables NVidia auto stereo mechanism.
; This also forces 'false' as a return for any request for NvAPI_Stereo_IsEnabled.
automatic_mode=0

; Some games (CryEngine games, for example) lock the separation & convergence
; to a specific value, which can be undesirable. Set this to 1 to ignore these
; requests from the game to unlock the separation:
unlock_separation=0
unlock_convergence=0

; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
; Note that there is now a more flexible means to alter the game's profile -
; refer to the [Profile] section.
create_profile=0

; sets the global surface creation heuristic for NVidia stero driver.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings for surface creation mode.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - Always create stereo surfaces.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - Always create mono surfaces.
; surface_createmode=1
; overrides surface creation mode for square surfaces.
; surface_square_createmode=1
; Force the NvAPI_Initialize to return an error so that games think stereo and NVidia is unavailable.
force_no_nvapi=0

; ------------------------------------------------------------------------------------------------------
; Settings for GPU manipulations.
; Render settings override
; ------------------------------------------------------------------------------------------------------
[Rendering]

; GPU program manipulations.
; Type of shader hashes in use:
; 3dmigoto = Traditional hash used by 3DMigoto (unseeded software FNV-1)
; embedded = Use the first half of the MD5-like hash embedded within the
; shaders to skip the hash calculation altogether.
; bytecode = Only hash bytecode and signatures with hardware accelerated
; CRC32C. Used to minimise duplicate shaders in certain games, but
; potentially carries a higher risk of hash collisions between
; unrelated shaders in some games (e.g. that only differ in
; variable names). May occasionally avoid hash changes on game
; updates due to changes in the game developer's build environment
; (shader compiler version, build path embedded in debug info,
; constants renamed, etc). Will not avoid hash changes if the
; shader code, constant values, etc are changed.
shader_hash=3dmigoto

; Switch to newer texture hashes that are less susceptible to corruption and
; don't have collisions if part of the image matches. May have a slight
; performance penalty since more of the image is hashes. Do not enable if
; upgrading an existing fix!
texture_hash=1

; Shaders in game will be replaced by these custom shaders.
override_directory=ShaderFixes

; Automatically patched shaders will be written here if caching is enabled.
cache_directory=ShaderCache

; Shaders that are directly compiled by the game, instead of binary, go here.
storage_directory=ShaderFromGame

; cache all compiled .txt shaders into .bin. this removes loading stalls.
cache_shaders=1

; Indicates whether scissor clipping should be disabled by default. A restart
; is required for this to take effect. If you need to do this on a per shader
; basis, you can use "run = BuiltInCustomShaderEnableScissorClipping" or "run =
; BuiltInCustomShaderDisableScissorClipping" from a [ShaderOverride], or define
; your own [CustomShader] section to change whatever render state you need and
; use "handling = skip" and "draw = from_caller" to transfer the draw call to
; them.
rasterizer_disable_scissor=0

; Tracks copies and updates to textures which may cause their hash to become
; out of sync with their contents - enable if texture hashes seem unreliable.
; You can also set this to 2 to disable hash contamination detection for better
; performance in hunting mode, but only do that if you are certain you won't
; be needing this in the game in question.
; track_texture_updates=1
; Registers where the StereoParams and IniParams textures will be assigned -
; change if the game already uses these registers. Newly decompiled shaders
; will use the new registers, but existing shaders will not be updated - best
; workflow is to remove ShaderCache after changing these and run a search and
; replace on all shaders in ShaderFixes. Set to -1 to disable if not required.
stereo_params=125
ini_params=120

; Set to 1 to assemble the Input / Output / Patch Constant signature comments
; in shader assembly to allow them to be changed for passing new values between
; pipeline stages. Be careful with these comments if this is enabled - treat
; them like code! If set to 0 the assembler will use the old behaviour and
; re-use the sections from the unmodified shaders.
assemble_signature_comments=1

; Include raw "undecipherable custom data" when disassembling shaders for
; ShaderRegex - leaving this out is for backwards compatibility with patterns
; that may not expect to see it since we didn't used to include it. Shaders
; dumped via export or hunting always include any undecipherable data.
disassemble_undecipherable_custom_data=1

; Replace constant buffer offsets with indices & components in the comment
; blocks when disassembling shaders so they match up with how they are accessed
; in the code, making things easier to follow and simplifying ShaderRegex.
patch_assembly_cb_offsets=0

; ------------------------------------------------------------------------------------------------------
; Analyzation options.
; 
; save all autofixed shaders as HLSL
export_fixed=0

; save all shaders sent to DX11 as ASM, or as HLSL text files if compiled by game.
export_shaders=0

; save all shaders seen as HLSL code, autofixed or not. 1= HLSL only, 2=HLSL+OriginalASM, 3=HLSL+OriginalASM+RecompiledASM
export_hlsl=0

; stores a ShaderUsage.txt file on any marking button press.
dump_usage=0

; Stereoize all shader parameters with position semantic.
fix_sv_position=0

; ------------------------------------------------------------------------------------------------------
; Shader manipulations without patches + shader filtering.
; ------------------------------------------------------------------------------------------------------
; [ShaderOverride1]
; Hash=69732c4f23cb6c48
; Custom stereo separation value while rendering objects using this shader.
; Separation=0
; Custom stereo convergence value while rendering objects using this
; shader (e.g. convergence=0 will move an object to infinity).
; Convergence=0
; don't draw anything using this shader.
; Handling=skip
; Use replaced shader only when there is/is not an active depth buffer (for UI filtering)
; Deprecated: use 'x = oD' instead, and test for negative zero in the shader with
; if (asint(IniParams[0].x) == asint(-0.0)) { /* depth inactive */ } else { /* depth active */ }
; depth_filter = depth_inactive
; depth_filter = depth_active
; Override a value from [Constants] when this shader is used:
; x=2.0
; Pass the dimensions of the active render target and resolution (obtained with
; get_resolution_from) into the shader:
; x1=rt_width
; y1=rt_height
; z1=res_width
; w1=res_height
; Use t0 from active pixel shader for texture filtering. Will be 0 if no
; [TextureOverride*] section exists for the texture or 1 if one does. For
; advanced filtering, set a value for filter_index in the [TextureOverride]
; section. This also works with other slot types (like o0, oD, ib, etc). Will
; be -0.0 (needs a special test) if no resource bound in this slot:
; x2 = ps-t0
; Match the partner shader (any of vs/hs/ds/gs/ps/cs). Works in much the same
; way as texture filtering - set a filter_index in the [ShaderOverride] or
; [ShaderRegex] for the partner shader you want to match and it will be set in
; this variable, or 1 = ShaderOverride/Regex matched with no filter_index, 0 =
; No ShaderOverride/Regex matched, -0.0 = No shader bound. The filter_index
; from a ShaderOverride always takes priority over any matching ShaderRegex.
; local $partner = vs
; Override the shader model to allow using newer features like Texture2DMS:
; model=vs_5_0
; Activate a preset section when this shader override is in use.
; preset = PresetExample
; Enable/disable scissor clipping for this specific shader. This is an alias
; for "run = BuiltInCustomShaderDisableScissorClipping"
; or  "run = BuiltInCustomShaderEnableScissorClipping"
; disable_scissor = 1
; There's also support for copying textures, constant buffers, depth buffers,
; etc. from one shader to another. This is a complex topic - see this page:
; https://github.com/bo3b/3Dmigoto/wiki/Resource-Copying
; [ShaderOverrideVol1]
; Hash=fa28d0fb582aa2f6
; Resource\ShaderFixes\debug_cb.ini\DebugCB = ps-cb1
; ------------------------------------------------------------------------------------------------------
; On the fly regular expression shader patching engine
; ------------------------------------------------------------------------------------------------------
; 
; These sections define regular expressions to match against shaders and apply
; certain classes of fixes on the fly. Only assembly shaders are supported by
; this method for reliability and performance reasons.
; 
; Every pattern must have a main section prefixed with ShaderRegex:
; 
; [ShaderRegex1]
; shader_model is required and must be set to the types of shaders that this
; pattern will be applied against. Multiple shader models can be specified to
; match the pattern against multiple types. There are some differences in
; instructions between shader model 4 and 5 (such as in resource load
; instructions), so in some cases you may need separate patterns for each.
; shader_model = ps_4_0 ps_5_0
; 
; temps is used to give names to temporary registers that you will use in the
; pattern. 3DMigoto will identify free register numbers and automatically
; adjust dcl_temps as required.
; temps = stereo tmp1
; 
; This main section also acts as a command list so that you can define actions
; that will be applied on every matching shader, just as you would on any other
; command list enabled section, such as ShaderOverride, Present, etc.
; 
; 
; The next section of interest is the regular expression pattern. If this
; section is omitted than every shader of with matching shader_model will be
; matched (and have the command lists and InsertDeclarations processed). The
; first part of the section name must match the main ShaderRegex section you
; defined above, and it ends with ".Pattern". The regular expression grammar
; that we support is PCRE2, which is largely compatible with the powerful Perl
; and Python grammars. You can find the syntax reference here, but generally
; speaking any regular expression tutorial will give you a good primer:
; 
; http://www.pcre.org/current/doc/html/pcre2syntax.html
; 
; Note that since this is parsed in an ini file that blank lines and ini
; comments are ignored, and preceding and trailing whitespace from each line
; will be stripped, so if you need to match an indented line you will need to
; explicitly match the whitespace at the start of the line with \s*
; You should also use \n to match the newline character at the end of each
; line. This should not be confused with extended mode activated by the (?x)
; switch, which will ignore *all* whitespace to allow complex patterns to be
; broken up for clarity.
; 
; Multiline matching is enabled by default, as is case insensitivity (due to
; differences in the capitalisation produced by different versions of the
; disassembler), but PCRE2 provides switches for most of these options if you
; need something else.
; 
; This is an example of how you might match a matrix multiply in a shader, and
; uses Python style named capture groups to pull out the registers and swizzles
; of the X and Z coordinates, and another named capture group to verify that
; the register used in the div instruction matches the one used in the multiply:
; 
; [ShaderRegex1.Pattern]
; mul r\d+\.xyzw, r\d+\.yyyy, cb0\[28\]\.xyzw\n
; mad r\d+\.xyzw, (?P<pos_x>r\d+)\.(?P<swizzle_x>[xyzw])[xyzw]{3}, cb0\[27\]\.xyzw, r\d+\.xyzw\n
; mad r\d+\.xyzw, (?P<pos_z>r\d+)\.(?P<swizzle_z>[xyzw])[xyzw]{3}, cb0\[29\]\.xyzw, r\d+\.xyzw\n
; add (?P<result>r\d+)\.xyzw, r\d+\.xyzw, cb0\[30\]\.xyzw\n
; div r\d+\.[xyzw]{2}, (?P=result)\.[xyzw]{4}, r\d+\.wwww\n
; 
; 
; The next section specifies how to modify the matched pattern. Again the name
; must begin with the same name as the main section, and end in
; ".Pattern.Replace" (there is a reason the replacement is associated with the
; pattern, but that's coming soon). You can (and I highly encourage that you
; do) use named capture groups in the above pattern and substitute them in
; here. Temporary registers that you defined in the main ShaderRegex section
; are also available here with the same syntax as named capture groups. Use
; ${0} to indicate where the matched pattern goes, allowing you to insert code
; before and/or after it, or use additonal capture groups to insert code in the
; middle. Extended substitution is enabled in PCRE2, which among other things
; makes \n insert a newline.
; 
; [ShaderRegex1.Pattern.Replace]
; \n
; // UE4 shadow correction:\n
; ld_indexable(texture2d)(float,float,float,float) ${stereo}.xyzw, l(0, 0, 0, 0), t125.xyzw\n
; add ${tmp1}.x, ${pos_z}.${swizzle_z}, -${stereo}.y\n
; mad ${pos_x}.${swizzle_x}, -${tmp1}.x, ${stereo}.x, ${pos_x}.${swizzle_x}\n
; \n
; ${0}
; 
; 
; The final section allows you to insert new declarations into the shader, and
; 3DMigoto will check that this declaration has not already been inserted
; first. Typically this is used to get access to StereoParams in t125:
; 
; [ShaderRegex1.InsertDeclarations]
; dcl_resource_texture2d (float,float,float,float) t125
; ------------------------------------------------------------------------------------------------------
; texture / render target manipulations
; ------------------------------------------------------------------------------------------------------
; 
; NOTE: If you are trying to match a texture the same size as the resolution (or
; a /2, x2, x4 or x8 multiple), you should confirm that the same hash is used
; on different resolutions, and adjust get_resolution_from if necessary.
; 
; NOTE: If you find a texture hash seems to change inconsistently, try enabling
; track_texture_updates in the [Rendering] section.
; 
; [TextureOverride1]
; Hash=c3e55ebd
; NVidia stores surface creation mode heuristics in the game profile. setting
; this option overrides the creation mode for a given texture / buffer.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - create stereo surface.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - create mono surface.
; StereoMode=2
; [TextureOverride2]
; Hash = e27b9d07
; Prevent the game reading from this texture - will give the game a blank
; buffer instead. Used to prevent CryEngine games falsely culling objects. Use
; the frame analysis log and look for MapType:1 to identify possible hashes.
; deny_cpu_read=1
; Expand the region copied to this texture with CopySubresourceRegion (similar
; issue to rasterizer_disable_scissor). Used to solve issues with transparent
; refraction effects (like glass) in CryEngine games.
; expand_region_copy=1
; [TextureOverrideUAVNotRT]
; Example of fuzzy matching based on attributes instead of hash. Provides an
; alternative to driver heuristics that we have more precise control over.
; match_type = Texture2D
; match_width = height * 16 / 9
; match_height = !res_height
; match_msaa = >1
; match_bind_flags = +unordered_access -render_target
; match_priority = -1
; StereoMode = 2
; ------------------------------------------------------------------------------------------------------
; Example of settings override by mouse button configuration
; Mapping of from game provided hard coded convergence values to custom values
; Those are values for L.A. Noir
; Example of settings override by mouse button configuration
; ------------------------------------------------------------------------------------------------------
; [ConvergenceMap]
; Map1=from 3e99999a to 0.3
; Map2=from 3f800000 to 1.0
; Map3=from 3f666666 to 0.9
; ------------------------------------------------------------------------------------------------------
; Updates the game's driver profile on launch.
; 
; Any changes here will require the user to OK a UAC prompt the first time they
; run the game, but the DLL tries to only do that if it is actually required.
; ------------------------------------------------------------------------------------------------------
[Profile]
StereoProfile=1
StereoTextureEnable=0x00000027
Disable2DD=1
StereoFlagsDX10=0x00005008
StereoConvergence=2.0
APP_COMPAT_SHIM=2
Comments="Final Fantasy XV 3D fix by masterotaku and DJ-RK"
2DD_Notes="Compatibility mode enabled. To see real 3D please disable it with Ctrl+Alt+F11."

[CommandListUnbindAllRenderTargets]
run=BuiltInCommandListUnbindAllRenderTargets

; ------------------------------------------------------------------------------------------------------
; Commands to run from the Present call at the start/end of each frame
; 
; Useful to clear custom resources or ini params at the start of each frame, or
; to run a custom shader to do whatever you can dream up. The post keyword will
; make an action run at the start of a frame instead of the end - as general
; guideline you want overlays drawn at the end of a frame and resources cleared
; at the start of a new frame.
; ------------------------------------------------------------------------------------------------------
[Present]
; Example: Clear an ini param at the start of each frame:
; post x = 0
; Example: Undefine a custom resource until something is copied into it:
; post ResourceDepthBuffer = null
; Example: Clear a custom resource with black/zero at the start of each frame
; (beware that driver bugs may mean only one eye is cleared in some cases):
; post clear = ResourceFoo
; If you are looking for CustomShader3DVision2SBS, CustomShaderSoftwareMouse or
; CustomShaderUpscale, these are now enabled in the [Include] section at the
; top of this file instead. The other options related to these are still in
; the same place.


What is your preferred method of having text files embedded or linked? I'm happy to edit this post down to less obnoxious lengths.
I didn't see d3dx.ini in Lust for Darnkess-the other game I've mostly tested. Maybe d3d11_log is the applicable file there?
Next time I do testing I can have a look at some other games and post their files as needed, maybe starting with Control and Agony. All four of the games I mentioned are modded by different people, so it will vary the sample pool.
Last edited by Hans Davis on Tue May 12, 2020 6:51 pm, edited 1 time in total.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

So for testing you did the following?

1. Installed 3D fix through 3DFM
2. Started the game through 3DFM -> crash / broken whatever
3. Replaced d3dx.ini with the original one in game folder (no reinstall of the entire fix here please!) -> everything working again when starting via Steam
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

Hans Davis wrote: Tue May 12, 2020 2:31 am
EDIT: Re-Commenting out the side by side 3d vision line in the non-functional d3dx.ini file seems to get it working again. Don't have time to monitor cpu usage and stuff tonight, but it brings back 3D. If I launch the game from 3dfixmanager again, sidebyside3d is activated again, making the 3d non-functional and the game too hardware demanding to launch easily. So for this game it appears that installing the mod or launching the game through 3dfixmanager (at least for me) enables side by side 3d on top of reverse interleaved 3d, and that the combination of the two causes crashes and incorrect 3d display (pic linked above). I will happily test more games throughout the week to see if the source of problems is consistent.
Nice find! So at last we found out what goes wrong. Side by Side shader works for me but I had really no clue how it reacts on a passive 3D display.
Btw for your information: The 3dmigoto shader is called side by side but actually it contains all different formats. Among this: 3D frame sequential, frame sequential reversed, side by side, top & bottom, interlacing, reversed interlacing... That's for you question that you see that in d3dx.ini side by side shader is enabled but you don't see side by side format ^^.

So it seems the side by side shader does not work for passive 3D display? Actually it should not be needed at all as with the option "3D display type: Reversed Line Interlacing" we already inverse eyes natively via Windows Registry setting.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

Ok for preventing other people running into this issue I will add a notifiaction. This means if the user selects Inversed line interlacing as "preferred 3D format" although he has "3D display type" already set to "reversed line interlacing" then he will get informed that this combination should not be used.

Or alternatively I could also remove the two Interlacing options that they don't appear in 3DFM any more. I think they have been introduced in 3dmigoto for people not knowing how to fix this issue via Windows Registry.
User avatar
ZePRiNCE
One Eyed Hopeful
Posts: 34
Joined: Thu Oct 10, 2019 6:19 am

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by ZePRiNCE »

Pauldusler wrote: Tue May 12, 2020 3:21 am Ok for preventing other people running into this issue I will add a notifiaction. This means if the user selects Inversed line interlacing as "preferred 3D format" although he has "3D display type" already set to "reversed line interlacing" then he will get informed that this combination should not be used.

Or alternatively I could also remove the two Interlacing options that they don't appear in 3DFM any more. I think they have been introduced in 3dmigoto for people not knowing how to fix this issue via Windows Registry.
I don't get your point.

Why this combo should not be used ? Maybe because it reverses twice ??

I use it on my LG C6
3D Display Type: Reversed Line Interlacing / Optimized for Geforce (Passive 3D)
Preferred 3D Format: Reversed Line Interlacing

And everything works great, without EDID Override, without 3D Vision Eye Swapper. And even on DX9 games.
CM: Asus ROG Strix Z370-H Gaming
CPU: Intel Core i7 8086k Delid @ 5.2GHz / 1.405v
RAM: G.Skill Trident Z RGB DDR4 3333 MHz CL16 (2x16Go)
GPU: Asus GeForce GTX 1080 Ti Founder's Edition
3DTV: LG 65C6V
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

ZePRiNCE wrote: Tue May 12, 2020 3:46 am
Pauldusler wrote: Tue May 12, 2020 3:21 am Ok for preventing other people running into this issue I will add a notifiaction. This means if the user selects Inversed line interlacing as "preferred 3D format" although he has "3D display type" already set to "reversed line interlacing" then he will get informed that this combination should not be used.

Or alternatively I could also remove the two Interlacing options that they don't appear in 3DFM any more. I think they have been introduced in 3dmigoto for people not knowing how to fix this issue via Windows Registry.
I don't get your point.

Why this combo should not be used ? Maybe because it reverses twice ??

I use it on my LG C6
3D Display Type: Reversed Line Interlacing / Optimized for Geforce (Passive 3D)
Preferred 3D Format: Reversed Line Interlacing

And everything works great, without EDID Override, without 3D Vision Eye Swapper. And even on DX9 games.
Yes, this is what I thought would happen in worst case that eyes are reversed twice so in the end the the order is still wrong. But for Davis these doubled settings seem to break everything?

Btw how can passive 3D work for you natively if you don't have the EDID override installed? Aren't you limited to 3DTV Play then?
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

I just found the d3dx in Lust for Darkness. Same behaviour as Final Fantasy 15. Commenting out sbs in the d3dx lets it launch through steam or .exe again. The mouse cursor graphic got weird-has a black square graphic around it-when I did that but overall things worked.
As how I tested, manual install of the fix. Test through steam launcher or .exe directly. Works. Run through 3d fix manager. Doesn't work. Replaced d3dx.ini with original (or simply commented out the sbs line: works when launched from steam or .exe again.

I wouldn't have thought of that other thing you just said but I tested it. If I have 3d display type set to reversed line interlacing, but make sure to uncheck preferred 3d format, then Lust for Darkness launches from within 3dfixmanager (still has mouse cursor glitch). I checked and the sbs shader is not enabled in the d3dx. Then I tried final fantasy 15 the same way. Worked. Important note though. I have to delete and replace the non-functional d3dx; or just uncomment the sbs line; in addition to making sure preferred 3d format is unchcked. Unchecking preferred 3d format alone will not revert the d3dx.

So now the games launch in 3d from within 3dfixmanager! I'm like 90% sure that I had it set up this way for the past year though? Did you change the behaviour of that sbs shader in the last update? Maybe I didn't actually have the preferred 3d format checked in the past; memory is unreliable. But another user reported a similar issue at the same time as me. Hmm. Think I should give bringback3dv another try just to rule driver weirdness as a cause? bringback3dv did allow nvidea setup to recognize my tv correctly again, even though I didn't get that last driver installed at the time-so there may well be something important there. I should probably investigate nice and thoroughly before you tweak your software based on my experience. But hey! We found the core problem apparently! Sweet! 3d fixes involving mouse or aiming reticle controls usually have a built in correction and hotkeys for it's convergence. Maybe that's all that is needed for passive 3d tvs.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

Pauldusler wrote: Tue May 12, 2020 4:00 am
ZePRiNCE wrote: Tue May 12, 2020 3:46 am
Pauldusler wrote: Tue May 12, 2020 3:21 am Ok for preventing other people running into this issue I will add a notifiaction. This means if the user selects Inversed line interlacing as "preferred 3D format" although he has "3D display type" already set to "reversed line interlacing" then he will get informed that this combination should not be used.

Or alternatively I could also remove the two Interlacing options that they don't appear in 3DFM any more. I think they have been introduced in 3dmigoto for people not knowing how to fix this issue via Windows Registry.
I don't get your point.

Why this combo should not be used ? Maybe because it reverses twice ??

I use it on my LG C6
3D Display Type: Reversed Line Interlacing / Optimized for Geforce (Passive 3D)
Preferred 3D Format: Reversed Line Interlacing

And everything works great, without EDID Override, without 3D Vision Eye Swapper. And even on DX9 games.
Yes, this is what I thought would happen in worst case that eyes are reversed twice so in the end the the order is still wrong. But for Davis these doubled settings seem to break everything?

Btw how can passive 3D work for you natively if you don't have the EDID override installed? Aren't you limited to 3DTV Play then?
If you reverse reverse interlacing doesn't that just give you regular interlacing? If that is the case I should be able to see 3d by wearing my glassed upside down. I tried that and it did not work. But something vaguely along the lines described seems to have been happening to me.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

Hans Davis wrote: Tue May 12, 2020 4:06 am I just found the d3dx in Lust for Darkness. Same behaviour as Final Fantasy 15. Commenting out sbs in the d3dx lets it launch through steam or .exe again. The mouse cursor graphic got weird-has a black square graphic around it-when I did that but overall things worked.
As how I tested, manual install of the fix. Test through steam launcher or .exe directly. Works. Run through 3d fix manager. Doesn't work. Replaced d3dx.ini with original (or simply commented out the sbs line: works when launched from steam or .exe again.

I wouldn't have thought of that other thing you just said but I tested it. If I have 3d display type set to reversed line interlacing, but make sure to uncheck preferred 3d format, then Lust for Darkness launches from within 3dfixmanager (still has mouse cursor glitch). I checked and the sbs shader is not enabled in the d3dx. Then I tried final fantasy 15 the same way. Worked. Important note though. I have to delete and replace the non-functional d3dx; or just uncomment the sbs line; in addition to making sure preferred 3d format is unchcked. Unchecking preferred 3d format alone will not revert the d3dx.

So now the games launch in 3d from within 3dfixmanager! I'm like 90% sure that I had it set up this way for the past year though? Did you change the behaviour of that sbs shader in the last update? Maybe I didn't actually have the preferred 3d format checked in the past; memory is unreliable. But another user reported a similar issue at the same time as me. Hmm. Think I should give bringback3dv another try just to rule driver weirdness as a cause? bringback3dv did allow nvidea setup to recognize my tv correctly again, even though I didn't get that last driver installed at the time-so there may well be something important there. I should probably investigate nice and thoroughly before you tweak your software based on my experience. But hey! We found the core problem apparently! Sweet! 3d fixes involving mouse or aiming reticle controls usually have a built in correction and hotkeys for it's convergence. Maybe that's all that is needed for passive 3d tvs.
Ah yes, you are right. Unchecking "preferred 3D format" does not revert the changes already made to some ini files. However there is an easy way to restore the original version of the d3dx.ini file. Select the correct game in the list, go to "3D Fix" tab and click on the "Reset" button at the top. After that click on the "Save" button. If you don't see the reset button there should be another button instead to download the default ini (that's the case if the fix was not installed via 3DFM).
Last edited by Pauldusler on Tue May 12, 2020 4:20 am, edited 1 time in total.
russellk
Cross Eyed!
Posts: 187
Joined: Sun Jan 24, 2010 2:09 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by russellk »

Pauldusler wrote: Tue May 12, 2020 4:00 am
ZePRiNCE wrote: Tue May 12, 2020 3:46 am
Pauldusler wrote: Tue May 12, 2020 3:21 am Ok for preventing other people running into this issue I will add a notifiaction. This means if the user selects Inversed line interlacing as "preferred 3D format" although he has "3D display type" already set to "reversed line interlacing" then he will get informed that this combination should not be used.

Or alternatively I could also remove the two Interlacing options that they don't appear in 3DFM any more. I think they have been introduced in 3dmigoto for people not knowing how to fix this issue via Windows Registry.
I don't get your point.

Why this combo should not be used ? Maybe because it reverses twice ??

I use it on my LG C6
3D Display Type: Reversed Line Interlacing / Optimized for Geforce (Passive 3D)
Preferred 3D Format: Reversed Line Interlacing

And everything works great, without EDID Override, without 3D Vision Eye Swapper. And even on DX9 games.
Yes, this is what I thought would happen in worst case that eyes are reversed twice so in the end the the order is still wrong. But for Davis these doubled settings seem to break everything?

Btw how can passive 3D work for you natively if you don't have the EDID override installed? Aren't you limited to 3DTV Play then?
There seems to be a load of confusion here, maybe I'm confused too!
3DTV Play has nothing to do with passive. The EDID forces 'optimised for Geforce' mode, which is a seperate Nvidia driver level 3d. Seperate to 3d vision/discover/3dtvplay.
This is why I had to force the control panel to a different mode when I use passive without the EDID (I mentioned this before).

Also, like you say the SBS shader was added to 3dmigoto (later version) at some point just to support extra 3d outputs, such as Side by Side, Over and Under, Line interfaced etc.

If you are using the EDID override, you shouldn't need to use the SBS shader at all! 3D will already be in line interlaced output straight from the 3d vision drivers. I don't know why people are trying to force it in the the display profile...
I have to force it, but that's purely because I haven't bothered to use the EDID.

The picture supplied shows that the output is in line interlaced, otherwise it wouldn't look like that. The fact the the images never converge suggest that the lines are not aligned properly with the FPR filter on the passive display, hence no 3d with glassses. This is probably because you're taking an interlaced picture (from 3d vision) then using the custom SBS shader to convert it to line interlaced.... Or maybe it's somehow being output with the wrong number of lines or something. Or the EDID switches the tv to 3d mode then you're messing up the image. Either way, sounds like a bad idea to me.

*Edit* I think I'm correct in saying that 3dmigoto is DX11 only? If you're using DX9 games and no EDID override, then it must in that case default back to 3dtv play mode, which can only happen with no override.
Win 10 1903 (Via 3dfix manager - Non DCH)/W11, 11700K, Gigabyte 2080Ti OC, Samsung G9, LG 3d OLED, 4k Projector, WMR Odyssey+
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

russellk wrote: Tue May 12, 2020 4:20 am The EDID forces 'optimised for Geforce' mode, which is a seperate Nvidia driver level 3d. Seperate to 3d vision/discover/3dtvplay.
Yeah I'm aware of this. I heard that it only works when a native 4K signal is send to the TV. Some people try using upscale shader when they don't have the horse power to calculate games nateively in 4K.

russellk wrote: Tue May 12, 2020 4:20 am This is why I had to force the control panel to a different mode when I use passive without the EDID (I mentioned this before).
To which mode did you force it? Checkerboard?
russellk wrote: Tue May 12, 2020 4:20 am *Edit* I think I'm correct in saying that 3dmigoto is DX11 only? If you're using DX9 games and no EDID override, then it must in that case default back to 3dtv play mode, which can only happen with no override.
Yes, 3dmigoto is DX11 only. With EDID override only Optimized for Geforce and 3D Vision Discover should be available.
That's why I asked if you were limited to 3DTV Play then (1280x720) when not using EDID override.
russellk wrote: Tue May 12, 2020 4:20 am If you are using the EDID override, you shouldn't need to use the SBS shader at all! 3D will already be in line interlaced output straight from the 3d vision drivers. I don't know why people are trying to force it in the the display profile...
I have to force it, but that's purely because I haven't bothered to use the EDID.
So do I understand correctly?
  • You did not installed the EDID override
  • In Nvidia Control Panel you have two options listed: 3DTV and Checkerboard
  • You selected checkerboard
  • In 3dmigoto you enabled Reversed line interlace 3D format
  • For DX 9 games you just use 3DTV Play as side by side shader is not available
What is the maximum resolution you can select for games with these settings? Is 4k possible (1080p per eye) or is it lower?
Last edited by Pauldusler on Tue May 12, 2020 4:41 am, edited 2 times in total.
russellk
Cross Eyed!
Posts: 187
Joined: Sun Jan 24, 2010 2:09 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by russellk »

Pauldusler wrote: Tue May 12, 2020 4:35 am
russellk wrote: Tue May 12, 2020 4:20 am The EDID forces 'optimised for Geforce' mode, which is a seperate Nvidia driver level 3d. Seperate to 3d vision/discover/3dtvplay.
Yeah I'm aware of this. I heard that it only works when a native 4K signal is send to the TV. Some people try using upscale shader when they don't have the horse power to calculate games nateively in 4K.

russellk wrote: Tue May 12, 2020 4:20 am This is why I had to force the control panel to a different mode when I use passive without the EDID (I mentioned this before).
To which mode did you force it? Checkerboard?
russellk wrote: Tue May 12, 2020 4:20 am If you are using the EDID override, you shouldn't need to use the SBS shader at all! 3D will already be in line interlaced output straight from the 3d vision drivers. I don't know why people are trying to force it in the the display profile...
I have to force it, but that's purely because I haven't bothered to use the EDID.
So do I understand correctly?
  • You did not installed the EDID override
  • In Nvidia Control Panel you have two options listed: 3DTV and Checkerboard
  • You selected checkerboard
  • In 3dmigoto you enabled Reversed line interlace 3D format
What is the maximum resolution you can select for games with these settings? Is 4k possible (1080p per eye) or is it lower?
I'll check now and give you screenshots. Just got to switch rooms :-)
Win 10 1903 (Via 3dfix manager - Non DCH)/W11, 11700K, Gigabyte 2080Ti OC, Samsung G9, LG 3d OLED, 4k Projector, WMR Odyssey+
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

If what you state is accurate then there is a fair bit of outdated or incorrect info floating around. I've read repeatedly that the edid is needed to enable optimized for geforce mode as the only way to use 3d vision. In other places I've read that you need both an edid and 3dtvplay drivers installed.
I only got into this stuff recently, Nvidea forums were broken, and mtbs forums weren't coming up in google results so it took a while to find mtbs and I dug through a lot of old posts here and there. I haven't had the benefit of watching the software and mods evolve. I'll have to find youf post about nvidea tweaks as an alternative to edids to further my education.
The labelling of the sbs mode checkbook in 3dfixmanager lead me to misinterpret the significance of it's function. It seemed intuitive to set preferred 3d format to my intended format. I looked for info on the display profile in the 3dfixmanager manual but did not find it.
Hans Davis
One Eyed Hopeful
Posts: 28
Joined: Mon Dec 02, 2019 7:10 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Hans Davis »

Pauldusler wrote: Tue May 12, 2020 4:35 am
russellk wrote: Tue May 12, 2020 4:20 am The EDID forces 'optimised for Geforce' mode, which is a seperate Nvidia driver level 3d. Seperate to 3d vision/discover/3dtvplay.
Yeah I'm aware of this. I heard that it only works when a native 4K signal is send to the TV. Some people try using upscale shader when they don't have the horse power to calculate games nateively in 4K.

russellk wrote: Tue May 12, 2020 4:20 am This is why I had to force the control panel to a different mode when I use passive without the EDID (I mentioned this before).
To which mode did you force it? Checkerboard?
russellk wrote: Tue May 12, 2020 4:20 am *Edit* I think I'm correct in saying that 3dmigoto is DX11 only? If you're using DX9 games and no EDID override, then it must in that case default back to 3dtv play mode, which can only happen with no override.
Yes, 3dmigoto is DX11 only. With EDID override only Optimized for Geforce and 3D Vision Discover should be available.
That's why I asked if you were limited to 3DTV Play then (1280x720) when not using EDID override.
russellk wrote: Tue May 12, 2020 4:20 am If you are using the EDID override, you shouldn't need to use the SBS shader at all! 3D will already be in line interlaced output straight from the 3d vision drivers. I don't know why people are trying to force it in the the display profile...
I have to force it, but that's purely because I haven't bothered to use the EDID.
So do I understand correctly?
  • You did not installed the EDID override
  • In Nvidia Control Panel you have two options listed: 3DTV and Checkerboard
  • You selected checkerboard
  • In 3dmigoto you enabled Reversed line interlace 3D format
  • For DX 9 games you just use 3DTV Play as side by side shader is not available
What is the maximum resolution you can select for games with these settings? Is 4k possible (1080p per eye) or is it lower?
That works? I thought checkerboard was a setting for active glasses.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

Hans Davis wrote: Tue May 12, 2020 4:39 am The labelling of the sbs mode checkbook in 3dfixmanager lead me to misinterpret the significance of it's function. It seemed intuitive to set preferred 3d format to my intended format. I looked for info on the display profile in the 3dfixmanager manual but did not find it.
There is only a short tooltip when you move your mouse cursor over preferred 3d format ^^. It just says it needs 3dmigoto installed and only works for DX 11.
User avatar
ZePRiNCE
One Eyed Hopeful
Posts: 34
Joined: Thu Oct 10, 2019 6:19 am

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by ZePRiNCE »

Pauldusler wrote: Tue May 12, 2020 4:00 am Btw how can passive 3D work for you natively if you don't have the EDID override installed? Aren't you limited to 3DTV Play then?
Without EDID Override, I don't have the "Optimized for Geforce" logo in NVPanel but I still have the choice between "3DTV Play" or "HDMI Checkerboard".
I use "HDMI Checkerboard" then 3DMigoto can do his work.

The mistery is how can I have Line Interleaved 3D in DX9 Games..
I was thinking maybe 3DFM was forcing (Reversed) "Line Interleaved" somewhere in registry, but you looks surprised too, so I guess it's not that :mrgreen:
I will investigate when I'll have time.

In first place, I will try to set
3D Display Type: Line Interlacing / Optimized for Geforce (Passive 3D)
Preferred 3D Format: Line Interlacing
If the "double reverse" theory is true, the result should be the same on my TV.
CM: Asus ROG Strix Z370-H Gaming
CPU: Intel Core i7 8086k Delid @ 5.2GHz / 1.405v
RAM: G.Skill Trident Z RGB DDR4 3333 MHz CL16 (2x16Go)
GPU: Asus GeForce GTX 1080 Ti Founder's Edition
3DTV: LG 65C6V
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

ZePRiNCE wrote: Tue May 12, 2020 4:44 am
Pauldusler wrote: Tue May 12, 2020 4:00 am Btw how can passive 3D work for you natively if you don't have the EDID override installed? Aren't you limited to 3DTV Play then?
Without EDID Override, I don't have the "Optimized for Geforce" logo in NVPanel but I still have the choice between "3DTV Play" or "HDMI Checkerboard".
I use "HDMI Checkerboard" then 3DMigoto can do his work.

The mistery is how can I have Line Interleaved 3D in DX9 Games..
I was thinking maybe 3DFM was forcing (Reversed) "Line Interleaved" somewhere in registry, but you looks surprised too, so I guess it's not that :mrgreen:
I will investigate when I'll have time.

In first place, I will try to set
3D Display Type: Line Interlacing / Optimized for Geforce (Passive 3D)
Preferred 3D Format: Line Interlacing
If the "double reverse" theory is true, the result should be the same on my TV.
To shortly summarize what happens when using the options "3D dsplay type" and "Preferred 3D format" in display profiles tab:

"3D display type": When setting this to "Reversed Line Interlacing" then 3DFM will set the correct values for Windows registry entries "InterleavePattern0" and "InterleavePattern1" and prevents SYSTEM user from overwriting these values again. So the result is that you don't have to wear the glasses upside down. This option only works if the EDID override is installed. Otherwise I think the correction for interleave pattern will do nothing? But not sure. Generally "3D display type" just changes values in Windows registry.

"Preferred 3D Format": This enables the 3dmigoto side by side shader and sets it to the chosen 3D format for each DX11 game you start. Maybe I should have named this option differently (3dmigoto 3D format" or so)
russellk
Cross Eyed!
Posts: 187
Joined: Sun Jan 24, 2010 2:09 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by russellk »

Hans Davis wrote: Tue May 12, 2020 4:39 am If what you state is accurate then there is a fair bit of outdated or incorrect info floating around. I've read repeatedly that the edid is needed to enable optimized for geforce mode as the only way to use 3d vision. In other places I've read that you need both an edid and 3dtvplay drivers installed.
I only got into this stuff recently, Nvidea forums were broken, and mtbs forums weren't coming up in google results so it took a while to find mtbs and I dug through a lot of old posts here and there. I haven't had the benefit of watching the software and mods evolve. I'll have to find youf post about nvidea tweaks as an alternative to edids to further my education.
The labelling of the sbs mode checkbook in 3dfixmanager lead me to misinterpret the significance of it's function. It seemed intuitive to set preferred 3d format to my intended format. I looked for info on the display profile in the 3dfixmanager manual but did not find it.
That doesn't surprise me, there's always been lots of confusion over the various 3d modes, plus the behaviour of the nvidia driver has changed over the years.
IIRC (I've been around here a while!) someone virtually stumbled across this by accident on the old 3d forums. They were messing around with HDMI and DVI connectors/adaptors and accidentally enabled the optimised for geforce (interlaced) mode on a 4k tv.
No-one actually believed them, until it became clear that there was an interlaced mode built into 3d vision. This makes sense, as there were some early passive monitors that Nvidia themselves certified as 3d vision compatible.

3dtvplay is 'Framepacked' 3d and is part of HDMI 1.4a. It has HDMI 1.4 bandwidth derived limitations of 1080p@24 or 720p@1080 (or 1080SBS/TAB). Optimised for geforce (also called HDMI checkerboard) bypasses those HDMI limitations. There is more to it than that, but in essence that's the big difference.

Back in the early days we had an Nvidia rep on the 3d forums (Andrew Fear) and at one point they promised SBS etc. support would be added to the drivers. Huge shame it never happened.
Win 10 1903 (Via 3dfix manager - Non DCH)/W11, 11700K, Gigabyte 2080Ti OC, Samsung G9, LG 3d OLED, 4k Projector, WMR Odyssey+
nintynuts
One Eyed Hopeful
Posts: 8
Joined: Mon May 11, 2020 1:33 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by nintynuts »

Hans Davis wrote: Tue May 12, 2020 2:32 am Then the non functional d3dx.ini code after launching through 3dfm:

Code: Select all

; FINAL FANTASY XV 3D FIX BY MASTEROTAKU AND DJ-RK
; ------------------------------------------------------------------------------------------------------
; Additional configuration files
; ------------------------------------------------------------------------------------------------------
[Include]

; If you were using 3DMigoto as a full modding platform for a given game
; instead of just a single stand-alone mod (e.g. facilitating mesh/texture
; replacements or other graphics mods), you can include an entire directory
; where users can extract third party mods created by others and 3DMigoto will
; include every .ini file and any external files referred to by CustomShader /
; Resource sections (Replaced shaders in these mods should still go in
; ShaderFixes for now, unless the modders want to use CustomShaders or
; ShaderRegex to keep them standalone).
; include_recursive = Mods
exclude_recursive=DISABLED*
include=ShaderFixes\mouse.ini
include=ShaderFixes\3dvision2sbs.ini
include=ShaderFixes\FFXV_fix.ini
include=ShaderFixes\help.ini

; include = ShaderFixes\debug_cb.ini
; ------------------------------------------------------------------------------------------------------
; Logging options.
; Comment line or set value to 0 for no logging.
; ------------------------------------------------------------------------------------------------------
[Logging]

; Log all API usage
calls=0

; Log Input key actions
input=0

; Super verbose massive log
debug=0

; Unbuffered logging to avoid missing anything at file end
unbuffered=0

; Force the CPU affinity to use only a single CPU for debugging multi-threaded
force_cpu_affinity=0

; Log NVAPI convergence modifications
convergence=0

; Log NVAPI separation modifications
separation=0

; Enable 3DMigoto's deadlock detection algorithm. If you get hangs (not
; crashes) this might help find out why.
debug_locks=0

; ------------------------------------------------------------------------------------------------------
; Command list to run on launch / after config reload.
; ------------------------------------------------------------------------------------------------------
[Constants]
$\ShaderFixes\3dvision2sbs.ini\mode=7

; Declare named global variables here to use them from other command lists,
; [Key] bindings and [Preset]s. Named variables are namespaced so that any
; included ini files can use their own without worrying about name clashes:
; global $my_named_variable = 0.0
; Mark a variable as persist[ent] to automatically save it to the
; d3dx_user.ini on exit or F10 (config_reload). Use Ctrl+Alt+F10
; (wipe_user_config) to discard persistent values:
; global persist $some_persistent_variable = 1
; Set the initial value of "IniParams" variables, which are accessible from
; within shaders, but they are not namespaced and too many can become unwieldy:
; x = 0.8
; y = 1.0
; z = 1.2
; w = 2.0
; y1 = 3
; This is used by the 3DVision2SBS custom shader. To use, find the [Include]
; section above and uncomment the 'include = ShaderFixes\3dvision2sbs.ini'
; line. F11 will cycle between these modes while playing, and the current
; value will be automatically saved to the d3dx_user.ini on exit / F10:
; 0 = Regular 3D Vision
; 1 = Reversed 3D Vision
; 2 = Side by Side
; 3 = Reversed Side by Side
; 4 = Top and Bottom
; 5 = Reversed Top and Bottom
; 6 = Line interlacing
; 7 = Reversed Line interlacing
; $\ShaderFixes\3dvision2sbs.ini\mode = 0
; ------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
; 
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle forwards and/or backwards
; between several presets.
; 
; Delays (type=hold only) and linear or cosine trasition periods (any key type)
; can be used to better synchonrise setting changes to the game's animations,
; or to smoothly adjust UI elements over a short period of time.
; 
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
; 
; Key combinations can be specified by separating key names with spaces, e.g.
; "Shift Q". It is also possible to indicate that a key must *not* be held for
; the binding to activate, e.g. "NO_ALT F1" would prevent the binding from
; activating when taking a 3D Screenshot with Alt F1. "NO_MODIFIERS" may be
; used as a shorthand for excluding all standard modifiers (Ctrl, Alt, Shift,
; Windows).
; 
; Keys can also be from XBox controllers using:
; XB_LEFT_TRIGGER, XB_RIGHT_TRIGGER,
; XB_LEFT_SHOULDER, XB_RIGHT_SHOULDER,
; XB_LEFT_THUMB, XB_RIGHT_THUMB,
; XB_DPAD_UP, XB_DPAD_DOWN, XB_DPAD_LEFT, XB_DPAD_RIGHT,
; XB_A, XB_B, XB_X, XB_Y, XB_START, XB_BACK, XB_GUIDE
; By default all attached controllers are used - to associate a binding with a
; specific controller add the controller number 1-4 to the prefix, like
; XB2_LEFT_TRIGGER, though this may be more useful for hunting than playing.
; 
; Multiple keys may be set in a single [Key] section to allow keyboard and xbox
; controller toggles and cycles to share the same state as each other.
; ------------------------------------------------------------------------------------------------------
; Example for changing default settings
; [KeyBasicExample]
; Key = z
; separation = 100.0
; convergence = 4.0
; x = 0.98
; Named variables declared in [Constants] can be set here:
; $my_named_variable = 2
; Example to support momentary hold type overrides, like aiming. Shows how to
; bind two separate buttons to the same action.
; [KeyMomentaryHoldExample]
; Key = RBUTTON
; Key = XB_LEFT_TRIGGER
; convergence = 0.1
; type = hold
; Example for a toggle override that remembers the previous value and restores
; it automatically when pressed a second time.
; [KeyToggleExample]
; Key = q
; separation = 0.1
; type = toggle
; y = 0.0
; Example for using a smart cycle type instead of a toggle. Smart is now the
; default for cycles, and when activated it will quickly check if the current
; values match its current cycle preset and resynchronise if necessary. This is
; better than type=toggle if you always want to toggle between exactly two
; values specified here, while type=toggle is better if you want to remember
; some arbitrary current value and return to it:
; [KeySmartCycleExample]
; Key = w
; type = cycle
; smart = true
; $some_variable = 0, 1
; Example for a momentary hold, but with a delay followed by a smooth
; transition (ms) on hold and release to sync better with the game. Note that
; delay only works with type=hold (for now), while transitions will work with
; all types.
; [KeyDelayAndTransitionExample]
; Key = RBUTTON
; Key = XB_LEFT_TRIGGER
; type = hold
; y = 0.25
; delay = 100
; transition = 100
; transition_type = linear
; release_delay = 0
; release_transition = 500
; release_transition_type = cosine
; Example of a cycle transition that might be used to provide several presets
; that set both convergence and UI depth to suit different scenes in a game.
; Cosine transitions are used to smooth the changes over 1/10 of a second.
; Both keyboard and Xbox controller buttons are bound to this same cycle, so
; that they can be used interchangeably and remember the same position in the
; preset list. A second key is used to cycle backwards through the presets, and
; wrapping from one end of the list to the other is disabled.
; [KeyCycleExample]
; Key = E
; Key = XB_RIGHT_SHOULDER
; Back = Q
; Back = XB_LEFT_SHOULDER
; type = cycle
; wrap = false
; convergence = 1.45, 1.13, 0.98
; z           = 0.25,  0.5, 0.75
; transition = 100
; transition_type = cosine
; Keys can only directly set variables to simple values. If you want to do
; something more advanced, you may need to call a command list from the key
; binding. type=hold/toggle keys will run the post phase of the command list on
; release.
; [KeyCommandListExample]
; key = f
; run = CommandListF
; [CommandListF]
; if $foo == 0 && cursor_showing
; $foo = $bar * 3.14 / rt_width
; else
; $foo = 0
; endif
; Example of a preset override that can be referenced by one or more [ShaderOverride*]
; sections which can be activated / deactivated automatically when one of the shader
; overrides is activated / deactivated. This is useful for setting automatic
; convergence for specific scene.
; [PresetExample]
; convergence = 0
; $some_variable = 1
; transition = 100
; transition_type = linear
; ------------------------------------------------------------------------------------------------------
; Shader hunting options.
; Default setup is to use keyboard similar to Helix presets
; ------------------------------------------------------------------------------------------------------
[Hunting]

; 0: Release mode is with shader hunting disabled, optimized for speed.
; 1: Hunting mode enabled
; 2: Hunting mode "soft disabled" - can be turned on via the toggle_hunting key
hunting=0

; Highlight mode of currently selected shader / rendertarget.
; "skip" = skip shader. don't render anything using the currently selected shader.
; "original" = fall back to original shader if the currently selected shader was patched.
; "pink" = make the output hot pink to make it standout.
; "mono" = disable stereo for the selected shader / rendertarget.
marking_mode=skip

; Cycle through available marking modes. VK_DECIMAL VK_NUMPAD0
; means hold the dot on the number pad while pressing numpad 0:
next_marking_mode=no_modifiers VK_DECIMAL VK_NUMPAD0

; What action(s) to take when marking a selected shader/buffer
; "hlsl" = decompile shader to HLSL and copy to ShaderFixes
; "asm" = disassemble shader and copy to ShaderFixes (if hlsl is disabled or failed)
; "regex" = output ShaderRegex patched shader if applicable (NOTE: Will lose associated command list)
; "clipboard" = copy shader/buffer hash to clipboard
; "mono_snapshot" = take mono screenshot (previously called mark_snapshot=1)
; "stereo_snapshot" = take stereo screenshot (previously called mark_snapshot=2)
; "snapshot_if_pink" = limit mono/stereo_snapshot to when marking_mode=pink
marking_actions=clipboard regex hlsl asm stereo_snapshot snapshot_if_pink

; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
; 
; XBox controllers are supported using the same bindings as the [Key] sections
; (see above). If the game already uses the first controller you might try
; using the second controller for hunting with e.g. XB2_LEFT_SHOULDER
; rotate through all VISIBLE pixel shaders at the current scene.
previous_pixelshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD1
next_pixelshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD2
mark_pixelshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD3

; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD4
next_vertexshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD5
mark_vertexshader=no_modifiers NO_VK_DECIMAL VK_NUMPAD6

; rotate through all USED index buffers at the current scene.
previous_indexbuffer=no_modifiers NO_VK_DECIMAL VK_NUMPAD7
next_indexbuffer=no_modifiers NO_VK_DECIMAL VK_NUMPAD8
mark_indexbuffer=no_modifiers NO_VK_DECIMAL VK_NUMPAD9

; rotate through all USED vertex buffers at the current scene.
previous_vertexbuffer=no_modifiers NO_VK_DECIMAL VK_DIVIDE
next_vertexbuffer=no_modifiers NO_VK_DECIMAL VK_MULTIPLY
mark_vertexbuffer=no_modifiers NO_VK_DECIMAL VK_SUBTRACT

; rotate through all USED render targets at the current scene.
previous_rendertarget=no_modifiers VK_INSERT
next_rendertarget=no_modifiers VK_HOME
mark_rendertarget=no_modifiers VK_PAGEUP

; rotate through all USED compute shaders at the current scene.
previous_computeshader=no_modifiers VK_DECIMAL VK_NUMPAD1
next_computeshader=no_modifiers VK_DECIMAL VK_NUMPAD2
mark_computeshader=no_modifiers VK_DECIMAL VK_NUMPAD3

; rotate through all VISIBLE geometry shaders at the current scene.
previous_geometryshader=no_modifiers VK_DECIMAL VK_NUMPAD4
next_geometryshader=no_modifiers VK_DECIMAL VK_NUMPAD5
mark_geometryshader=no_modifiers VK_DECIMAL VK_NUMPAD6

; rotate through all VISIBLE domain shaders at the current scene.
previous_domainshader=no_modifiers VK_DECIMAL VK_NUMPAD7
next_domainshader=no_modifiers VK_DECIMAL VK_NUMPAD8
mark_domainshader=no_modifiers VK_DECIMAL VK_NUMPAD9

; rotate through all VISIBLE hull shaders at the current scene.
previous_hullshader=no_modifiers VK_DECIMAL VK_DIVIDE
next_hullshader=no_modifiers VK_DECIMAL VK_MULTIPLY
mark_hullshader=no_modifiers VK_DECIMAL VK_SUBTRACT

; Re-enable shaders once done with hunting:
done_hunting=NO_MODIFIERS NO_VK_DECIMAL VK_ADD

; Screenshot as pns
take_screenshot=no_modifiers VK_SNAPSHOT

; reload all fixes from ShaderFixes folder
reload_fixes=no_modifiers VK_F10

; Key to turn hunting itself on/off.  This will also show/hide overlay.
; Hunting must be set to either 1 or 2 to enable this toggle.
toggle_hunting=NO_MODIFIERS NO_VK_DECIMAL VK_NUMPAD0

; Key to reload the settings from the d3dx.ini without restarting. This can
; be the same key as reload_fixes for convenience, or a different key may be
; used to avoid resetting the ini parameters every time the shaders are
; reloaded. Note that not all settings can be reloaded, so if something doesn't
; work as expected you may still have to restart the game:
reload_config=NO_MODIFIERS VK_F10

; Deletes the d3dx_user.ini file and reloads settings to get a "clean slate"
wipe_user_config=ctrl alt no_shift VK_F10

; Hold this key to temporarily disable the fix - useful to quickly check what
; an effect looked like in the original game.
show_original=no_modifiers VK_F9

; Shows the CPU utilisation and performance impact of every active command list
monitor_performance=ctrl no_shift no_alt F9

; Freeze the current performance monitor display and log to the d3d11_log.txt
freeze_performance_monitor=no_ctrl shift no_alt F9

; Sets how often the performance monitor updates
monitor_performance_interval=2.0

; Auto-repeat key rate in events per second.
repeat_rate=12

; Enabling this makes the overlay show the hashes of the currently selected
; shaders and index buffer during hunting. We don't actually recommend this,
; because writing down the hash from the screen is a bad habbit that tends to
; be very error prone - the recommended workflow is to dump the shaders to disk
; and check the most recently modified file in ShaderFixes, but advanced users
; can enable this if they want it:
verbose_overlay=1

; tunable parameter to use in modified shaders as variable (StereoParams.Load(int3(1,0,0)).xyzw)
; enabling tuning results in a small performance hit because the parameter texture
; tune_enable=1
; tune_step=0.1
; tune1_up=VK_INSERT
; tune1_down=VK_DELETE
; tune2_up=X
; tune2_down=Z
; Dumps out a flight log of DirectX state changes and the contents of each
; render target after every immediate draw call for the next frame. Takes up a
; large amount of space, so disabled by default.
analyse_frame=no_modifiers VK_F8

; analyse_options specifies options for the frame analysis feature. Options can
; be combined by separating them with a space.
; 
; Dumping selection (also refer to the "dump" command described below):
; dump_rt: Dumps render targets and UAVs
; dump_depth: Dumps depth/stencil targets
; dump_tex: Dumps shader resources (textures)
; dump_cb: Dumps constant buffers
; dump_vb: Dumps vertex buffers
; dump_ib: Dumps index buffers
; 
; Texture2D format selection:
; jpg/jps: Dumps out 2D/stereo resources as .jps files. These are the easiest
; to work with and don't take up as much space as DDS files, but
; they are not dumped for every resource and are missing some data.
; dds: Dumps out 2D/stereo resources as .dds files. WARNING: This option
; may require hundreds of gigabytes and a long time! Only use it if
; you absolutely need more information than you can get otherwise.
; jps_dds: Dumps out .jps when possible, .dds otherwise (default).
; desc: Dumps out DirectX resource descriptions to .dsc files.
; 
; Buffer format selection:
; buf: Dumps out buffers as binary .buf files
; txt: Decodes buffers as text, and includes some extra metadata not
; found in the .buf files. May not correctly decode all buffers.
; Default if dump_cb/vb/ib was specified.
; desc: Dumps out DirectX resource descriptions to .dsc files.
; 
; Misc options:
; hold: Continue analysing subsequent frames while the key is held
; clear_rt: Clears each render target the first time they are used in the
; frame. Makes it easier to see what is being drawn if the game
; doesn't clear them, but might cause some effects not to render.
; filename_reg: Normally the draw number is the first part of the filename so
; that the files will be sorted in the order they were used in
; the game. Sometimes it is more desirable to examine how a
; specific output changed through the frame and this option will
; place the register number first in the filename to allow that.
; mono: Dump out mono textures instead of stereo. To dump both, specify
; 'mono stereo'. If neither are specified, defaults to stereo.
; dump_on_unmap: Dumps buffers/textures whenever the game maps them to the CPU
; with the Map() / Unmap() calls. Typically used to update
; constant buffers.
; dump_on_update: Dumps buffers/textures whenever the game updates them with
; the UpdateSubresource() call. Alternative method used to
; update constant buffers.
; share_dupes: Use a folder that is shared with subsequent frame analysis
; dumps for de-duplicating dumped resources. Makes future frame
; analysis dumps faster and use less disk space if there are a
; lot of identical textures, but less trivial to delete
; individual dump folders to reclaim disk space (i.e. all or
; nothing). Individual frame analysis folders are still
; de-duplicated regardless of this setting.
; symlink: Try to use symbolic links when de-duplicating files in a
; frame analysis dump. Requires developer mode to be enabled in
; Windows 10, and will fall back to hard links or shortcuts
; when not possible. Useful to see the relationship between
; deduplicated files, especially when working with cygwin, but
; some Windows applications may behave worse when using these.
; 
; Experimental Deferred Context (multi-threaded rendering) Frame Analyis Support:
; deferred_ctx_immediate: Dumps resources from deferred contexts using the
; immediate context. Not suitable for dump_rt or other
; resources altered during the frame (by the GPU or CPU). May
; be ok for static unchanging resources, such as collecting HUD
; textures for filtering. Not thread safe - potential to crash.
; Recommended (not enforced) to use in conjunction with 'mono'.
; deferred_ctx_accurate: Delays dumping resources from deferred contexts
; until after the GPU has updated them. Copies of *all*
; resources being dumped are held in memory, so it may run out
; - try to restrict using this option to specific resources
; where it is needed - preferably via the "dump" command rather
; than the global analyse_options. Works with 'stereo'.
; 
; analyse_options can also be specified in [ShaderOverride*] sections (or other
; command lists) to set up triggers to change the options mid-way through a
; frame analysis, either for a single draw call (default), or permanently (by
; adding the 'persist' keyword).
; 
; Alternatively, "dump" can be specified in a [ShaderOverride*] section (or
; any other command list) to dump specific resources with per-resource options
; (e.g. "dump = dump_tex dds share_dupes mono ps-t0"), dump resources at a
; specific point in time (e.g. "pre dump = o0") or dump a custom resource that
; frame analysis cannot otherwise see (e.g. "dump = ResourceDepthBuffer"). Use
; additional "dump" commands to dump multiple resources.
; 
; analyse_options = dump_rt jps clear_rt
; ------------------------------------------------------------------------------------------------------
; Chain load other wrapper DLLs instead of system DLLs.
; ------------------------------------------------------------------------------------------------------
[System]

; proxy_d3d9=d3d9_helix.dll
; proxy_d3d11=d3d11_helix.dll
; We force all LoadLibrary calls back to the game folder, because games
; and nvidia both break the loading chain by going directly to System32.
; load_library_redirect=0 for off, allowing all through unchanged.
; load_library_redirect=1 for nvapi.dll override only, forced to game folder.
; load_library_redirect=2 for both d3d11.dll and nvapi.dll forced to game folder.
load_library_redirect=2

; Only enable key input processing when the game is in the foreground:
check_foreground_window=1

; Options to use hooking instead of wrapping. Used in MGSV. Possible objects to hook include:
; deferred_contexts
; immediate_context
; device
; all - all of the above
; recommended - settings currently recommended by the 3DMigoto developers
; hook=recommended
; Options to allow ID3D11Device to be created and wrapped.  We have typically had good
; luck with returning an error for all non-dx11 requests, but some games error out
; with these checks in place.
; The allow_create_device allows D3D10 Device creation and is needed for some games.
; It has two options, allow_create_device=1, which will allow anything to go through
; without returning an error, and allow_create_device=2, which will force all requests
; to become D3D11 Devices, no matter what was passed in.
; The allow_platform_update option allows the D3D11Device1 and D3D11Context1
; interfaces introduced in Windows 8 and the platform update of Windows 7.
; 
; Start with allow_check_interfaces, if that doesn't work
; then try allow_create_device=2, lastly try allow_create_device=1
; 
allow_check_interface=1
allow_create_device=1
allow_platform_update=1

; ------------------------------------------------------------------------------------------------------
; Settings used by the external 3DMigoto Loader
; ------------------------------------------------------------------------------------------------------
[Loader]

; Target process to load into. You can optionally include part of the directory
; structure in case the game's executable name is generic.
; target = \Dead or Alive 6\DOA6.exe
; This tells the loader where to find 3DMigoto. This DLL must be located
; in the same directory as 3DMigoto Loader.exe and will be loaded in the target
; process under the same name. If d3d11.dll doesn't work try 3dmigoto.dll
; module = d3d11.dll
; Uncomment to always elevate the loader to support games that run as admin.
; This will display a UAC prompt so only enable it if you actually need it.
; require_admin = true
; Automatically launch the game from the loader. If you put the executable name
; here than the loader will need to be located in the game directory. You can
; use the full path, but that is not recommended to ship any fixes with since
; it will vary on a user's system. If the game is on Steam you can use the
; steam browser protocol to launch it, optionally passing it any command line
; arguments you need (unfortunately Steam pops a dialog to confirm command line
; parameters, which tends to end up behind other windows):
; launch = DOA6.exe
; launch = steam://run/838380/
; launch = steam://run/237850//-window-mode exclusive/
; Delay this many extra seconds after confirming that 3DMigoto was loaded in
; the target process. For games that respawn themselves or have multiple
; executables of the same name when the first process we see may not be the
; actual one we need. Set to -1 to disable automatic shut down.
; delay = 20
; ------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
; ------------------------------------------------------------------------------------------------------
[Device]

; This attempts to force exclusive full screen when this key is pressed, and
; may be useful in games where full_screen doesn't work or has undesirable side
; effects:
force_full_screen_on_key=SHIFT VK_F7

; This toggles forcing the full screen mode on and off. It will not take effect
; immediately, but will change what happens the next time the game tries to
; change the fullscreen mode. This is a specific hack to workaround a bug in
; Unity games, which crash when alt+tabbing out from exclusive mode fullscreen.
; 
; To switch out of a Unity game without it crashing:
; Enable this option, Press F7, Alt+Enter, Alt+Tab
; toggle_full_screen = no_modifiers VK_F7
; some games explicitely disable stereo, prohibiting any stereo attempts.
; Setting this to 1 ignores all stereo disabling calls and also calls
; NvAPI_Stereo_Enable to force stereo on.
; Setting this to 2 sets 3Dmigoto to use 3D Vision Direct Mode
force_stereo=0

; almost all DX11 games deactivate window message handling.
; setting this to 1 reenables print screen handling, alt-tab key handling etc.
; allow_windowcommands=1
; Indicates where the resolution is obtained for texture hashes. Comment this
; out to never special case hashes that match the resolution or a multiple.
; Possible values are swap_chain and depth_stencil. Recommended to test which
; works for a given game (e.g. CryEngine always creates a swap chain that
; matches the native resolution so has to use depth_stencil).
get_resolution_from=swap_chain

; This will hide the hardware mouse cursor, and will be automatically enabled
; if the software mouse configuration file is included at the top of this file.
; The hardware mouse cursor cannot be moved to depth and cannot be used in
; conjunction with the side-by-side or top-and-bottom output modes, so using a
; software mouse cursor is recommended in those cases.
; NOTE: IT IS RECOMMENDED TO RESTART THE GAME AFTER CHANGING THIS SETTING!
hide_cursor=1

; ------------------------------------------------------------------------------------------------------
; Settings for NVidia stereo driver.
; ------------------------------------------------------------------------------------------------------
[Stereo]

; games which have their own stereo renderer disable the NVidia automatic
; stereo mode and render themselves into stereo buffers (Crysis 3 for example).
; Setting this to 1 disables the game stereo renderer and enables NVidia auto stereo mechanism.
; This also forces 'false' as a return for any request for NvAPI_Stereo_IsEnabled.
automatic_mode=0

; Some games (CryEngine games, for example) lock the separation & convergence
; to a specific value, which can be undesirable. Set this to 1 to ignore these
; requests from the game to unlock the separation:
unlock_separation=0
unlock_convergence=0

; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
; Note that there is now a more flexible means to alter the game's profile -
; refer to the [Profile] section.
create_profile=0

; sets the global surface creation heuristic for NVidia stero driver.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings for surface creation mode.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - Always create stereo surfaces.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - Always create mono surfaces.
; surface_createmode=1
; overrides surface creation mode for square surfaces.
; surface_square_createmode=1
; Force the NvAPI_Initialize to return an error so that games think stereo and NVidia is unavailable.
force_no_nvapi=0

; ------------------------------------------------------------------------------------------------------
; Settings for GPU manipulations.
; Render settings override
; ------------------------------------------------------------------------------------------------------
[Rendering]

; GPU program manipulations.
; Type of shader hashes in use:
; 3dmigoto = Traditional hash used by 3DMigoto (unseeded software FNV-1)
; embedded = Use the first half of the MD5-like hash embedded within the
; shaders to skip the hash calculation altogether.
; bytecode = Only hash bytecode and signatures with hardware accelerated
; CRC32C. Used to minimise duplicate shaders in certain games, but
; potentially carries a higher risk of hash collisions between
; unrelated shaders in some games (e.g. that only differ in
; variable names). May occasionally avoid hash changes on game
; updates due to changes in the game developer's build environment
; (shader compiler version, build path embedded in debug info,
; constants renamed, etc). Will not avoid hash changes if the
; shader code, constant values, etc are changed.
shader_hash=3dmigoto

; Switch to newer texture hashes that are less susceptible to corruption and
; don't have collisions if part of the image matches. May have a slight
; performance penalty since more of the image is hashes. Do not enable if
; upgrading an existing fix!
texture_hash=1

; Shaders in game will be replaced by these custom shaders.
override_directory=ShaderFixes

; Automatically patched shaders will be written here if caching is enabled.
cache_directory=ShaderCache

; Shaders that are directly compiled by the game, instead of binary, go here.
storage_directory=ShaderFromGame

; cache all compiled .txt shaders into .bin. this removes loading stalls.
cache_shaders=1

; Indicates whether scissor clipping should be disabled by default. A restart
; is required for this to take effect. If you need to do this on a per shader
; basis, you can use "run = BuiltInCustomShaderEnableScissorClipping" or "run =
; BuiltInCustomShaderDisableScissorClipping" from a [ShaderOverride], or define
; your own [CustomShader] section to change whatever render state you need and
; use "handling = skip" and "draw = from_caller" to transfer the draw call to
; them.
rasterizer_disable_scissor=0

; Tracks copies and updates to textures which may cause their hash to become
; out of sync with their contents - enable if texture hashes seem unreliable.
; You can also set this to 2 to disable hash contamination detection for better
; performance in hunting mode, but only do that if you are certain you won't
; be needing this in the game in question.
; track_texture_updates=1
; Registers where the StereoParams and IniParams textures will be assigned -
; change if the game already uses these registers. Newly decompiled shaders
; will use the new registers, but existing shaders will not be updated - best
; workflow is to remove ShaderCache after changing these and run a search and
; replace on all shaders in ShaderFixes. Set to -1 to disable if not required.
stereo_params=125
ini_params=120

; Set to 1 to assemble the Input / Output / Patch Constant signature comments
; in shader assembly to allow them to be changed for passing new values between
; pipeline stages. Be careful with these comments if this is enabled - treat
; them like code! If set to 0 the assembler will use the old behaviour and
; re-use the sections from the unmodified shaders.
assemble_signature_comments=1

; Include raw "undecipherable custom data" when disassembling shaders for
; ShaderRegex - leaving this out is for backwards compatibility with patterns
; that may not expect to see it since we didn't used to include it. Shaders
; dumped via export or hunting always include any undecipherable data.
disassemble_undecipherable_custom_data=1

; Replace constant buffer offsets with indices & components in the comment
; blocks when disassembling shaders so they match up with how they are accessed
; in the code, making things easier to follow and simplifying ShaderRegex.
patch_assembly_cb_offsets=0

; ------------------------------------------------------------------------------------------------------
; Analyzation options.
; 
; save all autofixed shaders as HLSL
export_fixed=0

; save all shaders sent to DX11 as ASM, or as HLSL text files if compiled by game.
export_shaders=0

; save all shaders seen as HLSL code, autofixed or not. 1= HLSL only, 2=HLSL+OriginalASM, 3=HLSL+OriginalASM+RecompiledASM
export_hlsl=0

; stores a ShaderUsage.txt file on any marking button press.
dump_usage=0

; Stereoize all shader parameters with position semantic.
fix_sv_position=0

; ------------------------------------------------------------------------------------------------------
; Shader manipulations without patches + shader filtering.
; ------------------------------------------------------------------------------------------------------
; [ShaderOverride1]
; Hash=69732c4f23cb6c48
; Custom stereo separation value while rendering objects using this shader.
; Separation=0
; Custom stereo convergence value while rendering objects using this
; shader (e.g. convergence=0 will move an object to infinity).
; Convergence=0
; don't draw anything using this shader.
; Handling=skip
; Use replaced shader only when there is/is not an active depth buffer (for UI filtering)
; Deprecated: use 'x = oD' instead, and test for negative zero in the shader with
; if (asint(IniParams[0].x) == asint(-0.0)) { /* depth inactive */ } else { /* depth active */ }
; depth_filter = depth_inactive
; depth_filter = depth_active
; Override a value from [Constants] when this shader is used:
; x=2.0
; Pass the dimensions of the active render target and resolution (obtained with
; get_resolution_from) into the shader:
; x1=rt_width
; y1=rt_height
; z1=res_width
; w1=res_height
; Use t0 from active pixel shader for texture filtering. Will be 0 if no
; [TextureOverride*] section exists for the texture or 1 if one does. For
; advanced filtering, set a value for filter_index in the [TextureOverride]
; section. This also works with other slot types (like o0, oD, ib, etc). Will
; be -0.0 (needs a special test) if no resource bound in this slot:
; x2 = ps-t0
; Match the partner shader (any of vs/hs/ds/gs/ps/cs). Works in much the same
; way as texture filtering - set a filter_index in the [ShaderOverride] or
; [ShaderRegex] for the partner shader you want to match and it will be set in
; this variable, or 1 = ShaderOverride/Regex matched with no filter_index, 0 =
; No ShaderOverride/Regex matched, -0.0 = No shader bound. The filter_index
; from a ShaderOverride always takes priority over any matching ShaderRegex.
; local $partner = vs
; Override the shader model to allow using newer features like Texture2DMS:
; model=vs_5_0
; Activate a preset section when this shader override is in use.
; preset = PresetExample
; Enable/disable scissor clipping for this specific shader. This is an alias
; for "run = BuiltInCustomShaderDisableScissorClipping"
; or  "run = BuiltInCustomShaderEnableScissorClipping"
; disable_scissor = 1
; There's also support for copying textures, constant buffers, depth buffers,
; etc. from one shader to another. This is a complex topic - see this page:
; https://github.com/bo3b/3Dmigoto/wiki/Resource-Copying
; [ShaderOverrideVol1]
; Hash=fa28d0fb582aa2f6
; Resource\ShaderFixes\debug_cb.ini\DebugCB = ps-cb1
; ------------------------------------------------------------------------------------------------------
; On the fly regular expression shader patching engine
; ------------------------------------------------------------------------------------------------------
; 
; These sections define regular expressions to match against shaders and apply
; certain classes of fixes on the fly. Only assembly shaders are supported by
; this method for reliability and performance reasons.
; 
; Every pattern must have a main section prefixed with ShaderRegex:
; 
; [ShaderRegex1]
; shader_model is required and must be set to the types of shaders that this
; pattern will be applied against. Multiple shader models can be specified to
; match the pattern against multiple types. There are some differences in
; instructions between shader model 4 and 5 (such as in resource load
; instructions), so in some cases you may need separate patterns for each.
; shader_model = ps_4_0 ps_5_0
; 
; temps is used to give names to temporary registers that you will use in the
; pattern. 3DMigoto will identify free register numbers and automatically
; adjust dcl_temps as required.
; temps = stereo tmp1
; 
; This main section also acts as a command list so that you can define actions
; that will be applied on every matching shader, just as you would on any other
; command list enabled section, such as ShaderOverride, Present, etc.
; 
; 
; The next section of interest is the regular expression pattern. If this
; section is omitted than every shader of with matching shader_model will be
; matched (and have the command lists and InsertDeclarations processed). The
; first part of the section name must match the main ShaderRegex section you
; defined above, and it ends with ".Pattern". The regular expression grammar
; that we support is PCRE2, which is largely compatible with the powerful Perl
; and Python grammars. You can find the syntax reference here, but generally
; speaking any regular expression tutorial will give you a good primer:
; 
; http://www.pcre.org/current/doc/html/pcre2syntax.html
; 
; Note that since this is parsed in an ini file that blank lines and ini
; comments are ignored, and preceding and trailing whitespace from each line
; will be stripped, so if you need to match an indented line you will need to
; explicitly match the whitespace at the start of the line with \s*
; You should also use \n to match the newline character at the end of each
; line. This should not be confused with extended mode activated by the (?x)
; switch, which will ignore *all* whitespace to allow complex patterns to be
; broken up for clarity.
; 
; Multiline matching is enabled by default, as is case insensitivity (due to
; differences in the capitalisation produced by different versions of the
; disassembler), but PCRE2 provides switches for most of these options if you
; need something else.
; 
; This is an example of how you might match a matrix multiply in a shader, and
; uses Python style named capture groups to pull out the registers and swizzles
; of the X and Z coordinates, and another named capture group to verify that
; the register used in the div instruction matches the one used in the multiply:
; 
; [ShaderRegex1.Pattern]
; mul r\d+\.xyzw, r\d+\.yyyy, cb0\[28\]\.xyzw\n
; mad r\d+\.xyzw, (?P<pos_x>r\d+)\.(?P<swizzle_x>[xyzw])[xyzw]{3}, cb0\[27\]\.xyzw, r\d+\.xyzw\n
; mad r\d+\.xyzw, (?P<pos_z>r\d+)\.(?P<swizzle_z>[xyzw])[xyzw]{3}, cb0\[29\]\.xyzw, r\d+\.xyzw\n
; add (?P<result>r\d+)\.xyzw, r\d+\.xyzw, cb0\[30\]\.xyzw\n
; div r\d+\.[xyzw]{2}, (?P=result)\.[xyzw]{4}, r\d+\.wwww\n
; 
; 
; The next section specifies how to modify the matched pattern. Again the name
; must begin with the same name as the main section, and end in
; ".Pattern.Replace" (there is a reason the replacement is associated with the
; pattern, but that's coming soon). You can (and I highly encourage that you
; do) use named capture groups in the above pattern and substitute them in
; here. Temporary registers that you defined in the main ShaderRegex section
; are also available here with the same syntax as named capture groups. Use
; ${0} to indicate where the matched pattern goes, allowing you to insert code
; before and/or after it, or use additonal capture groups to insert code in the
; middle. Extended substitution is enabled in PCRE2, which among other things
; makes \n insert a newline.
; 
; [ShaderRegex1.Pattern.Replace]
; \n
; // UE4 shadow correction:\n
; ld_indexable(texture2d)(float,float,float,float) ${stereo}.xyzw, l(0, 0, 0, 0), t125.xyzw\n
; add ${tmp1}.x, ${pos_z}.${swizzle_z}, -${stereo}.y\n
; mad ${pos_x}.${swizzle_x}, -${tmp1}.x, ${stereo}.x, ${pos_x}.${swizzle_x}\n
; \n
; ${0}
; 
; 
; The final section allows you to insert new declarations into the shader, and
; 3DMigoto will check that this declaration has not already been inserted
; first. Typically this is used to get access to StereoParams in t125:
; 
; [ShaderRegex1.InsertDeclarations]
; dcl_resource_texture2d (float,float,float,float) t125
; ------------------------------------------------------------------------------------------------------
; texture / render target manipulations
; ------------------------------------------------------------------------------------------------------
; 
; NOTE: If you are trying to match a texture the same size as the resolution (or
; a /2, x2, x4 or x8 multiple), you should confirm that the same hash is used
; on different resolutions, and adjust get_resolution_from if necessary.
; 
; NOTE: If you find a texture hash seems to change inconsistently, try enabling
; track_texture_updates in the [Rendering] section.
; 
; [TextureOverride1]
; Hash=c3e55ebd
; NVidia stores surface creation mode heuristics in the game profile. setting
; this option overrides the creation mode for a given texture / buffer.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - create stereo surface.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - create mono surface.
; StereoMode=2
; [TextureOverride2]
; Hash = e27b9d07
; Prevent the game reading from this texture - will give the game a blank
; buffer instead. Used to prevent CryEngine games falsely culling objects. Use
; the frame analysis log and look for MapType:1 to identify possible hashes.
; deny_cpu_read=1
; Expand the region copied to this texture with CopySubresourceRegion (similar
; issue to rasterizer_disable_scissor). Used to solve issues with transparent
; refraction effects (like glass) in CryEngine games.
; expand_region_copy=1
; [TextureOverrideUAVNotRT]
; Example of fuzzy matching based on attributes instead of hash. Provides an
; alternative to driver heuristics that we have more precise control over.
; match_type = Texture2D
; match_width = height * 16 / 9
; match_height = !res_height
; match_msaa = >1
; match_bind_flags = +unordered_access -render_target
; match_priority = -1
; StereoMode = 2
; ------------------------------------------------------------------------------------------------------
; Example of settings override by mouse button configuration
; Mapping of from game provided hard coded convergence values to custom values
; Those are values for L.A. Noir
; Example of settings override by mouse button configuration
; ------------------------------------------------------------------------------------------------------
; [ConvergenceMap]
; Map1=from 3e99999a to 0.3
; Map2=from 3f800000 to 1.0
; Map3=from 3f666666 to 0.9
; ------------------------------------------------------------------------------------------------------
; Updates the game's driver profile on launch.
; 
; Any changes here will require the user to OK a UAC prompt the first time they
; run the game, but the DLL tries to only do that if it is actually required.
; ------------------------------------------------------------------------------------------------------
[Profile]
StereoProfile=1
StereoTextureEnable=0x00000027
Disable2DD=1
StereoFlagsDX10=0x00005008
StereoConvergence=2.0
APP_COMPAT_SHIM=2
Comments="Final Fantasy XV 3D fix by masterotaku and DJ-RK"
2DD_Notes="Compatibility mode enabled. To see real 3D please disable it with Ctrl+Alt+F11."

[CommandListUnbindAllRenderTargets]
run=BuiltInCommandListUnbindAllRenderTargets

; ------------------------------------------------------------------------------------------------------
; Commands to run from the Present call at the start/end of each frame
; 
; Useful to clear custom resources or ini params at the start of each frame, or
; to run a custom shader to do whatever you can dream up. The post keyword will
; make an action run at the start of a frame instead of the end - as general
; guideline you want overlays drawn at the end of a frame and resources cleared
; at the start of a new frame.
; ------------------------------------------------------------------------------------------------------
[Present]
; Example: Clear an ini param at the start of each frame:
; post x = 0
; Example: Undefine a custom resource until something is copied into it:
; post ResourceDepthBuffer = null
; Example: Clear a custom resource with black/zero at the start of each frame
; (beware that driver bugs may mean only one eye is cleared in some cases):
; post clear = ResourceFoo
; If you are looking for CustomShader3DVision2SBS, CustomShaderSoftwareMouse or
; CustomShaderUpscale, these are now enabled in the [Include] section at the
; top of this file instead. The other options related to these are still in
; the same place.
What is your preferred method of having text files embedded or linked? I'm happy to edit this post down to less obnoxious lengths.
I didn't see d3dx.ini in Lust for Darnkess-the other game I've mostly tested. Maybe d3d11_log is the applicable file there?
Next time I do testing I can have a look at some other games and post their files as needed, maybe starting with Control and Agony. All four of the games I mentioned are modded by different people, so it will vary the sample pool.
@Hans Davis: Please use a code block as above to avoid all the scrolling, or upload as a file!
Hans Davis wrote: Mon May 11, 2020 10:27 pm How specifically did you utilize the bringback3dv tool nintynuts? Did you use DDU first or just use bringback3d on top of your existing drivers? And which driver version did you install?
@Hans Davis: I placed the BringBack3DV.exe in the driver download folder of 3DFM where 445 had already been downloaded and ran it without DDU (although I had done it before I reverted to 425 previously). I didn't bother disabling my internet because I have disabled driver updates in windows, so I think it's unnecessary.
Pauldusler wrote: Tue May 12, 2020 12:51 am When 3DFM indeed breaks d3dx.ini then it's at least logical that 3D can't work any more. But the fact that 2D mode also doesn't work any more is completely unlogical. The 2D bug would affect all PCs then, not only yours.

I relooked at the code of 3DFM and it generally only edits the d3dx.ini file automatically if:
  • in display profile tab a 3D format was set (e.g. reversed interlacing). Then also software mouse cursor is enabled by 3DFM in d3dx.ini as the cursor often renders on one eye when using 3dmigoto's side by side shader. If the 3dmigoto version is too old to support side by side shader 3DFM asks during game start whether to update 3dmigoto in order to set line interlaced format. If the user agrees 3dmigoto is updated and the 3d format setting written to d3dx.ini
  • an upscale resolution was set manually in d3dx.ini. Then on game start 3DFM rechecks if the upscale resolution still matches the native resolution of the current display. If not, it's automatically corrected in d3dx.ini. (by default not the case for Final Fantasy 15 unless you enabled upscale shader in "Hotkeys" tab manually .
  • if a unity universal fix was installed. Then 3DFM checks which unity engine version is used and adjusts d3dx.ini automatically (not the case for Final Fantasy 15 as not Unity engine)
  • 3dmigoto was updated from older versions to a newer version (not the case for Final Fantasy 15)
  • 3DFM also writes to d3dx.ini when CMU is unticked. Then it sets Disable2DD = 1 in d3dx.ini under section "[profile]". I compared the file with original one for Final Fantasy and it still looks fine. Logical - as otherwise 3D would be surely broken for me either or 3dmigoto would give me some errors on game start
So indeed -> the d3dx.ini is modified every time you start a game through 3DFM due to the last point with CMU at least. This makes sure that the game does not start in Compatibility Mode when the CMU tick is not set. But the changes done here should be very minor and not breaking something.

@passive 3D users: Are your issues fixed if you replace the d3dx.ini modified by 3DFM with the original one and start the game via Steam then? If yes then please post your broken d3dx.ini here. I'll compare with the original d3dx.ini then.
If replacing d3dx.ini does not help then 3DFM didn't destroy the file. The issue lies somewhere else then.


Another suggestion:
Untick all options in Display Profile tab. As said I don't have a 3DTV play or a passive 3D device so I could never test but I think the combination of 3DTV Play mode + 3dmigoto's Inversed interlacing 3D format does not work? This should only work when passive EDID override was installed. But that's just an assumption by me.
@Pauldusler: It not working in 2D and 3D at all was down to the driver, not the ini changes. The d3dx.ini is formatted every time I run (which I would rather it didn't do as I'm shaderhacking and they're unwanted changes to track in git) but it broke when I updated 3Dmigoto version, when the formatting was more than changing whitespace. I'm lucky I have source control or it would be a pain to revert. I do have upscaling enabled for my game (although it doesn't work because the mouse pointer emulation is broken, so it's not usable KB & mouse). CMU option isn't available for Splinter Cell Blacklist (at least my version).

I use my 4K Passive with custom EDID and 3Dmigoto using the inversed line interlaced as you say, work fine most of the time. I'm now finding my game won't load past the menu with modded shaders, but I'm hoping that an issue with the shaders and nothing to do with 3DFM.

In summary, I found 3DFM's 3DV install didn't work but BringBack3DV did, so maybe you want to do it the same way, and please avoid editing the ini wherever possible. Thanks for the Help.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

russellk wrote: Tue May 12, 2020 5:04 am
Hans Davis wrote: Tue May 12, 2020 4:39 am If what you state is accurate then there is a fair bit of outdated or incorrect info floating around. I've read repeatedly that the edid is needed to enable optimized for geforce mode as the only way to use 3d vision. In other places I've read that you need both an edid and 3dtvplay drivers installed.
I only got into this stuff recently, Nvidea forums were broken, and mtbs forums weren't coming up in google results so it took a while to find mtbs and I dug through a lot of old posts here and there. I haven't had the benefit of watching the software and mods evolve. I'll have to find youf post about nvidea tweaks as an alternative to edids to further my education.
The labelling of the sbs mode checkbook in 3dfixmanager lead me to misinterpret the significance of it's function. It seemed intuitive to set preferred 3d format to my intended format. I looked for info on the display profile in the 3dfixmanager manual but did not find it.
That doesn't surprise me, there's always been lots of confusion over the various 3d modes, plus the behaviour of the nvidia driver has changed over the years.
IIRC (I've been around here a while!) someone virtually stumbled across this by accident on the old 3d forums. They were messing around with HDMI and DVI connectors/adaptors and accidentally enabled the optimised for geforce (interlaced) mode on a 4k tv.
No-one actually believed them, until it became clear that there was an interlaced mode built into 3d vision. This makes sense, as there were some early passive monitors that Nvidia themselves certified as 3d vision compatible.

3dtvplay is 'Framepacked' 3d and is part of HDMI 1.4a. It has HDMI 1.4 bandwidth derived limitations of 1080p@24 or 720p@1080 (or 1080SBS/TAB). Optimised for geforce (also called HDMI checkerboard) bypasses those HDMI limitations. There is more to it than that, but in essence that's the big difference.

Back in the early days we had an Nvidia rep on the 3d forums (Andrew Fear) and at one point they promised SBS etc. support would be added to the drivers. Huge shame it never happened.
Yeah and unfortunately Nvidia does not allow us to select what we want. E.g. when the EDID Override was applied then 3DTV Play and HDMI Checkerboard is gone. And when those 2 formats are available 3D Vision Discover is missing. It's always mutually exlusive which sucks. E.g. there are projectors out there which support frame sequential, Framepacking and SbS format. However for switching between Framepacking and 3D Frame sequential we would have to modify the EDID. This is pretty absurd what Nvidia did.
russellk
Cross Eyed!
Posts: 187
Joined: Sun Jan 24, 2010 2:09 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by russellk »

Pauldusler wrote: Tue May 12, 2020 4:35 am
So do I understand correctly?
  • You did not installed the EDID override
  • In Nvidia Control Panel you have two options listed: 3DTV and Checkerboard
  • You selected checkerboard
  • In 3dmigoto you enabled Reversed line interlace 3D format
  • For DX 9 games you just use 3DTV Play as side by side shader is not available
What is the maximum resolution you can select for games with these settings? Is 4k possible (1080p per eye) or is it lower?
Hi Paul, yes to everything *but* now I'm having a problem too! I'm getting the same misaligned images as above so I do not see a 3d image through the glasses. I will investigate further.
All resolutions are available, but I think it might be something to do with that, as in the past I've noticed the games are set to strange 'half vertical' resolutions when launched throught 3dfx. I'm sure this is all something to do with profiles. Let me play some more.
One thing to be careful of with OLEDS is the display mode. In the wrong mode, the tv can process the image and 'break' 3d. This isn't always an issue, depends if the tv thinks it's in 3d mode or not.
Last edited by russellk on Tue May 12, 2020 5:44 am, edited 1 time in total.
Win 10 1903 (Via 3dfix manager - Non DCH)/W11, 11700K, Gigabyte 2080Ti OC, Samsung G9, LG 3d OLED, 4k Projector, WMR Odyssey+
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

nintynuts wrote: Tue May 12, 2020 5:27 am In summary, I found 3DFM's 3DV install didn't work but BringBack3DV did, so maybe you want to do it the same way, and please avoid editing the ini wherever possible. Thanks for the Help.
I think I'll remove the d3dx.ini edit for the CMU case. Because these days with NVAPI I am able to just look whether CM mode is enabled or not in the driver profile. Disabling compatibility mode can be made via NVAPI then and doesn't require d3dx.ini / 3dmigoto then.
Pauldusler
Sharp Eyed Eagle!
Posts: 354
Joined: Wed Oct 16, 2019 12:27 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by Pauldusler »

russellk wrote: Tue May 12, 2020 5:40 am
Pauldusler wrote: Tue May 12, 2020 4:35 am
So do I understand correctly?
  • You did not installed the EDID override
  • In Nvidia Control Panel you have two options listed: 3DTV and Checkerboard
  • You selected checkerboard
  • In 3dmigoto you enabled Reversed line interlace 3D format
  • For DX 9 games you just use 3DTV Play as side by side shader is not available
What is the maximum resolution you can select for games with these settings? Is 4k possible (1080p per eye) or is it lower?
Hi Paul, yes to everything *but* now I'm having a problem too! I'm getting the same misaligned images as above so I do not see a 3d image through the glasses. I will investigate further.
All resolutions are available, but I think it might be something to do with that, as in the past I've noticed the games are set to strange 'half vertical' resolutions when launched throught 3dfx. I'm sure this is all something to do with profiles. Let me play some more.
One thing to be careful of with OLEDS is the display mode. In the wrong mode, the tv can process the image and 'break' 3d. This isn't always an issue, depends if the tv thinks it's in 3d mode or not.
I start thinking that the Side by Side shader is broken for LG passive TVs. Does it work when you enable it manually in original d3dx.ini and don't start the game via 3DFM?
russellk
Cross Eyed!
Posts: 187
Joined: Sun Jan 24, 2010 2:09 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by russellk »

Hi Paul, this is getting really confusing now. I'm testing with Ori and the blind forest definitive edition btw.
The NVCP test app was working fine, but game was broken as desribed above.
I disabled the display and output settings in the display profile, no change.
Launched direct from steam, no change.
Uninstalled 3dfix within 3dfm and launched from 3dfm, 3d working again.
Installed 3dfix within 3dfm and 3d still working.
I'll play around with the display profile settings now.
Win 10 1903 (Via 3dfix manager - Non DCH)/W11, 11700K, Gigabyte 2080Ti OC, Samsung G9, LG 3d OLED, 4k Projector, WMR Odyssey+
russellk
Cross Eyed!
Posts: 187
Joined: Sun Jan 24, 2010 2:09 pm

Re: 3D Fix Manager - Application for installing 3D Vision Fixes

Post by russellk »

I think it's possible that '3d display type' in 3dfm display profile and the nvidia drivers/nvcp do not respect each other properly? Could this be something to do with the registry locking you mentioned?

Further to steps above, I changed to reverse interlaced and everything was still fine. Then I changed to checkerboard, everything fine. Then I change to reverce checkerboard, no 3d effect.
I tried to check NVCP and it woulnd't run/come to foreground. I ended task, went back and checked in NVCP 3d still enabled as hdmi checkerboard, but the nvidia test has the same problem.
Changed 3d mode to 3dtv play in NVCP and test passed. Changed back to HDMI checkerboard in NVCP and still broken.

Are there any specific test sequences you'd like me to repeat?

*edit* Now in 3dfm, I enabled preferred 3d format as line interlacing and game works in 3d. NVCP had to end task again and relaunch, but 3d test still broken.
Win 10 1903 (Via 3dfix manager - Non DCH)/W11, 11700K, Gigabyte 2080Ti OC, Samsung G9, LG 3d OLED, 4k Projector, WMR Odyssey+
Post Reply

Return to “Nvidia 3D Vision Fixes, Solutions and Troubleshooting”