; ------------------------------------------------------------------------------------------------------
; 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\overlay.ini
include=ShaderFixes\Plague_DHR.ini

; Sets of Regex with a different approach to fix shadows, lights
; reflections and decals using inverse matrix:
; include = ShaderFixes\Plague2_DHR.ini
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; debug CB
; 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

; crash=1
; ------------------------------------------------------------------------------------------------------
; 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:
; HUD
x=0.02

; Crosshair
z=0.72
x90=0
x91=0
x92=0
x93=0
x94=0
x95=1

; crosshairrelateddepth
x20=70

; crosshairrelateddepth2
x21=1

; w = 2.0
; y1 = 3
; Default for "Cinematics" overlay msg
z=0

; Number of seconds the overlay HUD is displayed
x4=2

; set to 1 to show the HELP message, (1: ON and 0: OFF) default OFF
y2=0

; 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 = 5
; ------------------------------------------------------------------------------------------------------
; 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.
; ------------------------------------------------------------------------------------------------------
global persist $HudDepth
post x=$HudDepth
global persist $CrosshairDepth
post x21=$CrosshairDepth
global persist $convergence_preset
post convergence=$convergence_preset
global persist $TargetMarkDepth
post x95=$TargetMarkDepth

[KeyHudDepth]
Key=*
back=/
type=cycle
x=0.01, 0.02, 0.03, -0.01, -0.015, -0.02, 0
$HudDepth=0.01, 0.02, 0.03, -0.01, -0.015, -0.02, 0.0

[KeyHudDepth_Crosshair]
Key=+
back=-
type=cycle
x21=1.1, 1.2, 0.5, 0.7, 0.9, 1.0
$CrosshairDepth=1.1, 1.2, 0.5, 0.7, 0.9, 1.0

[KeyHudDepth_ConvergencePresets]
Key=.
back=,
type=cycle
convergence=1.0, 1.2, 1.4, 1.6, 1.8
x=0.02, 0.01 0.02, 0.01, -0.005
$convergence_preset=1.0, 1.2, 1.4, 1.6, 1.8
$HudDepth=0.02, 0.01 0.02, 0.01, -0.005

[Key_Aim]
key=XB_left_trigger
type=hold
transition=100
transition_type=linear
release_transition=500
release_transition_type=cosine
run=CommandListAim

[Key_LowConv]
key=XB_GUIDE
Key=VK_OEM_3
Key=VK_OEM_5
type=toggle
run=CommandListLowConv

[CommandListLowConv]
Convergence=0.5

; x=0.02
[CommandListAim]
Convergence=1.3

; x=0.02
[Key_TargetMArkScale]
key=PageUP
back=PageDown
type=cycle
x95=1.1, 1.2, 1.3, 1.4, 1.5
$TargetMarkDepth=1.1, 1.2, 1.3, 1.4, 1.5

; 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=6

; 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 = no_modifiers 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=1

; ------------------------------------------------------------------------------------------------------
; Automatic shader fixes. Those settings here apply only on newly read shaders.
; All existing *_replace.txt or *_replace.bin files are not tampered with.
; If you change settings here, the best workflow is to delete all shaders in
; the shader cache directory and let them be fixed again.
; Stereoize all shader parameters with position semantic.
fix_sv_position=0

; Pixel depth evaluation.
; fix_ZRepair_DepthTexture1=SceneDepthTexture.x
; fix_ZRepair_Dependencies1=MinZ_MaxZRatio
; fix_ZRepair_ZPosCalc1=zTex * MinZ_MaxZRatio.z - MinZ_MaxZRatio.w
; fix_ZRepair_DepthTexture2=SceneDepthTexture.x
; fix_ZRepair_Dependencies2=
; fix_ZRepair_ZPosCalc2=zTex
; fix_ZRepair_PositionTexture=PositionTexture
; fix_ZRepair_PositionCalc=1024 * %s
; Inject depth texture if other depth sources are unavailable.
; fix_ZRepair_DepthTextureHash=8a19f087b004598f
; Correct inverse transformations in pixel shaders using evaluated depth.
; fix_InvTransform=ScreenToLight,InverseTranslatedViewProjectionMatrix
; Back projection coordinate fix.
; 
; Available variables in expressions:
; stereoParams.x = Separation value in range [0..1] or [-0..-1] dependent on active eye
; stereoParams.y = Convergence value in w coordinates (1/z)
; stereoParams.z = -1/1 for left/right eye
; stereoParams.w = Separation value without eye separation
; stereoTune.x = tune value 1 (default is 1)
; stereoTune.y = tune value 2 (default is 1)
; stereoTune.z = tune value 3 (default is 1)
; stereoTune.w = tune value 4 (default is 1)
; stereoScreenRes.x = Primary swap chain backbuffer horizontal resolution
; stereoScreenRes.y = Primary swap chain backbuffer vertical resolution
; zpos = current pixel z position in pixel shader
; wpos = current pixel w position in pixel shader
; Send inverse transformations from vertex shaders to pixel shaders.
; fix_BackProjectionTransform1=ScreenToTranslatedWorldMatrix._m00,ScreenToTranslatedWorldMatrix._m02,ScreenToTranslatedWorldMatrix._m01
; fix_BackProjectionTransform2=ScreenToWorld._m00,ScreenToWorld._m02,ScreenToWorld._m01
; Position variables to correct in pixel shaders.
; fix_ObjectPosition1=PointPositionAndInverseRadius
; fix_ObjectPosition1Multiplier=1, (stereoScreenRes.x/stereoScreenRes.y)*0.5, -0.5
; fix_ObjectPosition2=SpotPositionAndInverseRadius
; fix_ObjectPosition2Multiplier=1, (stereoScreenRes.x/stereoScreenRes.y)*0.5, -0.5
; Matrix multiplications to correct in pixel shaders.
; fix_MatrixOperand1=TranslatedWorldToShadowMatrix
; fix_MatrixOperand1Multiplier=1, (stereoScreenRes.x/stereoScreenRes.y)*0.5 - viewDirection.z*0.05 + (0.02791946-stereoParams.x/stereoParams.w), 0
; autofix shader option: recompiles all vertex shaders. fixes minor differences in deferred rendering.
; recompile_all_vs=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
; ------------------------------------------------------------------------------------------------------
; 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]

; 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

; 
; 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=1.6

; 
; 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="3Dfix by DHR, like the fix? you can donate to dhr.donation@gmail.com. Use AO = Ultra. Disable Contact Shadows."

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

[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.
; [ShaderOverride_FA1]
; Hash=fd5e34265155ff19
; analyse_options = dump_cb_txt
; **************************************************************************
; x = $HudDepth
x21=$CrosshairDepth

; VS b4a95dfbf421fea6
[ShaderOverride_PS??]
Hash=3c28bfa9870c9fab
handling=skip

; VS 682881328a986c8f
[ShaderOverride_PS???]
Hash=8bc1452cfefc9c8e
handling=skip

[ShaderOverride_MenuGlow1]
hash=cbae8bbbdcd45ca6
x10=0
checktextureoverride=ib
x90=1.0
x2=ps-t0

; analyse_options = dump_tex mono stereo
checktextureoverride=ps-t0

[TextureOverride_Crosshair_Aim1]
hash=8db5b149
filter_index=8

[TextureOverride_Crosshair_Aim2]
hash=a3821745
filter_index=8

[TextureOverride_Crosshair_Aim3]
hash=26db0cf5
filter_index=4

[ShaderOverride_MenuBlackBOx_PS1]
hash=def3c4bb34128ae8
x90=1.0

[ShaderOverride_MenuGlow_PS]
hash=fc5aaf40b6fdefac
filter_index=5

[ShaderOverride_MenuGlow2]
hash=e93307ba87602cb6
x10=0
checktextureoverride=vb0

; analyse_options = dump_tex mono
[ShaderOverride_Crosshair_2]
hash=d5ca12a69d79c1ce
x2=ps-t0

; analyse_options = dump_tex mono stereo
checktextureoverride=ps-t0

[ShaderOverride_Crosshair_1]
hash=0f4e99268d499903
x2=ps-t0

; analyse_options = dump_tex mono stereo
checktextureoverride=ps-t0

[TextureOverride_Crosshair_1_raute]
hash=e7a3e2bf
filter_index=4

; test
; [TextureOverride_Crosshair_1_raute2]
; hash=3391ce31
; filter_index=4
; menuGlow
[TextureOverride_vb]
hash=42a38a32
x10=11
preset=presetMMactive2

; menuGlow
[TextureOverride_IB]
hash=696b6554
x10=10
preset=presetMMactive

[presetMMactive]
x91=1.0

[presetMMactive2]
x92=1.0

; others
[ShaderOverride_HUD4]
Hash=664e48d3ff346a77
x2=ps-t0

; analyse_options = dump_cb_txt
analyse_options=dump_tex mono stereo
x90=ps
checktextureoverride=ps-t0

; TargetMark1
; [TextureOverride_TargetMark1]
; hash=633bbb77
; filter_index = 9
; font
[ShaderOverride_HUD40000]
Hash=0a01ffc3255f0bce
x2=ps-t0

; analyse_options = dump_cb_txt
; analyse_options = dump_tex mono stereo
checktextureoverride=ps-t0

; Font1
[TextureOverride_HUD4_66]
Hash=db9d8fd5
filter_index=3

; Font2
[TextureOverride_HUD4_67]
Hash=66104cc0
filter_index=3

; Font3
[TextureOverride_HUD4_68]
Hash=f59c3215
filter_index=3

; Font4
[TextureOverride_HUD4_69]
Hash=f5b0e8cf
filter_index=3

; Font5
[TextureOverride_HUD4_70]
Hash=d10f03e8
filter_index=3

; Font6
[TextureOverride_HUD4_71]
Hash=2d880002
filter_index=3

; Font7
[TextureOverride_HUD4_72]
Hash=aef9f1d0
filter_index=3

; Font8
[TextureOverride_HUD4_73]
Hash=9dba4d31
filter_index=3

; Font9
[TextureOverride_HUD4_74]
Hash=70253738
filter_index=3

; blackboxmenu1
[TextureOverride_HUD4_85]
Hash=92b19a83
filter_index=3

; ;remember to try another time to add changes fro the icons to the shader hud vs
; original was 3
; 001039-ps-t0=6901fab1-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Circlo for doors
[TextureOverride_HUD4_2]
Hash=6901fab1
filter_index=14

; XBICONS
[TextureOverride_HUD4_2000]
Hash=c27d786d
filter_index=4

; MenuGlow2
[TextureOverride_HUD4_60]
Hash=e1d99a3e
filter_index=4

; MenuMouse
[TextureOverride_HUD4_61]
Hash=cd219761
filter_index=7

; MenuPlagueTaleFont
[TextureOverride_HUD4_62]
Hash=fa1f8524
filter_index=4
preset=PresetMainMenu1

[PresetMainMenu1]
x=0.02
x93=1.0

; MenuPlagueTaleFont2
[TextureOverride_HUD4_63]
Hash=e42f43d5
filter_index=4

; MenuLoadingStripe
[TextureOverride_HUD4_64]
Hash=1f0c1af7
filter_index=4

; MenuOptionArrow
[TextureOverride_HUD4_65]
Hash=3ca7d1c2
filter_index=4

; LoadingScreenFog
[TextureOverride_HUD4_78]
Hash=490c284d
filter_index=4

; TakePictureMenu1
[TextureOverride_HUD4_79]
Hash=4d35952c
filter_index=4

; TakePictureMenu2
[TextureOverride_HUD4_80]
Hash=52a13438
filter_index=4

; TakePictureMenu3
[TextureOverride_HUD4_81]
Hash=75ba3e02
filter_index=4

; TakePictureMenu4
[TextureOverride_HUD4_82]
Hash=973dedac
filter_index=4

; TakePictureMenu5
[TextureOverride_HUD4_83]
Hash=982c5c81
filter_index=4

; TakePictureMenu6
[TextureOverride_HUD4_84]
Hash=b3a0b68c
filter_index=4

; MenuButtonSaveLoad
[TextureOverride_HUD4_75]
Hash=7debb189
filter_index=4
preset=PresetMainMenu1

; MenuSaveIcon
[TextureOverride_HUD4_76]
Hash=a38d7a3e
filter_index=6

; MenuLoadPicture
[TextureOverride_HUD4_77]
Hash=caa5a856
filter_index=4

; kbicons
[TextureOverride_HUD4_201]
Hash=8c385f85
filter_index=4

; menuselect
[TextureOverride_HUD4_301]
Hash=209abae7
filter_index=4
preset=PresetMenueGlow3

[PresetMenueGlow3]
x94=1.0

; kbframeicon
[TextureOverride_HUD4_202]
Hash=6e7557c5
filter_index=4

; added by Losti
; override for HUD 2D
[TextureOverride_HUD4_400]
Hash=5d09f6dd
filter_index=3

; PresetCodexInventory
[TextureOverride_HUD4_90]
Hash=8c2fd0ad
preset=presetInventory

[presetInventory]
x=0.001
convergence=1.0

; 000551-ps-t0=f15c731e-vs=664e48d3ff346a77-ps=d181ee265e7cb203
; override for HUD 2D
[TextureOverride_HUD4_1]
Hash=f15c731e
filter_index=2

; 000166-ps-t0=3315d2b5-vs=664e48d3ff346a77-ps=276ae55ef47ed279
; override for HUD 2D
[TextureOverride_HUD4_1_1]
Hash=3315d2b5
filter_index=2

; 001011-ps-t0=30b6573e-vs=664e48d3ff346a77-ps=276ae55ef47ed279
; Xbox icons
[TextureOverride_HUD4_3]
Hash=30b6573e
filter_index=3

; 001270-ps-t0=49c78bc9-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Square
[TextureOverride_HUD4_4]
Hash=49c78bc9
filter_index=3

; 001271-ps-t0=15dbcfad-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Lupa
[TextureOverride_HUD4_5]
Hash=15dbcfad
filter_index=3

; 001470-ps-t0=3883d73c-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Rombo
[TextureOverride_HUD4_6]
Hash=3883d73c
filter_index=3

; 001471-ps-t0=75928cd7-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Stone
[TextureOverride_HUD4_7]
Hash=75928cd7
filter_index=3

; 001476-ps-t0=a5f46d35-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Circle effect
[TextureOverride_HUD4_8]
Hash=a5f46d35
filter_index=3

; 001473-ps-t0=3088b798-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Rombo Effect
[TextureOverride_HUD4_9]
Hash=3088b798
filter_index=3

; 001016-ps-t0=2ea95f7c-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Sand
[TextureOverride_HUD4_10]
Hash=2ea95f7c
filter_index=3

; 000754-ps-t0=fd751b51-vs=664e48d3ff346a77-ps=276ae55ef47ed279
; Line in Jump
[TextureOverride_HUD4_11]
Hash=fd751b51
filter_index=3

; 001150-ps-t0=274b471b-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Circle no pass
[TextureOverride_HUD4_12]
Hash=274b471b
filter_index=3

; 000745-ps-t0=ca9e97ba-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_13]
Hash=ca9e97ba
filter_index=3

; 000752-ps-t0=2243689d-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Pottery
[TextureOverride_HUD4_14]
Hash=2243689d
filter_index=3

; 000720-ps-t0=73db5d6d-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Text in the RB Menu
; [TextureOverride_HUD4_15]
; Hash=73db5d6d
; filter_index=3
; 000719-ps-t0=0dd53af6-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_16]
Hash=0dd53af6
filter_index=3

; 000698-ps-t0=a21ba8ee-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_17]
Hash=a21ba8ee
filter_index=3

; 000292-ps-t0=01da9a52-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Azufre
[TextureOverride_HUD4_18]
Hash=01da9a52
filter_index=3

; 000146-ps-t0=06ecfba4-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Water
[TextureOverride_HUD4_19]
Hash=06ecfba4
filter_index=3

; 000232-ps-t0=5873cec4-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_20]
Hash=5873cec4
filter_index=3

; 000233-ps-t0=4a1b821d-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Leather
[TextureOverride_HUD4_21]
Hash=4a1b821d
filter_index=3

; 000070-ps-t0=cf0c7d38-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Leather
[TextureOverride_HUD4_22]
Hash=cf0c7d38
filter_index=3

; 000079-ps-t0=ddbfca81-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_23]
Hash=ddbfca81
filter_index=3

; 000080-ps-t0=c042b081-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Flower
[TextureOverride_HUD4_24]
Hash=c042b081
filter_index=3

; 000122-ps-t0=28484bbf-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Rope
[TextureOverride_HUD4_25]
Hash=28484bbf
filter_index=3

; 000127-ps-t0=773a43df-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Tools
[TextureOverride_HUD4_26]
Hash=773a43df
filter_index=3

; 000120-ps-t0=e70f1e3f-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Flower
[TextureOverride_HUD4_27]
Hash=e70f1e3f
filter_index=3

; 000123-ps-t0=fb8437cf-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Flower
[TextureOverride_HUD4_28]
Hash=fb8437cf
filter_index=3

; 000087-ps-t0=98862aa6-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Rombo Effect
[TextureOverride_HUD4_29]
Hash=98862aa6
filter_index=3

; 000618-ps-t0=0f270e30-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Rombo Yellow
[TextureOverride_HUD4_30]
Hash=0f270e30
filter_index=3

; 000325-ps-t0=1b17c95d-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_31]
Hash=1b17c95d
filter_index=3

; 000854-ps-t0=228f46eb-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_32]
Hash=228f46eb
filter_index=3

; 000853-ps-t0=ac6b9f34-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_33]
Hash=ac6b9f34
filter_index=3

; 000816-ps-t0=cd285248-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_34]
Hash=cd285248
filter_index=3

; 000373-ps-t0=7a02cfc4-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Eye
[TextureOverride_HUD4_35]
Hash=7a02cfc4
filter_index=3

; 000327-ps-t0=a625c99b-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Gift
[TextureOverride_HUD4_36]
Hash=a625c99b
filter_index=3

; 000094-ps-t0=40afd493-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Key
[TextureOverride_HUD4_37]
Hash=40afd493
filter_index=3

; 000111-ps-t0=633bbb77-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Enemy icons
[TextureOverride_HUD4_38]
Hash=633bbb77
filter_index=9

; Enemy icon
[TextureOverride_HUD4_381]
Hash=70f5fbdf
filter_index=9

; Enemy icon
[TextureOverride_HUD4_382]
Hash=b900e3ee
filter_index=9

; 000112-ps-t0=b2e4d573-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Enemy icons
[TextureOverride_HUD4_39]
Hash=b2e4d573
filter_index=9

; 000190-ps-t0=e8d32638-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_40]
Hash=e8d32638
filter_index=3

; 000182-ps-t0=96548a5d-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_41]
Hash=96548a5d
filter_index=3

; 000204-ps-t0=94c86427-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Flower
[TextureOverride_HUD4_42]
Hash=94c86427
filter_index=3

; 000303-ps-t0=e3ceab4d-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_43]
Hash=e3ceab4d
filter_index=3

; 000120-ps-t0=d7ab4576-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Flower
[TextureOverride_HUD4_44]
Hash=d7ab4576
filter_index=3

; 000446-ps-t0=fefba1a4-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_45]
Hash=fefba1a4
filter_index=3

; 000745-ps-t0=e8f2acf7-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_46]
Hash=e8f2acf7
filter_index=3

; 000268-ps-t0=54dddd4c-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Hand
[TextureOverride_HUD4_47]
Hash=54dddd4c
filter_index=3

; 000380-ps-t0=10153c3a-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_48]
Hash=10153c3a
filter_index=3

; 000239-ps-t0=4cbb0bbe-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
[TextureOverride_HUD4_49]
Hash=4cbb0bbe
filter_index=3

; 000222-ps-t0=94eee6ea-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Rombo effect
[TextureOverride_HUD4_50]
Hash=94eee6ea
filter_index=3

; 000064-ps-t0=3c3d6c49-vs=664e48d3ff346a77-ps=def3c4bb34128ae8
; Flower
[TextureOverride_HUD4_51]
Hash=3c3d6c49
filter_index=3

; *************************************************************************
; Subtitles black background
[ShaderOverride_HUD5]
Hash=a447a9a2310c6c83
x2=ps-t0

; analyse_options = dump_cb_txt
; analyse_options = dump_tex mono stereo
; 000307-ps-t0=e7127d7e-vs=a447a9a2310c6c83-ps=292201cd36d829bc
[TextureOverride_HUD5_1]
Hash=e7127d7e
filter_index=2

; 000308-ps-t0=4a2c49cd-vs=a447a9a2310c6c83-ps=292201cd36d829bc
[TextureOverride_HUD5_2]
Hash=4a2c49cd
filter_index=2

; 000309-ps-t0=765b2e7d-vs=a447a9a2310c6c83-ps=292201cd36d829bc
[TextureOverride_HUD5_3]
Hash=765b2e7d
filter_index=2

; 000310-ps-t0=31743b0e-vs=a447a9a2310c6c83-ps=292201cd36d829bc
[TextureOverride_HUD5_4]
Hash=31743b0e
filter_index=2

; 000311-ps-t0=60c37278-vs=a447a9a2310c6c83-ps=292201cd36d829bc
[TextureOverride_HUD5_5]
Hash=60c37278
filter_index=2

; 000351-ps-t0=71fa291b-vs=a447a9a2310c6c83-ps=292201cd36d829bc
; skip scene text
[TextureOverride_HUD5_6]
Hash=71fa291b
filter_index=2

; 000352-ps-t0=4939badb-vs=a447a9a2310c6c83-ps=292201cd36d829bc
; skip scene text
[TextureOverride_HUD5_7]
Hash=4939badb
filter_index=2

; 000353-ps-t0=43ef10a4-vs=a447a9a2310c6c83-ps=292201cd36d829bc
; skip scene text
[TextureOverride_HUD5_8]
Hash=43ef10a4
filter_index=2

; 000354-ps-t0=1505a561-vs=a447a9a2310c6c83-ps=292201cd36d829bc
; skip scene text
[TextureOverride_HUD5_9]
Hash=1505a561
filter_index=2

; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DEBUGGING CB
; [ShaderOverride_Debug_2]
; hash=41d9a4809be70b1e
; Resource\ShaderFixes\debug_cb.ini\DebugCB = ps-cb0
; handling=skip
; analyse_options = dump_cb
; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DEBUGGING CB
[TextureOverride_AntiFLicker1]
hash=a40d4dad
deny_cpu_read=1
expand_region_copy=1
; [TextureOverride_MONOSTEREO]
; hash=6d0d82fd
; StereoMode=1
; [TextureOverride_MONOSTEREO2]
; hash=5b638005
; StereoMode=1
; [TextureOverride_ClippingLightShafts1]
; hash=d9eeaeb1
; StereoMode=1
; [TextureOverride_ClippingLightShafts3]
; hash=3df6f87c
; StereoMode=1
; [TextureOverride_ClippingLightShafts4]
; hash=9c1c9d0d
; StereoMode=1
; [TextureOverride_ClippingLightShafts5]
; hash=9fbc710c
; StereoMode=1
; rt
; [TextureOverride_ClippingLightShafts6]
; hash=490b5681
; StereoMode=1
; [ShaderOverride_Clipping111]
; hash=5834830e969656b3
; x30=0
; checktextureoverride = vb0
; [TextureOverride_ClippingLightFireSource1]
; ;Rr forge
; hash=6d0d82fd
; x30=4.0
; StereoMode=1
; [TextureOverride_ClippingLightFireSource2]
; Rr forge
; hash=5b638005
; x30=4.0
