System Shock Reboot 2016
https://www.youtube.com/watch?v=v_uJ47oKHY0 it comes out tomorrow !

it comes out tomorrow !

#1
Posted 06/28/2016 02:37 PM   
The demo is out and I download through GOG galaxy. I can confirm that 3D Vision can be kicked in. I chucked 3DMigoto Version 1.2.27 (X64) into the game directory where systemshockdemo.exe is and set parameters in the d3dx.ini file. I added the systemshockdemo.exe to Max Payne 3 profile using Nvidia Inspector. [url]http://helixmod.blogspot.ca/2013/03/how-to-change-3d-vision-profile-and.html[/url] The game will not be available until December 2017 so a lot can change. I did this merely to see what kind of potential as a remake of the original. Here is the code block for the ini file. I disabled 8 shaders which make the game bearable visually to get a good idea what to expect. The hash are under Shader manipulations without patches + shader filtering section of the d3dx.ini file. I set my convergence to 0.6 which I found comfortable. Convergence is unlocked as well. Just want to be clear that this is not a fix and gave me a chance to learn more regarding 3DMitgoto and provide a report regarding 3D Vision possibility. [code];------------------------------------------------------------------------------------------------------ ; 3DMigoto Version 1.2.27 (X64) ; Logging options. ; Comment line or set value to 0 for no logging. ;------------------------------------------------------------------------------------------------------ [Logging] ; Log all API usage calls=1 ; Log Input key actions input=1 ; 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=1 ; Log NVAPI separation modifications separation=1 ; ------------------------------------------------------------------------------------------------------ ; Default constants to pass directly to shaders as IniParams ; ------------------------------------------------------------------------------------------------------ [Constants] ; x = 0.8 ; y = 1.0 ; z = 1.2 ; w = 2.0 ;------------------------------------------------------------------------------------------------------ ; Custom settings override for any of [convergence, separation, x, y, z, w] ; ; Four types are supported - by default the bindings will simply load the ; configured settings, but type=hold can be specified to have a preset ; active while the button is held, type=toggle can be used to make a simple ; on/off toggle, and type=cycle can be used to cycle 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 ; ; 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. ;------------------------------------------------------------------------------------------------------ ; Example for changing default settings ;[Key1] ;Key = z ;separation = 100.0 ;convergence = 4.0 ;x = 0.98 ; Example to support momentary hold type overrides, like aiming. ;[Key2] ;Key = RBUTTON ;convergence = 0.1 ;type = hold ; Example for a toggle override. ;[Key3] ;Key = q ;separation = 0.1 ;type = toggle ;y = 0.0 ; 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. ;[Key4] ;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. ;[Key5] ;Key = Q ;type = cycle ;convergence = 1.45, 1.13, 0.98 ;z = 0.25, 0.5, 0.75 ;transition = 100 ;transition_type = cosine ;------------------------------------------------------------------------------------------------------ ; 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=1 ; 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. ; "zero" = shader output is all zero. NOTE: this has a big performance impact. marking_mode=skip ; 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=VK_NUMPAD1 next_pixelshader=VK_NUMPAD2 mark_pixelshader=VK_NUMPAD3 ; rotate through all VISIBLE vertex shaders at the current scene. previous_vertexshader=VK_NUMPAD4 next_vertexshader=VK_NUMPAD5 mark_vertexshader=VK_NUMPAD6 ; rotate through all USED index buffers at the current scene. previous_indexbuffer=VK_NUMPAD7 next_indexbuffer=VK_NUMPAD8 mark_indexbuffer=VK_NUMPAD9 ; rotate through all USED render targets at the current scene. previous_rendertarget=VK_DIVIDE next_rendertarget=VK_MULTIPLY mark_rendertarget=VK_SUBTRACT ; rotate through all VISIBLE geometry shaders at the current scene. ; This is disabled since these keys are commonly pressed while alt+tabbed out ;previous_geometryshader = < ;next_geometryshader = > ;mark_geometryshader = / ; rotate through all VISIBLE domain shaders at the current scene. ; This is disabled since these keys are commonly pressed while alt+tabbed out ;previous_domainshader = [ ;next_domainshader = ] ;mark_domainshader = \ ; rotate through all VISIBLE hull shaders at the current scene. ; This is disabled only because it is rarely needed ;previous_hullshader = MINUS ;next_hullshader = EQUALS ;mark_hullshader = BACKSPACE ; rotate through all USED compute shaders at the current scene. ; Disabling compute shaders may cause crashes, so these are ; not enabled by default: ;previous_computeshader = PAGE_UP ;next_computeshader = PAGE_DOWN ;mark_computeshader = HOME ; Re-enable shaders once done with hunting: done_hunting=VK_ADD ; Screenshot as pns take_screenshot=VK_SNAPSHOT ; reload all fixes from ShaderFixes folder reload_fixes=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=VK_NUMPAD0 ; Key to reload the settings from the 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=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=VK_F9 ; 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 ; Auto-repeat key rate in events per second. repeat_rate=6 ; Dumps out 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=VK_F8 ; Specifies options for the frame analysis feature. Options can be combined by ; separating them with a space. ; log: Log draw calls and state changes (one log file per context) ; hold: Continue analysing subsequent frames while the key is held ; dump_rt_jps: Dumps out render targets 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 render target and are missing some data. ; dump_rt_dds: Dumps out render targets 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. ; Will also dump buffer type render targets & UAVs as .buf files. ; dump_rt: Dumps render targets as JPS files when possible, or DDS when not. ; 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. ; dump_depth: Dumps depth/stencil targets as DDS files ; dump_tex_jps: Dumps textures as JPS files ; dump_tex_dds: Dumps textures as DDS files (Same warning as for dump_rt_dds) ; Will also dump buffer type shader resource views as .buf files. ; dump_tex: Dumps textures as JPS files when possible, or DDS when not. ; dump_cb: Dumps constant buffers as binary .buf files ; dump_cb_txt: Decodes constant buffers as an array of float4s ; dump_vb: Dumps vertex buffers as binary .buf files ; dump_vb_txt: Decodes vertex buffers as an array of float4s ; dump_ib: Dumps index buffers as binary .buf files ; dump_ib_txt: Decodes index buffers ; 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. ; analyse_options can also be specified in [ShaderOverride*] and ; [TextureOverride*] sections 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). analyse_options = log 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 ; 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 ; crash/hang workarounds: ; except_set_shader_resources - work around crash on Win 7 with evil update ; except_set_samplers - work around crash on Win 10 ; except_set_rasterizer_state - work around crash on Win 7 without evil update ; skip_dxgi_factory - hack for MGSV, not recommended for other games as it ; may disable core 3DMigoto functionality in some cases ; recommended - hook supported objects, safe workarounds enabled, skips not enabled ;hook=recommended ;------------------------------------------------------------------------------------------------------ ; Settings to force display device to a specific mode. ; Uncomment a value to force the specific setting. ;------------------------------------------------------------------------------------------------------ [Device] ; overrides screen resolution. width=1920 height=1080 ; overrides refresh rate set by game. refresh_rate=24 ; filters available video modes to those providing given refresh rates. ; some games don't explicitely set the refresh rate, but use the video mode. ; use this if setting refresh_rate doesn't work. ;filter_refresh_rate=24,59,60 ; forces creation of full screen devices and swap chains. ; use this for 3dtvplay if game won't active stereo mode. ; a value of 0 doesn't deactivate this option like on the others but ; forces the application into windowed mode. full_screen=1 ; 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 = VK_F7 ; some games explicitely disable stereo, prohibiting any stereo attempts. ; settings this to 1 ignores all stereo disabling calls and also calls NvAPI_Stereo_Enable to force stereo on. ;force_stereo=1 ; 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 ;------------------------------------------------------------------------------------------------------ ; 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=1 ; Some games (CryEngine games, for example) lock the separation 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 ; games without predefined profiles can't save stereo settings. ; enabling this options automatically creates a profile for unknown games. 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. ; ; 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=0 ; preload all patched shaders. there's a bug in NVidia auto stereoization if stereo shaders ; are being loaded during the game on some HW/SW combinations, which turns off auto patching ; for those stereo shaders (results in partial mono rendering). this is a workaround for this case. preload_shaders=0 ; thread save data structure access. required on multithreaded rendering. use_criticalsection=1 ; Setting this option disables scissor limits rasterizer_disable_scissor=1 ; 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: ;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 ;------------------------------------------------------------------------------------------------------ ; 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=9f65b8c6634e4d31 Handling=skip [ShaderOverride2] Hash=b4770be62966e2c0 Handling=skip [ShaderOverride3] Hash=d6d6108cbc418a45 Handling=skip [ShaderOverride4] Hash=9d9da7e93fc0b8d9 Handling=skip [ShaderOverride5] Hash=4a02a2d5bba1b1c9 Handling=skip [ShaderOverride6] Hash=b4f8abd0733a5527 Handling=skip [ShaderOverride7] Hash=b4d05590583d5020 Handling=skip [ShaderOverride8] Hash=549a39280d8af8a8 Handling=skip ; 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 ; advanced option: use this to override only if this shader is used rendering the given index buffer. ;IndexBufferFilter=b3e56ebc ; Use replaced shader only when there is no active depth buffer (for UI filtering) ;depth_filter = depth_inactive ; Use replaced shader only when there *IS* an active depth buffer (for UI filtering) ;depth_filter = depth_active ; Only use replaced shader when it is used in conjunction with a specific shader ; (e.g. to adjust a vertex shader ONLY when it is used with a specific pixel shader) ;partner=af7b880f07630615 ; Assignes a dummy render target to o0. Use to fix one-eye rendering issues in ; shaders that only write to a depth target: ;fake_o0=1 ; 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. ;x2=ps-t0 ; 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 ;------------------------------------------------------------------------------------------------------ ; 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 ; debug logging and look for Map calls 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 ;------------------------------------------------------------------------------------------------------ ; 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 [/code]
The demo is out and I download through GOG galaxy. I can confirm that 3D Vision can be kicked in. I chucked 3DMigoto Version 1.2.27 (X64) into the game directory where systemshockdemo.exe is and set parameters in the d3dx.ini file. I added the systemshockdemo.exe to Max Payne 3 profile using Nvidia Inspector.

http://helixmod.blogspot.ca/2013/03/how-to-change-3d-vision-profile-and.html

The game will not be available until December 2017 so a lot can change. I did this merely to see what kind of potential as a remake of the original.

Here is the code block for the ini file. I disabled 8 shaders which make the game bearable visually to get a good idea what to expect. The hash are under Shader manipulations without patches + shader filtering section of the d3dx.ini file. I set my convergence to 0.6 which I found comfortable. Convergence is unlocked as well. Just want to be clear that this is not a fix and gave me a chance to learn more regarding 3DMitgoto and provide a report regarding 3D Vision possibility.

;------------------------------------------------------------------------------------------------------
; 3DMigoto Version 1.2.27 (X64)
; Logging options.
; Comment line or set value to 0 for no logging.
;------------------------------------------------------------------------------------------------------
[Logging]

; Log all API usage
calls=1

; Log Input key actions
input=1

; 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=1
; Log NVAPI separation modifications
separation=1


; ------------------------------------------------------------------------------------------------------
; Default constants to pass directly to shaders as IniParams
; ------------------------------------------------------------------------------------------------------
[Constants]
; x = 0.8
; y = 1.0
; z = 1.2
; w = 2.0


;------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
;
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle 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

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

; Example for changing default settings
;[Key1]
;Key = z
;separation = 100.0
;convergence = 4.0
;x = 0.98

; Example to support momentary hold type overrides, like aiming.
;[Key2]
;Key = RBUTTON
;convergence = 0.1
;type = hold

; Example for a toggle override.
;[Key3]
;Key = q
;separation = 0.1
;type = toggle
;y = 0.0

; 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.
;[Key4]
;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.
;[Key5]
;Key = Q
;type = cycle
;convergence = 1.45, 1.13, 0.98
;z = 0.25, 0.5, 0.75
;transition = 100
;transition_type = cosine


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

; 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.
; "zero" = shader output is all zero. NOTE: this has a big performance impact.
marking_mode=skip

; 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=VK_NUMPAD1
next_pixelshader=VK_NUMPAD2
mark_pixelshader=VK_NUMPAD3

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

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

; rotate through all USED render targets at the current scene.
previous_rendertarget=VK_DIVIDE
next_rendertarget=VK_MULTIPLY
mark_rendertarget=VK_SUBTRACT

; rotate through all VISIBLE geometry shaders at the current scene.
; This is disabled since these keys are commonly pressed while alt+tabbed out
;previous_geometryshader = <
;next_geometryshader = >
;mark_geometryshader = /

; rotate through all VISIBLE domain shaders at the current scene.
; This is disabled since these keys are commonly pressed while alt+tabbed out
;previous_domainshader = [
;next_domainshader = ]
;mark_domainshader = \

; rotate through all VISIBLE hull shaders at the current scene.
; This is disabled only because it is rarely needed
;previous_hullshader = MINUS
;next_hullshader = EQUALS
;mark_hullshader = BACKSPACE

; rotate through all USED compute shaders at the current scene.
; Disabling compute shaders may cause crashes, so these are
; not enabled by default:
;previous_computeshader = PAGE_UP
;next_computeshader = PAGE_DOWN
;mark_computeshader = HOME

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

; Screenshot as pns
take_screenshot=VK_SNAPSHOT

; reload all fixes from ShaderFixes folder
reload_fixes=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=VK_NUMPAD0

; Key to reload the settings from the 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=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=VK_F9

; 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

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

; Dumps out 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=VK_F8

; Specifies options for the frame analysis feature. Options can be combined by
; separating them with a space.
; log: Log draw calls and state changes (one log file per context)
; hold: Continue analysing subsequent frames while the key is held
; dump_rt_jps: Dumps out render targets 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 render target and are missing some data.
; dump_rt_dds: Dumps out render targets 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.
; Will also dump buffer type render targets & UAVs as .buf files.
; dump_rt: Dumps render targets as JPS files when possible, or DDS when not.
; 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.
; dump_depth: Dumps depth/stencil targets as DDS files
; dump_tex_jps: Dumps textures as JPS files
; dump_tex_dds: Dumps textures as DDS files (Same warning as for dump_rt_dds)
; Will also dump buffer type shader resource views as .buf files.
; dump_tex: Dumps textures as JPS files when possible, or DDS when not.
; dump_cb: Dumps constant buffers as binary .buf files
; dump_cb_txt: Decodes constant buffers as an array of float4s
; dump_vb: Dumps vertex buffers as binary .buf files
; dump_vb_txt: Decodes vertex buffers as an array of float4s
; dump_ib: Dumps index buffers as binary .buf files
; dump_ib_txt: Decodes index buffers
; 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.
; analyse_options can also be specified in [ShaderOverride*] and
; [TextureOverride*] sections 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).
analyse_options = log 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

; 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
; crash/hang workarounds:
; except_set_shader_resources - work around crash on Win 7 with evil update
; except_set_samplers - work around crash on Win 10
; except_set_rasterizer_state - work around crash on Win 7 without evil update
; skip_dxgi_factory - hack for MGSV, not recommended for other games as it
; may disable core 3DMigoto functionality in some cases
; recommended - hook supported objects, safe workarounds enabled, skips not enabled
;hook=recommended

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

; overrides screen resolution.
width=1920
height=1080

; overrides refresh rate set by game.
refresh_rate=24

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

; forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; a value of 0 doesn't deactivate this option like on the others but
; forces the application into windowed mode.
full_screen=1

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

; some games explicitely disable stereo, prohibiting any stereo attempts.
; settings this to 1 ignores all stereo disabling calls and also calls NvAPI_Stereo_Enable to force stereo on.
;force_stereo=1

; 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


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

; Some games (CryEngine games, for example) lock the separation 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

; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
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.
;
; 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=0

; preload all patched shaders. there's a bug in NVidia auto stereoization if stereo shaders
; are being loaded during the game on some HW/SW combinations, which turns off auto patching
; for those stereo shaders (results in partial mono rendering). this is a workaround for this case.
preload_shaders=0

; thread save data structure access. required on multithreaded rendering.
use_criticalsection=1

; Setting this option disables scissor limits
rasterizer_disable_scissor=1

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

;------------------------------------------------------------------------------------------------------
; 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=9f65b8c6634e4d31
Handling=skip
[ShaderOverride2]
Hash=b4770be62966e2c0
Handling=skip
[ShaderOverride3]
Hash=d6d6108cbc418a45
Handling=skip
[ShaderOverride4]
Hash=9d9da7e93fc0b8d9
Handling=skip
[ShaderOverride5]
Hash=4a02a2d5bba1b1c9
Handling=skip
[ShaderOverride6]
Hash=b4f8abd0733a5527
Handling=skip
[ShaderOverride7]
Hash=b4d05590583d5020
Handling=skip
[ShaderOverride8]
Hash=549a39280d8af8a8
Handling=skip

; 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
; advanced option: use this to override only if this shader is used rendering the given index buffer.
;IndexBufferFilter=b3e56ebc
; Use replaced shader only when there is no active depth buffer (for UI filtering)
;depth_filter = depth_inactive
; Use replaced shader only when there *IS* an active depth buffer (for UI filtering)
;depth_filter = depth_active
; Only use replaced shader when it is used in conjunction with a specific shader
; (e.g. to adjust a vertex shader ONLY when it is used with a specific pixel shader)
;partner=af7b880f07630615
; Assignes a dummy render target to o0. Use to fix one-eye rendering issues in
; shaders that only write to a depth target:
;fake_o0=1
; 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.
;x2=ps-t0
; 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



;------------------------------------------------------------------------------------------------------
; 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
; debug logging and look for Map calls 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


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

#2
Posted 07/01/2016 05:49 PM   
Scroll To Top