Difference between revisions of "Driver Profile Settings"

From Bo3b's School for Shaderhackers
Jump to: navigation, search
(Internal Settings: Change the title, more eye grabbing)
(Important note about encoding of "Internal" Settings: Add link to NPI 2.1.2.7 to decrypt internal settings)
Line 26: Line 26:
 
Some profiles are shipped with the internal settings flag set on certain settings. These show up with "InternalSettingFlag=V0" in Geforce Profile Manager, but there is no easy way to distinguish them in NVIDIA Inspector. These settings are encrypted and the values read out with these tools will not match any of the documentation here. Further, if they are written back with NVIDIA Inspector, the flag will be cleared and they will become corrupt. Geforce Profile Manager allows them to be written back with the flag intact avoiding the corruption, but still does not help understand them.
 
Some profiles are shipped with the internal settings flag set on certain settings. These show up with "InternalSettingFlag=V0" in Geforce Profile Manager, but there is no easy way to distinguish them in NVIDIA Inspector. These settings are encrypted and the values read out with these tools will not match any of the documentation here. Further, if they are written back with NVIDIA Inspector, the flag will be cleared and they will become corrupt. Geforce Profile Manager allows them to be written back with the flag intact avoiding the corruption, but still does not help understand them.
  
A script to decipher these values is available: [https://raw.githubusercontent.com/DarkStarSword/3d-fixes/master/__profiles__/sanitise_nv_profiles.py here]
+
A script to decipher these values from Geforce Profile Manager is available: [https://raw.githubusercontent.com/DarkStarSword/3d-fixes/master/__profiles__/sanitise_nv_profiles.py here]
 +
 
 +
NVIDIA Profile Inspector 2.1.2.7 or later can correctly decode these, and is now the recommended tool for working with driver profiles. [https://ci.appveyor.com/project/Orbmu2k/nvidiaprofileinspector/build/2.1.2.7/artifacts Version 2.1.2.7] [https://ci.appveyor.com/project/Orbmu2k/nvidiaprofileinspector/build/artifacts Latest build]
  
 
== Notes on settings with multiple IDs ==
 
== Notes on settings with multiple IDs ==

Revision as of 23:46, 15 July 2016

This page is a work in progress - feel free to expand it with extra knowledge, before & after screenshots, etc.


Contents

Tools

There are three tools that can be used to edit the game profiles:

NVIDIA Profile Inspector, split off from NVIDIA Inspector (Source code, Latest Continuous Integration builds)

NVIDIA Inspector 1.9.7.5 or older (English mirror)

and

GeForce 3D Profile Manager

Note that NVIDIA Inspector has some bugs and limitations, which may prevent some settings from being displayed (e.g. almost any text setting) and in some cases edited in full (Helifax noted this prevents changes to 2DDHUDSettings from taking effect).

NVIDIA Inspector Custom Stereo Settings Names

NVIDIA Inspector: Download this CustomSettingNames_en-EN.xml file to replace the one from NVIDIA Inspector, which will add all the settings listed on this page to the Stereo category.

NVIDIA Profile Inspector: This XML file has been submitted upstream to the open source NVIDIA Profile Inspector project. Version 2.1.2.5 has this already built in. If you are not using that version you can still use the XML file linked above, but name it 'CustomSettingNames.xml' (i.e. remove the '_en-EN').

Important note about encoding of "Internal" Settings

Some profiles are shipped with the internal settings flag set on certain settings. These show up with "InternalSettingFlag=V0" in Geforce Profile Manager, but there is no easy way to distinguish them in NVIDIA Inspector. These settings are encrypted and the values read out with these tools will not match any of the documentation here. Further, if they are written back with NVIDIA Inspector, the flag will be cleared and they will become corrupt. Geforce Profile Manager allows them to be written back with the flag intact avoiding the corruption, but still does not help understand them.

A script to decipher these values from Geforce Profile Manager is available: here

NVIDIA Profile Inspector 2.1.2.7 or later can correctly decode these, and is now the recommended tool for working with driver profiles. Version 2.1.2.7 Latest build

Notes on settings with multiple IDs

Some settings on this page are listed with two or three IDs. This is not fully understood yet. Generally you should stick to the first value listed, but if a profile also lists the second or third value in this list it might be used in place of the first (however a given profile will only use a specific ID out of the second or third in the list).

The following settings have multiple IDs:

Name Primary ID 1st Alternate ID 2nd Alternate ID
StereoConvergence 0x708DB8C5 0x7077bace 0x7084807e
LaserSight 0x7058B6E1 0x7031a2e7 0x7045b752
FrustumAdjustMode 0x70A1411A 0x70ed1da7 0x70f475a0
StereoTextureEnable 0x70EDB381 0x70e1518c 0x70c0125e
Rhwinf 0x706E1913 0x70cc286a 0x70a3fee6
Rhwscr 0x70A4995C 0x7030b071 0x70b57ed1
InGameLaserSight 0x7064F0C2 0x70dd2585 0x70e7adad
StereoCutoffDepthNear 0x7050E011 0x704ef483 0x7031de06
StereoCutoff 0x709A1DDF 0x704fcf5c 0x7053569a
DX10VSCBNumber 0x70F8E408 0x70f64a32

StereoProfile (AKA The Mystery Stereo Setting) 0x701EB457

This setting is known to be very important to stereo profiles. We now know it's official name is STEREO_STEREOPROFILE, and will be referred to as "StereoProfile" in future releases of NVIDIA Profile Inspector.

Observations

- The mere existance of this setting on a DX9 profile will enable Stereo in windowed mode, regardless of the value.

- This setting is required to enable a lot of stereo related code in the driver.

- Certain other stereo settings (e.g. StereoTextureEnable) may be ignored without this setting.

- If this is missing in a profile, attempting to save the profile with Ctrl+F7 will not work, and will restore the default convergence instead. It has been noted that adding this setting to the base profile can solve this globally, but may cause the monitor to switch to stereo mode when using certain 2D applications (e.g. VS2015), which may be undesirable in some cases.

Bit Definitions

0xFFFFFFFF UNKNOWN :(

Known Values

0x00000001 Seen in many stereo profiles created with Ctrl+F7
0x2241AB21 Used by many games (Aion, Prototype 2, ...)

Notable Settings

StereoTextureEnable (0x70edb381 / 0x70e1518c / 0x70c0125e)

- Controls the heuristics that determines which render targets & Z buffers are stereoised and which are not.

- Controls the heuristics that determines in what situations the stereo correction formula will be applied.

- Some bits are used for specific games.

Observations

- Setting this to all F's will turn a game into mono, suggesting that some high bits might filter out some render targets, rather than enabling them.

Bit Definitions

Contact DarkStarSword or Bo3b privately for a complete list of bit definitions for this setting.

Chiri determined a number of these (see this post)

0x00000001 [ET] = Stereoize render target textures which are of size or exceeding the size of the backbuffer (and are not square).
0x00000002 [ESMT] = Stereoize all non square render target textures smaller then backbuffer.
0x00000004 [ESQT] = Stereoize sqare render target textures.
0x00000008 [DBBST] = ???
0x00000010 [DBBS] = ???

Default Value

If not specified in a profile, the driver appears to use 0x23 as the default.

StereoUseMatrix (0x70e34a78)

- Able to automatically fix halo type issues in many games

Known Values

0x1945B570 Used by Aion, Prototype 2, etc.


StereoFlagsDX10 (0x702442fc)

- Able to resolve mono depth buffer issues in DirectX 11 games, such as Far Cry 4 and Ryse: Son of Rome.

Bit Definitions

0x00008000 STEREO_COMPUTE_SAME_RESOURCES_AS_GRAPHICS - "stereorize the same resources as for graphics (do not mark all UAVs as stereorizable)"
0x00004000 STEREO_COMPUTE_ENABLE - enables running compute shaders once for each eye. Fixes mono depth buffer issue in Far Cry 4 (SLI users can alternatively resolve this with custom SLI compatibility bits), Witcher 3, and other games.
0x00000024 One of these two bits negated the separation value reported to 3Dmigoto in Far Cry 4, but not Max Payne 3?

Known Values

0x1C21FE24 Metro: Last Light
0x1C229E20 Crysis Warhead
0x1C229E24 Titanfall
0x1C22AE24 Passion Leads Army Benchmark
0x1C22BA24 Batman: Arkham City, Metro 2033
0x1C22BC24 Crysis 3, Battlefield 3
0x1C22BE20 Crysis, Civilisation V
0x1C22BE25 Far Cry 2 (DX10)
0x1C22BE2C 3DMark Vantage
0x1C22BEC4 Resident Evil 5
0x1C22FE24 Max Payne 3 (good profile to use for testing), Far Cry 4 (352.86+), The Witcher 3

StereoCutoff (0x709a1ddf / 0x704fcf5c / 0x7053569a)

Present in almost all Stereo profiles, but meaning unknown. My complete guess is that it may be related to driver heuristics to decide when the stereo correction formula is applied (e.g. for UI elements)?

Observations

- Setting this to 0x00000000 broke shadows in Miasmata

Observations from D-Man11 (see this post)

Interesting thing is, if you apply the TR: Underworld profile, the UI text doesn't split, just the background.

Messing around with Legend, I found that Setting ID_0x7050e011 = 0x0ad0eed9 InternalSettingFlag=V0 and Setting ID_0x709a1ddf = 0x4b1cd96b InternalSettingFlag=V0 were the responsible flags from the Anniversary profile to stop the UI from splitting. Either by itself would not do anything.

If I just added them to the existing Legend profile, it wouldn't work, something was stopping it.

If I deleted everything from the Legend profile, excluding Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0 (which is needed, if you remove it, the profile defaults to generic) and added the 2 flags from Anniversary, the UI would not split.

   Setting ID_0x7050e011 = 0x0ad0eed9 InternalSettingFlag=V0 // is exclusive to TR: Anniversary
   Setting ID_0x709a1ddf = 0x4b1cd96b InternalSettingFlag=V0 // is found in 26 other profiles
   Setting ID_0x701eb457 = 0x2241ab21 InternalSettingFlag=V0 // is found in 2110 profiles

So the above 3 settings need to be present and there must not be any current settings in the profile to block the effect.

I did not bother to find the offending setting in the original Legend profile.

Wild speculation

I believe that StereoCutoff = 1 is the default for profiles missing that setting. As far as I can tell, only the low four bits are used - I have no idea why other bits are set in the profiles though, so I might be missing something. Further to that, the profiles shipped with the driver don't make much sense at all here compared to what the driver appears to do with the values (over 1200 profiles appear to have invalid values), so take the next paragraph with a grain of salt - this probably needs to be experimentally confirmed. More damning is that this does not seem to match observations for Tomb Raider:

Only 0, 1, 2, 4, and 8 seem to be valid values for the low nibble of StereoCutoff - any other value appears to be ignored and 1 will be used in their place. If StereoCutOff=2, StereoCutoffDepthNear is used (default is 1.0 if not specified in the profile). StereoCutOff=4 means that StereoCutoffDepthFar is used (default is 10000.0 if not specified in the profile). It does not appear possible to combine these two. I do not know what StereoCutoff=0, 1 or 8 means.

It is worth noting that most games render their UI at depth=1.0. I would guess that StereoCutoff might be used in these games to denote that geometry at exactly that depth should not be stereoised, or to specify what depth or range of depths should be ignored for games that do not do that and have no better way to match UI elements.

It is worthwhile noting that this is not the only heuristic that the driver will use for UI elements - e.g. if there is no depth buffer assigned when the UI is drawn it will not stereoise it regardless of the depth value. Presumably this is controlled by another setting (Maybe StereoTextureEnable = 0x80 ?).

More Settings

StereoConvergence (0x708db8c5 / 0x7077bace / 0x7084807e)

Stores the convergence value of a profile as a floating point value.

Default Value: 4.0

Comments (0x704d456e) - text

Stores the comments displayed in the green text by the driver.


Developer_Issues (0x704f5928) - text

Alternate setting for the comments displayed in the green text by the driver.


StereoMemoEnabled (0x707f4b45)

0x00000000 Green text disabled
0x00000001 Green text enabled


Compatibility Mode Settings

Helifax created a guide with more information about these settings: Guide: How to Enable and TWEAK 3D Compatibility Mode in any DX11 Game

2DDHUDSettings (0x709adada)

2DDConvergence (0x709adadb)

Disable2DD (0x709adadd)

2DD_Notes (0x709adadc) - text

Notes displayed when compatibility mode is enabled


VR Direct Settings

These settings have appeared in recent drivers and are believed to be related to VR Direct:

StereoVRConvergenceBias (0x708db8c6)

StereoVRRefreshRateOverride (0x708db8c8)

StereoVRVsync (0x708db8c9)

Laser Sight Settings

TsaebehT created a guide with more information about these settings: Guide: Correcting/Off-Centering LaserSight


LaserSightEnabled (0x7054837a)

0x00000000 Laser sight disabled
0x00000001 Laser sight enabled


LaserXAdjust (0x7057e831)

Horizontal adjustment encoded as a hex float between 0.0 (left) and 2.0 (right). Default: 1.0 (center)


LaserYAdjust (0x70225308)

Horizontal adjustment encoded as a hex float between 0.0 (top) and 2.0 (bottom). Default: 1.0 (center)


LaserZAdjust (0x7014fca2)

0x3f800000 Enables dynamic laser sight depth
other Laser sight is either at screen depth or infinity

LaserSightProperty (0x7032243a)

Governs the laser sight opacity


LaserSightTrigger (0x70031b88)

Known Values

0x80b671f8 Gears of War


InGameLaserSight (0x7064f0c2 / 0x70dd2585 / 0x70e7adad)

Observations

Used in many Source games, e.g. HL2, LFD2


InGameLaserSightDX9States (0x706139ad)

Observations

Used in certain Source games


LaserSight (0x7058b6e1 / 0x7031a2e7 / 0x7045b752)

LaserSightFile (0x707ac50d)

LaserSightIndex (0x70da83c6)

StereoLaserSightMaxCount (0x70bc864d)

StereoLaserSightCount (0x70077042)

Laser Sight Key Bindings

ToggleLaserSight (0x70b7bd1f)

Only works when set via the Registry and not via a Profile.


LaserAdjustXMinus (0x7048b7dc)

Doesn't seem to work via registry or profile.


LaserAdjustXPlus (0x70d8bae6)

Doesn't seem to work via registry or profile.


LaserAdjustYMinus (0x70fb9e1e)

Doesn't seem to work via registry or profile.


LaserAdjustYPlus (0x7024eda4)

Doesn't seem to work via registry or profile.

Misc Key Bindings

These are believed to be key bindings due to their names. These will override the global key bindings in the registry. Some of these settings may not work at all in recent drivers.

There is a good guide for how these are encoded here: Modifying All 3D Vision Control Key Combinations as You Need

StereoToggle (0x70d76b8b)

Toggles Stereo on and off (Default: Ctrl+T)

StereoSeparationAdjustLess (0x705d1e02)

Reduce separation (Default: Ctrl+F4)

StereoSeparationAdjustMore (0x70ab8d32)

Increase separation (Default: Ctrl+F5)

StereoConvergenceAdjustLess (0x70d4add7)

Reduce convergence (Default: Ctrl+F5)

StereoConvergenceAdjustMore (0x701ed576)

Increase Convergence (Default: Ctrl+F6)

SaveStereoImage (0x70121853)

Save a stereo screenshort (Default: Alt+F1)

WriteConfig (0x700498b3)

Save the current convergence to a user profile (Default: Ctrl+F7)

DeleteConfig (0x70c73ba2)

Delete the game's user profile (Default: Alt+F7)

GammaAdjustMore (0x703f4521)

GammaAdjustLess (0x70e8420c)

StereoVerticalAdjustMore (0x7087fe61)

StereoVerticalAdjustLess (0x703acfc6)

StereoHorizontalAdjustMore (0x70062f07)

StereoHorizontalAdjustLess (0x70871a39)

ToggleAutoConvergence (0x70085de3)

NOTE: AFAIK this was never implemented

ToggleAutoConvergenceRestore (0x703bc51e)

NOTE: AFAIK this was never implemented

RHWAtScreenMore (0x7066a22e)

RHWAtScreenLess (0x709139ad)

RHWLessAtScreenMore (0x704e4bca)

RHWLessAtScreenLess (0x70b378a1)

CutoffNearDepthLess (0x70d1bdb5)

CutoffNearDepthMore (0x7020c991)

CutoffFarDepthLess (0x704c9a46)

CutoffFarDepthMore (0x70fbc04d)

CutoffStepLess (0x704b45c7)

CutoffStepMore (0x700f2971)

GlassesDelayPlus (0x701fc5b4)

NOTE: Believed to no longer work in recent drivers

GlassesDelayMinus (0x70b8a743)

NOTE: Believed to no longer work in recent drivers


Unidentified Settings

These setting names were found in the driver, but their purpose or whether they are even functional is unknown:

Time (0x70ad05c8)

RunTimeName (0x701a8be4) - text

EnableConsumerStereoSupport (0x70cb9168)

StereoViewer (0x704915a1)

StereoViewerType (0x708f9ef7)

ShowAllViewerTypes (0x708e5cb4)

StereoAdjustEnable (0x70538ab1)

StereoDisableTnL (0x70633bd9)

StereoTransformationType (0x70c27e3c)

StereoSeparation (0x70933c00)

StereoSeparationStep (0x7082555b)

StereoConvergenceMultiplier (0x70efbb5b)

Default value: 5.0

RHW2DDetectionMin (0x7029432b)

RHWGreaterAtScreen (0x702c861a)

RHWEqualAtScreen (0x70ab2e09)

RHWLessAtScreen (0x70381472)

AutoConvergence (0x702a0ab2)

AutoConvergenceAdjustPace (0x70bf3c6b)

StereoToggleMode (0x70d76b8c)

StereoSuggestSettings (0x706315af)

StereoUnsuggestSettings (0x7017861c)

FavorSZ (0x705faed7)

StereoPointer (0x70364596)

GameSpecific0 (0x702244b7)

StereoDefaultOn (0x70ab30a7)

FrustumAdjustMode (0x70a1411a / 0x70ed1da7 / 0x70f475a0)

MonitorSize (0x7086ebe9)

MaxMonitorSize (0x7032022c)

MaxVertexCount (0x709e4a94)

PartialClearMode (0x709794cc)

StereoRefreshDefaultOn (0x702ba385)

MixedTnL (0x70bd11e0)

StereoGamma (0x70c8b5d1)

LineCodeColor (0x70dc4a12)

LeftAnaglyphFilter (0x70d51cd1)

RightAnaglyphFilter (0x70f4a930)

InterleavePattern0 (0x70b1c8cc)

InterleavePattern1 (0x7091a772)

StereoForceVSync (0x70aae185)

StereoColorKey (0x70e5773b)

ZDirection (0x70b17872)

StereoCompatibility (0x70a2000e)

LeftColorFilter0 (0x70ac6888)

LeftColorFilter1 (0x7090b6ca)

RightColorFilter0 (0x70b9a2f7)

RightColorFilter1 (0x70aca0cc)

SharpVPI (0x706e0041)

StereoMode (0x701baa09)

Watchdog (0x700a5654)

StereoOSDEnable (0x70f455aa)

StereoOrthoEnable (0x703564f6)

StereoNotSupported (0x709aa171)

ModesetWarning (0x70969bb0)

StereoFirstTime (0x70af6400)

StereoRefreshRate (0x70ded3c0)

GameConfigs (0x704a905a)

CompareEyes (0x70729e58)

CompareFrom (0x70efb726)

StereoImageType (0x7097906c)

SnapShotQuality (0x7004e7a6)

NoLockSubstitute (0x7005ad16)

PushbufSubstituteSize (0x7054fbf8)

DiscardHotkeys (0x70175566)

StereoLCDPatternType (0x707cfb97)

GlassesSwitchDelay (0x70057bb6)

Valid values appear to be between 5 <= GlassesSwitchDelay < 95

StartZBit (0x7044d7a6)

DisableOnOutOfMemory (0x70c71508)

StereoWindowedEnable (0x709b3484)

AllowNonExclusiveStereo (0x702c7709)

Rhwinf (0x706e1913 / 0x70cc286a / 0x70a3fee6)

Rhwscr (0x70a4995c / 0x7030b071 / 0x70b57ed1)

Zinf (0x70fc13ad)

Zscr (0x707f0e69)

StereoCutoffDepthNear (0x7050e011 / 0x704ef483 / 0x7031de06)

StereoCutoffDepthFar (0x70add220)

EnableCE (0x702b8c95)

MediaPlayer (0x70a8fc7f)

StereoDX9 (0x70d10d2b)

StereoMsgVerticalOffset (0x70160ebf)

StereoEasyZCheck (0x70b6d6ed)

StereoStrictLSCheck (0x709bc378)

StereoDisableAsync (0x70de5533)

EnablePartialStereoBlit (0x7096eced)

StereoNoDepthOverride (0x709dea62)

StereoShaderMatrixCheck (0x7044f8fb)

StereoLogShaders (0x7052bdd0)

StereoEpsilon (0x70e5a749)

DelayedStereoDesktop (0x7042eef1)

DX10VSCBNumber (0x70f8e408 / 0x70f64a32 )

DX10DSCBNumber (0x70092d4a)

StereoMiscFlags (0x70ccb5f0)

StereoHiddenProfile (0x70e46f20)

StereoLinkDll (0x70e46f2a) - text

EnableStereoCursor (0x70e46f2b)

CreateStereoDTAfterPresentNum (0x70a7fc7f)

Date_Rel (0x705fafec) - text

May contain the release date in the form YYYY-MM-DD 00:00:00

Game (0x70c8d48e) - text

Style (0x709cc5e0) - text

Publisher (0x706c7030) - text

Developer (0x703c4026) - text

API (0x70b5603f) - text

Usually contains "D3D"

Value (0x7049c7ec)

Compat (0x7051e5f5) - text

Appears to set some form of compatibility mode, possibly to select older defaults?

Default value: "1000"

PF_Issues (0x704cde5a) - text

Comma separated list of letters corresponding to the following issues listed in the green text:

A: "Incorrect 3D object placement"

B: "Text/Objects are small and difficult to use"

C: "Objects clipped at sides of monitor"

D: "Incorrect clipping of subviews"

E: "Mixed 2D and 3D objects in Pop-up or HUD"

F: "Gunsight or Pointer is 2D object"

G: "Issues with setup screens with stereo on"

H: "Text highlight for 3D objects is at incorrect depth"

I: "Bright colors on dark background produce ghosting"

J: "Excessive use of 2D makes stereo look flat"

P1SH0 (0x70998683) - text

V1SH0 (0x70e6a3cf) - text

PSH0 (0x7046516e) - text

VSH0 (0x708b7af8) - text

VSH1 (0x708b7af9) - text

VSH2 (0x708b7afa) - text

VSH3 (0x708b7afb) - text

VSH4 (0x708b7afc) - text

VSH5 (0x708b7afd) - text

VSH6 (0x708b7afe) - text

VSH7 (0x708b7aff) - text

VSH8 (0x708b7b00) - text

VSH9 (0x708b7b01) - text

VSH10 (0x708b7b02) - text

Registry Settings

These are settings discovered in the 3D Vision driver that are not listed in the profile table, meaning they can only be set via the registry or (in some cases) control panel. Other settings on this page may (or may not) also be placed in the registry.

On a 64bit OS these settings are under HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NVIDIA Corporation\Global\Stereo3D

This section is incomplete.

MonitorSizeOverride

Overrides MonitorSize, but is not reset constantly making it a superior option to depth hacks.

DrsEnable

Enables the use of driver profiles.

0x1800babe

That's not a hex value - that's a literal name of a possible registry key, including the "0x".

StereoAdvancedHKConfig

StereoFullHKConfig

StereoCompatibility

EnablePersistentStereoDesktop

EnableWindowedMode

StereoIROutput

StereoFlywheelCycleState

StereoFlywheelCycle

StereoVBIOverride

ContrastOverride

MultiheadMode

SOLPerf

EnableAPILog

EnableHDMICheckerboard

ContrastOverrideLog

StereoKiosk

DisablePatternWindowedMode

StereoForcePairFlip

__S

SDStereoType

StereoAnaglyphType

StereoDisabled

HDMIBroadcast

Broadcast3way

IGBroadcast

SLIOverride

UseCE

ResourceTracking

EnableIE9HTML5

IE9HTML5Width

IE9HTML5Height

IE9HTML5Layout

More Registry Settings

On a 64bit OS these settings are under HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NVIDIA Corporation\Global\Stereo3DPersistent

3D Vision

Count