I've relaxed the naming requirements of the [Key*], [TextureOverride*] and [ShaderOverride*] sections. These are no longer required to end in a number, allowing for more descriptive names to be used (such as [KeyMouseAim] - especially useful for bindings intended to be copied from one config into another).
Additionally, missing [Key2] will no longer prevent [Key3] from being parsed.
These are still case insensitive as before, so if you were using [KEY1] this will continue to work.
The only requirement is that the section names are unique (due to the API we use to parse them), but 3Dmigoto will now detect duplicate section names (any section, not just these three - including where that only vary by case) and sound an audible warning - this should reduce time wasted due to copy and paste errors.
I've relaxed the naming requirements of the [Key*], [TextureOverride*] and [ShaderOverride*] sections. These are no longer required to end in a number, allowing for more descriptive names to be used (such as [KeyMouseAim] - especially useful for bindings intended to be copied from one config into another).
Additionally, missing [Key2] will no longer prevent [Key3] from being parsed.
These are still case insensitive as before, so if you were using [KEY1] this will continue to work.
The only requirement is that the section names are unique (due to the API we use to parse them), but 3Dmigoto will now detect duplicate section names (any section, not just these three - including where that only vary by case) and sound an audible warning - this should reduce time wasted due to copy and paste errors.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
I've just added support to 3Dmigoto to filter fixes based on whether there is an active depth target or not, which will be in the next release. I determined that this is part of the heuristics the driver uses to decide whether to apply the stereo correction formula or not, and how come HUD elements remain at screen depth in most games regardless of the W value they use.
Filtering on the depth buffer therefore allows for a fix to be applied to only UI elements, or only in-game objects.
For example, this allows the weapon sight depth to be adjusted in Far Cry 4, while leaving light bulbs and other objects alone:
[code]
[ShaderOverrideWeaponSight]
Hash=765c3e296da52533
depth_filter = depth_inactive
[/code]
Valid options for depth_filter are currently none, depth_inactive (enable fix when there is no depth buffer) and depth_active (enable fix when there is a depth buffer).
Does that seem clear enough to people? I've been over a few options and that's the best I could come up with, but if someone can come up with a clearer syntax we can change it.
In the future we would also want another option that passes whether the depth buffer is valid or not into the shader so it can switch between two different fixes if needed, but before adding that we need to decide on the best way to pass information like this in.
In addition to depth buffer filtering, it is conceivable that we may want render target filtering, texture filtering and improved index buffer filtering. Plus we might want other information like the dimensions of the active render target and somewhere to store an arbitrary number of optionally inverted matrices or other information copied from other shaders.
One option is we use a parameter in the IniParam texture, like 'depth_filter=z'. With only four parameters using them for filters as well as user configuration would run out of room pretty quickly, but we could easily expand the size and reference the parameters like x (or x0), x1, x2, x3, etc. The absolute maximum size we could allow for this is 256 pixels (256 * 4 components * 4 byte floats == 4K == 1 page of memory), but we would probably be OK with far less (say... 8 pixels?). We already map this texture using WRITE_DISCARD, which should minimise the performance impact of updating it - and we only need to update it when a shader that has a filter enabled is in use (and I intend to tie all filters to shaders for this reason).
Another option is the StereoParams texture, but I don't really see any reason to preference this over IniParams, and we would have to write each value twice since it is a stereo texture. Currently we create a new stereo texture every time this is updated and release the old one - I do not have any data on how this performs compared to mapping with WRITE_DISCARD, but I would expect them to be very similar.
Another option is the creation of a third texture. It's not clear that this would offer any real advantage over reusing IniParams, and would fill up yet another resource slot in each shader.
Another option is using a constant buffer, but there are only 14 of these per shader (vs 128 textures) and writing into an existing buffer seems dangerous, so we are more likely to run into a situation where there is no room for us to use. It might be reasonable to copy an entire constant buffer from one shader to another as a faster way to copy matrices around (without support for inverting them though).
Is there perhaps even another option I haven't considered? My preference at the moment is probably to use IniParams after expanding the available room a little.
I've just added support to 3Dmigoto to filter fixes based on whether there is an active depth target or not, which will be in the next release. I determined that this is part of the heuristics the driver uses to decide whether to apply the stereo correction formula or not, and how come HUD elements remain at screen depth in most games regardless of the W value they use.
Filtering on the depth buffer therefore allows for a fix to be applied to only UI elements, or only in-game objects.
For example, this allows the weapon sight depth to be adjusted in Far Cry 4, while leaving light bulbs and other objects alone:
Valid options for depth_filter are currently none, depth_inactive (enable fix when there is no depth buffer) and depth_active (enable fix when there is a depth buffer).
Does that seem clear enough to people? I've been over a few options and that's the best I could come up with, but if someone can come up with a clearer syntax we can change it.
In the future we would also want another option that passes whether the depth buffer is valid or not into the shader so it can switch between two different fixes if needed, but before adding that we need to decide on the best way to pass information like this in.
In addition to depth buffer filtering, it is conceivable that we may want render target filtering, texture filtering and improved index buffer filtering. Plus we might want other information like the dimensions of the active render target and somewhere to store an arbitrary number of optionally inverted matrices or other information copied from other shaders.
One option is we use a parameter in the IniParam texture, like 'depth_filter=z'. With only four parameters using them for filters as well as user configuration would run out of room pretty quickly, but we could easily expand the size and reference the parameters like x (or x0), x1, x2, x3, etc. The absolute maximum size we could allow for this is 256 pixels (256 * 4 components * 4 byte floats == 4K == 1 page of memory), but we would probably be OK with far less (say... 8 pixels?). We already map this texture using WRITE_DISCARD, which should minimise the performance impact of updating it - and we only need to update it when a shader that has a filter enabled is in use (and I intend to tie all filters to shaders for this reason).
Another option is the StereoParams texture, but I don't really see any reason to preference this over IniParams, and we would have to write each value twice since it is a stereo texture. Currently we create a new stereo texture every time this is updated and release the old one - I do not have any data on how this performs compared to mapping with WRITE_DISCARD, but I would expect them to be very similar.
Another option is the creation of a third texture. It's not clear that this would offer any real advantage over reusing IniParams, and would fill up yet another resource slot in each shader.
Another option is using a constant buffer, but there are only 14 of these per shader (vs 128 textures) and writing into an existing buffer seems dangerous, so we are more likely to run into a situation where there is no room for us to use. It might be reasonable to copy an entire constant buffer from one shader to another as a faster way to copy matrices around (without support for inverting them though).
Is there perhaps even another option I haven't considered? My preference at the moment is probably to use IniParams after expanding the available room a little.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
I have a problem with 3D migoto.
A log file is created when I run the game and it's roughly 400MB big when I exit the game after 2 minutes.
It logs a lot of stuff and this seems to be an indication that it works, yet I'm not able to cycle through shaders. When I put
[code]; Log all API usage
calls=0
[/code]
and leave the log keys on true, a log file is not created.
What can I do to troubleshoot?
I have a problem with 3D migoto.
A log file is created when I run the game and it's roughly 400MB big when I exit the game after 2 minutes.
It logs a lot of stuff and this seems to be an indication that it works, yet I'm not able to cycle through shaders. When I put
; Log all API usage
calls=0
and leave the log keys on true, a log file is not created.
What can I do to troubleshoot?
[quote="KansasCS"]I have a problem with 3D migoto.
A log file is created when I run the game and it's roughly 400MB big when I exit the game after 2 minutes.
It logs a lot of stuff and this seems to be an indication that it works, yet I'm not able to cycle through shaders. When I put
[code]; Log all API usage
calls=0
[/code]
and leave the log keys on true, a log file is not created.
What can I do to troubleshoot?[/quote]
Since it's logging, that means that the code is running and it's in the right location.
Set the 'input=1' in the d3dx.ini file as well, which will log the key setup that it thinks you are using.
Also, when you do shader hunting, you should see it log those keypresses. Look for the top of the log file that will say what keys are assigned, then look for them being activated lower in the log (use text searches).
Be sure to use the latest version, the key handling should be a lot better than it used to be, including not being language dependent.
KansasCS said:I have a problem with 3D migoto.
A log file is created when I run the game and it's roughly 400MB big when I exit the game after 2 minutes.
It logs a lot of stuff and this seems to be an indication that it works, yet I'm not able to cycle through shaders. When I put
; Log all API usage
calls=0
and leave the log keys on true, a log file is not created.
What can I do to troubleshoot?
Since it's logging, that means that the code is running and it's in the right location.
Set the 'input=1' in the d3dx.ini file as well, which will log the key setup that it thinks you are using.
Also, when you do shader hunting, you should see it log those keypresses. Look for the top of the log file that will say what keys are assigned, then look for them being activated lower in the log (use text searches).
Be sure to use the latest version, the key handling should be a lot better than it used to be, including not being language dependent.
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
What game are you trying it on?
Do you have hunting=1 set in the d3dx.ini?
Do you have debug=0 or debug=1 (should be 0, but 1 would explain the 400MB log file).
Can you post around 30 lines from somewhere in the [b]*middle*[/b] of the log file? Might help us work out what's wrong.
Edit: ninja'd
debug is off, input is on, hunting is on, though no keyinputs are logged.
I dind't touch the d3dx.ini
The game I'm working on is 'Cliffs of Dover' with the latest Team Fusion patches, ver. 4.312.
But even without the patches I have the same symptons. No logging(at least I can't find any) and no shaders popping on and off.
Here is some code from the log file:
[code]
D3D11 DLL starting init - Tue Mar 03 09:40:28 2015
----------- d3dx.ini settings -----------
[Logging]
calls=1
input=1
[System]
[Device]
[Stereo]
[Rendering]
override_directory=C:\Program Files (x86)\Steam\SteamApps\common\IL-2 Sturmovik Cliffs of Dover\ShaderFixes
cache_directory=C:\Program Files (x86)\Steam\SteamApps\common\IL-2 Sturmovik Cliffs of Dover\ShaderCache
use_criticalsection=1
export_hlsl=3
copy_on_mark=1
dump_usage=1
... missing automatic ini section
[Hunting]
hunting=1
marking_mode=0
next_pixelshader=VK_NUMPAD2
previous_pixelshader=VK_NUMPAD1
mark_pixelshader=VK_NUMPAD3
take_screenshot=VK_SNAPSHOT
next_indexbuffer=VK_NUMPAD8
previous_indexbuffer=VK_NUMPAD7
mark_indexbuffer=VK_NUMPAD9
next_vertexshader=VK_NUMPAD5
previous_vertexshader=VK_NUMPAD4
mark_vertexshader=VK_NUMPAD6
next_rendertarget=VK_MULTIPLY
previous_rendertarget=VK_DIVIDE
mark_rendertarget=VK_SUBTRACT
done_hunting=VK_ADD
reload_fixes=VK_F10
repeat_rate=10
[Constants]
x=0.00
y=0.00
z=0.00
w=0.00
D3D11 DLL initialized.
trying to load C:\Windows\system32\d3d11.dll
D3D11CreateDeviceAndSwapChain called with adapter = 0BDD1C50
Windowed = 0
Width = 1920
Height = 1080
Refresh rate = 144.001007
calling with parameters width = 1920, height = 1080, refresh rate = 144.001007, windowed = 1
checking for adapter wrapper, handle = 0BDD1C50
CreateDeviceAndSwapChain returned device handle = 0BEC1544, context handle = 0BEB4254
created NVAPI stereo handle. Handle = 06241D68
creating stereo parameter texture.
stereo texture created, handle = 17016210
creating stereo parameter resource view.
stereo texture resource view created, handle = 0BDE1584.
creating .ini constant parameter texture.
IniParam texture created, handle = 17016350
creating IniParam resource view.
Iniparams resource view created, handle = 0BDE14C4.
returns result = 0, device handle = 0BEC1544, device wrapper = 0BF2E4D8, context handle = 0BEB4254, context wrapper = 170258D8
ID3D10Device::GetCreationFlags called
returns Flags = 0
ID3D10Multithread::SetMultithreadProtected called with bMTProtect = 1
returns 0
ID3D10Multithread::Release handle=0BEC1558, counter=1
deleting self
IDXGIDevice2::GetAdapter called.
returns result = 0, handle = 0BDD1C50
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 1
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 2
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 4
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 8
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 16
returns result = 0, NumQualityLevels = 0
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 1
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 2
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 4
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 8
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 16
returns result = 0, NumQualityLevels = 0
ID3D10Device::CreateTexture2D called with
Width = 1920, Height = 1080
MipLevels = 1, ArraySize = 1
Format = 28, SampleDesc = 1
ID3D10Device::CreateDepthStencilView called
ID3D10Device::CreateRenderTargetView called
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,1920), Width=1080, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D11Device::CreatePixelShader called.
ID3D11Device::CreatePixelShader called.
ID3D10Device::CreateTexture2D called with
Width = 2048, Height = 2048
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 1024, Height = 1024
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 1024, Height = 1024
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateBuffer called
ID3D10Device::CreateBuffer called
ID3D11Device::CreateVertexShader called.
ID3D10Device::CreateBuffer called
ID3D11Device::CreatePixelShader called.
ID3D10Device::CreateBuffer called
ID3D11Device::CreatePixelShader called.
ID3D10Device::CreateBuffer called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CopySubresourceRegion called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CopySubresourceRegion called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize [/code]
and further down:
[code]
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,1920), Width=1080, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,1920), Width=1080, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,4096), Width=4096, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::ClearDepthStencilView called
ID3D10Device::RSSetState called
ID3D10Device::OMSetDepthStencilState called
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,2048), Width=2048, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::IASetPrimitiveTopology called
ID3D10Device::DrawIndexed called with IndexCount = 4386, StartIndexLocation = 0, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 12, StartIndexLocation = 9012, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1017, StartIndexLocation = 9024, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 2082, StartIndexLocation = 10041, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 231, StartIndexLocation = 61536, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1134, StartIndexLocation = 20541, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1545, StartIndexLocation = 32382, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 405, StartIndexLocation = 45402, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 2361, StartIndexLocation = 45840, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 786, StartIndexLocation = 49929, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1935, StartIndexLocation = 50715, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1938, StartIndexLocation = 62103, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 378, StartIndexLocation = 64041, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 11595, StartIndexLocation = 37338, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 9729, StartIndexLocation = 25341, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 11304, StartIndexLocation = 54021, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 19104, StartIndexLocation = 97692, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 7995, StartIndexLocation = 145122, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 6168, StartIndexLocation = 19173, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 243, StartIndexLocation = 4386, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 75, StartIndexLocation = 4629, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 2508, StartIndexLocation = 4704, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 138, StartIndexLocation = 7212, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 486, StartIndexLocation = 7350, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 18, StartIndexLocation = 7836, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1158, [/code]
One more thing. When launching the game, it creates and uses a cache file in it's 'My Documents' folder. in that cache file used shaders are placed and drawn upon for future use. It is recommended to clear that cache file from time to time. Anyways: Should I somehow include this cachefile into the 3Dmigoto files? If so, how do I do this?
debug is off, input is on, hunting is on, though no keyinputs are logged.
I dind't touch the d3dx.ini
The game I'm working on is 'Cliffs of Dover' with the latest Team Fusion patches, ver. 4.312.
But even without the patches I have the same symptons. No logging(at least I can't find any) and no shaders popping on and off.
Here is some code from the log file:
D3D11 DLL starting init - Tue Mar 03 09:40:28 2015
----------- d3dx.ini settings -----------
[Logging]
calls=1
input=1
[System]
[Device]
[Stereo]
[Rendering]
override_directory=C:\Program Files (x86)\Steam\SteamApps\common\IL-2 Sturmovik Cliffs of Dover\ShaderFixes
cache_directory=C:\Program Files (x86)\Steam\SteamApps\common\IL-2 Sturmovik Cliffs of Dover\ShaderCache
use_criticalsection=1
export_hlsl=3
copy_on_mark=1
dump_usage=1
... missing automatic ini section
[Hunting]
hunting=1
marking_mode=0
next_pixelshader=VK_NUMPAD2
previous_pixelshader=VK_NUMPAD1
mark_pixelshader=VK_NUMPAD3
take_screenshot=VK_SNAPSHOT
next_indexbuffer=VK_NUMPAD8
previous_indexbuffer=VK_NUMPAD7
mark_indexbuffer=VK_NUMPAD9
next_vertexshader=VK_NUMPAD5
previous_vertexshader=VK_NUMPAD4
mark_vertexshader=VK_NUMPAD6
next_rendertarget=VK_MULTIPLY
previous_rendertarget=VK_DIVIDE
mark_rendertarget=VK_SUBTRACT
done_hunting=VK_ADD
reload_fixes=VK_F10
repeat_rate=10
[Constants]
x=0.00
y=0.00
z=0.00
w=0.00
D3D11 DLL initialized.
trying to load C:\Windows\system32\d3d11.dll
D3D11CreateDeviceAndSwapChain called with adapter = 0BDD1C50
Windowed = 0
Width = 1920
Height = 1080
Refresh rate = 144.001007
calling with parameters width = 1920, height = 1080, refresh rate = 144.001007, windowed = 1
checking for adapter wrapper, handle = 0BDD1C50
CreateDeviceAndSwapChain returned device handle = 0BEC1544, context handle = 0BEB4254
created NVAPI stereo handle. Handle = 06241D68
creating stereo parameter texture.
stereo texture created, handle = 17016210
creating stereo parameter resource view.
stereo texture resource view created, handle = 0BDE1584.
creating .ini constant parameter texture.
IniParam texture created, handle = 17016350
creating IniParam resource view.
Iniparams resource view created, handle = 0BDE14C4.
returns result = 0, device handle = 0BEC1544, device wrapper = 0BF2E4D8, context handle = 0BEB4254, context wrapper = 170258D8
ID3D10Device::GetCreationFlags called
returns Flags = 0
ID3D10Multithread::SetMultithreadProtected called with bMTProtect = 1
returns 0
ID3D10Multithread::Release handle=0BEC1558, counter=1
deleting self
IDXGIDevice2::GetAdapter called.
returns result = 0, handle = 0BDD1C50
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 1
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 2
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 4
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 8
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 28, SampleCount = 16
returns result = 0, NumQualityLevels = 0
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 1
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 2
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 4
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 8
returns result = 0, NumQualityLevels = 1
ID3D10Device::CheckMultisampleQualityLevels called with Format = 10, SampleCount = 16
returns result = 0, NumQualityLevels = 0
ID3D10Device::CreateTexture2D called with
Width = 1920, Height = 1080
MipLevels = 1, ArraySize = 1
Format = 28, SampleDesc = 1
ID3D10Device::CreateDepthStencilView called
ID3D10Device::CreateRenderTargetView called
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,1920), Width=1080, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D11Device::CreatePixelShader called.
ID3D11Device::CreatePixelShader called.
ID3D10Device::CreateTexture2D called with
Width = 2048, Height = 2048
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 1024, Height = 1024
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 1024, Height = 1024
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 512, Height = 512
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 256, Height = 256
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateRenderTargetView called
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateBuffer called
ID3D10Device::CreateBuffer called
ID3D11Device::CreateVertexShader called.
ID3D10Device::CreateBuffer called
ID3D11Device::CreatePixelShader called.
ID3D10Device::CreateBuffer called
ID3D11Device::CreatePixelShader called.
ID3D10Device::CreateBuffer called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CopySubresourceRegion called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CreateSamplerState called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize = 1
Format = 1c, SampleDesc = 1
ID3D10Device::CopySubresourceRegion called
ID3D10Device::CreateTexture2D called with
Width = 4, Height = 4
MipLevels = 1, ArraySize
and further down:
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,1920), Width=1080, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,1920), Width=1080, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,4096), Width=4096, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::ClearDepthStencilView called
ID3D10Device::RSSetState called
ID3D10Device::OMSetDepthStencilState called
ID3D10Device::RSSetViewports called with NumViewports = 1
viewport #0: TopLeft=(0,2048), Width=2048, Height=0, MinDepth=0.000000, MaxDepth=0.000000
ID3D10Device::IASetPrimitiveTopology called
ID3D10Device::DrawIndexed called with IndexCount = 4386, StartIndexLocation = 0, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 12, StartIndexLocation = 9012, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1017, StartIndexLocation = 9024, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 2082, StartIndexLocation = 10041, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 231, StartIndexLocation = 61536, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1134, StartIndexLocation = 20541, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1545, StartIndexLocation = 32382, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 405, StartIndexLocation = 45402, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 2361, StartIndexLocation = 45840, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 786, StartIndexLocation = 49929, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1935, StartIndexLocation = 50715, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1938, StartIndexLocation = 62103, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 378, StartIndexLocation = 64041, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 11595, StartIndexLocation = 37338, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 9729, StartIndexLocation = 25341, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 11304, StartIndexLocation = 54021, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 19104, StartIndexLocation = 97692, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 7995, StartIndexLocation = 145122, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 6168, StartIndexLocation = 19173, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 243, StartIndexLocation = 4386, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 75, StartIndexLocation = 4629, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 2508, StartIndexLocation = 4704, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 138, StartIndexLocation = 7212, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 486, StartIndexLocation = 7350, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 18, StartIndexLocation = 7836, BaseVertexLocation = 0
ID3D10Device::DrawIndexed called with IndexCount = 1158,
One more thing. When launching the game, it creates and uses a cache file in it's 'My Documents' folder. in that cache file used shaders are placed and drawn upon for future use. It is recommended to clear that cache file from time to time. Anyways: Should I somehow include this cachefile into the 3Dmigoto files? If so, how do I do this?
Thanks for the log files.
The cache files are not likely to cause this problem, but removing them occasionally should help.
This looks like it's a strictly DX10 game here and thus the 3Dmigoto wrapper is not loading and running like normal. It's only logging, not actually working.
For this game, I think you are better off to use HelixMod instead of 3Dmigoto, and force the game to run in DX9.
The cache files are not likely to cause this problem, but removing them occasionally should help.
This looks like it's a strictly DX10 game here and thus the 3Dmigoto wrapper is not loading and running like normal. It's only logging, not actually working.
For this game, I think you are better off to use HelixMod instead of 3Dmigoto, and force the game to run in DX9.
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 the reply :)
It seems the game is unable to run in DX9.
I've tried everything, from changing the conf.ini (render=D3D10_0 to render=D3D9) to adding an extension to the shortcut to running it in XP compatibility mode.
So far no positive results.
It seems the game is unable to run in DX9.
I've tried everything, from changing the conf.ini (render=D3D10_0 to render=D3D9) to adding an extension to the shortcut to running it in XP compatibility mode.
So far no positive results.
[quote="KansasCS"]is it probable that 3Dmigoto will ever be patched to support DX10?[/quote]
In short, no, it's not probable. I've looked at it a little bit, and there is presently no support DX10 in 3Dmigoto, even before I disabled that DLL for simplicity reasons. It only does logging, not actually reloading shaders.
It is theoretically possible to make it work on DX10, but it's a questionable use of our limited time and resources. The reason is because nearly every game that supports DX10 also has a backward compatibility of DX9, and thus it's better to just force DX9 and use the fully featured HelixMod. Any newer games that target DX10 nearly always prefer DX11 instead, where 3Dmigoto is best.
So, it's a rare bird that falls into the DX10 camp. Unfortunately Dover is one of those apparently because of the fragmented development.
Now, one thing to consider is whether it might make sense to make a DX10 version for people that would want to run DX9+DX10 games, but prefer to run them in DX10. If there is enough interest/games that could benefit from that, it might be worth the development effort.
The reason to consider this angle is any games that don't work well under DX9, or HelixMod has problems. Any games people can think of that might benefit from this?
KansasCS said:is it probable that 3Dmigoto will ever be patched to support DX10?
In short, no, it's not probable. I've looked at it a little bit, and there is presently no support DX10 in 3Dmigoto, even before I disabled that DLL for simplicity reasons. It only does logging, not actually reloading shaders.
It is theoretically possible to make it work on DX10, but it's a questionable use of our limited time and resources. The reason is because nearly every game that supports DX10 also has a backward compatibility of DX9, and thus it's better to just force DX9 and use the fully featured HelixMod. Any newer games that target DX10 nearly always prefer DX11 instead, where 3Dmigoto is best.
So, it's a rare bird that falls into the DX10 camp. Unfortunately Dover is one of those apparently because of the fragmented development.
Now, one thing to consider is whether it might make sense to make a DX10 version for people that would want to run DX9+DX10 games, but prefer to run them in DX10. If there is enough interest/games that could benefit from that, it might be worth the development effort.
The reason to consider this angle is any games that don't work well under DX9, or HelixMod has problems. Any games people can think of that might benefit from this?
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
What about Flugan's dx10 wrapper.
From what I gather from his post, it's still a work in progress but is also somewhat functional.
https://forums.geforce.com/default/topic/815692/3d-vision/any-interest-in-flugan-wrapper-for-dx10/
Also according to the Steam page, Cliffs of Dover is dx9.0c compatible, I'm guessing the mods must be dx10 only.
After some looking at the code base, I hit upon a relatively fast way to make a DX10 build, and so today I can offer an experimental version of 3Dmigoto that supports DX10.
https://github.com/bo3b/3Dmigoto/releases/download/0.1.1-alpha/3Dmigoto-exp-DX10.zip
This is highly experimental, and it won't be a surprise if there are bugs. There are many missing features that the DX11 version supports. I only ported across stuff that I knew we needed for sure. And there are some things in DX11 that just don't exist in DX10.
I tested it on Cryostasis and Cliffs of Dover and it loads in both cases.
In Cryostasis I was able to shader hunt and disable shaders like normal.
In Cliffs of Dover, I had trouble getting stereo to enable, although it worked in Discover mode, and shader hunting and shader mark worked.
I'm not certain that the stereo texture injection is working correctly, so fixing a shader may not work at present. Disabling shaders definitely works and would be a good place to start.
After some looking at the code base, I hit upon a relatively fast way to make a DX10 build, and so today I can offer an experimental version of 3Dmigoto that supports DX10.
This is highly experimental, and it won't be a surprise if there are bugs. There are many missing features that the DX11 version supports. I only ported across stuff that I knew we needed for sure. And there are some things in DX11 that just don't exist in DX10.
I tested it on Cryostasis and Cliffs of Dover and it loads in both cases.
In Cryostasis I was able to shader hunt and disable shaders like normal.
In Cliffs of Dover, I had trouble getting stereo to enable, although it worked in Discover mode, and shader hunting and shader mark worked.
I'm not certain that the stereo texture injection is working correctly, so fixing a shader may not work at present. Disabling shaders definitely works and would be a good place to start.
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
Additionally, missing [Key2] will no longer prevent [Key3] from being parsed.
These are still case insensitive as before, so if you were using [KEY1] this will continue to work.
The only requirement is that the section names are unique (due to the API we use to parse them), but 3Dmigoto will now detect duplicate section names (any section, not just these three - including where that only vary by case) and sound an audible warning - this should reduce time wasted due to copy and paste errors.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
Filtering on the depth buffer therefore allows for a fix to be applied to only UI elements, or only in-game objects.
For example, this allows the weapon sight depth to be adjusted in Far Cry 4, while leaving light bulbs and other objects alone:
Valid options for depth_filter are currently none, depth_inactive (enable fix when there is no depth buffer) and depth_active (enable fix when there is a depth buffer).
Does that seem clear enough to people? I've been over a few options and that's the best I could come up with, but if someone can come up with a clearer syntax we can change it.
In the future we would also want another option that passes whether the depth buffer is valid or not into the shader so it can switch between two different fixes if needed, but before adding that we need to decide on the best way to pass information like this in.
In addition to depth buffer filtering, it is conceivable that we may want render target filtering, texture filtering and improved index buffer filtering. Plus we might want other information like the dimensions of the active render target and somewhere to store an arbitrary number of optionally inverted matrices or other information copied from other shaders.
One option is we use a parameter in the IniParam texture, like 'depth_filter=z'. With only four parameters using them for filters as well as user configuration would run out of room pretty quickly, but we could easily expand the size and reference the parameters like x (or x0), x1, x2, x3, etc. The absolute maximum size we could allow for this is 256 pixels (256 * 4 components * 4 byte floats == 4K == 1 page of memory), but we would probably be OK with far less (say... 8 pixels?). We already map this texture using WRITE_DISCARD, which should minimise the performance impact of updating it - and we only need to update it when a shader that has a filter enabled is in use (and I intend to tie all filters to shaders for this reason).
Another option is the StereoParams texture, but I don't really see any reason to preference this over IniParams, and we would have to write each value twice since it is a stereo texture. Currently we create a new stereo texture every time this is updated and release the old one - I do not have any data on how this performs compared to mapping with WRITE_DISCARD, but I would expect them to be very similar.
Another option is the creation of a third texture. It's not clear that this would offer any real advantage over reusing IniParams, and would fill up yet another resource slot in each shader.
Another option is using a constant buffer, but there are only 14 of these per shader (vs 128 textures) and writing into an existing buffer seems dangerous, so we are more likely to run into a situation where there is no room for us to use. It might be reasonable to copy an entire constant buffer from one shader to another as a faster way to copy matrices around (without support for inverting them though).
Is there perhaps even another option I haven't considered? My preference at the moment is probably to use IniParams after expanding the available room a little.
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
A log file is created when I run the game and it's roughly 400MB big when I exit the game after 2 minutes.
It logs a lot of stuff and this seems to be an indication that it works, yet I'm not able to cycle through shaders. When I put
and leave the log keys on true, a log file is not created.
What can I do to troubleshoot?
Since it's logging, that means that the code is running and it's in the right location.
Set the 'input=1' in the d3dx.ini file as well, which will log the key setup that it thinks you are using.
Also, when you do shader hunting, you should see it log those keypresses. Look for the top of the log file that will say what keys are assigned, then look for them being activated lower in the log (use text searches).
Be sure to use the latest version, the key handling should be a lot better than it used to be, including not being language dependent.
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
Do you have hunting=1 set in the d3dx.ini?
Do you have debug=0 or debug=1 (should be 0, but 1 would explain the 400MB log file).
Can you post around 30 lines from somewhere in the *middle* of the log file? Might help us work out what's wrong.
Edit: ninja'd
2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit
Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD
Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword
I dind't touch the d3dx.ini
The game I'm working on is 'Cliffs of Dover' with the latest Team Fusion patches, ver. 4.312.
But even without the patches I have the same symptons. No logging(at least I can't find any) and no shaders popping on and off.
Here is some code from the log file:
and further down:
One more thing. When launching the game, it creates and uses a cache file in it's 'My Documents' folder. in that cache file used shaders are placed and drawn upon for future use. It is recommended to clear that cache file from time to time. Anyways: Should I somehow include this cachefile into the 3Dmigoto files? If so, how do I do this?
The cache files are not likely to cause this problem, but removing them occasionally should help.
This looks like it's a strictly DX10 game here and thus the 3Dmigoto wrapper is not loading and running like normal. It's only logging, not actually working.
For this game, I think you are better off to use HelixMod instead of 3Dmigoto, and force the game to run in DX9.
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
It seems the game is unable to run in DX9.
I've tried everything, from changing the conf.ini (render=D3D10_0 to render=D3D9) to adding an extension to the shortcut to running it in XP compatibility mode.
So far no positive results.
In short, no, it's not probable. I've looked at it a little bit, and there is presently no support DX10 in 3Dmigoto, even before I disabled that DLL for simplicity reasons. It only does logging, not actually reloading shaders.
It is theoretically possible to make it work on DX10, but it's a questionable use of our limited time and resources. The reason is because nearly every game that supports DX10 also has a backward compatibility of DX9, and thus it's better to just force DX9 and use the fully featured HelixMod. Any newer games that target DX10 nearly always prefer DX11 instead, where 3Dmigoto is best.
So, it's a rare bird that falls into the DX10 camp. Unfortunately Dover is one of those apparently because of the fragmented development.
Now, one thing to consider is whether it might make sense to make a DX10 version for people that would want to run DX9+DX10 games, but prefer to run them in DX10. If there is enough interest/games that could benefit from that, it might be worth the development effort.
The reason to consider this angle is any games that don't work well under DX9, or HelixMod has problems. Any games people can think of that might benefit from this?
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
From what I gather from his post, it's still a work in progress but is also somewhat functional.
https://forums.geforce.com/default/topic/815692/3d-vision/any-interest-in-flugan-wrapper-for-dx10/
Also according to the Steam page, Cliffs of Dover is dx9.0c compatible, I'm guessing the mods must be dx10 only.
Thanks to everybody using my assembler it warms my heart.
To have a critical piece of code that everyone can enjoy!
What more can you ask for?
donations: ulfjalmbrant@hotmail.com
https://github.com/bo3b/3Dmigoto/releases/download/0.1.1-alpha/3Dmigoto-exp-DX10.zip
This is highly experimental, and it won't be a surprise if there are bugs. There are many missing features that the DX11 version supports. I only ported across stuff that I knew we needed for sure. And there are some things in DX11 that just don't exist in DX10.
I tested it on Cryostasis and Cliffs of Dover and it loads in both cases.
In Cryostasis I was able to shader hunt and disable shaders like normal.
In Cliffs of Dover, I had trouble getting stereo to enable, although it worked in Discover mode, and shader hunting and shader mark worked.
I'm not certain that the stereo texture injection is working correctly, so fixing a shader may not work at present. Disabling shaders definitely works and would be a good place to start.
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
Very nice!
Thank You so much!