The latest patch 1.53 broke War Thunder 3DVision for all renders in Air Combat mode. Tank Combat mode is fine.
As far as I can tell, after trying everything possible for the last 3 days, is that it it all boils down to the shadow setting. Turning shadows off fixes the cockpit (all be it it no longer has shadowing) but creates a veil running over the landscape. Turning shadows on with a quality setting [b]above[/b] minimum fixes the landscape by removing the moving shadow/veil but switches the broken cockpit shadow back on. A setting of minimum shadow quality removes the cockpit shadow but leaves the terrain issue. There is no setting that breaks the link between ground shadows and cockpit shadows.
Is it possible the one shader is causing this effect and can it be disabled in some way?
DX9 mode used to work but it now has the same problem.
I know War Thunder isn't popular with the resident Gurus but I would really appreciate anything you could throw my way short of giving up WT. I also know that you guys are going to be swallowed up by Fallout 4 soon and rightly so. :)
The latest patch 1.53 broke War Thunder 3DVision for all renders in Air Combat mode. Tank Combat mode is fine.
As far as I can tell, after trying everything possible for the last 3 days, is that it it all boils down to the shadow setting. Turning shadows off fixes the cockpit (all be it it no longer has shadowing) but creates a veil running over the landscape. Turning shadows on with a quality setting above minimum fixes the landscape by removing the moving shadow/veil but switches the broken cockpit shadow back on. A setting of minimum shadow quality removes the cockpit shadow but leaves the terrain issue. There is no setting that breaks the link between ground shadows and cockpit shadows.
Is it possible the one shader is causing this effect and can it be disabled in some way?
DX9 mode used to work but it now has the same problem.
I know War Thunder isn't popular with the resident Gurus but I would really appreciate anything you could throw my way short of giving up WT. I also know that you guys are going to be swallowed up by Fallout 4 soon and rightly so. :)
I'd love to see a proper fix for the air combat mode as well. Even just disabling shadows would be great since most of the rest of the rendering is already correct in 3d. I think there might be an blur effect on the horizon line that is at an incorrect depth as well but otherwise it looks great in 3d aside from shadows and not being able to disable them completely via config file is a known bug it seems. The game is free to play and you can use the test flight mode/mission editor for a plane to see it in action without people trying to shoot you down while trying to fix it. If someone who knows what they are doing has time to take a look that would be great!
I'd love to see a proper fix for the air combat mode as well. Even just disabling shadows would be great since most of the rest of the rendering is already correct in 3d. I think there might be an blur effect on the horizon line that is at an incorrect depth as well but otherwise it looks great in 3d aside from shadows and not being able to disable them completely via config file is a known bug it seems. The game is free to play and you can use the test flight mode/mission editor for a plane to see it in action without people trying to shoot you down while trying to fix it. If someone who knows what they are doing has time to take a look that would be great!
Core System Specs: CPU: i7 3960k @ 4.5, Rampage IV Extreme MB, PSU: Ultra X4 1200w, GPU: 2x GTX 980ti sli, 2x OCZ Vertex 3 240 SSD in raid 0 system drive, 2tb WD green storage, 16gb Ram, Win 7 64 & Win 10 dual boot. 3X Planar SA2311w monitors. 3x Acer 5360 projectors + immersive display pro blending, DK2
Should be possible to track down the shadow shader and disable it. With either HelixMod or 3Dmigoto you can do a context/texture specific tweak so that it disables only in the cockpit.
Disabling shaders is a pretty easy fix, I encourage either of you to give it at try, especially as this is your favored game.
If you post here, we can offer tips and suggestions. Tips we can do with limited time, fetching games and setting them up and hunting shaders is where it gets tricky to prioritize. If you do the legwork, we can help point you the right direction.
If you are starting from ground zero, start with my class for needed background and how to use the tools: http://wiki.bo3b.net
Should be possible to track down the shadow shader and disable it. With either HelixMod or 3Dmigoto you can do a context/texture specific tweak so that it disables only in the cockpit.
Disabling shaders is a pretty easy fix, I encourage either of you to give it at try, especially as this is your favored game.
If you post here, we can offer tips and suggestions. Tips we can do with limited time, fetching games and setting them up and hunting shaders is where it gets tricky to prioritize. If you do the legwork, we can help point you the right direction.
If you are starting from ground zero, start with my class for needed background and how to use the tools: http://wiki.bo3b.net
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
Thanks for taking the time to reply.
I have a feeling that I might get stuck really quickly but desire is a great motivator afterall.
Meanwhile I have found that the game is still playable by reducing separation to minimum and just using convergence to set 3D. Only downside is that enemy aircraft now look tiny but not smaller than they do in 2D anyway. I'll try to see if I can adjust to this change or maybe buy a huge monitor...
I have a feeling that I might get stuck really quickly but desire is a great motivator afterall.
Meanwhile I have found that the game is still playable by reducing separation to minimum and just using convergence to set 3D. Only downside is that enemy aircraft now look tiny but not smaller than they do in 2D anyway. I'll try to see if I can adjust to this change or maybe buy a huge monitor...
Gaijin added WaveWorks in War Thunder and because it is cross platform, they are making the CPU do all of the PhysX destruction.
War Thunder is the first game to get NVIDIA WaveWorks - See more at: http://blogs.nvidia.com/blog/2015/11/04/war-thunder/
"A Cross Platform Upgrade for All Most notable is the way Gaijin made WaveWorks and Destruction in War Thunder work for players on different gaming platforms. To maintain a level battlefield on the cross-platform 16-versus-16 multiplayer game, Gaijin took NVIDIA’s middleware source code and tweaked it to meet War Thunder’s requirements. So, NVIDIA PhysX Destruction executes on the CPU only, while WaveWorks takes a customized CPU/GPU implementation. This way all players will enjoy the same game-changing special effects and well-balanced gameplay. The result is a cross-platform upgrade for gamers on PC and console alike."
https://www.youtube.com/watch?v=WrBQqHOMiaw#t=104
So the big question is...How do the waves look in 3D?
Oh and is the CPU bottlenecking?
"A Cross Platform Upgrade for All Most notable is the way Gaijin made WaveWorks and Destruction in War Thunder work for players on different gaming platforms. To maintain a level battlefield on the cross-platform 16-versus-16 multiplayer game, Gaijin took NVIDIA’s middleware source code and tweaked it to meet War Thunder’s requirements. So, NVIDIA PhysX Destruction executes on the CPU only, while WaveWorks takes a customized CPU/GPU implementation. This way all players will enjoy the same game-changing special effects and well-balanced gameplay. The result is a cross-platform upgrade for gamers on PC and console alike."
#t=104
So the big question is...How do the waves look in 3D?
Hoping someone can point me in the right direction. I'm able to id and mark some shaders I'd like to either disable or push to infinity using 3dmigoto. It looks like this can be done in the d3dx.ini file but I can't seem to get it to take effect. The image shows the lines I edited to try and disable one shader using the hash from the marked shader to the left: [IMG]http://i68.tinypic.com/fk16kk.jpg[/IMG] Is there something else I need to edit or a better way to accomplish this?
Here is the full d3dx.ini text I have currently:
;------------------------------------------------------------------------------------------------------
; Logging options.
; Comment line or set value to 0 for no logging.
;------------------------------------------------------------------------------------------------------
[Logging]
; Log all API usage
calls=1
; Log Input key actions
input=1
; Super verbose massive log
debug=0
; Unbuffered logging to avoid missing anything at file end
unbuffered=0
; Force the CPU affinity to use only a single CPU for debugging multi-threaded
force_cpu_affinity=0
; Log NVAPI convergence modifications
convergence=1
; Log NVAPI separation modifications
separation=1
; ------------------------------------------------------------------------------------------------------
; Default constants to pass directly to shaders as IniParams
; ------------------------------------------------------------------------------------------------------
[Constants]
; x = 0.8
; y = 1.0
; z = 1.2
; w = 2.0
;------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
;
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle between several presets.
;
; Delays (type=hold only) and linear or cosine trasition periods (any key type)
; can be used to better synchonrise setting changes to the game's animations,
; or to smoothly adjust UI elements over a short period of time.
;
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; Keys can also be from XBox controllers using:
; XB_LEFT_TRIGGER, XB_RIGHT_TRIGGER,
; XB_LEFT_SHOULDER, XB_RIGHT_SHOULDER,
; XB_LEFT_THUMB, XB_RIGHT_THUMB,
; XB_DPAD_UP, XB_DPAD_DOWN, XB_DPAD_LEFT, XB_DPAD_RIGHT,
; XB_A, XB_B, XB_X, XB_Y, XB_START, XB_BACK
; By default all attached controllers are used - to associate a binding with a
; specific controller add the controller number 1-4 to the prefix, like
; XB2_LEFT_TRIGGER, though this may be more useful for hunting than playing.
;------------------------------------------------------------------------------------------------------
; Example for changing default settings
;[Key1]
;Key = z
;separation = 100.0
;convergence = 4.0
;x = 0.98
; Example to support momentary hold type overrides, like aiming.
;[Key2]
;Key = RBUTTON
;convergence = 0.1
;type = hold
; Example for a toggle override.
;[Key3]
;Key = q
;separation = 0.1
;type = toggle
;y = 0.0
; Example for a momentary hold, but with a delay followed by a smooth
; transition (ms) on hold and release to sync better with the game. Note that
; delay only works with type=hold (for now), while transitions will work with
; all types.
;[Key4]
;Key = XB_LEFT_TRIGGER
;type = hold
;y = 0.25
;delay = 100
;transition = 100
;transition_type = linear
;release_delay = 0
;release_transition = 500
;release_transition_type = cosine
; Example of a cycle transition that might be used to provide several presets
; that set both convergence and UI depth to suit different scenes in a game.
; Cosine transitions are used to smooth the changes over 1/10 of a second.
;[Key5]
;Key = Q
;type = cycle
;convergence = 1.45, 1.13, 0.98
;z = 0.25, 0.5, 0.75
;transition = 100
;transition_type = cosine
;------------------------------------------------------------------------------------------------------
; Shader hunting options.
; Default setup is to use keyboard similar to Helix presets
;------------------------------------------------------------------------------------------------------
[Hunting]
; 0: Release mode is with shader hunting disabled, optimized for speed.
; 1: Hunting mode enabled
; 2: Hunting mode "soft disabled" - can be turned on via the toggle_hunting key
hunting=1
; Highlight mode of currently selected shader / rendertarget.
; "skip" = skip shader. don't render anything using the currently selected shader.
; "original" = fall back to original shader if the currently selected shader was patched.
; "pink" = make the output hot pink to make it standout.
; "mono" = disable stereo for the selected shader / rendertarget.
; "zero" = shader output is all zero. NOTE: this has a big performance impact.
marking_mode=skip
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; XBox controllers are supported using the same bindings as the [Key] sections
; (see above). If the game already uses the first controller you might try
; using the second controller for hunting with e.g. XB2_LEFT_SHOULDER
; rotate through all VISIBLE pixel shaders at the current scene.
previous_pixelshader=VK_NUMPAD1
next_pixelshader=VK_NUMPAD2
mark_pixelshader=VK_NUMPAD3
; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader=VK_NUMPAD4
next_vertexshader=VK_NUMPAD5
mark_vertexshader=VK_NUMPAD6
; rotate through all USED index buffers at the current scene.
previous_indexbuffer=VK_NUMPAD7
next_indexbuffer=VK_NUMPAD8
mark_indexbuffer=VK_NUMPAD9
; rotate through all USED render targets at the current scene.
previous_rendertarget=VK_DIVIDE
next_rendertarget=VK_MULTIPLY
mark_rendertarget=VK_SUBTRACT
; rotate through all USED compute shaders at the current scene.
; Disabling compute shaders may cause crashes, so these are
; not enabled by default:
; previous_computeshader = <
; next_computeshader = >
; mark_computeshader = /
; Re-enable shaders once done with hunting:
done_hunting=VK_ADD
; Screenshot as pns
take_screenshot=VK_SNAPSHOT
; reload all fixes from ShaderFixes folder
reload_fixes=VK_F10
; Key to turn hunting itself on/off. This will also show/hide overlay.
; Hunting must be set to either 1 or 2 to enable this toggle.
toggle_hunting=VK_NUMPAD0
; Key to reload the settings from the the d3dx.ini without restarting. This can
; be the same key as reload_fixes for convenience, or a different key may be
; used to avoid resetting the ini parameters every time the shaders are
; reloaded. Note that not all settings can be reloaded, so if something doesn't
; work as expected you may still have to restart the game:
reload_config=VK_F11
; Hold this key to temporarily disable the fix - useful to quickly check what
; an effect looked like in the original game.
show_original=VK_F9
; tunable parameter to use in modified shaders as variable (StereoParams.Load(int3(1,0,0)).xyzw)
; enabling tuning results in a small performance hit because the parameter texture
;tune_enable=1
;tune_step=0.1
;tune1_up=VK_INSERT
;tune1_down=VK_DELETE
;tune2_up=X
;tune2_down=Z
; Auto-repeat key rate in events per second.
repeat_rate=6
; Dumps out the contents of each render target after every immediate draw call
; for the next frame. Takes up a large amount of space, so disabled by default.
;analyse_frame=VK_F8
; Specifies options for the frame analysis feature. Options can be combined by
; separating them with a space.
; dump_rt_jps: Dumps out render targets as JPS files. These are the easiest to
; work with and don't take up as much space as DDS files, but they
; are not dumped for every render target and are missing some data.
; dump_rt_dds: Dumps out render targets as DDS files. WARNING: This option may
; require hundreds of gigabytes and a long time! Only use it if
; you absolutely need more information than you can get otherwise.
; Will also dump buffer type render targets & UAVs as .buf files.
; dump_rt: Dumps render targets as JPS files when possible, or DDS when not.
; clear_rt: Clears each render target the first time they are used in the
; frame. Makes it easier to see what is being drawn if the game
; doesn't clear them, but might cause some effects not to render.
; dump_depth: Dumps depth/stencil targets as DDS files
; dump_tex_jps: Dumps textures as JPS files
; dump_tex_dds: Dumps textures as DDS files (Same warning as for dump_rt_dds)
; Will also dump buffer type shader resource views as .buf files.
; dump_tex: Dumps textures as JPS files when possible, or DDS when not.
; dump_cb: Dumps constant buffers as binary .buf files
; dump_cb_txt: Decodes constant buffers as an array of float4s
; dump_vb: Dumps vertex buffers as binary .buf files
; dump_vb_txt: Decodes vertex buffers as an array of float4s
; dump_ib: Dumps index buffers as binary .buf files
; dump_ib_txt: Decodes index buffers
; filename_reg: Normally the draw number is the first part of the filename so
; that the files will be sorted in the order they were used in
; the game. Sometimes it is more desirable to examine how a
; specific output changed through the frame and this option will
; place the register number first in the filename to allow that.
; mono: Dump out mono textures instead of stereo. To dump both, specify
; 'mono stereo'. If neither are specified, defaults to stereo.
; analyse_options can also be specified in [ShaderOverride*] and
; [TextureOverride*] sections to set up triggers to change the options mid-way
; through a frame analysis, either for a single draw call (default), or
; permanently (by adding the 'persist' keyword).
analyse_options = 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
;------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
;------------------------------------------------------------------------------------------------------
[Device]
; overrides screen resolution.
;width=1280
;height=720
; 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
; forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; a value of 0 doesn't deactivate this option like on the others but
; forces the application into windowed mode.
;full_screen=1
; some games explicitely disable stereo, prohibiting any stereo attempts.
; settings this to 1 ignores all stereo disabling calls and also calls NvAPI_Stereo_Enable to force stereo on.
;force_stereo=1
; almost all DX11 games deactivate window message handling.
; setting this to 1 reenables print screen handling, alt-tab key handling etc.
;allow_windowcommands=1
; Indicates where the resolution is obtained for texture hashes. Comment this
; out to never special case hashes that match the resolution or a multiple.
; Possible values are swap_chain and depth_stencil. Recommended to test which
; works for a given game (e.g. CryEngine always creates a swap chain that
; matches the native resolution so has to use depth_stencil).
get_resolution_from = swap_chain
;------------------------------------------------------------------------------------------------------
; Settings for NVidia stereo driver.
;------------------------------------------------------------------------------------------------------
[Stereo]
; games which have their own stereo renderer disable the NVidia automatic
; stereo mode and render themselves into stereo buffers (Crysis 3 for example).
; Setting this to 1 disables the game stereo renderer and enables NVidia auto stereo mechanism.
; This also forces 'false' as a return for any request for NvAPI_Stereo_IsEnabled.
automatic_mode=0
; Some games (CryEngine games, for example) lock the separation to a specific
; value, which can be undesirable. Set this to 1 to ignore these requests from
; the game to unlock the separation:
unlock_separation=0
; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
create_profile=0
; sets the global surface creation heuristic for NVidia stero driver.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings for surface creation mode.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - Always create stereo surfaces.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - Always create mono surfaces.
;surface_createmode=1
; overrides surface creation mode for square surfaces.
;surface_square_createmode=1
; Force the NvAPI_Initialize to return an error so that games think stereo and NVidia is unavailable.
force_no_nvapi=0
;------------------------------------------------------------------------------------------------------
; Settings for GPU manipulations.
; Render settings override
;------------------------------------------------------------------------------------------------------
[Rendering]
; GPU program manipulations.
;
; Shaders in game will be replaced by these custom shaders.
override_directory=ShaderFixes
; Automatically patched shaders will be written here if caching is enabled.
cache_directory=ShaderCache
; Shaders that are directly compiled by the game, instead of binary, go here.
storage_directory=ShaderFromGame
; cache all compiled .txt shaders into .bin. this removes loading stalls.
cache_shaders=0
; preload all patched shaders. there's a bug in NVidia auto stereoization if stereo shaders
; are being loaded during the game on some HW/SW combinations, which turns off auto patching
; for those stereo shaders (results in partial mono rendering). this is a workaround for this case.
preload_shaders=0
; thread save data structure access. required on multithreaded rendering.
use_criticalsection=1
; Setting this option disables scissor limits
rasterizer_disable_scissor=1
;------------------------------------------------------------------------------------------------------
; 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=6d4e116b42639689
; Custom stereo separation value while rendering objects using this shader.
;Separation=0
; Custom stereo convergence value while rendering objects using this
; shader (e.g. convergence=0 will move an object to infinity).
;Convergence=0
; don't draw anything using this shader.
Handling=skip
; advanced option: use this to override only if this shader is used rendering the given index buffer.
;IndexBufferFilter=6d4e116b42639689
; Use replaced shader only when there is no active depth buffer (for UI filtering)
;depth_filter = depth_inactive
; Use replaced shader only when there *IS* an active depth buffer (for UI filtering)
;depth_filter = depth_active
; Only use replaced shader when it is used in conjunction with a specific shader
; (e.g. to adjust a vertex shader ONLY when it is used with a specific pixel shader)
;partner=f838b144b658d062
; Assignes a dummy render target to o0. Use to fix one-eye rendering issues in
; shaders that only write to a depth target:
;fake_o0=1
; Override a value from [Constants] when this shader is used:
;x=2.0
; Pass the dimensions of the active render target and resolution (obtained with
; get_resolution_from) into the shader:
;x1=rt_width
;y1=rt_height
;z1=res_width
;w1=res_height
; Use t0 from active pixel shader for texture filtering. Will be 0 if no
; [TextureOverride*] section exists for the texture or 1 if one does. For advanced
; filtering, set a value for filter_index in the [TextureOverride] section.
;x2=ps-t0
;------------------------------------------------------------------------------------------------------
; 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.
;
;[TextureOverride1]
;Hash=c3e55ebdb0d20c35
; 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 = 27b9d07c9837f6a5
; 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
Hoping someone can point me in the right direction. I'm able to id and mark some shaders I'd like to either disable or push to infinity using 3dmigoto. It looks like this can be done in the d3dx.ini file but I can't seem to get it to take effect. The image shows the lines I edited to try and disable one shader using the hash from the marked shader to the left: Is there something else I need to edit or a better way to accomplish this?
Here is the full d3dx.ini text I have currently:
;------------------------------------------------------------------------------------------------------
; 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
;------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
;
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle between several presets.
;
; Delays (type=hold only) and linear or cosine trasition periods (any key type)
; can be used to better synchonrise setting changes to the game's animations,
; or to smoothly adjust UI elements over a short period of time.
;
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; Keys can also be from XBox controllers using:
; XB_LEFT_TRIGGER, XB_RIGHT_TRIGGER,
; XB_LEFT_SHOULDER, XB_RIGHT_SHOULDER,
; XB_LEFT_THUMB, XB_RIGHT_THUMB,
; XB_DPAD_UP, XB_DPAD_DOWN, XB_DPAD_LEFT, XB_DPAD_RIGHT,
; XB_A, XB_B, XB_X, XB_Y, XB_START, XB_BACK
; By default all attached controllers are used - to associate a binding with a
; specific controller add the controller number 1-4 to the prefix, like
; XB2_LEFT_TRIGGER, though this may be more useful for hunting than playing.
;------------------------------------------------------------------------------------------------------
; Example for changing default settings
;[Key1]
;Key = z
;separation = 100.0
;convergence = 4.0
;x = 0.98
; Example to support momentary hold type overrides, like aiming.
;[Key2]
;Key = RBUTTON
;convergence = 0.1
;type = hold
; Example for a toggle override.
;[Key3]
;Key = q
;separation = 0.1
;type = toggle
;y = 0.0
; Example for a momentary hold, but with a delay followed by a smooth
; transition (ms) on hold and release to sync better with the game. Note that
; delay only works with type=hold (for now), while transitions will work with
; all types.
;[Key4]
;Key = XB_LEFT_TRIGGER
;type = hold
;y = 0.25
;delay = 100
;transition = 100
;transition_type = linear
;release_delay = 0
;release_transition = 500
;release_transition_type = cosine
; Example of a cycle transition that might be used to provide several presets
; that set both convergence and UI depth to suit different scenes in a game.
; Cosine transitions are used to smooth the changes over 1/10 of a second.
;[Key5]
;Key = Q
;type = cycle
;convergence = 1.45, 1.13, 0.98
;z = 0.25, 0.5, 0.75
;transition = 100
;transition_type = cosine
;------------------------------------------------------------------------------------------------------
; Shader hunting options.
; Default setup is to use keyboard similar to Helix presets
;------------------------------------------------------------------------------------------------------
[Hunting]
; 0: Release mode is with shader hunting disabled, optimized for speed.
; 1: Hunting mode enabled
; 2: Hunting mode "soft disabled" - can be turned on via the toggle_hunting key
hunting=1
; Highlight mode of currently selected shader / rendertarget.
; "skip" = skip shader. don't render anything using the currently selected shader.
; "original" = fall back to original shader if the currently selected shader was patched.
; "pink" = make the output hot pink to make it standout.
; "mono" = disable stereo for the selected shader / rendertarget.
; "zero" = shader output is all zero. NOTE: this has a big performance impact.
marking_mode=skip
;
; XBox controllers are supported using the same bindings as the [Key] sections
; (see above). If the game already uses the first controller you might try
; using the second controller for hunting with e.g. XB2_LEFT_SHOULDER
; rotate through all VISIBLE pixel shaders at the current scene.
previous_pixelshader=VK_NUMPAD1
next_pixelshader=VK_NUMPAD2
mark_pixelshader=VK_NUMPAD3
; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader=VK_NUMPAD4
next_vertexshader=VK_NUMPAD5
mark_vertexshader=VK_NUMPAD6
; rotate through all USED index buffers at the current scene.
previous_indexbuffer=VK_NUMPAD7
next_indexbuffer=VK_NUMPAD8
mark_indexbuffer=VK_NUMPAD9
; rotate through all USED render targets at the current scene.
previous_rendertarget=VK_DIVIDE
next_rendertarget=VK_MULTIPLY
mark_rendertarget=VK_SUBTRACT
; rotate through all USED compute shaders at the current scene.
; Disabling compute shaders may cause crashes, so these are
; not enabled by default:
; previous_computeshader = <
; next_computeshader = >
; mark_computeshader = /
; Re-enable shaders once done with hunting:
done_hunting=VK_ADD
; Screenshot as pns
take_screenshot=VK_SNAPSHOT
; reload all fixes from ShaderFixes folder
reload_fixes=VK_F10
; Key to turn hunting itself on/off. This will also show/hide overlay.
; Hunting must be set to either 1 or 2 to enable this toggle.
toggle_hunting=VK_NUMPAD0
; Key to reload the settings from the the d3dx.ini without restarting. This can
; be the same key as reload_fixes for convenience, or a different key may be
; used to avoid resetting the ini parameters every time the shaders are
; reloaded. Note that not all settings can be reloaded, so if something doesn't
; work as expected you may still have to restart the game:
reload_config=VK_F11
; Hold this key to temporarily disable the fix - useful to quickly check what
; an effect looked like in the original game.
show_original=VK_F9
; tunable parameter to use in modified shaders as variable (StereoParams.Load(int3(1,0,0)).xyzw)
; enabling tuning results in a small performance hit because the parameter texture
;tune_enable=1
;tune_step=0.1
;tune1_up=VK_INSERT
;tune1_down=VK_DELETE
;tune2_up=X
;tune2_down=Z
; Auto-repeat key rate in events per second.
repeat_rate=6
; Dumps out the contents of each render target after every immediate draw call
; for the next frame. Takes up a large amount of space, so disabled by default.
;analyse_frame=VK_F8
; Specifies options for the frame analysis feature. Options can be combined by
; separating them with a space.
; dump_rt_jps: Dumps out render targets as JPS files. These are the easiest to
; work with and don't take up as much space as DDS files, but they
; are not dumped for every render target and are missing some data.
; dump_rt_dds: Dumps out render targets as DDS files. WARNING: This option may
; require hundreds of gigabytes and a long time! Only use it if
; you absolutely need more information than you can get otherwise.
; Will also dump buffer type render targets & UAVs as .buf files.
; dump_rt: Dumps render targets as JPS files when possible, or DDS when not.
; clear_rt: Clears each render target the first time they are used in the
; frame. Makes it easier to see what is being drawn if the game
; doesn't clear them, but might cause some effects not to render.
; dump_depth: Dumps depth/stencil targets as DDS files
; dump_tex_jps: Dumps textures as JPS files
; dump_tex_dds: Dumps textures as DDS files (Same warning as for dump_rt_dds)
; Will also dump buffer type shader resource views as .buf files.
; dump_tex: Dumps textures as JPS files when possible, or DDS when not.
; dump_cb: Dumps constant buffers as binary .buf files
; dump_cb_txt: Decodes constant buffers as an array of float4s
; dump_vb: Dumps vertex buffers as binary .buf files
; dump_vb_txt: Decodes vertex buffers as an array of float4s
; dump_ib: Dumps index buffers as binary .buf files
; dump_ib_txt: Decodes index buffers
; filename_reg: Normally the draw number is the first part of the filename so
; that the files will be sorted in the order they were used in
; the game. Sometimes it is more desirable to examine how a
; specific output changed through the frame and this option will
; place the register number first in the filename to allow that.
; mono: Dump out mono textures instead of stereo. To dump both, specify
; 'mono stereo'. If neither are specified, defaults to stereo.
; analyse_options can also be specified in [ShaderOverride*] and
; [TextureOverride*] sections to set up triggers to change the options mid-way
; through a frame analysis, either for a single draw call (default), or
; permanently (by adding the 'persist' keyword).
analyse_options = dump_rt_jps clear_rt
;------------------------------------------------------------------------------------------------------
; Chain load other wrapper DLLs instead of system DLLs.
;------------------------------------------------------------------------------------------------------
[System]
;------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
;------------------------------------------------------------------------------------------------------
[Device]
; 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
; forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; a value of 0 doesn't deactivate this option like on the others but
; forces the application into windowed mode.
;full_screen=1
; some games explicitely disable stereo, prohibiting any stereo attempts.
; settings this to 1 ignores all stereo disabling calls and also calls NvAPI_Stereo_Enable to force stereo on.
;force_stereo=1
; almost all DX11 games deactivate window message handling.
; setting this to 1 reenables print screen handling, alt-tab key handling etc.
;allow_windowcommands=1
; Indicates where the resolution is obtained for texture hashes. Comment this
; out to never special case hashes that match the resolution or a multiple.
; Possible values are swap_chain and depth_stencil. Recommended to test which
; works for a given game (e.g. CryEngine always creates a swap chain that
; matches the native resolution so has to use depth_stencil).
get_resolution_from = swap_chain
;------------------------------------------------------------------------------------------------------
; Settings for NVidia stereo driver.
;------------------------------------------------------------------------------------------------------
[Stereo]
; games which have their own stereo renderer disable the NVidia automatic
; stereo mode and render themselves into stereo buffers (Crysis 3 for example).
; Setting this to 1 disables the game stereo renderer and enables NVidia auto stereo mechanism.
; This also forces 'false' as a return for any request for NvAPI_Stereo_IsEnabled.
automatic_mode=0
; Some games (CryEngine games, for example) lock the separation to a specific
; value, which can be undesirable. Set this to 1 to ignore these requests from
; the game to unlock the separation:
unlock_separation=0
; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
create_profile=0
; sets the global surface creation heuristic for NVidia stero driver.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings for surface creation mode.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - Always create stereo surfaces.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - Always create mono surfaces.
;surface_createmode=1
; overrides surface creation mode for square surfaces.
;surface_square_createmode=1
; Force the NvAPI_Initialize to return an error so that games think stereo and NVidia is unavailable.
force_no_nvapi=0
; GPU program manipulations.
;
; Shaders in game will be replaced by these custom shaders.
override_directory=ShaderFixes
; Automatically patched shaders will be written here if caching is enabled.
cache_directory=ShaderCache
; Shaders that are directly compiled by the game, instead of binary, go here.
storage_directory=ShaderFromGame
; cache all compiled .txt shaders into .bin. this removes loading stalls.
cache_shaders=0
; preload all patched shaders. there's a bug in NVidia auto stereoization if stereo shaders
; are being loaded during the game on some HW/SW combinations, which turns off auto patching
; for those stereo shaders (results in partial mono rendering). this is a workaround for this case.
preload_shaders=0
; thread save data structure access. required on multithreaded rendering.
use_criticalsection=1
; Setting this option disables scissor limits
rasterizer_disable_scissor=1
;------------------------------------------------------------------------------------------------------
; 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=6d4e116b42639689
; Custom stereo separation value while rendering objects using this shader.
;Separation=0
; Custom stereo convergence value while rendering objects using this
; shader (e.g. convergence=0 will move an object to infinity).
;Convergence=0
; don't draw anything using this shader.
Handling=skip
; advanced option: use this to override only if this shader is used rendering the given index buffer.
;IndexBufferFilter=6d4e116b42639689
; Use replaced shader only when there is no active depth buffer (for UI filtering)
;depth_filter = depth_inactive
; Use replaced shader only when there *IS* an active depth buffer (for UI filtering)
;depth_filter = depth_active
; Only use replaced shader when it is used in conjunction with a specific shader
; (e.g. to adjust a vertex shader ONLY when it is used with a specific pixel shader)
;partner=f838b144b658d062
; Assignes a dummy render target to o0. Use to fix one-eye rendering issues in
; shaders that only write to a depth target:
;fake_o0=1
; Override a value from [Constants] when this shader is used:
;x=2.0
; Pass the dimensions of the active render target and resolution (obtained with
; get_resolution_from) into the shader:
;x1=rt_width
;y1=rt_height
;z1=res_width
;w1=res_height
; Use t0 from active pixel shader for texture filtering. Will be 0 if no
; [TextureOverride*] section exists for the texture or 1 if one does. For advanced
; filtering, set a value for filter_index in the [TextureOverride] section.
;x2=ps-t0
;------------------------------------------------------------------------------------------------------
; 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.
;
;[TextureOverride1]
;Hash=c3e55ebdb0d20c35
; 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 = 27b9d07c9837f6a5
; 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
Core System Specs: CPU: i7 3960k @ 4.5, Rampage IV Extreme MB, PSU: Ultra X4 1200w, GPU: 2x GTX 980ti sli, 2x OCZ Vertex 3 240 SSD in raid 0 system drive, 2tb WD green storage, 16gb Ram, Win 7 64 & Win 10 dual boot. 3X Planar SA2311w monitors. 3x Acer 5360 projectors + immersive display pro blending, DK2
I made an[url=http://helixmod.blogspot.com/2015/05/war-thunder-tank-only.html] Helix fix[/url] for the dx9 usage because it was only this one which had not shadow problems.
I made it because the tank crosshair was not at the right depht. Have they push the crosshair so you can use it to aim ?
Anyway, there was some special dx9 settings to use in order to have a 3dvision working (as written in the link). Are they broken ?
Unfortunately I uninstall WT as I do not have too much time to play it...
I made an Helix fix for the dx9 usage because it was only this one which had not shadow problems.
I made it because the tank crosshair was not at the right depht. Have they push the crosshair so you can use it to aim ?
Anyway, there was some special dx9 settings to use in order to have a 3dvision working (as written in the link). Are they broken ?
Unfortunately I uninstall WT as I do not have too much time to play it...
Thanks, I did try that but it didn't help on the air combat side. I have been able to get the d3dx.ini file edits to work with 3dmigoto for the dx11 version after a restart so I'm not sure what the problem was before but I'm making progress now. If anyone else is interested in what I have so far just add the following lines to the to the d3dx.ini file after you extract 3dmigoto [url]https://github.com/bo3b/3Dmigoto/releases[/url] (32 bit version) to the warthunder game folder, still have to use low depth + higher convergence to avoid ground shadow issues but these 2 fixes help a lot:
;remove cloud reflections effect
[ShaderOverride1]
Hash=6d4e116b42639689
Handling=skip
; Move horizon effect to infinity
[ShaderOverride2]
Hash=c6e4f19a1f30a71e
Convergence=0
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/67029/[/img]
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/67030/[/img]
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/67031/[/img]
Thanks, I did try that but it didn't help on the air combat side. I have been able to get the d3dx.ini file edits to work with 3dmigoto for the dx11 version after a restart so I'm not sure what the problem was before but I'm making progress now. If anyone else is interested in what I have so far just add the following lines to the to the d3dx.ini file after you extract 3dmigoto https://github.com/bo3b/3Dmigoto/releases (32 bit version) to the warthunder game folder, still have to use low depth + higher convergence to avoid ground shadow issues but these 2 fixes help a lot:
First off I would Like to offer a huge thanks for these brilliant tools and guides. I never thought it would be possible for me to fix War Thunder for myself and while I haven't actually fixed anything I can disable the shaders that were giving me grief.
I haven't scratched the surface yet of what is possible but I am now paying attention.
At the risk of further embarrassment I fixed my problems by marking the shaders and having them written to the Shaderfixes folder. I then went in and changed 'replace' to 'bad' in the file name. Edited the files and deleted everything in them just putting in ps_4_0 or vs_4_0 depending on whether they were pixel or vertex shader files. (Any invisible characters stopped this working i.e using cut-and-paste instead of typing ps_4_0 could lead to problems.) Then I run the game, press F10 (hunting=2 in d3dx.ini) and the faulty shaders are off. Brilliant!
I would like to know if there is a simpler way to do this (not that this isn't simple enough) but I feel I just got lucky due to the brilliant versatility of the tools. Also in future it would be good for others not to have to press F10 at the start of a game but automatically have the bad shaders skipped. I just don't know yet how this is done. (Although the post by someskunkfunk above seems like an answer.)
As an aside there is a problem with the veil shadow thing running over the ground. To fix it AntiAliasing has to be turned off (Use FXAA or SweetFX instead), set Shadows Quality to Very High and turn on Water Refraction (why is this even related?). The cockpit shadows can be turned off using some shader hunting as outlined above.
So far I have 10 shaders disabled including cloud layer showing through everything, triple dots for aircraft and of course cockpit shadows. Some small light reflections are still only showing in one eye so I'd like to learn how these are fixed or omitted. My next goal as it were.
2b1e982392fa63ca
4d0b9971583477cd
72afcb6817673e8e
7b61c1c502f4ac34
848b341a64229614
887e66f25827a93e
a216b1038ad963e7
ba05ad1d4e589a16
baad479f72cfadff
f838b144b658d062
Flushed with success I had a look at Company of Heroes 2 but that is another kettle of fish altogether...
First off I would Like to offer a huge thanks for these brilliant tools and guides. I never thought it would be possible for me to fix War Thunder for myself and while I haven't actually fixed anything I can disable the shaders that were giving me grief.
I haven't scratched the surface yet of what is possible but I am now paying attention.
At the risk of further embarrassment I fixed my problems by marking the shaders and having them written to the Shaderfixes folder. I then went in and changed 'replace' to 'bad' in the file name. Edited the files and deleted everything in them just putting in ps_4_0 or vs_4_0 depending on whether they were pixel or vertex shader files. (Any invisible characters stopped this working i.e using cut-and-paste instead of typing ps_4_0 could lead to problems.) Then I run the game, press F10 (hunting=2 in d3dx.ini) and the faulty shaders are off. Brilliant!
I would like to know if there is a simpler way to do this (not that this isn't simple enough) but I feel I just got lucky due to the brilliant versatility of the tools. Also in future it would be good for others not to have to press F10 at the start of a game but automatically have the bad shaders skipped. I just don't know yet how this is done. (Although the post by someskunkfunk above seems like an answer.)
As an aside there is a problem with the veil shadow thing running over the ground. To fix it AntiAliasing has to be turned off (Use FXAA or SweetFX instead), set Shadows Quality to Very High and turn on Water Refraction (why is this even related?). The cockpit shadows can be turned off using some shader hunting as outlined above.
So far I have 10 shaders disabled including cloud layer showing through everything, triple dots for aircraft and of course cockpit shadows. Some small light reflections are still only showing in one eye so I'd like to learn how these are fixed or omitted. My next goal as it were.
It looks like the latest patch changed some of the hash id's from when I last looked at it but yes, the simple way to disable a series of shaders on startup is to add the following lines to the d3dx.ini file:
[ShaderOverride1]
Hash=2b1e982392fa63ca
Handling=skip
[ShaderOverride2]
Hash=4d0b9971583477cd
Handling=skip
[ShaderOverride3]
Hash=72afcb6817673e8e
Handling=skip
etc...
just number each [ShaderOverride1] sequentially 1,2,3 etc... and change the hash id for each you want disabled.
It looks like the latest patch changed some of the hash id's from when I last looked at it but yes, the simple way to disable a series of shaders on startup is to add the following lines to the d3dx.ini file:
That worked great - Thanks!
Forgot about all the patching but other fixes are not affected by this with hash values changing?
Have drawn a blank with the lighting and halos. Shader hunting and settings didn't help.
Have gone back to min separation and lots of convergence with just the cloud layer fix in place. Looks best anyway but judging distance and small targets make it harder than big separation lower convergence.
Forgot about all the patching but other fixes are not affected by this with hash values changing?
Have drawn a blank with the lighting and halos. Shader hunting and settings didn't help.
Have gone back to min separation and lots of convergence with just the cloud layer fix in place. Looks best anyway but judging distance and small targets make it harder than big separation lower convergence.
As far as I can tell, after trying everything possible for the last 3 days, is that it it all boils down to the shadow setting. Turning shadows off fixes the cockpit (all be it it no longer has shadowing) but creates a veil running over the landscape. Turning shadows on with a quality setting above minimum fixes the landscape by removing the moving shadow/veil but switches the broken cockpit shadow back on. A setting of minimum shadow quality removes the cockpit shadow but leaves the terrain issue. There is no setting that breaks the link between ground shadows and cockpit shadows.
Is it possible the one shader is causing this effect and can it be disabled in some way?
DX9 mode used to work but it now has the same problem.
I know War Thunder isn't popular with the resident Gurus but I would really appreciate anything you could throw my way short of giving up WT. I also know that you guys are going to be swallowed up by Fallout 4 soon and rightly so. :)
Win7 64 16GB I5-4570 Asus Z87-A
GTX 1080 Benq XL 27" 3DVision 2
Core System Specs: CPU: i7 3960k @ 4.5, Rampage IV Extreme MB, PSU: Ultra X4 1200w, GPU: 2x GTX 980ti sli, 2x OCZ Vertex 3 240 SSD in raid 0 system drive, 2tb WD green storage, 16gb Ram, Win 7 64 & Win 10 dual boot. 3X Planar SA2311w monitors. 3x Acer 5360 projectors + immersive display pro blending, DK2
Disabling shaders is a pretty easy fix, I encourage either of you to give it at try, especially as this is your favored game.
If you post here, we can offer tips and suggestions. Tips we can do with limited time, fetching games and setting them up and hunting shaders is where it gets tricky to prioritize. If you do the legwork, we can help point you the right direction.
If you are starting from ground zero, start with my class for needed background and how to use the tools: http://wiki.bo3b.net
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 have a feeling that I might get stuck really quickly but desire is a great motivator afterall.
Meanwhile I have found that the game is still playable by reducing separation to minimum and just using convergence to set 3D. Only downside is that enemy aircraft now look tiny but not smaller than they do in 2D anyway. I'll try to see if I can adjust to this change or maybe buy a huge monitor...
Win7 64 16GB I5-4570 Asus Z87-A
GTX 1080 Benq XL 27" 3DVision 2
War Thunder is the first game to get NVIDIA WaveWorks - See more at: http://blogs.nvidia.com/blog/2015/11/04/war-thunder/
"A Cross Platform Upgrade for All Most notable is the way Gaijin made WaveWorks and Destruction in War Thunder work for players on different gaming platforms. To maintain a level battlefield on the cross-platform 16-versus-16 multiplayer game, Gaijin took NVIDIA’s middleware source code and tweaked it to meet War Thunder’s requirements. So, NVIDIA PhysX Destruction executes on the CPU only, while WaveWorks takes a customized CPU/GPU implementation. This way all players will enjoy the same game-changing special effects and well-balanced gameplay. The result is a cross-platform upgrade for gamers on PC and console alike."
#t=104
So the big question is...How do the waves look in 3D?
Oh and is the CPU bottlenecking?
Here is the full d3dx.ini text I have currently:
;------------------------------------------------------------------------------------------------------
; Logging options.
; Comment line or set value to 0 for no logging.
;------------------------------------------------------------------------------------------------------
[Logging]
; Log all API usage
calls=1
; Log Input key actions
input=1
; Super verbose massive log
debug=0
; Unbuffered logging to avoid missing anything at file end
unbuffered=0
; Force the CPU affinity to use only a single CPU for debugging multi-threaded
force_cpu_affinity=0
; Log NVAPI convergence modifications
convergence=1
; Log NVAPI separation modifications
separation=1
; ------------------------------------------------------------------------------------------------------
; Default constants to pass directly to shaders as IniParams
; ------------------------------------------------------------------------------------------------------
[Constants]
; x = 0.8
; y = 1.0
; z = 1.2
; w = 2.0
;------------------------------------------------------------------------------------------------------
; Custom settings override for any of [convergence, separation, x, y, z, w]
;
; Four types are supported - by default the bindings will simply load the
; configured settings, but type=hold can be specified to have a preset
; active while the button is held, type=toggle can be used to make a simple
; on/off toggle, and type=cycle can be used to cycle between several presets.
;
; Delays (type=hold only) and linear or cosine trasition periods (any key type)
; can be used to better synchonrise setting changes to the game's animations,
; or to smoothly adjust UI elements over a short period of time.
;
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; Keys can also be from XBox controllers using:
; XB_LEFT_TRIGGER, XB_RIGHT_TRIGGER,
; XB_LEFT_SHOULDER, XB_RIGHT_SHOULDER,
; XB_LEFT_THUMB, XB_RIGHT_THUMB,
; XB_DPAD_UP, XB_DPAD_DOWN, XB_DPAD_LEFT, XB_DPAD_RIGHT,
; XB_A, XB_B, XB_X, XB_Y, XB_START, XB_BACK
; By default all attached controllers are used - to associate a binding with a
; specific controller add the controller number 1-4 to the prefix, like
; XB2_LEFT_TRIGGER, though this may be more useful for hunting than playing.
;------------------------------------------------------------------------------------------------------
; Example for changing default settings
;[Key1]
;Key = z
;separation = 100.0
;convergence = 4.0
;x = 0.98
; Example to support momentary hold type overrides, like aiming.
;[Key2]
;Key = RBUTTON
;convergence = 0.1
;type = hold
; Example for a toggle override.
;[Key3]
;Key = q
;separation = 0.1
;type = toggle
;y = 0.0
; Example for a momentary hold, but with a delay followed by a smooth
; transition (ms) on hold and release to sync better with the game. Note that
; delay only works with type=hold (for now), while transitions will work with
; all types.
;[Key4]
;Key = XB_LEFT_TRIGGER
;type = hold
;y = 0.25
;delay = 100
;transition = 100
;transition_type = linear
;release_delay = 0
;release_transition = 500
;release_transition_type = cosine
; Example of a cycle transition that might be used to provide several presets
; that set both convergence and UI depth to suit different scenes in a game.
; Cosine transitions are used to smooth the changes over 1/10 of a second.
;[Key5]
;Key = Q
;type = cycle
;convergence = 1.45, 1.13, 0.98
;z = 0.25, 0.5, 0.75
;transition = 100
;transition_type = cosine
;------------------------------------------------------------------------------------------------------
; Shader hunting options.
; Default setup is to use keyboard similar to Helix presets
;------------------------------------------------------------------------------------------------------
[Hunting]
; 0: Release mode is with shader hunting disabled, optimized for speed.
; 1: Hunting mode enabled
; 2: Hunting mode "soft disabled" - can be turned on via the toggle_hunting key
hunting=1
; Highlight mode of currently selected shader / rendertarget.
; "skip" = skip shader. don't render anything using the currently selected shader.
; "original" = fall back to original shader if the currently selected shader was patched.
; "pink" = make the output hot pink to make it standout.
; "mono" = disable stereo for the selected shader / rendertarget.
; "zero" = shader output is all zero. NOTE: this has a big performance impact.
marking_mode=skip
; Key bindings: For A-Z and 0-9 on the number row, just use that single
; character. For everything else (including mouse buttons), use the virtual key
; name (with or without the VK_ prefix) or hex code from this article:
; http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
;
; XBox controllers are supported using the same bindings as the [Key] sections
; (see above). If the game already uses the first controller you might try
; using the second controller for hunting with e.g. XB2_LEFT_SHOULDER
; rotate through all VISIBLE pixel shaders at the current scene.
previous_pixelshader=VK_NUMPAD1
next_pixelshader=VK_NUMPAD2
mark_pixelshader=VK_NUMPAD3
; rotate through all VISIBLE vertex shaders at the current scene.
previous_vertexshader=VK_NUMPAD4
next_vertexshader=VK_NUMPAD5
mark_vertexshader=VK_NUMPAD6
; rotate through all USED index buffers at the current scene.
previous_indexbuffer=VK_NUMPAD7
next_indexbuffer=VK_NUMPAD8
mark_indexbuffer=VK_NUMPAD9
; rotate through all USED render targets at the current scene.
previous_rendertarget=VK_DIVIDE
next_rendertarget=VK_MULTIPLY
mark_rendertarget=VK_SUBTRACT
; rotate through all USED compute shaders at the current scene.
; Disabling compute shaders may cause crashes, so these are
; not enabled by default:
; previous_computeshader = <
; next_computeshader = >
; mark_computeshader = /
; Re-enable shaders once done with hunting:
done_hunting=VK_ADD
; Screenshot as pns
take_screenshot=VK_SNAPSHOT
; reload all fixes from ShaderFixes folder
reload_fixes=VK_F10
; Key to turn hunting itself on/off. This will also show/hide overlay.
; Hunting must be set to either 1 or 2 to enable this toggle.
toggle_hunting=VK_NUMPAD0
; Key to reload the settings from the the d3dx.ini without restarting. This can
; be the same key as reload_fixes for convenience, or a different key may be
; used to avoid resetting the ini parameters every time the shaders are
; reloaded. Note that not all settings can be reloaded, so if something doesn't
; work as expected you may still have to restart the game:
reload_config=VK_F11
; Hold this key to temporarily disable the fix - useful to quickly check what
; an effect looked like in the original game.
show_original=VK_F9
; tunable parameter to use in modified shaders as variable (StereoParams.Load(int3(1,0,0)).xyzw)
; enabling tuning results in a small performance hit because the parameter texture
;tune_enable=1
;tune_step=0.1
;tune1_up=VK_INSERT
;tune1_down=VK_DELETE
;tune2_up=X
;tune2_down=Z
; Auto-repeat key rate in events per second.
repeat_rate=6
; Dumps out the contents of each render target after every immediate draw call
; for the next frame. Takes up a large amount of space, so disabled by default.
;analyse_frame=VK_F8
; Specifies options for the frame analysis feature. Options can be combined by
; separating them with a space.
; dump_rt_jps: Dumps out render targets as JPS files. These are the easiest to
; work with and don't take up as much space as DDS files, but they
; are not dumped for every render target and are missing some data.
; dump_rt_dds: Dumps out render targets as DDS files. WARNING: This option may
; require hundreds of gigabytes and a long time! Only use it if
; you absolutely need more information than you can get otherwise.
; Will also dump buffer type render targets & UAVs as .buf files.
; dump_rt: Dumps render targets as JPS files when possible, or DDS when not.
; clear_rt: Clears each render target the first time they are used in the
; frame. Makes it easier to see what is being drawn if the game
; doesn't clear them, but might cause some effects not to render.
; dump_depth: Dumps depth/stencil targets as DDS files
; dump_tex_jps: Dumps textures as JPS files
; dump_tex_dds: Dumps textures as DDS files (Same warning as for dump_rt_dds)
; Will also dump buffer type shader resource views as .buf files.
; dump_tex: Dumps textures as JPS files when possible, or DDS when not.
; dump_cb: Dumps constant buffers as binary .buf files
; dump_cb_txt: Decodes constant buffers as an array of float4s
; dump_vb: Dumps vertex buffers as binary .buf files
; dump_vb_txt: Decodes vertex buffers as an array of float4s
; dump_ib: Dumps index buffers as binary .buf files
; dump_ib_txt: Decodes index buffers
; filename_reg: Normally the draw number is the first part of the filename so
; that the files will be sorted in the order they were used in
; the game. Sometimes it is more desirable to examine how a
; specific output changed through the frame and this option will
; place the register number first in the filename to allow that.
; mono: Dump out mono textures instead of stereo. To dump both, specify
; 'mono stereo'. If neither are specified, defaults to stereo.
; analyse_options can also be specified in [ShaderOverride*] and
; [TextureOverride*] sections to set up triggers to change the options mid-way
; through a frame analysis, either for a single draw call (default), or
; permanently (by adding the 'persist' keyword).
analyse_options = 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
;------------------------------------------------------------------------------------------------------
; Settings to force display device to a specific mode.
; Uncomment a value to force the specific setting.
;------------------------------------------------------------------------------------------------------
[Device]
; overrides screen resolution.
;width=1280
;height=720
; 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
; forces creation of full screen devices and swap chains.
; use this for 3dtvplay if game won't active stereo mode.
; a value of 0 doesn't deactivate this option like on the others but
; forces the application into windowed mode.
;full_screen=1
; some games explicitely disable stereo, prohibiting any stereo attempts.
; settings this to 1 ignores all stereo disabling calls and also calls NvAPI_Stereo_Enable to force stereo on.
;force_stereo=1
; almost all DX11 games deactivate window message handling.
; setting this to 1 reenables print screen handling, alt-tab key handling etc.
;allow_windowcommands=1
; Indicates where the resolution is obtained for texture hashes. Comment this
; out to never special case hashes that match the resolution or a multiple.
; Possible values are swap_chain and depth_stencil. Recommended to test which
; works for a given game (e.g. CryEngine always creates a swap chain that
; matches the native resolution so has to use depth_stencil).
get_resolution_from = swap_chain
;------------------------------------------------------------------------------------------------------
; Settings for NVidia stereo driver.
;------------------------------------------------------------------------------------------------------
[Stereo]
; games which have their own stereo renderer disable the NVidia automatic
; stereo mode and render themselves into stereo buffers (Crysis 3 for example).
; Setting this to 1 disables the game stereo renderer and enables NVidia auto stereo mechanism.
; This also forces 'false' as a return for any request for NvAPI_Stereo_IsEnabled.
automatic_mode=0
; Some games (CryEngine games, for example) lock the separation to a specific
; value, which can be undesirable. Set this to 1 to ignore these requests from
; the game to unlock the separation:
unlock_separation=0
; games without predefined profiles can't save stereo settings.
; enabling this options automatically creates a profile for unknown games.
create_profile=0
; sets the global surface creation heuristic for NVidia stero driver.
; 0 = NVAPI_STEREO_SURFACECREATEMODE_AUTO - use driver registry profile settings for surface creation mode.
; 1 = NVAPI_STEREO_SURFACECREATEMODE_FORCESTEREO - Always create stereo surfaces.
; 2 = NVAPI_STEREO_SURFACECREATEMODE_FORCEMONO - Always create mono surfaces.
;surface_createmode=1
; overrides surface creation mode for square surfaces.
;surface_square_createmode=1
; Force the NvAPI_Initialize to return an error so that games think stereo and NVidia is unavailable.
force_no_nvapi=0
;------------------------------------------------------------------------------------------------------
; Settings for GPU manipulations.
; Render settings override
;------------------------------------------------------------------------------------------------------
[Rendering]
; GPU program manipulations.
;
; Shaders in game will be replaced by these custom shaders.
override_directory=ShaderFixes
; Automatically patched shaders will be written here if caching is enabled.
cache_directory=ShaderCache
; Shaders that are directly compiled by the game, instead of binary, go here.
storage_directory=ShaderFromGame
; cache all compiled .txt shaders into .bin. this removes loading stalls.
cache_shaders=0
; preload all patched shaders. there's a bug in NVidia auto stereoization if stereo shaders
; are being loaded during the game on some HW/SW combinations, which turns off auto patching
; for those stereo shaders (results in partial mono rendering). this is a workaround for this case.
preload_shaders=0
; thread save data structure access. required on multithreaded rendering.
use_criticalsection=1
; Setting this option disables scissor limits
rasterizer_disable_scissor=1
;------------------------------------------------------------------------------------------------------
; 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=6d4e116b42639689
; Custom stereo separation value while rendering objects using this shader.
;Separation=0
; Custom stereo convergence value while rendering objects using this
; shader (e.g. convergence=0 will move an object to infinity).
;Convergence=0
; don't draw anything using this shader.
Handling=skip
; advanced option: use this to override only if this shader is used rendering the given index buffer.
;IndexBufferFilter=6d4e116b42639689
; Use replaced shader only when there is no active depth buffer (for UI filtering)
;depth_filter = depth_inactive
; Use replaced shader only when there *IS* an active depth buffer (for UI filtering)
;depth_filter = depth_active
; Only use replaced shader when it is used in conjunction with a specific shader
; (e.g. to adjust a vertex shader ONLY when it is used with a specific pixel shader)
;partner=f838b144b658d062
; Assignes a dummy render target to o0. Use to fix one-eye rendering issues in
; shaders that only write to a depth target:
;fake_o0=1
; Override a value from [Constants] when this shader is used:
;x=2.0
; Pass the dimensions of the active render target and resolution (obtained with
; get_resolution_from) into the shader:
;x1=rt_width
;y1=rt_height
;z1=res_width
;w1=res_height
; Use t0 from active pixel shader for texture filtering. Will be 0 if no
; [TextureOverride*] section exists for the texture or 1 if one does. For advanced
; filtering, set a value for filter_index in the [TextureOverride] section.
;x2=ps-t0
;------------------------------------------------------------------------------------------------------
; 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.
;
;[TextureOverride1]
;Hash=c3e55ebdb0d20c35
; 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 = 27b9d07c9837f6a5
; 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
Core System Specs: CPU: i7 3960k @ 4.5, Rampage IV Extreme MB, PSU: Ultra X4 1200w, GPU: 2x GTX 980ti sli, 2x OCZ Vertex 3 240 SSD in raid 0 system drive, 2tb WD green storage, 16gb Ram, Win 7 64 & Win 10 dual boot. 3X Planar SA2311w monitors. 3x Acer 5360 projectors + immersive display pro blending, DK2
I made it because the tank crosshair was not at the right depht. Have they push the crosshair so you can use it to aim ?
Anyway, there was some special dx9 settings to use in order to have a 3dvision working (as written in the link). Are they broken ?
Unfortunately I uninstall WT as I do not have too much time to play it...
;remove cloud reflections effect
[ShaderOverride1]
Hash=6d4e116b42639689
Handling=skip
; Move horizon effect to infinity
[ShaderOverride2]
Hash=c6e4f19a1f30a71e
Convergence=0
Core System Specs: CPU: i7 3960k @ 4.5, Rampage IV Extreme MB, PSU: Ultra X4 1200w, GPU: 2x GTX 980ti sli, 2x OCZ Vertex 3 240 SSD in raid 0 system drive, 2tb WD green storage, 16gb Ram, Win 7 64 & Win 10 dual boot. 3X Planar SA2311w monitors. 3x Acer 5360 projectors + immersive display pro blending, DK2
I haven't scratched the surface yet of what is possible but I am now paying attention.
At the risk of further embarrassment I fixed my problems by marking the shaders and having them written to the Shaderfixes folder. I then went in and changed 'replace' to 'bad' in the file name. Edited the files and deleted everything in them just putting in ps_4_0 or vs_4_0 depending on whether they were pixel or vertex shader files. (Any invisible characters stopped this working i.e using cut-and-paste instead of typing ps_4_0 could lead to problems.) Then I run the game, press F10 (hunting=2 in d3dx.ini) and the faulty shaders are off. Brilliant!
I would like to know if there is a simpler way to do this (not that this isn't simple enough) but I feel I just got lucky due to the brilliant versatility of the tools. Also in future it would be good for others not to have to press F10 at the start of a game but automatically have the bad shaders skipped. I just don't know yet how this is done. (Although the post by someskunkfunk above seems like an answer.)
As an aside there is a problem with the veil shadow thing running over the ground. To fix it AntiAliasing has to be turned off (Use FXAA or SweetFX instead), set Shadows Quality to Very High and turn on Water Refraction (why is this even related?). The cockpit shadows can be turned off using some shader hunting as outlined above.
So far I have 10 shaders disabled including cloud layer showing through everything, triple dots for aircraft and of course cockpit shadows. Some small light reflections are still only showing in one eye so I'd like to learn how these are fixed or omitted. My next goal as it were.
2b1e982392fa63ca
4d0b9971583477cd
72afcb6817673e8e
7b61c1c502f4ac34
848b341a64229614
887e66f25827a93e
a216b1038ad963e7
ba05ad1d4e589a16
baad479f72cfadff
f838b144b658d062
Flushed with success I had a look at Company of Heroes 2 but that is another kettle of fish altogether...
Win7 64 16GB I5-4570 Asus Z87-A
GTX 1080 Benq XL 27" 3DVision 2
[ShaderOverride1]
Hash=2b1e982392fa63ca
Handling=skip
[ShaderOverride2]
Hash=4d0b9971583477cd
Handling=skip
[ShaderOverride3]
Hash=72afcb6817673e8e
Handling=skip
etc...
just number each [ShaderOverride1] sequentially 1,2,3 etc... and change the hash id for each you want disabled.
Core System Specs: CPU: i7 3960k @ 4.5, Rampage IV Extreme MB, PSU: Ultra X4 1200w, GPU: 2x GTX 980ti sli, 2x OCZ Vertex 3 240 SSD in raid 0 system drive, 2tb WD green storage, 16gb Ram, Win 7 64 & Win 10 dual boot. 3X Planar SA2311w monitors. 3x Acer 5360 projectors + immersive display pro blending, DK2
Forgot about all the patching but other fixes are not affected by this with hash values changing?
Have drawn a blank with the lighting and halos. Shader hunting and settings didn't help.
Have gone back to min separation and lots of convergence with just the cloud layer fix in place. Looks best anyway but judging distance and small targets make it harder than big separation lower convergence.
Win7 64 16GB I5-4570 Asus Z87-A
GTX 1080 Benq XL 27" 3DVision 2