Elex, the new game from Piranha Bytes was just released:
https://www.gog.com/game/elex
http://store.steampowered.com/app/411300/ELEX/
Early impressions are fairly positive so far. It suffers from the same issues as most Piranha bytes games, clunky controls and animations, cheesy voice acting, lack of polish, etc. But their games tend to have really good world building, great environments, are very immersive, and are incredibly open world. I was a big fan of Gothic and some of the Risen games so i picked it up.
3D vision kicks in right away but left eye rendering was completely busted. I installed 3dMigoto 1.2.65, added profile settings and enabled the stereo compute flag "StereoFlagsDX10 = 0x00004008" and this fixed the left eye rendering. I only walked around in the first area and so far the only things that I've seen that are broken are the shadows, light blooming, and god rays. Apart from the busted shadows, it actually looks pretty good.
I can probably fix the shadows, but unfortunately I can't get the shader hunting to work. Even though it imported the profile the shader hunting text isn't displayed.
d3dx.ini:[code]
;------------------------------------------------------------------------------------------------------
; 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
; x7 is used by the 3DVision2SBS custom shader. To use, find the [Present]
; section below and uncomment the 'run = CustomShader3DVision2SBS' line.
; 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
x7 = 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
;
; 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.
;------------------------------------------------------------------------------------------------------
; 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
; 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.
;[Preset1]
;convergence = 0
;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=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 = no_modifiers VK_NUMPAD1
next_pixelshader = no_modifiers VK_NUMPAD2
mark_pixelshader = no_modifiers VK_NUMPAD3
; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader = no_modifiers VK_NUMPAD4
next_vertexshader = no_modifiers VK_NUMPAD5
mark_vertexshader = no_modifiers VK_NUMPAD6
; rotate through all USED index buffers at the current scene.
previous_indexbuffer = no_modifiers VK_NUMPAD7
next_indexbuffer = no_modifiers VK_NUMPAD8
mark_indexbuffer = no_modifiers VK_NUMPAD9
; rotate through all USED render targets at the current scene.
previous_rendertarget = no_modifiers VK_DIVIDE
next_rendertarget = no_modifiers VK_MULTIPLY
mark_rendertarget = no_modifiers 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 = no_modifiers <
;next_geometryshader = no_modifiers >
;mark_geometryshader = no_modifiers /
; 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 = no_modifiers [
;next_domainshader = no_modifiers ]
;mark_domainshader = no_modifiers \
; rotate through all VISIBLE hull shaders at the current scene.
; This is disabled only because it is rarely needed
;previous_hullshader = no_modifiers MINUS
;next_hullshader = no_modifiers EQUALS
;mark_hullshader = no_modifiers 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 = no_modifiers PAGE_UP
;next_computeshader = no_modifiers PAGE_DOWN
;mark_computeshader = no_modifiers HOME
; Re-enable shaders once done with hunting:
done_hunting = no_modifiers 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 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 = no_modifiers 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
; snapshots to be made upon any shader Mark. These give you snapshot when the
; shader is disabled, as a way to correlate image to shader hash.
; mark_snapshot=0 // none
; mark_snapshot=1 // mono, simple snapshot
; mark_snapshot=2 // stereo snapshot
mark_snapshot=2
; Auto-repeat key rate in events per second.
repeat_rate=6
; 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
; Specifies options for the frame analysis feature. Options can be combined by
; separating them with a space.
; log: This option is now always enabled - Logs 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.
;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.
; 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 = 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
; skip_dxgi_device - hack for MGSV on Win10 anniversary update
; recommended - hook supported objects, safe workarounds enabled, skips not enabled
; hook=recommended
; Options to allow IDXGIFactory2 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_dxgi1_2,
; then try allow_create_device=2, lastly try allow_create_device=1
;
; Setting allow_dxgi1_2=2 may allow the Steam Overlay and Steam Controller to
; work in some games on Windows 7 and Windows 8, but could potentially disable
; core functionality in some cases, so only enable it if you need it.
;
allow_check_interface=0
allow_dxgi1_2=0
allow_create_device=2
allow_platform_update=0
;------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
;------------------------------------------------------------------------------------------------------
[Device]
; (0) - disable upscaling
; (1) - enable upscaling and allows the game to disable and enable fullscreen mode
; (2) - enable upscaling and don't allow the game to switch fullscreen mode
; (always force fullscreen). Try this if you get issues with the mouse cursor.
; Note if you enable upscaling please do not forget to:
; 1) Uncomment "run = CustomShaderUpscale" in the [Present] section,
; otherwise you will see only a black window (with game sound).
; 2) Set a custom resolution here for width and height that the game will see.
; 3) Uncomment upscale_mode here.
upscaling = 0
; Force override the screen resolution.
; If upscaling is on, the resizing functionality is disabled.
; If upscaling is on, then you MUST specify the resolution the game will be upscaled to.
; To achieve the best visual result use the native resolution of your tv or monitor.
;width=1280
;height=720
; upscale_mode = 0: 3Dmigoto creates a texture and pushes it as the back buffer for the game.
; Seems to work with only few games but everything seems to run a bit smoother.
; upscale_mode = 1: 3Dmigoto creates a second swap chain and pushes the game to use it.
; Seems to work with most games. dont forget to activate upscaling shader in [present] section
;upscale_mode = 1
; overrides refresh rate set by game.
;refresh_rate=60
; filters available video modes to those providing given refresh rates.
; some games don't explicitely set the refresh rate, but use the video mode.
; use this if setting refresh_rate doesn't work.
;filter_refresh_rate=24,59,60
; full_screen=1 forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; full_screen=2 will also disable SetWindowPos which might help in some games.
full_screen=0
; This 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, for use in conjunction with the
; software mouse cursor by uncommenting 'run = CustomShaderSoftwareMouse' in
; the [Present] section. 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=1
; 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=1
; 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
; 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
; thread save data structure access. required on multithreaded rendering.
use_criticalsection=1
; Indicates whether scissor clipping should be disabled by default.
; If you set rasterizer_disable_scissor=0, you can selectively disable scissor
; for individual shaders by setting disable_scissor=1 in [ShaderOverride*]
; sections. Or you can also set rasterizer_disable_scissor=1 here and then
; selectively enable scissor for individual shaders by setting disable_scissor=0
; in [ShaderOverride*] sections.
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
; 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
;------------------------------------------------------------------------------------------------------
; 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
; 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
; 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).
;x2=ps-t0
; 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 = 1
; Disable scissor clipping for this shader when rasterizer_disable_scissor=0 in
; [Rendering] section. Or set this to 0 to enable scissor clipping for this shader
; when rasterizer_disable_scissor=1 in [Rendering] section.
;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
;------------------------------------------------------------------------------------------------------
; 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
;------------------------------------------------------------------------------------------------------
; 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 = 0.5
;
; This changes the green text that the driver displays, and is a good place to
; put any reminders to display to the user or just take some credit:
;Comments = "Such and such 3D fix by an awesome modder. Disable motion blur!"
;
; Change the rating: "0": 3D Vision Ready, "1": Excellent, "2": Good,
; "3": Fair, "4": Not Recommended
Compat = "0"
;
; If you have added some comments, you probably want to force the green text to
; show up when the game is next run. Note that like convergence, 3DMigoto will
; only override a user setting here if something else has also been updated
; (such as Comments), so this will usually only show up the first time a user
; runs the game after installing the fix (be sure to enable StereoProfile).
StereoMemoEnabled = 1
;
; Disable compatibility mode to make sure users are seeing the real deal. Like
; convergence, 3DMigoto will respect the users custom settings here:
;Disable2DD = 1
;
; Put a reminder in the green text of compatibility mode that they are not
; seeing the real deal:
2DD_Notes = "Compatibility mode is enabled. To use the fix, please disable it with Ctrl+Alt+F11"
;
; These two options change which constant buffers the driver uses to pass the
; separation and convergence to any Vertex and Domain shaders it has modified.
; The default value is 12, and you may need to change it if the game already
; uses that constant buffer for any purpose, which should be apparent as you
; will see 2D geometry on any shader that uses this. You should avoid using
; these constant buffers yourself unless you understand the nuances involved.
;DX10VSCBNumber = 12
;DX10DSCBNumber = 12
;
; If a setting doesn't have a name or you don't know what it is (check the
; d3d11_log.txt for the names of all settings in this profile), you can use the
; hex ID (in fact, you can even paste a complete profile from Geforce Profile
; Manager - just be sure to delete any corrupt string settings if you do):
;0x1033cec2 = 0x00000002
;
; There are many more options, and we have tried to document them here -
; *please* edit this page if you figure out anything new:
; http://wiki.bo3b.net/index.php?title=Driver_Profile_Settings
;------------------------------------------------------------------------------------------------------
; This section defines a shortcut for unbinding all render and depth targets,
; which is commonly needed in [CustomShader] sections since all bound render
; and depth targets *must* be the same size, and leaving something else bound
; is a sure way for things to go weirdly wrong. Call it from any section that
; supports a command list with 'run = CommandListUnbindAllRenderTargets' after
; you have copied any state you need from these and before binding your own.
;------------------------------------------------------------------------------------------------------
[CommandListUnbindAllRenderTargets]
o0 = null
o1 = null
o2 = null
o3 = null
o4 = null
o5 = null
o6 = null
o7 = null
oD = null
;------------------------------------------------------------------------------------------------------
; 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: Clear a custom resource at the start of each frame:
;post ResourceDepthBuffer = null
; Uncomment to enable a custom shader that allows the stereo output mode to be
; upscaled. NOTE: uncomment only if 'upscaling' and resolution are not zero.
;run = CustomShaderUpscale
; Uncomment to enable a custom shader that implements a software mouse cursor.
; Use in games that use a hardware cursor if you want to be able to adjust the
; stereo depth of the mouse, or to work with the below 3DVision2SBS shader.
; You should also set 'hide_cursor = 1' under [Device] to suppress the hardware
; mouse cursor. Note that this shader will use w5, x6, y6, z6, w6, y7, z7 and
; w7, and has a higher latency than the hardware cursor!
;run = CustomShaderSoftwareMouse
; Uncomment to enable a custom shader that allows the stereo output mode to be
; changed to Side-by-Side or Top-and-Bottom. If you are using SLI and this
; isn't working properly (partially blank or stuck image) you may need to also
; set StereoFlagsDX10 = 0x00000008 in the [Profile] section:
;run = CustomShader3DVision2SBS
;------------------------------------------------------------------------------------------------------
; The following custom shader can be used to perform upscaling to arbitrary resolutions,
; specifically useful for 4K 3D TVs or for DSR. To enable, uncomment the
; ";run = CustomShaderUpscale" in the Present section, set the custom resolution and
; enable "upscaling=1" in the Device section.
; If you uncomment upscale shader without actually enabling the upscaling in [Device]
; you might have wrong screen resolution or the game will not be able to enter the fullscreen mode.
; Both Upscaling and SBS can be used at the same time.
[Resource3DVisionUpscaleBackupTexture]
[CustomShaderUpscale]
; Load a custom vertex + pixel shader:
vs = ShaderFixes/upscalevs.hlsl
ps = ShaderFixes/upscaleps.hlsl
; Explicitly unbind other shader types for safety:
hs = null
ds = null
gs = null
; Disable the OM blend stage that could interfere with the shader:
blend = disable
; Disable front/back face culling so the vertices can be in any rotation:
cull = none
; enable sampler with the filter: anisotropic_filter, linear_filter, point_filter
sampler = anisotropic_filter
; Use a triangle strip topology so we only have to output four vertices:
topology = triangle_strip
; Clear all render + depth targets to avoid compatibility issues:
run = CommandListUnbindAllRenderTargets
; Bind the back buffer as a render target. set_viewport ensures that the view
; port is the size of the buffer so the draw call will work. No no_view_cache
; seems to make some games crash. Just play around with it if something is not working
; is necessary for a few games like Mad Max:
o0 = set_viewport bb
; Back up any textures that were in the ps-t100 slot. The CustomResource
; section will already back up a lot of state, including shaders, render
; targets, depth targets, UAVs, viewports, blend state, rasterizer state,
; primitive topology, etc. but it does not back up textures:
Resource3DVisionUpscaleBackupTexture = reference ps-t101
; Use faked bb to give the shader access to the back buffers of
; both eyes:
; f_bb is the faked swap chain that has the game resolution
ps-t101 = f_bb
; Some rare games (e.g. Onechanbara Z2) use MSAA back buffers, which cannot be
; directly used with the reverse stereo blit and must be resolved to non MSAA
; versions first. The symptoms will be a black screen after enabling this
; shader with F11. In that case, replace the above line with these two:
; upscaling with msaa swap chain is currently only avialable if upscale_mode = 1
; ps-t100 = resolve_msaa f_bb
; Draw four vertices. The vertex shader will construct coordinates to cover the
; full screen using the SV_VertexID semantic so we don't need vertex buffers:
draw = 4, 0
; Restore the original texture from the ps-t100 slot:
post ps-t101 = reference Resource3DVisionUpscaleBackupTexture
;------------------------------------------------------------------------------------------------------
; The following custom shader renders the mouse cursor in software, which can
; allow it's stereo depth to be adjusted and can work with the side-by-side /
; top-and-bottom output modes - to enable this uncomment the 'run =
; CustomShaderSoftwareMouse' in the [Present] section, and set 'hide_cursor =
; 1' in the [Device] section. Edit the bottom of mousevs.hlsl to adjust the
; stereo depth of the cursor as desired. Note that this shader uses w5, x6, y6,
; z6, w6, y7, z7 and w7, and has a higher latency than the hardware cursor!
[ResourceSoftwareMouseBackupTexture1]
[ResourceSoftwareMouseBackupTexture2]
[ResourceSoftwareMouseBackupTexture3]
[ResourceSoftwareMouseBackupTexture4]
[CustomShaderSoftwareMouse]
; Load software mouse shaders and explicitly unbind other shaders for safety:
vs = ShaderFixes/mousevs.hlsl
ps = ShaderFixes/mouseps.hlsl
hs = null
ds = null
gs = null
; Disable front/back face culling so the vertices can be in any rotation:
cull = none
; Use a triangle strip topology so we only have to output four vertices:
topology = triangle_strip
; Clear all render + depth targets to avoid compatibility issues:
run = CommandListUnbindAllRenderTargets
; Bind the back buffer as a render target. set_viewport ensures that the view
; port is the size of the buffer so the draw call will work, and no_view_cache
; is necessary for a few games like Mad Max:
o0 = set_viewport no_view_cache bb
; Some games such as The Evil Within and Akiba's Trip constantly unbind
; StereoParams & IniParams, so we may need to explicitly rebind them now:
vs-t125 = StereoParams
ps-t125 = StereoParams
vs-t120 = IniParams
ps-t120 = IniParams
; Pass cursor position and visibility info to the shader:
x6 = cursor_window_x
y6 = cursor_window_y
z6 = cursor_hotspot_x
w6 = cursor_hotspot_y
y7 = cursor_showing
; Pass the size of the window to the shader:
z7 = window_width
w7 = window_height
; Back up textures we are about to replace:
ResourceSoftwareMouseBackupTexture1 = reference vs-t100
ResourceSoftwareMouseBackupTexture2 = reference vs-t101
ResourceSoftwareMouseBackupTexture3 = reference ps-t100
ResourceSoftwareMouseBackupTexture4 = reference ps-t101
; Bind cursor mask and colour textures to both vertex and pixel shaders:
vs-t100 = cursor_mask
vs-t101 = cursor_color
ps-t100 = cursor_mask
ps-t101 = cursor_color
; Enable alpha blending for a colour cursor:
blend = ADD ONE INV_SRC_ALPHA
; Set w5 to 1 to indicate that this pass is drawing a colour cursor - the
; vertex shader will bail if the cursor is black and white / inverted:
w5 = 1
draw = 4, 0
; If the cursor is black and white it needs a different blend mode to support
; inverted colours, but most of the rest of the state is the same. Fire off a
; second custom shader from here, which will inherit the state we have already
; set up but allow the blend mode to be changed (alternatively you could copy
; the back buffer and blend in the shader, or just ignore inverted cursors).
; The vertex shader will bail on one of these two passes depending on the
; cursor and current value of w5:
run = CustomShaderSoftwareMouseBW
; Restore backed up textures:
post vs-t100 = reference ResourceSoftwareMouseBackupTexture1
post vs-t101 = reference ResourceSoftwareMouseBackupTexture2
post ps-t100 = reference ResourceSoftwareMouseBackupTexture3
post ps-t101 = reference ResourceSoftwareMouseBackupTexture4
[CustomShaderSoftwareMouseBW]
; Set a blend mode that supports inverting the destination to suit black and
; white or inverted cursors:
blend = ADD INV_DEST_COLOR SRC_ALPHA
; Set w5 to 2 to indicate that this pass is drawing a black and white /
; inverted cursor - the vertex shader will bail if the cursor is colour:
w5 = 2
draw = 4, 0
;------------------------------------------------------------------------------------------------------
; The following custom shader can convert 3D Vision to Side-by-Side and
; Top-and-Bottom for use with 3D TVs & projectors - to enable this uncomment
; the 'run = CustomShader3DVision2SBS' in the [Present] section, set 3D Vision
; to output "checkerboard" in the control panel (which will remove the 720p
; limitation) and enable this either via the F11 key, or by setting a default
; for x7 in the [Constants] section. If you are using SLI and this isn't
; working properly (partially blank or stuck image) you may need to also set
; StereoFlagsDX10 = 0x00000008 in the [Profile] section.
[Resource3DVision2SBSBackupTexture]
[CustomShader3DVision2SBS]
; Load a custom vertex + pixel shader:
vs = ShaderFixes/3dvision2sbsvs.hlsl
ps = ShaderFixes/3dvision2sbsps.hlsl
; Explicitly unbind other shader types for safety:
hs = null
ds = null
gs = null
; Disable the OM blend stage that could interfere with the shader:
blend = disable
; Disable front/back face culling so the vertices can be in any rotation:
cull = none
; Use a triangle strip topology so we only have to output four vertices:
topology = triangle_strip
; Clear all render + depth targets to avoid compatibility issues:
run = CommandListUnbindAllRenderTargets
; Bind the back buffer as a render target. set_viewport ensures that the view
; port is the size of the buffer so the draw call will work, and no_view_cache
; is necessary for a few games like Mad Max:
o0 = set_viewport no_view_cache bb
; Back up any textures that were in the ps-t100 slot. The CustomResource
; section will already back up a lot of state, including shaders, render
; targets, depth targets, UAVs, viewports, blend state, rasterizer state,
; primitive topology, etc. but it does not back up textures:
Resource3DVision2SBSBackupTexture = reference ps-t100
; Use the reverse stereo blit to give the shader access to the back buffers of
; both eyes:
ps-t100 = stereo2mono bb
; Some rare games (e.g. Onechanbara Z2) use MSAA back buffers, which cannot be
; directly used with the reverse stereo blit and must be resolved to non MSAA
; versions first. The symptoms will be a black screen after enabling this
; shader with F11. In that case, replace the above line with these two:
; ps-t100 = resolve_msaa bb
; ps-t100 = stereo2mono ps-t100
; Some games such as The Evil Within and Akiba's Trip constantly unbind
; StereoParams & IniParams, so we may need to explicitly rebind them now:
vs-t125 = StereoParams
ps-t125 = StereoParams
vs-t120 = IniParams
ps-t120 = IniParams
; Draw four vertices. The vertex shader will construct coordinates to cover the
; full screen using the SV_VertexID semantic so we don't need vertex buffers:
draw = 4, 0
; Restore the original texture from the ps-t100 slot:
post ps-t100 = reference Resource3DVision2SBSBackupTexture
[KeyChange3DVision2SBSOutputMode]
key = no_modifiers F11
; 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 = Line interlacing reverse
x7 = 1, 2, 3, 4, 5, 6 , 7, 0
type = cycle
[/code]
d3d11_log.txt file[code]
D3D11 DLL starting init - v 1.2.65 - Tue Oct 17 16:09:56 2017
----------- d3dx.ini settings -----------
[Logging]
calls=1
input=1
debug=0
unbuffered=0
force_cpu_affinity=0
[System]
allow_dxgi1_2=0
allow_check_interface=0
allow_create_device=2
allow_platform_update=0
[Device]
upscaling=0
full_screen=0
force_stereo=0
get_resolution_from=swap_chain
hide_cursor=0
[Stereo]
automatic_mode=1
create_profile=1
force_no_nvapi=0
[Rendering]
shader_hash=3dmigoto
cache_shaders=0
use_criticalsection=1
rasterizer_disable_scissor=1
assemble_signature_comments=1
export_fixed=0
export_shaders=0
export_hlsl=0
dump_usage=1
stereo_params=125
ini_params=120
override_directory=H:\Games\ELEX\system\ShaderFixes
cache_directory=H:\Games\ELEX\system\ShaderCache
fix_sv_position=0
[Hunting]
hunting=1
marking_mode=0
mark_snapshot=2
reload_config=no_modifiers VK_F10
toggle_hunting=no_modifiers VK_NUMPAD0
next_pixelshader=no_modifiers VK_NUMPAD2
previous_pixelshader=no_modifiers VK_NUMPAD1
mark_pixelshader=no_modifiers VK_NUMPAD3
take_screenshot=no_modifiers VK_SNAPSHOT
next_indexbuffer=no_modifiers VK_NUMPAD8
previous_indexbuffer=no_modifiers VK_NUMPAD7
mark_indexbuffer=no_modifiers VK_NUMPAD9
next_vertexshader=no_modifiers VK_NUMPAD5
previous_vertexshader=no_modifiers VK_NUMPAD4
mark_vertexshader=no_modifiers VK_NUMPAD6
next_rendertarget=no_modifiers VK_MULTIPLY
previous_rendertarget=no_modifiers VK_DIVIDE
mark_rendertarget=no_modifiers VK_SUBTRACT
done_hunting=no_modifiers VK_ADD
reload_fixes=no_modifiers VK_F10
show_original=no_modifiers VK_F9
analyse_options=dump_rt_jps clear_rt
repeat_rate=6
[KeyChange3DVision2SBSOutputMode]
type=cycle
Cycle 1: x7=1
Cycle 2: x7=2
Cycle 3: x7=3
Cycle 4: x7=4
Cycle 5: x7=5
Cycle 6: x7=6
Cycle 7: x7=7
Cycle 8: x7=0
Key=no_modifiers F11
[Resource3DVision2SBSBackupTexture]
[Resource3DVisionUpscaleBackupTexture]
[ResourceSoftwareMouseBackupTexture1]
[ResourceSoftwareMouseBackupTexture2]
[ResourceSoftwareMouseBackupTexture3]
[ResourceSoftwareMouseBackupTexture4]
[customshader3dvision2sbs]
vs=ShaderFixes/3dvision2sbsvs.hlsl
hs=null
ds=null
gs=null
ps=ShaderFixes/3dvision2sbsps.hlsl
blend=disable
cull=none
topology=triangle_strip
run=commandlistunbindallrendertargets
o0=set_viewport no_view_cache bb
resource3dvision2sbsbackuptexture=reference ps-t100
ps-t100=stereo2mono bb
vs-t125=stereoparams
ps-t125=stereoparams
vs-t120=iniparams
ps-t120=iniparams
draw=4, 0
post ps-t100=reference resource3dvision2sbsbackuptexture
[customshaderupscale]
vs=ShaderFixes/upscalevs.hlsl
hs=null
ds=null
gs=null
ps=ShaderFixes/upscaleps.hlsl
blend=disable
cull=none
topology=triangle_strip
sampler=anisotropic_filter
run=commandlistunbindallrendertargets
o0=set_viewport bb
resource3dvisionupscalebackuptexture=reference ps-t101
ps-t101=f_bb
draw=4, 0
post ps-t101=reference resource3dvisionupscalebackuptexture
[customshadersoftwaremouse]
vs=ShaderFixes/mousevs.hlsl
hs=null
ds=null
gs=null
ps=ShaderFixes/mouseps.hlsl
blend=ADD ONE INV_SRC_ALPHA
cull=none
topology=triangle_strip
run=commandlistunbindallrendertargets
o0=set_viewport no_view_cache bb
vs-t125=stereoparams
ps-t125=stereoparams
vs-t120=iniparams
ps-t120=iniparams
x6=cursor_window_x
y6=cursor_window_y
z6=cursor_hotspot_x
w6=cursor_hotspot_y
y7=cursor_showing
z7=window_width
w7=window_height
resourcesoftwaremousebackuptexture1=reference vs-t100
resourcesoftwaremousebackuptexture2=reference vs-t101
resourcesoftwaremousebackuptexture3=reference ps-t100
resourcesoftwaremousebackuptexture4=reference ps-t101
vs-t100=cursor_mask
vs-t101=cursor_color
ps-t100=cursor_mask
ps-t101=cursor_color
w5=1
draw=4, 0
run=customshadersoftwaremousebw
post vs-t100=reference resourcesoftwaremousebackuptexture1
post vs-t101=reference resourcesoftwaremousebackuptexture2
post ps-t100=reference resourcesoftwaremousebackuptexture3
post ps-t101=reference resourcesoftwaremousebackuptexture4
[customshadersoftwaremousebw]
blend=ADD INV_DEST_COLOR SRC_ALPHA
w5=2
draw=4, 0
[commandlistunbindallrendertargets]
o0=null
o1=null
o2=null
o3=null
o4=null
o5=null
o6=null
o7=null
od=null
[Present]
[ClearRenderTargetView]
[ClearDepthStencilView]
[Constants]
x7=0.00
[Profile]
Hooked_LoadLibraryExW switching to original dll: original_nvapi64.dll to C:\Windows\system32\nvapi64.dll.
StereoProfile (0x701eb457) = 1 (0x00000001)
StereoFlagsDX10 (0x702442fc) = 0x00004008 (0x00004008)
Compat (0x7051e5f5) = "0"
StereoMemoEnabled (0x707f4b45) = 1 (0x00000001)
2DD_Notes (0x709adadc) = "Compatibility mode is enabled. To use the fix, please disable it with Ctrl+Alt+F11"
NVIDIA driver version 382.33 (branch r381_00)
Looking up profiles related to H:\Games\ELEX\system\ELEX.exe
----------- Driver profile settings -----------
BaseProfile "Base Profile"
SelectedGlobalProfile "Base Profile"
Profile "Base Profile"
ShowOn All
Setting ID_0x005a375c = 0x96861077 UserSpecified=true // Vertical Sync Tear Control
Setting ID_0x00a879cf = 0x60925292 UserSpecified=true // Vertical Sync
Setting ID_0x101ae763 = 0x00000000 UserSpecified=true // Flag to control smooth AFR behavior
Setting ID_0x1057eb71 = 0x00000001 UserSpecified=true // Power management mode
Setting ID_0x10a879ac = 0x00000004 UserSpecified=true // G-SYNC
Setting ID_0x10a879cf = 0x00000004 UserSpecified=true // G-SYNC
Setting ID_0x1194f158 = 0x00000000 UserSpecified=true // Enable G-SYNC globally
Setting ID_0x200aebfc = 0x00000000 UserSpecified=true // Multi-display/mixed-GPU acceleration
Setting ID_0x80303a19 = 0x00000001
Setting ID_0x80857a28 = 0x00000001
Setting ID_0x809d5f60 = 0x00000001
EndProfile
Profile "ELEX" UserSpecified=true
ShowOn GeForce
Executable "elex.exe" UserSpecified=true
Setting ID_0x701eb457 = 0x00000001 UserSpecified=true // StereoProfile
Setting ID_0x702442fc = 0x00004008 UserSpecified=true // StereoFlagsDX10
SettingString ID_0x7051e5f5 = "0" UserSpecified=true // Compat
Setting ID_0x707f4b45 = 0x00000001 UserSpecified=true // StereoMemoEnabled
SettingString ID_0x709adadc = "Compatibility mode is enabled. To use the fix, please disable it with Ctrl+Alt+F11" UserSpecified=true // 2DD_Notes
EndProfile
----------- End driver profile settings -----------
No profile update required
*** D3D11 DLL successfully initialized. ***
Trying to load original_d3d11.dll
Hooked_LoadLibraryExW switching to original dll: original_d3d11.dll to C:\Windows\system32\d3d11.dll.
Hooked_CreateDXGIFactory1 called with riid: IDXGIFactory1
calling original CreateDXGIFactory1 API
CreateDXGIFactory1 returned factory = 00000000045F7010, result = 0
new HackerDXGIFactory1(class HackerDXGIFactory1@0000000003CFA500) wrapped 00000000045F7010
HackerDXGIFactory1::EnumAdapters1(class HackerDXGIFactory1@0000000003CFA500) adapter 0 requested
created HackerDXGIAdapter1 wrapper = 0000000003CFA5F0 of 000000000485C150
returns result = 0
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000003CFA5F0), counter=2, this=0000000003CFA5F0
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=1, this=0000000003CFA5F0
*** D3D11CreateDevice called with
pAdapter = 0000000003CFA5F0
Flags = 0
pFeatureLevels = 0xb000
FeatureLevels = 1
ppDevice = 000000000012FA80
pFeatureLevel = 0
ppImmediateContext = 000000000012FA78
->Feature level forced to 11.0: 0xb000
return HackerDXGIAdapter1 wrapper = 0000000003CFA5F0
HackerDXGIAdapter1::GetDesc1(class HackerDXGIAdapter1@0000000003CFA5F0) called
returns adapter: NVIDIA GeForce GTX 980 Ti, sysmem=0, vidmem=6342508544, flags=0
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=1, this=0000000003CFA5F0
HackerDXGIObject::GetPrivateData(class HackerDXGIAdapter1@0000000003CFA5F0) called with GUID: {1D6AD054-FB2F-4000-B3AB-E873A9131A7C}
returns result = 887a0002
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000003CFA5F0), counter=2, this=0000000003CFA5F0
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
HackerDXGIObject::GetPrivateData(class HackerDXGIAdapter1@0000000003CFA5F0) called with GUID: {D722FB4D-7A68-437A-B20C-5804EE2494A6}
returns result = 887a0002
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=4, this=0000000003CFA5F0
D3D11CreateDevice returned device handle = 0000000004AEF5D8, context handle = 0000000003862470
HackerDevice 0000000003BF2860 created to wrap 0000000004AEF5D8
HackerContext 0000000004848D30 created to wrap 0000000003862470
HackerDevice::Create3DMigotoResources(class HackerDevice@0000000003BF2860) called.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
created NVAPI stereo handle. Handle = 0000000003BDA230
creating stereo parameter texture.
stereo texture created, handle = 0000000003CFC890
creating stereo parameter resource view.
stereo texture resource view created, handle = 0000000003B5FE90.
creating .ini constant parameter texture.
IniParam texture created, handle = 0000000003800790
creating IniParam resource view.
Iniparams resource view created, handle = 0000000003B60010.
Created pink mode pixel shader: 0
->D3D11CreateDevice result = 0, device handle = 0000000004AEF5D8, device wrapper = 0000000003BF2860, context handle = 0000000003862470, context wrapper = 0000000004848D30
failed result = 80004002 for 000000000012FA08
*** HackerDXGIFactory::CreateSwapChain(class HackerDXGIFactory1@0000000003CFA500) called with parameters
Device = class HackerDevice@0000000003BF2860
SwapChain = 000000000012F700
Description = 000000000012F760
Got resolution from swap chain: 800x600
Windowed = 1
Width = 800
Height = 600
Refresh rate = 0.000000
HackerDevice::GetHackerContext returns 0000000004848D30
Overlay::Overlay created for 00000000047041F0: class HackerDXGISwapChain
on HackerDevice: 0000000003BF2860, HackerContext: 0000000004848D30
->HackerDXGISwapChain 00000000047041F0 created to wrap 00000000038353D0
->return value = 0
HackerDXGIFactory::MakeWindowAssociation(class HackerDXGIFactory1@0000000003CFA500) called with WindowHandle = 0000000000081A46, Flags = 2
Flags = DXGI_MWA_NO_ALT_ENTER
returns result = 0
HackerUnknown::Release(class HackerDXGISwapChain@00000000047041F0), counter=2, this=00000000047041F0
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000003CFA5F0), counter=4, this=0000000003CFA5F0
HackerDXGIAdapter::EnumOutputs(class HackerDXGIAdapter1@0000000003CFA5F0) called: output #0 requested
returns result = 0, handle = 0000000004F509B0
HackerDXGIAdapter::EnumOutputs(class HackerDXGIAdapter1@0000000003CFA5F0) called: output #1 requested
returns result = 887a0002, handle = 0000000000000000
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=4, this=0000000003CFA5F0
HackerDevice::GetFeatureLevel(class HackerDevice@0000000003BF2860) returns FeatureLevel:b000
HackerDevice::GetFeatureLevel(class HackerDevice@0000000003BF2860) returns FeatureLevel:b000
HackerDevice::CreateVertexShader called with BytecodeLength = 1052, handle = 0000000004F55560, ClassLinkage = 0000000000000000
FNV hash = 8d51d95e498959f5
shader registered for possible reloading: 8d51d95e498959f5_vs as bin -
returns result = 0, handle = 0000000003BDD898
HackerDevice::CreatePixelShader called with BytecodeLength = 680, handle = 0000000003841170, ClassLinkage = 0000000000000000
FNV hash = 8444e1ff6e7684b2
shader registered for possible reloading: 8444e1ff6e7684b2_ps as bin -
returns result = 0, handle = 0000000003BDD798
HackerDevice::CreateVertexShader called with BytecodeLength = 648, handle = 0000000003810050, ClassLinkage = 0000000000000000
FNV hash = da429b98ce909b45
shader registered for possible reloading: da429b98ce909b45_vs as bin -
returns result = 0, handle = 0000000003BDD658
HackerDevice::CreateVertexShader called with BytecodeLength = 1532, handle = 00000000051E0510, ClassLinkage = 0000000000000000
FNV hash = 8fad3fc4e5d4399a
shader registered for possible reloading: 8fad3fc4e5d4399a_vs as bin -
returns result = 0, handle = 0000000003BDD3D8
HackerDevice::CreatePixelShader called with BytecodeLength = 3076, handle = 0000000003C51F00, ClassLinkage = 0000000000000000
FNV hash = a96b2edea6486c4b
shader registered for possible reloading: a96b2edea6486c4b_ps as bin -
returns result = 0, handle = 0000000003BDD2D8
HackerDevice::CreateVertexShader called with BytecodeLength = 648, handle = 0000000003810050, ClassLinkage = 0000000000000000
FNV hash = 9a9ac491667be1bf
shader registered for possible reloading: 9a9ac491667be1bf_vs as bin -
returns result = 0, handle = 0000000003BDD198
HackerDevice::CreatePixelShader called with BytecodeLength = 1208, handle = 0000000003C62200, ClassLinkage = 0000000000000000
FNV hash = 9182d6c8bda785ab
shader registered for possible reloading: 9182d6c8bda785ab_ps as bin -
returns result = 0, handle = 0000000003BDD058
HackerDevice::CreatePixelShader called with BytecodeLength = 1664, handle = 00000000053BE2B0, ClassLinkage = 0000000000000000
FNV hash = 103bad90e54c7326
shader registered for possible reloading: 103bad90e54c7326_ps as bin -
returns result = 0, handle = 0000000003BDCA58
HackerDevice::CreateHullShader called with BytecodeLength = 4956, handle = 0000000005088B90
FNV hash = aa0f8b43df80777a
shader registered for possible reloading: aa0f8b43df80777a_hs as bin -
returns result = 0, handle = 0000000003BDC958
HackerDevice::CreatePixelShader called with BytecodeLength = 2784, handle = 0000000012745E10, ClassLinkage = 0000000000000000
FNV hash = 44a1fd63e3d9fd2d
shader registered for possible reloading: 44a1fd63e3d9fd2d_ps as bin -
returns result = 0, handle = 0000000003E22AD8
HackerDevice::CreatePixelShader called with BytecodeLength = 2920, handle = 000000000505A780, ClassLinkage = 0000000000000000
FNV hash = d6519f31bafbfc77
shader registered for possible reloading: d6519f31bafbfc77_ps as bin -
returns result = 0, handle = 0000000003E22C18
HackerDevice::CreatePixelShader called with BytecodeLength = 18460, handle = 000000
//etc
[/code]
Early impressions are fairly positive so far. It suffers from the same issues as most Piranha bytes games, clunky controls and animations, cheesy voice acting, lack of polish, etc. But their games tend to have really good world building, great environments, are very immersive, and are incredibly open world. I was a big fan of Gothic and some of the Risen games so i picked it up.
3D vision kicks in right away but left eye rendering was completely busted. I installed 3dMigoto 1.2.65, added profile settings and enabled the stereo compute flag "StereoFlagsDX10 = 0x00004008" and this fixed the left eye rendering. I only walked around in the first area and so far the only things that I've seen that are broken are the shadows, light blooming, and god rays. Apart from the busted shadows, it actually looks pretty good.
I can probably fix the shadows, but unfortunately I can't get the shader hunting to work. Even though it imported the profile the shader hunting text isn't displayed.
d3dx.ini:
;------------------------------------------------------------------------------------------------------
; 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
; ------------------------------------------------------------------------------------------------------
; Default constants to pass directly to shaders as IniParams
; ------------------------------------------------------------------------------------------------------
[Constants]
; x = 0.8
; y = 1.0
; z = 1.2
; w = 2.0
; x7 is used by the 3DVision2SBS custom shader. To use, find the [Present]
; section below and uncomment the 'run = CustomShader3DVision2SBS' line.
; 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
x7 = 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 ;
; 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.
;------------------------------------------------------------------------------------------------------
; 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
; 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.
;[Preset1]
;convergence = 0
;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=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 = no_modifiers VK_NUMPAD1
next_pixelshader = no_modifiers VK_NUMPAD2
mark_pixelshader = no_modifiers VK_NUMPAD3
; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader = no_modifiers VK_NUMPAD4
next_vertexshader = no_modifiers VK_NUMPAD5
mark_vertexshader = no_modifiers VK_NUMPAD6
; rotate through all USED index buffers at the current scene.
previous_indexbuffer = no_modifiers VK_NUMPAD7
next_indexbuffer = no_modifiers VK_NUMPAD8
mark_indexbuffer = no_modifiers VK_NUMPAD9
; rotate through all USED render targets at the current scene.
previous_rendertarget = no_modifiers VK_DIVIDE
next_rendertarget = no_modifiers VK_MULTIPLY
mark_rendertarget = no_modifiers 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 = no_modifiers <
;next_geometryshader = no_modifiers >
;mark_geometryshader = no_modifiers /
; 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 = no_modifiers [
;next_domainshader = no_modifiers ]
;mark_domainshader = no_modifiers \
; rotate through all VISIBLE hull shaders at the current scene.
; This is disabled only because it is rarely needed
;previous_hullshader = no_modifiers MINUS
;next_hullshader = no_modifiers EQUALS
;mark_hullshader = no_modifiers 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 = no_modifiers PAGE_UP
;next_computeshader = no_modifiers PAGE_DOWN
;mark_computeshader = no_modifiers HOME
; Re-enable shaders once done with hunting:
done_hunting = no_modifiers 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 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 = no_modifiers 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
; snapshots to be made upon any shader Mark. These give you snapshot when the
; shader is disabled, as a way to correlate image to shader hash.
; mark_snapshot=0 // none
; mark_snapshot=1 // mono, simple snapshot
; mark_snapshot=2 // stereo snapshot
mark_snapshot=2
; Auto-repeat key rate in events per second.
repeat_rate=6
; 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
; Specifies options for the frame analysis feature. Options can be combined by
; separating them with a space.
; log: This option is now always enabled - Logs 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.
;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.
; 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 = dump_rt_jps clear_rt
;------------------------------------------------------------------------------------------------------
; Chain load other wrapper DLLs instead of system DLLs.
;------------------------------------------------------------------------------------------------------
[System]
; 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
; skip_dxgi_device - hack for MGSV on Win10 anniversary update
; recommended - hook supported objects, safe workarounds enabled, skips not enabled
; hook=recommended
; Options to allow IDXGIFactory2 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_dxgi1_2,
; then try allow_create_device=2, lastly try allow_create_device=1
;
; Setting allow_dxgi1_2=2 may allow the Steam Overlay and Steam Controller to
; work in some games on Windows 7 and Windows 8, but could potentially disable
; core functionality in some cases, so only enable it if you need it.
;
allow_check_interface=0
allow_dxgi1_2=0
allow_create_device=2
allow_platform_update=0
;------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
;------------------------------------------------------------------------------------------------------
[Device]
; (0) - disable upscaling
; (1) - enable upscaling and allows the game to disable and enable fullscreen mode
; (2) - enable upscaling and don't allow the game to switch fullscreen mode
; (always force fullscreen). Try this if you get issues with the mouse cursor.
; Note if you enable upscaling please do not forget to:
; 1) Uncomment "run = CustomShaderUpscale" in the [Present] section,
; otherwise you will see only a black window (with game sound).
; 2) Set a custom resolution here for width and height that the game will see.
; 3) Uncomment upscale_mode here.
upscaling = 0
; Force override the screen resolution.
; If upscaling is on, the resizing functionality is disabled.
; If upscaling is on, then you MUST specify the resolution the game will be upscaled to.
; To achieve the best visual result use the native resolution of your tv or monitor.
;width=1280
;height=720
; upscale_mode = 0: 3Dmigoto creates a texture and pushes it as the back buffer for the game.
; Seems to work with only few games but everything seems to run a bit smoother.
; upscale_mode = 1: 3Dmigoto creates a second swap chain and pushes the game to use it.
; Seems to work with most games. dont forget to activate upscaling shader in [present] section
;upscale_mode = 1
; overrides refresh rate set by game.
;refresh_rate=60
; filters available video modes to those providing given refresh rates.
; some games don't explicitely set the refresh rate, but use the video mode.
; use this if setting refresh_rate doesn't work.
;filter_refresh_rate=24,59,60
; full_screen=1 forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; full_screen=2 will also disable SetWindowPos which might help in some games.
full_screen=0
; This 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, for use in conjunction with the
; software mouse cursor by uncommenting 'run = CustomShaderSoftwareMouse' in
; the [Present] section. 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=1
; 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=1
; 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
; 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
; 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
; thread save data structure access. required on multithreaded rendering.
use_criticalsection=1
; Indicates whether scissor clipping should be disabled by default.
; If you set rasterizer_disable_scissor=0, you can selectively disable scissor
; for individual shaders by setting disable_scissor=1 in [ShaderOverride*]
; sections. Or you can also set rasterizer_disable_scissor=1 here and then
; selectively enable scissor for individual shaders by setting disable_scissor=0
; in [ShaderOverride*] sections.
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
; 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
;------------------------------------------------------------------------------------------------------
; 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
; 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
; 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
; 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).
;x2=ps-t0
; 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 = 1
; Disable scissor clipping for this shader when rasterizer_disable_scissor=0 in
; [Rendering] section. Or set this to 0 to enable scissor clipping for this shader
; when rasterizer_disable_scissor=1 in [Rendering] section.
;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
;------------------------------------------------------------------------------------------------------
; 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
;------------------------------------------------------------------------------------------------------
; 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 = 0.5
;
; This changes the green text that the driver displays, and is a good place to
; put any reminders to display to the user or just take some credit:
;Comments = "Such and such 3D fix by an awesome modder. Disable motion blur!"
;
; Change the rating: "0": 3D Vision Ready, "1": Excellent, "2": Good,
; "3": Fair, "4": Not Recommended
Compat = "0"
;
; If you have added some comments, you probably want to force the green text to
; show up when the game is next run. Note that like convergence, 3DMigoto will
; only override a user setting here if something else has also been updated
; (such as Comments), so this will usually only show up the first time a user
; runs the game after installing the fix (be sure to enable StereoProfile).
StereoMemoEnabled = 1
;
; Disable compatibility mode to make sure users are seeing the real deal. Like
; convergence, 3DMigoto will respect the users custom settings here:
;Disable2DD = 1
;
; Put a reminder in the green text of compatibility mode that they are not
; seeing the real deal:
2DD_Notes = "Compatibility mode is enabled. To use the fix, please disable it with Ctrl+Alt+F11"
;
; These two options change which constant buffers the driver uses to pass the
; separation and convergence to any Vertex and Domain shaders it has modified.
; The default value is 12, and you may need to change it if the game already
; uses that constant buffer for any purpose, which should be apparent as you
; will see 2D geometry on any shader that uses this. You should avoid using
; these constant buffers yourself unless you understand the nuances involved.
;DX10VSCBNumber = 12
;DX10DSCBNumber = 12
;
; If a setting doesn't have a name or you don't know what it is (check the
; d3d11_log.txt for the names of all settings in this profile), you can use the
; hex ID (in fact, you can even paste a complete profile from Geforce Profile
; Manager - just be sure to delete any corrupt string settings if you do):
;0x1033cec2 = 0x00000002
;
; There are many more options, and we have tried to document them here -
; *please* edit this page if you figure out anything new:
; http://wiki.bo3b.net/index.php?title=Driver_Profile_Settings
;------------------------------------------------------------------------------------------------------
; This section defines a shortcut for unbinding all render and depth targets,
; which is commonly needed in [CustomShader] sections since all bound render
; and depth targets *must* be the same size, and leaving something else bound
; is a sure way for things to go weirdly wrong. Call it from any section that
; supports a command list with 'run = CommandListUnbindAllRenderTargets' after
; you have copied any state you need from these and before binding your own.
;------------------------------------------------------------------------------------------------------
[CommandListUnbindAllRenderTargets]
o0 = null
o1 = null
o2 = null
o3 = null
o4 = null
o5 = null
o6 = null
o7 = null
oD = null
;------------------------------------------------------------------------------------------------------
; 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: Clear a custom resource at the start of each frame:
;post ResourceDepthBuffer = null
; Uncomment to enable a custom shader that allows the stereo output mode to be
; upscaled. NOTE: uncomment only if 'upscaling' and resolution are not zero.
;run = CustomShaderUpscale
; Uncomment to enable a custom shader that implements a software mouse cursor.
; Use in games that use a hardware cursor if you want to be able to adjust the
; stereo depth of the mouse, or to work with the below 3DVision2SBS shader.
; You should also set 'hide_cursor = 1' under [Device] to suppress the hardware
; mouse cursor. Note that this shader will use w5, x6, y6, z6, w6, y7, z7 and
; w7, and has a higher latency than the hardware cursor!
;run = CustomShaderSoftwareMouse
; Uncomment to enable a custom shader that allows the stereo output mode to be
; changed to Side-by-Side or Top-and-Bottom. If you are using SLI and this
; isn't working properly (partially blank or stuck image) you may need to also
; set StereoFlagsDX10 = 0x00000008 in the [Profile] section:
;run = CustomShader3DVision2SBS
;------------------------------------------------------------------------------------------------------
; The following custom shader can be used to perform upscaling to arbitrary resolutions,
; specifically useful for 4K 3D TVs or for DSR. To enable, uncomment the
; ";run = CustomShaderUpscale" in the Present section, set the custom resolution and
; enable "upscaling=1" in the Device section.
; If you uncomment upscale shader without actually enabling the upscaling in [Device]
; you might have wrong screen resolution or the game will not be able to enter the fullscreen mode.
; Both Upscaling and SBS can be used at the same time.
[Resource3DVisionUpscaleBackupTexture]
[CustomShaderUpscale]
; Load a custom vertex + pixel shader:
vs = ShaderFixes/upscalevs.hlsl
ps = ShaderFixes/upscaleps.hlsl
; Explicitly unbind other shader types for safety:
hs = null
ds = null
gs = null
; Disable the OM blend stage that could interfere with the shader:
blend = disable
; Disable front/back face culling so the vertices can be in any rotation:
cull = none
; enable sampler with the filter: anisotropic_filter, linear_filter, point_filter
sampler = anisotropic_filter
; Use a triangle strip topology so we only have to output four vertices:
topology = triangle_strip
; Clear all render + depth targets to avoid compatibility issues:
run = CommandListUnbindAllRenderTargets
; Bind the back buffer as a render target. set_viewport ensures that the view
; port is the size of the buffer so the draw call will work. No no_view_cache
; seems to make some games crash. Just play around with it if something is not working
; is necessary for a few games like Mad Max:
o0 = set_viewport bb
; Back up any textures that were in the ps-t100 slot. The CustomResource
; section will already back up a lot of state, including shaders, render
; targets, depth targets, UAVs, viewports, blend state, rasterizer state,
; primitive topology, etc. but it does not back up textures:
Resource3DVisionUpscaleBackupTexture = reference ps-t101
; Use faked bb to give the shader access to the back buffers of
; both eyes:
; f_bb is the faked swap chain that has the game resolution
ps-t101 = f_bb
; Some rare games (e.g. Onechanbara Z2) use MSAA back buffers, which cannot be
; directly used with the reverse stereo blit and must be resolved to non MSAA
; versions first. The symptoms will be a black screen after enabling this
; shader with F11. In that case, replace the above line with these two:
; upscaling with msaa swap chain is currently only avialable if upscale_mode = 1
; ps-t100 = resolve_msaa f_bb
; Draw four vertices. The vertex shader will construct coordinates to cover the
; full screen using the SV_VertexID semantic so we don't need vertex buffers:
draw = 4, 0
; Restore the original texture from the ps-t100 slot:
post ps-t101 = reference Resource3DVisionUpscaleBackupTexture
;------------------------------------------------------------------------------------------------------
; The following custom shader renders the mouse cursor in software, which can
; allow it's stereo depth to be adjusted and can work with the side-by-side /
; top-and-bottom output modes - to enable this uncomment the 'run =
; CustomShaderSoftwareMouse' in the [Present] section, and set 'hide_cursor =
; 1' in the [Device] section. Edit the bottom of mousevs.hlsl to adjust the
; stereo depth of the cursor as desired. Note that this shader uses w5, x6, y6,
; z6, w6, y7, z7 and w7, and has a higher latency than the hardware cursor!
[ResourceSoftwareMouseBackupTexture1]
[ResourceSoftwareMouseBackupTexture2]
[ResourceSoftwareMouseBackupTexture3]
[ResourceSoftwareMouseBackupTexture4]
[CustomShaderSoftwareMouse]
; Load software mouse shaders and explicitly unbind other shaders for safety:
vs = ShaderFixes/mousevs.hlsl
ps = ShaderFixes/mouseps.hlsl
hs = null
ds = null
gs = null
; Disable front/back face culling so the vertices can be in any rotation:
cull = none
; Use a triangle strip topology so we only have to output four vertices:
topology = triangle_strip
; Clear all render + depth targets to avoid compatibility issues:
run = CommandListUnbindAllRenderTargets
; Bind the back buffer as a render target. set_viewport ensures that the view
; port is the size of the buffer so the draw call will work, and no_view_cache
; is necessary for a few games like Mad Max:
o0 = set_viewport no_view_cache bb
; Some games such as The Evil Within and Akiba's Trip constantly unbind
; StereoParams & IniParams, so we may need to explicitly rebind them now:
vs-t125 = StereoParams
ps-t125 = StereoParams
vs-t120 = IniParams
ps-t120 = IniParams
; Pass cursor position and visibility info to the shader:
x6 = cursor_window_x
y6 = cursor_window_y
z6 = cursor_hotspot_x
w6 = cursor_hotspot_y
y7 = cursor_showing
; Pass the size of the window to the shader:
z7 = window_width
w7 = window_height
; Back up textures we are about to replace:
ResourceSoftwareMouseBackupTexture1 = reference vs-t100
ResourceSoftwareMouseBackupTexture2 = reference vs-t101
ResourceSoftwareMouseBackupTexture3 = reference ps-t100
ResourceSoftwareMouseBackupTexture4 = reference ps-t101
; Bind cursor mask and colour textures to both vertex and pixel shaders:
vs-t100 = cursor_mask
vs-t101 = cursor_color
ps-t100 = cursor_mask
ps-t101 = cursor_color
; Enable alpha blending for a colour cursor:
blend = ADD ONE INV_SRC_ALPHA
; Set w5 to 1 to indicate that this pass is drawing a colour cursor - the
; vertex shader will bail if the cursor is black and white / inverted:
w5 = 1
draw = 4, 0
; If the cursor is black and white it needs a different blend mode to support
; inverted colours, but most of the rest of the state is the same. Fire off a
; second custom shader from here, which will inherit the state we have already
; set up but allow the blend mode to be changed (alternatively you could copy
; the back buffer and blend in the shader, or just ignore inverted cursors).
; The vertex shader will bail on one of these two passes depending on the
; cursor and current value of w5:
run = CustomShaderSoftwareMouseBW
; Restore backed up textures:
post vs-t100 = reference ResourceSoftwareMouseBackupTexture1
post vs-t101 = reference ResourceSoftwareMouseBackupTexture2
post ps-t100 = reference ResourceSoftwareMouseBackupTexture3
post ps-t101 = reference ResourceSoftwareMouseBackupTexture4
[CustomShaderSoftwareMouseBW]
; Set a blend mode that supports inverting the destination to suit black and
; white or inverted cursors:
blend = ADD INV_DEST_COLOR SRC_ALPHA
; Set w5 to 2 to indicate that this pass is drawing a black and white /
; inverted cursor - the vertex shader will bail if the cursor is colour:
w5 = 2
draw = 4, 0
;------------------------------------------------------------------------------------------------------
; The following custom shader can convert 3D Vision to Side-by-Side and
; Top-and-Bottom for use with 3D TVs & projectors - to enable this uncomment
; the 'run = CustomShader3DVision2SBS' in the [Present] section, set 3D Vision
; to output "checkerboard" in the control panel (which will remove the 720p
; limitation) and enable this either via the F11 key, or by setting a default
; for x7 in the [Constants] section. If you are using SLI and this isn't
; working properly (partially blank or stuck image) you may need to also set
; StereoFlagsDX10 = 0x00000008 in the [Profile] section.
[Resource3DVision2SBSBackupTexture]
[CustomShader3DVision2SBS]
; Load a custom vertex + pixel shader:
vs = ShaderFixes/3dvision2sbsvs.hlsl
ps = ShaderFixes/3dvision2sbsps.hlsl
; Explicitly unbind other shader types for safety:
hs = null
ds = null
gs = null
; Disable the OM blend stage that could interfere with the shader:
blend = disable
; Disable front/back face culling so the vertices can be in any rotation:
cull = none
; Use a triangle strip topology so we only have to output four vertices:
topology = triangle_strip
; Clear all render + depth targets to avoid compatibility issues:
run = CommandListUnbindAllRenderTargets
; Bind the back buffer as a render target. set_viewport ensures that the view
; port is the size of the buffer so the draw call will work, and no_view_cache
; is necessary for a few games like Mad Max:
o0 = set_viewport no_view_cache bb
; Back up any textures that were in the ps-t100 slot. The CustomResource
; section will already back up a lot of state, including shaders, render
; targets, depth targets, UAVs, viewports, blend state, rasterizer state,
; primitive topology, etc. but it does not back up textures:
Resource3DVision2SBSBackupTexture = reference ps-t100
; Use the reverse stereo blit to give the shader access to the back buffers of
; both eyes:
ps-t100 = stereo2mono bb
; Some rare games (e.g. Onechanbara Z2) use MSAA back buffers, which cannot be
; directly used with the reverse stereo blit and must be resolved to non MSAA
; versions first. The symptoms will be a black screen after enabling this
; shader with F11. In that case, replace the above line with these two:
; ps-t100 = resolve_msaa bb
; ps-t100 = stereo2mono ps-t100
; Some games such as The Evil Within and Akiba's Trip constantly unbind
; StereoParams & IniParams, so we may need to explicitly rebind them now:
vs-t125 = StereoParams
ps-t125 = StereoParams
vs-t120 = IniParams
ps-t120 = IniParams
; Draw four vertices. The vertex shader will construct coordinates to cover the
; full screen using the SV_VertexID semantic so we don't need vertex buffers:
draw = 4, 0
; Restore the original texture from the ps-t100 slot:
post ps-t100 = reference Resource3DVision2SBSBackupTexture
[KeyChange3DVision2SBSOutputMode]
key = no_modifiers F11
; 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 = Line interlacing reverse
x7 = 1, 2, 3, 4, 5, 6 , 7, 0
type = cycle
d3d11_log.txt file
D3D11 DLL starting init - v 1.2.65 - Tue Oct 17 16:09:56 2017
Profile "ELEX" UserSpecified=true
ShowOn GeForce
Executable "elex.exe" UserSpecified=true
Setting ID_0x701eb457 = 0x00000001 UserSpecified=true // StereoProfile
Setting ID_0x702442fc = 0x00004008 UserSpecified=true // StereoFlagsDX10
SettingString ID_0x7051e5f5 = "0" UserSpecified=true // Compat
Setting ID_0x707f4b45 = 0x00000001 UserSpecified=true // StereoMemoEnabled
SettingString ID_0x709adadc = "Compatibility mode is enabled. To use the fix, please disable it with Ctrl+Alt+F11" UserSpecified=true // 2DD_Notes
EndProfile
----------- End driver profile settings -----------
No profile update required
*** D3D11 DLL successfully initialized. ***
Trying to load original_d3d11.dll
Hooked_LoadLibraryExW switching to original dll: original_d3d11.dll to C:\Windows\system32\d3d11.dll.
Hooked_CreateDXGIFactory1 called with riid: IDXGIFactory1
calling original CreateDXGIFactory1 API
CreateDXGIFactory1 returned factory = 00000000045F7010, result = 0
new HackerDXGIFactory1(class HackerDXGIFactory1@0000000003CFA500) wrapped 00000000045F7010
HackerDXGIFactory1::EnumAdapters1(class HackerDXGIFactory1@0000000003CFA500) adapter 0 requested
created HackerDXGIAdapter1 wrapper = 0000000003CFA5F0 of 000000000485C150
returns result = 0
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000003CFA5F0), counter=2, this=0000000003CFA5F0
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=1, this=0000000003CFA5F0
*** D3D11CreateDevice called with
pAdapter = 0000000003CFA5F0
Flags = 0
pFeatureLevels = 0xb000
FeatureLevels = 1
ppDevice = 000000000012FA80
pFeatureLevel = 0
ppImmediateContext = 000000000012FA78
->Feature level forced to 11.0: 0xb000
return HackerDXGIAdapter1 wrapper = 0000000003CFA5F0
HackerDXGIAdapter1::GetDesc1(class HackerDXGIAdapter1@0000000003CFA5F0) called
returns adapter: NVIDIA GeForce GTX 980 Ti, sysmem=0, vidmem=6342508544, flags=0
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=1, this=0000000003CFA5F0
HackerDXGIObject::GetPrivateData(class HackerDXGIAdapter1@0000000003CFA5F0) called with GUID: {1D6AD054-FB2F-4000-B3AB-E873A9131A7C}
returns result = 887a0002
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000003CFA5F0), counter=2, this=0000000003CFA5F0
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
HackerDXGIObject::GetPrivateData(class HackerDXGIAdapter1@0000000003CFA5F0) called with GUID: {D722FB4D-7A68-437A-B20C-5804EE2494A6}
returns result = 887a0002
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=4, this=0000000003CFA5F0
D3D11CreateDevice returned device handle = 0000000004AEF5D8, context handle = 0000000003862470
HackerDevice 0000000003BF2860 created to wrap 0000000004AEF5D8
HackerContext 0000000004848D30 created to wrap 0000000003862470
HackerDevice::Create3DMigotoResources(class HackerDevice@0000000003BF2860) called.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
Replaced Hooked_LoadLibraryExW for: C:\Windows\system32\nvapi64.dll to nvapi64.dll.
created NVAPI stereo handle. Handle = 0000000003BDA230
creating stereo parameter texture.
stereo texture created, handle = 0000000003CFC890
creating stereo parameter resource view.
stereo texture resource view created, handle = 0000000003B5FE90.
creating .ini constant parameter texture.
IniParam texture created, handle = 0000000003800790
creating IniParam resource view.
Iniparams resource view created, handle = 0000000003B60010.
Created pink mode pixel shader: 0
->D3D11CreateDevice result = 0, device handle = 0000000004AEF5D8, device wrapper = 0000000003BF2860, context handle = 0000000003862470, context wrapper = 0000000004848D30
failed result = 80004002 for 000000000012FA08
*** HackerDXGIFactory::CreateSwapChain(class HackerDXGIFactory1@0000000003CFA500) called with parameters
Device = class HackerDevice@0000000003BF2860
SwapChain = 000000000012F700
Description = 000000000012F760
Got resolution from swap chain: 800x600
Windowed = 1
Width = 800
Height = 600
Refresh rate = 0.000000
HackerDevice::GetHackerContext returns 0000000004848D30
Overlay::Overlay created for 00000000047041F0: class HackerDXGISwapChain
on HackerDevice: 0000000003BF2860, HackerContext: 0000000004848D30
->HackerDXGISwapChain 00000000047041F0 created to wrap 00000000038353D0
->return value = 0
HackerDXGIFactory::MakeWindowAssociation(class HackerDXGIFactory1@0000000003CFA500) called with WindowHandle = 0000000000081A46, Flags = 2
Flags = DXGI_MWA_NO_ALT_ENTER
returns result = 0
HackerUnknown::Release(class HackerDXGISwapChain@00000000047041F0), counter=2, this=00000000047041F0
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000003CFA5F0), counter=4, this=0000000003CFA5F0
HackerDXGIAdapter::EnumOutputs(class HackerDXGIAdapter1@0000000003CFA5F0) called: output #0 requested
returns result = 0, handle = 0000000004F509B0
HackerDXGIAdapter::EnumOutputs(class HackerDXGIAdapter1@0000000003CFA5F0) called: output #1 requested
returns result = 887a0002, handle = 0000000000000000
HackerUnknown::Release(class HackerDXGIAdapter1@0000000003CFA5F0), counter=4, this=0000000003CFA5F0
HackerDevice::GetFeatureLevel(class HackerDevice@0000000003BF2860) returns FeatureLevel:b000
HackerDevice::GetFeatureLevel(class HackerDevice@0000000003BF2860) returns FeatureLevel:b000
HackerDevice::CreateVertexShader called with BytecodeLength = 1052, handle = 0000000004F55560, ClassLinkage = 0000000000000000
FNV hash = 8d51d95e498959f5
shader registered for possible reloading: 8d51d95e498959f5_vs as bin -
returns result = 0, handle = 0000000003BDD898
HackerDevice::CreatePixelShader called with BytecodeLength = 680, handle = 0000000003841170, ClassLinkage = 0000000000000000
FNV hash = 8444e1ff6e7684b2
shader registered for possible reloading: 8444e1ff6e7684b2_ps as bin -
returns result = 0, handle = 0000000003BDD798
HackerDevice::CreateVertexShader called with BytecodeLength = 648, handle = 0000000003810050, ClassLinkage = 0000000000000000
FNV hash = da429b98ce909b45
shader registered for possible reloading: da429b98ce909b45_vs as bin -
returns result = 0, handle = 0000000003BDD658
HackerDevice::CreateVertexShader called with BytecodeLength = 1532, handle = 00000000051E0510, ClassLinkage = 0000000000000000
FNV hash = 8fad3fc4e5d4399a
shader registered for possible reloading: 8fad3fc4e5d4399a_vs as bin -
returns result = 0, handle = 0000000003BDD3D8
HackerDevice::CreatePixelShader called with BytecodeLength = 3076, handle = 0000000003C51F00, ClassLinkage = 0000000000000000
FNV hash = a96b2edea6486c4b
shader registered for possible reloading: a96b2edea6486c4b_ps as bin -
returns result = 0, handle = 0000000003BDD2D8
HackerDevice::CreateVertexShader called with BytecodeLength = 648, handle = 0000000003810050, ClassLinkage = 0000000000000000
FNV hash = 9a9ac491667be1bf
shader registered for possible reloading: 9a9ac491667be1bf_vs as bin -
returns result = 0, handle = 0000000003BDD198
HackerDevice::CreatePixelShader called with BytecodeLength = 1208, handle = 0000000003C62200, ClassLinkage = 0000000000000000
FNV hash = 9182d6c8bda785ab
shader registered for possible reloading: 9182d6c8bda785ab_ps as bin -
returns result = 0, handle = 0000000003BDD058
HackerDevice::CreatePixelShader called with BytecodeLength = 1664, handle = 00000000053BE2B0, ClassLinkage = 0000000000000000
FNV hash = 103bad90e54c7326
shader registered for possible reloading: 103bad90e54c7326_ps as bin -
returns result = 0, handle = 0000000003BDCA58
HackerDevice::CreateHullShader called with BytecodeLength = 4956, handle = 0000000005088B90
FNV hash = aa0f8b43df80777a
shader registered for possible reloading: aa0f8b43df80777a_hs as bin -
returns result = 0, handle = 0000000003BDC958
HackerDevice::CreatePixelShader called with BytecodeLength = 2784, handle = 0000000012745E10, ClassLinkage = 0000000000000000
FNV hash = 44a1fd63e3d9fd2d
shader registered for possible reloading: 44a1fd63e3d9fd2d_ps as bin -
returns result = 0, handle = 0000000003E22AD8
HackerDevice::CreatePixelShader called with BytecodeLength = 2920, handle = 000000000505A780, ClassLinkage = 0000000000000000
FNV hash = d6519f31bafbfc77
shader registered for possible reloading: d6519f31bafbfc77_ps as bin -
returns result = 0, handle = 0000000003E22C18
HackerDevice::CreatePixelShader called with BytecodeLength = 18460, handle = 000000
//etc
Like my work? You can send a donation via Paypal to sgs.rules@gmail.com
Windows 7 Pro 64x - Nvidia Driver 398.82 - EVGA 980Ti SC - Optoma HD26 with Edid override - 3D Vision 2 - i7-8700K CPU at 5.0Ghz - ASROCK Z370 Ext 4 Motherboard - 32 GB RAM Corsair Vengeance - 512 GB Samsung SSD 850 Pro - Creative Sound Blaster Z
Put "hunting=2" to see the green overlay for hunting shaders:)
hunting=1 will still let you cycle and save them, but it will not show an overlay.
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
[quote="Helifax"]Put "hunting=2" to see the green overlay for hunting shaders:)
hunting=1 will still let you cycle and save them, but it will not show an overlay.[/quote]
You sure? The ini says hunting = 2 is for soft disable so that it can be toggled on and off. I've always used hunting = 1. Either way i gave hunting = 2 a shot and still nothing. It won't cycle or save shaders.
Helifax said:Put "hunting=2" to see the green overlay for hunting shaders:)
hunting=1 will still let you cycle and save them, but it will not show an overlay.
You sure? The ini says hunting = 2 is for soft disable so that it can be toggled on and off. I've always used hunting = 1. Either way i gave hunting = 2 a shot and still nothing. It won't cycle or save shaders.
Like my work? You can send a donation via Paypal to sgs.rules@gmail.com
Windows 7 Pro 64x - Nvidia Driver 398.82 - EVGA 980Ti SC - Optoma HD26 with Edid override - 3D Vision 2 - i7-8700K CPU at 5.0Ghz - ASROCK Z370 Ext 4 Motherboard - 32 GB RAM Corsair Vengeance - 512 GB Samsung SSD 850 Pro - Creative Sound Blaster Z
[quote="sgsrules"][quote="Helifax"]Put "hunting=2" to see the green overlay for hunting shaders:)
hunting=1 will still let you cycle and save them, but it will not show an overlay.[/quote]
You sure? The ini says hunting = 2 is for soft disable so that it can be toggled on and off. I've always used hunting = 1. Either way i gave hunting = 2 a shot and still nothing. It won't cycle or save shaders.[/quote]
Soft Disable, means you need to press Numpad_0 (by default) to see the overlay. If this doesn't work, then something else is wrong and I can't exactly see what might be the problem:(
Helifax said:Put "hunting=2" to see the green overlay for hunting shaders:)
hunting=1 will still let you cycle and save them, but it will not show an overlay.
You sure? The ini says hunting = 2 is for soft disable so that it can be toggled on and off. I've always used hunting = 1. Either way i gave hunting = 2 a shot and still nothing. It won't cycle or save shaders.
Soft Disable, means you need to press Numpad_0 (by default) to see the overlay. If this doesn't work, then something else is wrong and I can't exactly see what might be the problem:(
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
@sgsrules, you can try an older version of 3Dmigoto if works (1.0.1 for example).
Do you see the green overlay? there are a couple of games i try and when i can't hunt i also can't see the green overlay...using an older version works in this case.
@sgsrules, you can try an older version of 3Dmigoto if works (1.0.1 for example).
Do you see the green overlay? there are a couple of games i try and when i can't hunt i also can't see the green overlay...using an older version works in this case.
Today, I gave Elex a try in 3D and run into the same problem as sgsrules. The profile installes correctly but hunting and frame analysis is impossible. Also the green overlay does not appear and cannot be activated. I tried the versions 1.2.65, 1.2.53 and 1.1.36 but without success.
Some things look suspecious to me but correct me if I'm wrong:
The game ships with d3dcompiler_47.dll but 3Dmigoto uses d3dcompiler_46.dll
The log shows some errors:
->D3D11CreateDevice result = 0, device handle = 00000000004AF960, device wrapper = 0000000002F1DDC0, context handle = 000000000045CC08, context wrapper = 00000000047EA0F0
failed result = 80004002 for 0000000004F31010
failed result = 80004002 for 000000000012FA08
...
HackerUnknown::Release(class HackerDXGIFactory1@0000000004E63F60), counter=3, this=0000000004E63F60
failed result = 80004002 for 000000000012FCB0
Error HRESULT 80004002 means "No such interface supported".
It tries to create some 800x600 DXGI swap-chain even though the resolution is 1920x1080 (see log)
So it seems to me that there is some bug in 3Dmigoto :(
Any ideas for a fix?
Complete log file:
D3D11 DLL starting init - v 1.2.65 - Wed Oct 18 17:10:52 2017
Hooked_LoadLibraryExW switching to original dll: original_nvapi64.dll to C:\Windows\system32\nvapi64.dll.
NVIDIA driver version 358.87 (branch r358_00)
Looking up profiles related to D:\ELEX\system\ELEX.exe
----------- Driver profile settings -----------
BaseProfile "Base Profile"
SelectedGlobalProfile "Base Profile"
----------- End driver profile settings -----------
No profile update required
*** D3D11 DLL successfully initialized. ***
Trying to load original_d3d11.dll
Hooked_LoadLibraryExW switching to original dll: original_d3d11.dll to C:\Windows\system32\d3d11.dll.
Hooked_CreateDXGIFactory1 called with riid: IDXGIFactory1
calling original CreateDXGIFactory1 API
CreateDXGIFactory1 returned factory = 00000000004A92B0, result = 0
new HackerDXGIFactory1(class HackerDXGIFactory1@0000000004E63F60) wrapped 00000000004A92B0
HackerDXGIFactory1::EnumAdapters1(class HackerDXGIFactory1@0000000004E63F60) adapter 0 requested
created HackerDXGIAdapter1 wrapper = 0000000004E63F00 of 000000000045BD00
returns result = 0
HackerUnknown::AddRef(class HackerDXGIAdapter1@0000000004E63F00), counter=2, this=0000000004E63F00
HackerUnknown::Release(class HackerDXGIAdapter1@0000000004E63F00), counter=1, this=0000000004E63F00
With version 1.0.1 hunting works and it dumps about 3000 shaders on first start. However, the hunting loop includes only about 50 shaders which seems to be some "final stage" shaders that don't need any fix. If I put one of the hunted shaders into the ShaderFixes directory anyway, the shader gets messed up even though it is not modified.
With this results and the lack of frame analysis, I guess that using version 1.0.1 is no option to fix this game :(
With version 1.0.1 hunting works and it dumps about 3000 shaders on first start. However, the hunting loop includes only about 50 shaders which seems to be some "final stage" shaders that don't need any fix. If I put one of the hunted shaders into the ShaderFixes directory anyway, the shader gets messed up even though it is not modified.
With this results and the lack of frame analysis, I guess that using version 1.0.1 is no option to fix this game :(
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
Probably not worth using 1.1.14, over 1.0.1. Both of those don't have the DXGI changes. 1.0.1 will likely be more stable, but to be honest, I can't really recall offhand.
The problem here is that DXGI is not being hooked, probably because the game is loading DXGI earlier than we are, and thus we are locked out of the chain of hooks. Would be worth trying the DXGI loader that DarkStarSword posted about recently.
[url]https://forums.geforce.com/default/topic/685657/3d-vision/3dmigoto-now-open-source-/post/5226990/#5226990[/url]
Still possible to fix the game, with some extra grief.
Run 1.2.65 and use it to dump the shaders in bulk. The reason to use it instead of 1.0.1 is because the Decompiler is hundreds of times better than it was in 1.0.1. Dump ASM files too if you think that might be easier or better.
Then run 1.0.1 to hunt the shaders you need. You won't want the fixed file, just the shader hash. You can then use the corresponding file from the 1.2.65 dump to work on it.
Probably not worth using 1.1.14, over 1.0.1. Both of those don't have the DXGI changes. 1.0.1 will likely be more stable, but to be honest, I can't really recall offhand.
The problem here is that DXGI is not being hooked, probably because the game is loading DXGI earlier than we are, and thus we are locked out of the chain of hooks. Would be worth trying the DXGI loader that DarkStarSword posted about recently.
Still possible to fix the game, with some extra grief.
Run 1.2.65 and use it to dump the shaders in bulk. The reason to use it instead of 1.0.1 is because the Decompiler is hundreds of times better than it was in 1.0.1. Dump ASM files too if you think that might be easier or better.
Then run 1.0.1 to hunt the shaders you need. You won't want the fixed file, just the shader hash. You can then use the corresponding file from the 1.2.65 dump to work on it.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607 Latest 3Dmigoto Release Bo3b's School for ShaderHackers
I replied to this at [url]https://forums.geforce.com/default/topic/685657/3d-vision/3dmigoto-now-open-source-/post/5230189/#5230189[/url] to keep the 3Dmigoto and DXGI discussion at one place.
Did Anyone managed to get a good CM profile with this game?
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
[quote="Helifax"]Did Anyone managed to get a good CM profile with this game?[/quote]
I don't know what is good, but using The Witcher 3 profile it is at least playable even if some HUD icons are not right.
https://www.gog.com/game/elex
http://store.steampowered.com/app/411300/ELEX/
Early impressions are fairly positive so far. It suffers from the same issues as most Piranha bytes games, clunky controls and animations, cheesy voice acting, lack of polish, etc. But their games tend to have really good world building, great environments, are very immersive, and are incredibly open world. I was a big fan of Gothic and some of the Risen games so i picked it up.
3D vision kicks in right away but left eye rendering was completely busted. I installed 3dMigoto 1.2.65, added profile settings and enabled the stereo compute flag "StereoFlagsDX10 = 0x00004008" and this fixed the left eye rendering. I only walked around in the first area and so far the only things that I've seen that are broken are the shadows, light blooming, and god rays. Apart from the busted shadows, it actually looks pretty good.
I can probably fix the shadows, but unfortunately I can't get the shader hunting to work. Even though it imported the profile the shader hunting text isn't displayed.
d3dx.ini:
d3d11_log.txt file
Like my work? You can send a donation via Paypal to sgs.rules@gmail.com
Windows 7 Pro 64x - Nvidia Driver 398.82 - EVGA 980Ti SC - Optoma HD26 with Edid override - 3D Vision 2 - i7-8700K CPU at 5.0Ghz - ASROCK Z370 Ext 4 Motherboard - 32 GB RAM Corsair Vengeance - 512 GB Samsung SSD 850 Pro - Creative Sound Blaster Z
hunting=1 will still let you cycle and save them, but it will not show an overlay.
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
You sure? The ini says hunting = 2 is for soft disable so that it can be toggled on and off. I've always used hunting = 1. Either way i gave hunting = 2 a shot and still nothing. It won't cycle or save shaders.
Like my work? You can send a donation via Paypal to sgs.rules@gmail.com
Windows 7 Pro 64x - Nvidia Driver 398.82 - EVGA 980Ti SC - Optoma HD26 with Edid override - 3D Vision 2 - i7-8700K CPU at 5.0Ghz - ASROCK Z370 Ext 4 Motherboard - 32 GB RAM Corsair Vengeance - 512 GB Samsung SSD 850 Pro - Creative Sound Blaster Z
Soft Disable, means you need to press Numpad_0 (by default) to see the overlay. If this doesn't work, then something else is wrong and I can't exactly see what might be the problem:(
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
Do you see the green overlay? there are a couple of games i try and when i can't hunt i also can't see the green overlay...using an older version works in this case.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
Some things look suspecious to me but correct me if I'm wrong:
Error HRESULT 80004002 means "No such interface supported".
So it seems to me that there is some bug in 3Dmigoto :(
Any ideas for a fix?
Complete log file:
My 3D fixes with Helixmod for the Risen series on GitHub
Bo3b's School for Shaderhackers - starting point for your first 3D fix
Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/
Have you tried the 1.0.1 version of 3Dmigoto?
That version don't have overlay....only beeps and boops :)
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
With this results and the lack of frame analysis, I guess that using version 1.0.1 is no option to fix this game :(
My 3D fixes with Helixmod for the Risen series on GitHub
Bo3b's School for Shaderhackers - starting point for your first 3D fix
https://github.com/bo3b/3Dmigoto/releases?after=1.1.27
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
The problem here is that DXGI is not being hooked, probably because the game is loading DXGI earlier than we are, and thus we are locked out of the chain of hooks. Would be worth trying the DXGI loader that DarkStarSword posted about recently.
https://forums.geforce.com/default/topic/685657/3d-vision/3dmigoto-now-open-source-/post/5226990/#5226990
Still possible to fix the game, with some extra grief.
Run 1.2.65 and use it to dump the shaders in bulk. The reason to use it instead of 1.0.1 is because the Decompiler is hundreds of times better than it was in 1.0.1. Dump ASM files too if you think that might be easier or better.
Then run 1.0.1 to hunt the shaders you need. You won't want the fixed file, just the shader hash. You can then use the corresponding file from the 1.2.65 dump to work on it.
Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers
My 3D fixes with Helixmod for the Risen series on GitHub
Bo3b's School for Shaderhackers - starting point for your first 3D fix
gtx 1050ti last drivers
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
I don't know what is good, but using The Witcher 3 profile it is at least playable even if some HUD icons are not right.