Difference between revisions of "Driver Profile Settings"

From Bo3b's School for Shaderhackers
Jump to: navigation, search
(StereoCutoff (0x709a1ddf): Add observations and speculation)
(StereoTextureEnable (0x70edb381): Default value)
Line 81: Line 81:
 
|0x00000010 || [DBBS] = ???
 
|0x00000010 || [DBBS] = ???
 
|}
 
|}
 +
 +
<u> Default Value </u>
 +
If not specified in a profile, the driver appears to use 0x23 as the default.
  
 
=== StereoUseMatrix (0x70e34a78) ===
 
=== StereoUseMatrix (0x70e34a78) ===

Revision as of 17:01, 10 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').

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)

- 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)

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)

Stores the convergence value of a profile. Unsure of encoding - sometimes interpreting this as a float gives a reasonable value, but other times it doesn't.


Comments (0x704d456e) - text

Stores the comments displayed in the green text by the driver. Sometimes this is clearly an ASCII string, other times it is gibberish, suggesting that it is not always encoded the same way.


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)

Observations

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


InGameLaserSightDX9States (0x706139ad)

Observations

Used in certain Source games


LaserSight (0x7058b6e1)

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)

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)

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)

StartZBit (0x7044d7a6)

DisableOnOutOfMemory (0x70c71508)

StereoWindowedEnable (0x709b3484)

AllowNonExclusiveStereo (0x702c7709)

Rhwinf (0x706e1913)

Rhwscr (0x70a4995c)

Zinf (0x70fc13ad)

Zscr (0x707f0e69)

StereoCutoffDepthNear (0x7050e011)

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)

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" or sometimes gibberish (decoding issue?)

Value (0x7049c7ec)

Compat (0x7051e5f5)

PF_Issues (0x704cde5a) - text

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