Hello, Guys
I've tried to fix Time Rifters on Unity 4.5.3. d3dx.ini is default for version 1.2.69 except full_screen=1. I've found the right VS but when I try to mark it with NUM6 game crashes. In d3d11_log.txt I see "traversing to next vertex shader #12. Number of vertex shaders in frame: 23" - normal hunting workflow and then couple standart strings "HackerDevice::GetFeatureLevel(class HackerDevice@079F78B8) returns FeatureLevel:b000" and then file ends. Why can it happen?
P.S. In unbuffered massive log I've found shader's hash - try to disable it with Handling=skip in d3dx.ini. By the way last string in this log (before list of exe and dll's) was "HackerDXGISwapChain::GetOrigSwapChain returns 00000000"
Hello, Guys
I've tried to fix Time Rifters on Unity 4.5.3. d3dx.ini is default for version 1.2.69 except full_screen=1. I've found the right VS but when I try to mark it with NUM6 game crashes. In d3d11_log.txt I see "traversing to next vertex shader #12. Number of vertex shaders in frame: 23" - normal hunting workflow and then couple standart strings "HackerDevice::GetFeatureLevel(class HackerDevice@079F78B8) returns FeatureLevel:b000" and then file ends. Why can it happen?
P.S. In unbuffered massive log I've found shader's hash - try to disable it with Handling=skip in d3dx.ini. By the way last string in this log (before list of exe and dll's) was "HackerDXGISwapChain::GetOrigSwapChain returns 00000000"
Might be that the decompiler is corrupting a shader - normally that just causes graphical artefacts, but in some rare cases it could cause a game/driver crash. Try using the relatively new verbose_overlay option if you need to get a shader hash without dumping it.
Might be that the decompiler is corrupting a shader - normally that just causes graphical artefacts, but in some rare cases it could cause a game/driver crash. Try using the relatively new verbose_overlay option if you need to get a shader hash without dumping it.
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
[center][color="orange"][size="XL"]3Dmigoto & cmd_Decompiler 1.2.70[/size][/color][/center][center][color="green"][url]https://github.com/bo3b/3Dmigoto/releases[/url][/color][/center]
[size="L"][color="green"]Fuzzy Attribute Based TextureOverride Matching[/color][/size]
TextureOverride sections can now match resources based on attributes rather than hash. This allows fewer TextureOverride sections to be used to match multiple variations of texture, which is especially useful if some property of the resource (such as the size or anti-aliasing) varied wildly. This also provides a clearer and more powerful alternative to using driver heuristics to set which resources are stereo and which are mono being as general or specific as you need.
The following options can be added to [TextureOverride] section that can be used to match resources as an alternative to using the hash. If an option is not specified then it simply won't be considered when matching resources:
[code]
match_type = Buffer | Texture1D | Texture2D | Texture3D
[/code]Specifies what kind of resource this TextureOverride section can match. If not specified, this will automatically be determined based on which other match options are specified (e.g. if you specify match_height it can only match 2D or 3D textures).
[code]
match_usage = default | immutable | dynamic | staging
[/code]Most resources that we are interested in will be match_usage=default
[code]
match_format = dxgi_format
[/code]Matches a specific format, such as "match_format=R8G8B8A8_TYPELESS". There is no "or" operator to match multiple formats (as you may need to do when stereoising a reflection's colour and depth buffers), but you can use a second TextureOverride instead.
Usually you will get this from ShaderUsage.txt, but there is a list of formats here:
[url]https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059(v=vs.85).aspx[/url]
[code]
match_byte_width
match_stride
match_mips
match_width
match_height
match_depth
match_array
match_msaa
match_msaa_quality
[/code]These options all specify an exact value to match, or can be a simple expressions in the form:
[code]
[ op ] value | special [ * numerator ] [ / denominator ]
[/code]Where:
[list]
[.]"op" is one of = ! < <= > >=
It will look a little weird because of the = from the ini file (match_width = >= res_width).[/.]
[.]value specifies an exact value to match[/.]
[.]special = width | height | depth | array | res_width | res_height[/.]
[.]res_width & res_height are affected by get_resolution_from[/.]
[.]You can use "match_width = height" to match a square resource, or "match_width = !height" to match a rectangular one[/.]
[.]numerator and denominator must both be integers. They must also be in this exact form - this is not a full expression parser.[/.]
[/list]
This allows you to do things like match textures of a specific aspect ratio, or some scaled value of the resolution, or a resource that is at least some size.
[code]
match_bind_flags = vertex_buffer | index_buffer | constant_buffer
| shader_resource | stream_output | render_target
| depth_stencil | unordered_access | decoder
| video_encoder
match_cpu_access_flags = read | write
match_misc_flags = generate_mips | shared | texturecube
| drawindirect_args | buffer_allow_raw_views
| buffer_structured | resource_clamp
| shared_keyedmutex | gdi_compatible | shared_nthandle
| restricted_content | restrict_shared_resource
| restrict_shared_resource_driver | guarded | tile_pool
| tiled | hw_protected
[/code]These are flags fields - you can combine multiple flags by separating them with spaces. If a flag is prefixed by a '+' it must be present, but other flags will also be allowed. If a flag is prefixed by a '-' it must *not* be present to match. If no '+' or '-' modifiers are used the flags must match exactly. Hex strings may be used as an alternative to the textual names.
In addition to the above, there is also a "match_priority" setting that can be used to indicate which TextureOverride to prioritise if multiple sections match the same resource. If a given resource matches any TextureOverride by hash, that is considered an exact match and none of the other fuzzy matches will be considered at all.
If a given resource matches multiple fuzzy TextureOverrides, they will all be applied in an order dictated by their match_priority and ini section name. For things such as StereoMode, filter_index, and the dimension overrides the highest priority match will take effect. For checktextureoverride, this dictates the order that the command lists in these TextureOverrides will be executed. 0 is the default priority, positive numbers are higher priority / later execution, lower/negative numbers are lower priority / earlier execution.
e.g. to force all square render targets to stereo:
[code]
[TextureOverrideSquareRenderTargets]
match_width = height
match_bind_flags = +render_target
StereoMode = 1
[/code]
e.g. To force all UAVs that are not also RTVs to mono (simulating StereoFlagsDX10 = 0x0000C000, but without losing the ability to stereoise specific StructuredBuffers):
[code]
[TextureOverrideForceUAVsThatAreNotRTVsToMono]
match_bind_flags = +unorderd_access -render_target
StereoMode = 2
[/code]
But maybe we want all StructuredBuffer UAVs to be stereo:
[code]
[TextureOverrideForceStructuredUAVsToStereo]
match_priority = 1
match_misc_flags = buffer_structured
match_bind_flags = +unorderd_access
StereoMode = 1
[/code]
e.g. Maybe this game has a bunch of mirrors that we need to stereoise, but they are all different sizes and the AA setting changes their hash as well... but their formats are always the same and luckily don't clash with shadow maps:
[code]
[TextureOverrideMirrorsColour]
match_type = Texture2D
match_format = R8G8B8A8_TYPELESS
match_bind_flags = +render_target
StereoMode = 1
[TextureOverrideMirrorsDepth]
match_type = Texture2D
match_format = R16_TYPELESS
match_bind_flags = +depth_stencil
StereoMode = 1
[/code]
e.g. Stereoise everything that is 3/4 of the resolution:
[code]
[TextureOverrideStereoiseResoluiton]
match_width = res_width * 3 / 4
match_height = res_height * 3 / 4
StereoMode = 1
[/code]
[size="L"][color="green"]TextureOverride[/color][/size]
[list]
[.] StereoMode will now work with Buffer, Texture1D and Texture3D resources[/.]
[.] TextureOverrides now takes priority over surface_square_createmode[/.]
[.] Fixed a case where a square surface would cause a texture override to be processed that was supposed to be skipped due to iteration.[/.]
[/list]
[size="M"][color="green"]ShaderUsage.txt[/color][/size]
[list]
[.] Fixed issue where ShaderUsage.txt would report incorrect hashes[/.]
[.] Fixed memory leak when hunting overlay was displayed and dump_usage=1[/.]
[.] Now collects resource info from all shader types, not just vertex and pixel shaders[/.]
[.] Replaced <CalledPixelShaders> / <ParentVertexShaders> with a more general <PeerShaders> that now includes Hull, Domain and Geometry shaders as well (search in the file to work out which is which)[/.]
[.] Now collects UAV bind info from compute and pixel shaders[/.]
[.] Now includes info about Buffer and Texture1D resources[/.]
[.] Changed some naming to more closely match that used in TextureOverride and Resource sections to reduce manual effort required after copying this info into the d3dx.ini (remember to add the "match_" prefix if copying this into a TextureOverride)[/.]
[/list]
[size="M"][color="green"]Frame Analysis[/color][/size]
[list]
[.] Reverted the 1fps performance improvement that went into 1.2.68 to restore missing hashes of replaced shaders in frame analysis log (performance improvements will be reinstated in the upcoming 1.3 release).[/.]
[.] Frame analysis log now indicates the start and end of pre/post command lists, and uses indentation to show recursion (in preparation for changes to the order of the log in 1.3).[/.]
[.] Fixed CSGet/SetUnorderedAccessViews showing the wrong slot number for resources (StartSlot was correct, but the resource breakdown was not)[/.]
[/list]
[size="M"][color="green"]Misc[/color][/size]
[list]
[.] Fixed crash on Alt+Enter if the hunting overlay had ever been displayed since launch (may have also fixed other bad behaviour when attempting to change the resolution in some games - unconfirmed)[/.]
[.] Fixed blank line before the shader model in assembly shaders corrupting the shader if DOS style newlines were in use (also included in new cmd_Decompiler release)[/.]
[.] Texture1D resources now work with texture filtering, checktextureoverride, etc[/.]
[/list]
Fuzzy Attribute Based TextureOverride Matching
TextureOverride sections can now match resources based on attributes rather than hash. This allows fewer TextureOverride sections to be used to match multiple variations of texture, which is especially useful if some property of the resource (such as the size or anti-aliasing) varied wildly. This also provides a clearer and more powerful alternative to using driver heuristics to set which resources are stereo and which are mono being as general or specific as you need.
The following options can be added to [TextureOverride] section that can be used to match resources as an alternative to using the hash. If an option is not specified then it simply won't be considered when matching resources:
Specifies what kind of resource this TextureOverride section can match. If not specified, this will automatically be determined based on which other match options are specified (e.g. if you specify match_height it can only match 2D or 3D textures).
Most resources that we are interested in will be match_usage=default
match_format = dxgi_format
Matches a specific format, such as "match_format=R8G8B8A8_TYPELESS". There is no "or" operator to match multiple formats (as you may need to do when stereoising a reflection's colour and depth buffers), but you can use a second TextureOverride instead.
Usually you will get this from ShaderUsage.txt, but there is a list of formats here: https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059(v=vs.85).aspx
res_width & res_height are affected by get_resolution_from
You can use "match_width = height" to match a square resource, or "match_width = !height" to match a rectangular one
numerator and denominator must both be integers. They must also be in this exact form - this is not a full expression parser.
This allows you to do things like match textures of a specific aspect ratio, or some scaled value of the resolution, or a resource that is at least some size.
These are flags fields - you can combine multiple flags by separating them with spaces. If a flag is prefixed by a '+' it must be present, but other flags will also be allowed. If a flag is prefixed by a '-' it must *not* be present to match. If no '+' or '-' modifiers are used the flags must match exactly. Hex strings may be used as an alternative to the textual names.
In addition to the above, there is also a "match_priority" setting that can be used to indicate which TextureOverride to prioritise if multiple sections match the same resource. If a given resource matches any TextureOverride by hash, that is considered an exact match and none of the other fuzzy matches will be considered at all.
If a given resource matches multiple fuzzy TextureOverrides, they will all be applied in an order dictated by their match_priority and ini section name. For things such as StereoMode, filter_index, and the dimension overrides the highest priority match will take effect. For checktextureoverride, this dictates the order that the command lists in these TextureOverrides will be executed. 0 is the default priority, positive numbers are higher priority / later execution, lower/negative numbers are lower priority / earlier execution.
e.g. to force all square render targets to stereo:
e.g. To force all UAVs that are not also RTVs to mono (simulating StereoFlagsDX10 = 0x0000C000, but without losing the ability to stereoise specific StructuredBuffers):
e.g. Maybe this game has a bunch of mirrors that we need to stereoise, but they are all different sizes and the AA setting changes their hash as well... but their formats are always the same and luckily don't clash with shadow maps:
StereoMode will now work with Buffer, Texture1D and Texture3D resources
TextureOverrides now takes priority over surface_square_createmode
Fixed a case where a square surface would cause a texture override to be processed that was supposed to be skipped due to iteration.
ShaderUsage.txt
Fixed issue where ShaderUsage.txt would report incorrect hashes
Fixed memory leak when hunting overlay was displayed and dump_usage=1
Now collects resource info from all shader types, not just vertex and pixel shaders
Replaced <CalledPixelShaders> / <ParentVertexShaders> with a more general <PeerShaders> that now includes Hull, Domain and Geometry shaders as well (search in the file to work out which is which)
Now collects UAV bind info from compute and pixel shaders
Now includes info about Buffer and Texture1D resources
Changed some naming to more closely match that used in TextureOverride and Resource sections to reduce manual effort required after copying this info into the d3dx.ini (remember to add the "match_" prefix if copying this into a TextureOverride)
Frame Analysis
Reverted the 1fps performance improvement that went into 1.2.68 to restore missing hashes of replaced shaders in frame analysis log (performance improvements will be reinstated in the upcoming 1.3 release).
Frame analysis log now indicates the start and end of pre/post command lists, and uses indentation to show recursion (in preparation for changes to the order of the log in 1.3).
Fixed CSGet/SetUnorderedAccessViews showing the wrong slot number for resources (StartSlot was correct, but the resource breakdown was not)
Misc
Fixed crash on Alt+Enter if the hunting overlay had ever been displayed since launch (may have also fixed other bad behaviour when attempting to change the resolution in some games - unconfirmed)
Fixed blank line before the shader model in assembly shaders corrupting the shader if DOS style newlines were in use (also included in new cmd_Decompiler release)
Texture1D resources now work with texture filtering, checktextureoverride, etc
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 already told you personally, but I'll say it again. It's an amazing update :). It makes stereoization of render targets a lot easier, when they vary with resolution.
[quote="DarkStarSword"]
Fixed crash on Alt+Enter if the hunting overlay had ever been displayed since launch (may have also fixed other bad behaviour when attempting to change the resolution in some games - unconfirmed)
[/quote]
This is nice too, if I find any more crashing cases.
I can also confirm that the VRAM leak with the hunting overlay enabled is fixed (Naruto Ultimate Ninja Storm 4 in my case). A few seconds were enough to fill my 8GB in the character select screen, before this version.
I already told you personally, but I'll say it again. It's an amazing update :). It makes stereoization of render targets a lot easier, when they vary with resolution.
DarkStarSword said:
Fixed crash on Alt+Enter if the hunting overlay had ever been displayed since launch (may have also fixed other bad behaviour when attempting to change the resolution in some games - unconfirmed)
This is nice too, if I find any more crashing cases.
I can also confirm that the VRAM leak with the hunting overlay enabled is fixed (Naruto Ultimate Ninja Storm 4 in my case). A few seconds were enough to fill my 8GB in the character select screen, before this version.
Great Update DSS!!!
Those Textures habilities will be very handy :)
This Texture Override can replace the workarround in ME:A?? (ALT + ENTER twice to change 0x00004008 to 0x0000C008)
[code][TextureOverrideForceUAVsThatAreNotRTVsToMono]
match_bind_flags = +unordered_access -render_target
StereoMode = 2[/code]
or this:
[code][TextureOverrideForceStructuredUAVsToStereo]
match_priority = 1
match_misc_flags = buffer_structured
match_bind_flags = +unordered_access
StereoMode = 1[/code]
[quote="DHR"]This Texture Override can replace the workarround in ME:A?? (ALT + ENTER twice to change 0x00004008 to 0x0000C008)
[code][TextureOverrideForceUAVsThatAreNotRTVsToMono]
match_bind_flags = +unordered_access -render_target
StereoMode = 2[/code][/quote]Yeah, that will be equivelent to 0x0000C000, but unlike the driver flag doesn't take away our ability to force structured buffers back to stereo if we need to (which we do). It's not equivelent to the alt+enter workaround, but I don't think we will actually need that - that was effectively one way of making UAVs created when the game launched to stereo, and others created when loading actual levels mono, but I think it's better to identify the resources that need to be forced to mono/stereo and go that way - the only complication is really if two resources have the same hash and one needs to be mono and the other stereo - I've asked nvidia to give us an API to address that, otherwise there are other ways to deal with it, but they are tricky.
[quote]
or this:
[code][TextureOverrideForceStructuredUAVsToStereo]
match_priority = 1
match_misc_flags = buffer_structured
match_bind_flags = +unordered_access
StereoMode = 1[/code]
[/quote]That one is for some buffers used by the tile lighting shaders to pass information from one compute shader to the next, and needs to be stereo. The higher priority means it will take precedence even if we force all other UAVs to mono with the first rule.
Since you're interested, these are the rules I'm currently using for ME:A - Helifax is testing at the moment and it seems to be pretty much perfect. I didn't end up using the 0x0000C000 equivelent rule - the key was that all texturecube resources need to be forced to mono (including some that have generate_mips as well, hence the +), which fixes environment reflections and SLI flickers, and possibly other stuff. And no - before anyone asks this isn't enough to drop into ME:A by itself (enjoy some broken tile lighting if you do). Wait for Helifax and I to finish up work on this and he'll release an update.
[code]
;[TextureOverrideUAVNotRT]
;; Like StereoFlagsDX10=0x0000C000, but we can still stereoise structured buffers
;; Strictly speaking not part of the tile light fix, and needs more work to
;; apply to the game as a whole, so commented out here.
;match_bind_flags = +unordered_access -render_target
;match_priority = -1
;StereoMode = 2
[TextureOverrideCubeMapReflections]
; Fixes broken environment mapped reflections
match_misc_flags = +texturecube
StereoMode = 2
[TextureOverrideTileLightStructuredBuffers1]
; This is cs-u0 in 358287531d379f46 14f8f4febc50582f 4ef93cb9ed279c4c 1c836ae86bd20d68
match_bind_flags = unordered_access shader_resource
match_misc_flags = buffer_structured
match_stride = 16
StereoMode = 1
[TextureOverrideTileLightStructuredBuffers2]
; This is cs-u1 in 358287531d379f46 14f8f4febc50582f 4ef93cb9ed279c4c 1c836ae86bd20d68
match_bind_flags = unordered_access shader_resource
match_misc_flags = buffer_structured
match_stride = 4
StereoMode = 1
[TextureOverrideTileLightRendered]
; <Register orig_hash=48afda17 type=Texture2D width=120 height=68 mips=1 array=1 format="R32G32_TYPELESS" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x88 cpu_access_flags=0x0 misc_flags=0x0></Register>
; Haven't traced this - found it via binary search of the resources matched
; with TextureOverrideUAVNotRT in the d3d11_log.txt, but it's necessary to be
; stereo for working tile lighting.
hash = 48afda17
StereoMode = 1
[ResourceInversedMatrix]
type = Buffer
format = R32G32B32A32_FLOAT
array = 4
[ResourceBackup]
[CustomShaderInverse_cs_cb0_03]
cs = ShaderFixes/inverse-cs.hlsl
ResourceBackup = ref cs-u0
cs-u0 = ResourceInversedMatrix
post cs-u0 = ResourceBackup
Dispatch = 1, 1, 1
[CommandListTileLight]
; The CPU calls UpdateSubresource() on the pointer in u2, but the left eye
; doesn't get updated. Convert it to mono and back to stereo to force both eyes
; to get the same value from the CPU, but still allow it to be updated
; independently in both eyes since the shaders change the value during
; execution, which would break things if the left eye was allowed to start
; where the right eye left off. Need to check if this works in SLI (if SLI is
; even broken in the first place - it may not be):
cs-u2 = mono copy cs-u2
cs-u2 = stereo copy cs-u2
; cb0[0:3] has an inverse transposed view-projection matrix. We also need the
; forwards view-projection matrix, so inverse it:
run = CustomShaderInverse_cs_cb0_03
ResourceBackup = ref cs-cb1
cs-cb1 = copy ResourceInversedMatrix
post cs-cb1 = ResourceBackup
[ShaderOverrideTileLight1]
hash = 358287531d379f46
run = CommandListTileLight
[ShaderOverrideTileLight2]
hash = 14f8f4febc50582f
run = CommandListTileLight
[ShaderOverrideTileLight3]
hash = 4ef93cb9ed279c4c
run = CommandListTileLight
[ShaderOverrideTileLight4]
hash = 1c836ae86bd20d68
run = CommandListTileLight
[/code]
Yeah, that will be equivelent to 0x0000C000, but unlike the driver flag doesn't take away our ability to force structured buffers back to stereo if we need to (which we do). It's not equivelent to the alt+enter workaround, but I don't think we will actually need that - that was effectively one way of making UAVs created when the game launched to stereo, and others created when loading actual levels mono, but I think it's better to identify the resources that need to be forced to mono/stereo and go that way - the only complication is really if two resources have the same hash and one needs to be mono and the other stereo - I've asked nvidia to give us an API to address that, otherwise there are other ways to deal with it, but they are tricky.
That one is for some buffers used by the tile lighting shaders to pass information from one compute shader to the next, and needs to be stereo. The higher priority means it will take precedence even if we force all other UAVs to mono with the first rule.
Since you're interested, these are the rules I'm currently using for ME:A - Helifax is testing at the moment and it seems to be pretty much perfect. I didn't end up using the 0x0000C000 equivelent rule - the key was that all texturecube resources need to be forced to mono (including some that have generate_mips as well, hence the +), which fixes environment reflections and SLI flickers, and possibly other stuff. And no - before anyone asks this isn't enough to drop into ME:A by itself (enjoy some broken tile lighting if you do). Wait for Helifax and I to finish up work on this and he'll release an update.
;[TextureOverrideUAVNotRT]
;; Like StereoFlagsDX10=0x0000C000, but we can still stereoise structured buffers
;; Strictly speaking not part of the tile light fix, and needs more work to
;; apply to the game as a whole, so commented out here.
;match_bind_flags = +unordered_access -render_target
;match_priority = -1
;StereoMode = 2
[TextureOverrideTileLightStructuredBuffers1]
; This is cs-u0 in 358287531d379f46 14f8f4febc50582f 4ef93cb9ed279c4c 1c836ae86bd20d68
match_bind_flags = unordered_access shader_resource
match_misc_flags = buffer_structured
match_stride = 16
StereoMode = 1
[TextureOverrideTileLightStructuredBuffers2]
; This is cs-u1 in 358287531d379f46 14f8f4febc50582f 4ef93cb9ed279c4c 1c836ae86bd20d68
match_bind_flags = unordered_access shader_resource
match_misc_flags = buffer_structured
match_stride = 4
StereoMode = 1
[TextureOverrideTileLightRendered]
; <Register orig_hash=48afda17 type=Texture2D width=120 height=68 mips=1 array=1 format="R32G32_TYPELESS" msaa=1 msaa_quality=0 usage="DEFAULT" bind_flags=0x88 cpu_access_flags=0x0 misc_flags=0x0></Register>
; Haven't traced this - found it via binary search of the resources matched
; with TextureOverrideUAVNotRT in the d3d11_log.txt, but it's necessary to be
; stereo for working tile lighting.
hash = 48afda17
StereoMode = 1
[CommandListTileLight]
; The CPU calls UpdateSubresource() on the pointer in u2, but the left eye
; doesn't get updated. Convert it to mono and back to stereo to force both eyes
; to get the same value from the CPU, but still allow it to be updated
; independently in both eyes since the shaders change the value during
; execution, which would break things if the left eye was allowed to start
; where the right eye left off. Need to check if this works in SLI (if SLI is
; even broken in the first place - it may not be):
cs-u2 = mono copy cs-u2
cs-u2 = stereo copy cs-u2
; cb0[0:3] has an inverse transposed view-projection matrix. We also need the
; forwards view-projection matrix, so inverse it:
run = CustomShaderInverse_cs_cb0_03
ResourceBackup = ref cs-cb1
cs-cb1 = copy ResourceInversedMatrix
post cs-cb1 = ResourceBackup
[ShaderOverrideTileLight1]
hash = 358287531d379f46
run = CommandListTileLight
[ShaderOverrideTileLight2]
hash = 14f8f4febc50582f
run = CommandListTileLight
[ShaderOverrideTileLight3]
hash = 4ef93cb9ed279c4c
run = CommandListTileLight
[ShaderOverrideTileLight4]
hash = 1c836ae86bd20d68
run = CommandListTileLight
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
DarkStarSword, your achievements and levels of dedication to do all this are astounding. Well done and thanks!
*edit* To add I know you're not the only one who deserves some credit but even so....
DarkStarSword, your achievements and levels of dedication to do all this are astounding. Well done and thanks!
*edit* To add I know you're not the only one who deserves some credit but even so....
Gigabyte RTX2080TI Gaming OC, I7-6700k ~ 4.4Ghz, 3x BenQ XL2420T, BenQ TK800, LG 55EG960V (3D OLED), Samsung 850 EVO SSD, Crucial M4 SSD, 3D vision kit, Xpand x104 glasses, Corsair HX1000i, Win 10 pro 64/Win 7 64https://www.3dmark.com/fs/9529310
Thanks very much DSS. Hopefully soon I'll have a new contract and can sign up to your Patreon again. You are a hero/
i7-4790K CPU 4.8Ghz stable overclock.
16 GB RAM Corsair
ASUS Turbo 2080TI
Samsung SSD 840Pro
ASUS Z97-WS3D
Surround ASUS Rog Swift PG278Q(R), 2x PG278Q (yes it works)
Obutto R3volution.
Windows 10 pro 64x (Windows 7 Dual boot)
@DarkStarSword
I don't know if is a bug or the feature is removed in the 1.2.70 version of 3DMigoto, but using this:
[code]hook=recommended[/code]
Disable all ShaderOverride....including ShaderRegex.
When i put simple code to push a VS to depth....don't do anything. Changing to hook=all works again.
@DarkStarSword
I don't know if is a bug or the feature is removed in the 1.2.70 version of 3DMigoto, but using this:
hook=recommended
Disable all ShaderOverride....including ShaderRegex.
When i put simple code to push a VS to depth....don't do anything. Changing to hook=all works again.
[quote="DHR"]@DarkStarSword
I don't know if is a bug or the feature is removed in the 1.2.70 version of 3DMigoto, but using this:
[code]hook=recommended[/code]
Disable all ShaderOverride....including ShaderRegex.
When i put simple code to push a VS to depth....don't do anything. Changing to hook=all works again.
[/quote]That must be one of the games that attempts to unbind StereoParams - 1.2.68 changed how we prevent that to depend on the SetShaderResources call to improve performance, and if you look at the documentation for hooking, you may notice:
[code]
; crash/hang workarounds:
; except_set_shader_resources - work around crash on Win 7 with evil update
...
; recommended - hook supported objects, safe workarounds enabled, skips not enabled
[/code]
So, hook=recommended will disable the code in 3DMigoto that keeps StereoParams bound and will rely on the game playing nice and not unbinding it on us, while hook=all would work, but risks crashes on various OS versions.
Do you actually need hooking, or are you really just using it for the skip_dxgi_device hack? If the later, remove "recommended" and "all" for now and update to 1.3 as soon as it's out.
Otherwise, if you do need hooking, this should restore the old way 3DMigoto kept StereoParams bound at the cost of some performance:
[code]
[ShaderRegexForceStereoParamsBoundVS]
shader_model = vs_4_0 vs_4_1 vs_5_0 vs_5_1
vs-t125 = StereoParams
vs-t120 = IniParams
[ShaderRegexForceStereoParamsBoundHS]
shader_model = hs_4_0 hs_4_1 hs_5_0 hs_5_1
hs-t125 = StereoParams
hs-t120 = IniParams
[ShaderRegexForceStereoParamsBoundDS]
shader_model = ds_4_0 ds_4_1 ds_5_0 ds_5_1
ds-t125 = StereoParams
ds-t120 = IniParams
[ShaderRegexForceStereoParamsBoundGS]
shader_model = gs_4_0 gs_4_1 gs_5_0 gs_5_1
gs-t125 = StereoParams
gs-t120 = IniParams
[ShaderRegexForceStereoParamsBoundPS]
shader_model = ps_4_0 ps_4_1 ps_5_0 ps_5_1
ps-t125 = StereoParams
ps-t120 = IniParams
[ShaderRegexForceStereoParamsBoundCS]
shader_model = cs_4_0 cs_4_1 cs_5_0 cs_5_1
cs-t125 = StereoParams
cs-t120 = IniParams
[/code]
DHR said:@DarkStarSword
I don't know if is a bug or the feature is removed in the 1.2.70 version of 3DMigoto, but using this:
hook=recommended
Disable all ShaderOverride....including ShaderRegex.
When i put simple code to push a VS to depth....don't do anything. Changing to hook=all works again.
That must be one of the games that attempts to unbind StereoParams - 1.2.68 changed how we prevent that to depend on the SetShaderResources call to improve performance, and if you look at the documentation for hooking, you may notice:
; crash/hang workarounds:
; except_set_shader_resources - work around crash on Win 7 with evil update
...
; recommended - hook supported objects, safe workarounds enabled, skips not enabled
So, hook=recommended will disable the code in 3DMigoto that keeps StereoParams bound and will rely on the game playing nice and not unbinding it on us, while hook=all would work, but risks crashes on various OS versions.
Do you actually need hooking, or are you really just using it for the skip_dxgi_device hack? If the later, remove "recommended" and "all" for now and update to 1.3 as soon as it's out.
Otherwise, if you do need hooking, this should restore the old way 3DMigoto kept StereoParams bound at the cost of some performance:
Hi DSS!!
i was debugging my crash issue in MA:E and replace the DLL file from the current fix of Helifax with the 1.2.70 to see if stop the crash (because this "Fixed crash on Alt+Enter if the hunting overlay had ever been displayed...") and noticed a lot of effects broken...debugging a little more a noticed the issue using "recommended". In the ini the configuration was "hook=recommended skip_dxgi_device"
I don't currenlty need for any fix...only reporting.
I suppose Helifax change that hook command for "hook=all skip_dxgi_device" to make MA:E works with 1.2.70 version of 3Dmigoto. At least in win7 using "hook=recommended skip_dxgi_device" + 1.2.70 = All effects broken.
Cheers!!
i was debugging my crash issue in MA:E and replace the DLL file from the current fix of Helifax with the 1.2.70 to see if stop the crash (because this "Fixed crash on Alt+Enter if the hunting overlay had ever been displayed...") and noticed a lot of effects broken...debugging a little more a noticed the issue using "recommended". In the ini the configuration was "hook=recommended skip_dxgi_device"
I don't currenlty need for any fix...only reporting.
I suppose Helifax change that hook command for "hook=all skip_dxgi_device" to make MA:E works with 1.2.70 version of 3Dmigoto. At least in win7 using "hook=recommended skip_dxgi_device" + 1.2.70 = All effects broken.
Ahh, ME:A doesn't need hooking - only skip_dxgi_device (looking forward to 1.3 that eliminates the need for that). I think that may explain why Helifax had some trouble integrating my updates until I gave him a zip of my whole game directory, since I had turned hooking off (even need it off on the old 1.2.67 to get a useful frame analysis log).
Ahh, ME:A doesn't need hooking - only skip_dxgi_device (looking forward to 1.3 that eliminates the need for that). I think that may explain why Helifax had some trouble integrating my updates until I gave him a zip of my whole game directory, since I had turned hooking off (even need it off on the old 1.2.67 to get a useful frame analysis log).
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
[quote="DarkStarSword"]In 3DMigoto now - there's support to suppress the hardware cursor and turn the mouse cursor (colour and black/white/inverted cursors, including animated cursors) into a DirectX texture that a shader we ship with 3DMigoto can use to draw the mouse cursor, allowing it's depth to be adjusted by editing the cursor's vertex shader.[/quote]
By chance, is there any support for resizing in-game hud components, as well as opaqueness? Or perhaps, support that allows the components to be relocated from say the top to the bottom of the screen or higher and tighter into the corners?
DarkStarSword said:In 3DMigoto now - there's support to suppress the hardware cursor and turn the mouse cursor (colour and black/white/inverted cursors, including animated cursors) into a DirectX texture that a shader we ship with 3DMigoto can use to draw the mouse cursor, allowing it's depth to be adjusted by editing the cursor's vertex shader.
By chance, is there any support for resizing in-game hud components, as well as opaqueness? Or perhaps, support that allows the components to be relocated from say the top to the bottom of the screen or higher and tighter into the corners?
You can just edit the shaders for that - vertex shader for position, pixel shader for opacity. You're essentially doing pretty much the same thing we do when we move a HUD icon to depth, except moving it elsewhere on the screen instead.
I would just caution though - splitting up complex HUDs into individual pieces can be challenging at the best of times, so simpler modifications are generally better than trying to do something complex (e.g. in Far Cry 4 I wrote a hugely complex detection shader to identify different HUD elements, and matched up different icons from a texture I painted over to work out what to do with them, but in Far Cry Primal I just made the whole HUD auto-adjust depth, but adjusted the whole HUD equally so it was overall a much simpler modification).
You can just edit the shaders for that - vertex shader for position, pixel shader for opacity. You're essentially doing pretty much the same thing we do when we move a HUD icon to depth, except moving it elsewhere on the screen instead.
I would just caution though - splitting up complex HUDs into individual pieces can be challenging at the best of times, so simpler modifications are generally better than trying to do something complex (e.g. in Far Cry 4 I wrote a hugely complex detection shader to identify different HUD elements, and matched up different icons from a texture I painted over to work out what to do with them, but in Far Cry Primal I just made the whole HUD auto-adjust depth, but adjusted the whole HUD equally so it was overall a much simpler modification).
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
thanks for the reply.
I'm not sure where scaling is applied. I was more interested in trying this in a dx9 game using Helixmod, but I couldn't find anything about scaling and thought maybe I could look to 3Dmigoto for an example.
I did see where a hacker changed a skybox by stretching it after he pushed it further back in Risen, but I couldn't understand how he did so :)
Edit: this should be a requirement by law, that developers implement this in every game :P
https://www.youtube.com/watch?v=eRSU-ETIVqc
I'm not sure where scaling is applied. I was more interested in trying this in a dx9 game using Helixmod, but I couldn't find anything about scaling and thought maybe I could look to 3Dmigoto for an example.
I did see where a hacker changed a skybox by stretching it after he pushed it further back in Risen, but I couldn't understand how he did so :)
Edit: this should be a requirement by law, that developers implement this in every game :P
I've tried to fix Time Rifters on Unity 4.5.3. d3dx.ini is default for version 1.2.69 except full_screen=1. I've found the right VS but when I try to mark it with NUM6 game crashes. In d3d11_log.txt I see "traversing to next vertex shader #12. Number of vertex shaders in frame: 23" - normal hunting workflow and then couple standart strings "HackerDevice::GetFeatureLevel(class HackerDevice@079F78B8) returns FeatureLevel:b000" and then file ends. Why can it happen?
P.S. In unbuffered massive log I've found shader's hash - try to disable it with Handling=skip in d3dx.ini. By the way last string in this log (before list of exe and dll's) was "HackerDXGISwapChain::GetOrigSwapChain returns 00000000"
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
Fuzzy Attribute Based TextureOverride Matching
TextureOverride sections can now match resources based on attributes rather than hash. This allows fewer TextureOverride sections to be used to match multiple variations of texture, which is especially useful if some property of the resource (such as the size or anti-aliasing) varied wildly. This also provides a clearer and more powerful alternative to using driver heuristics to set which resources are stereo and which are mono being as general or specific as you need.
The following options can be added to [TextureOverride] section that can be used to match resources as an alternative to using the hash. If an option is not specified then it simply won't be considered when matching resources:
Specifies what kind of resource this TextureOverride section can match. If not specified, this will automatically be determined based on which other match options are specified (e.g. if you specify match_height it can only match 2D or 3D textures).
Most resources that we are interested in will be match_usage=default
Matches a specific format, such as "match_format=R8G8B8A8_TYPELESS". There is no "or" operator to match multiple formats (as you may need to do when stereoising a reflection's colour and depth buffers), but you can use a second TextureOverride instead.
Usually you will get this from ShaderUsage.txt, but there is a list of formats here:
https://msdn.microsoft.com/en-us/library/windows/desktop/bb173059(v=vs.85).aspx
These options all specify an exact value to match, or can be a simple expressions in the form:
Where:
It will look a little weird because of the = from the ini file (match_width = >= res_width).
This allows you to do things like match textures of a specific aspect ratio, or some scaled value of the resolution, or a resource that is at least some size.
These are flags fields - you can combine multiple flags by separating them with spaces. If a flag is prefixed by a '+' it must be present, but other flags will also be allowed. If a flag is prefixed by a '-' it must *not* be present to match. If no '+' or '-' modifiers are used the flags must match exactly. Hex strings may be used as an alternative to the textual names.
In addition to the above, there is also a "match_priority" setting that can be used to indicate which TextureOverride to prioritise if multiple sections match the same resource. If a given resource matches any TextureOverride by hash, that is considered an exact match and none of the other fuzzy matches will be considered at all.
If a given resource matches multiple fuzzy TextureOverrides, they will all be applied in an order dictated by their match_priority and ini section name. For things such as StereoMode, filter_index, and the dimension overrides the highest priority match will take effect. For checktextureoverride, this dictates the order that the command lists in these TextureOverrides will be executed. 0 is the default priority, positive numbers are higher priority / later execution, lower/negative numbers are lower priority / earlier execution.
e.g. to force all square render targets to stereo:
e.g. To force all UAVs that are not also RTVs to mono (simulating StereoFlagsDX10 = 0x0000C000, but without losing the ability to stereoise specific StructuredBuffers):
But maybe we want all StructuredBuffer UAVs to be stereo:
e.g. Maybe this game has a bunch of mirrors that we need to stereoise, but they are all different sizes and the AA setting changes their hash as well... but their formats are always the same and luckily don't clash with shadow maps:
e.g. Stereoise everything that is 3/4 of the resolution:
TextureOverride
ShaderUsage.txt
Frame Analysis
Misc
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
This is nice too, if I find any more crashing cases.
I can also confirm that the VRAM leak with the hunting overlay enabled is fixed (Naruto Ultimate Ninja Storm 4 in my case). A few seconds were enough to fill my 8GB in the character select screen, before this version.
CPU: Intel Core i7 7700K @ 4.9GHz
Motherboard: Gigabyte Aorus GA-Z270X-Gaming 5
RAM: GSKILL Ripjaws Z 16GB 3866MHz CL18
GPU: MSI GeForce RTX 2080Ti Gaming X Trio
Monitor: Asus PG278QR
Speakers: Logitech Z506
Donations account: masterotakusuko@gmail.com
Those Textures habilities will be very handy :)
This Texture Override can replace the workarround in ME:A?? (ALT + ENTER twice to change 0x00004008 to 0x0000C008)
or this:
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
That one is for some buffers used by the tile lighting shaders to pass information from one compute shader to the next, and needs to be stereo. The higher priority means it will take precedence even if we force all other UAVs to mono with the first rule.
Since you're interested, these are the rules I'm currently using for ME:A - Helifax is testing at the moment and it seems to be pretty much perfect. I didn't end up using the 0x0000C000 equivelent rule - the key was that all texturecube resources need to be forced to mono (including some that have generate_mips as well, hence the +), which fixes environment reflections and SLI flickers, and possibly other stuff. And no - before anyone asks this isn't enough to drop into ME:A by itself (enjoy some broken tile lighting if you do). Wait for Helifax and I to finish up work on this and he'll release an update.
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
*edit* To add I know you're not the only one who deserves some credit but even so....
Gigabyte RTX2080TI Gaming OC, I7-6700k ~ 4.4Ghz, 3x BenQ XL2420T, BenQ TK800, LG 55EG960V (3D OLED), Samsung 850 EVO SSD, Crucial M4 SSD, 3D vision kit, Xpand x104 glasses, Corsair HX1000i, Win 10 pro 64/Win 7 64https://www.3dmark.com/fs/9529310
i7-4790K CPU 4.8Ghz stable overclock.
16 GB RAM Corsair
ASUS Turbo 2080TI
Samsung SSD 840Pro
ASUS Z97-WS3D
Surround ASUS Rog Swift PG278Q(R), 2x PG278Q (yes it works)
Obutto R3volution.
Windows 10 pro 64x (Windows 7 Dual boot)
I don't know if is a bug or the feature is removed in the 1.2.70 version of 3DMigoto, but using this:
Disable all ShaderOverride....including ShaderRegex.
When i put simple code to push a VS to depth....don't do anything. Changing to hook=all works again.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
So, hook=recommended will disable the code in 3DMigoto that keeps StereoParams bound and will rely on the game playing nice and not unbinding it on us, while hook=all would work, but risks crashes on various OS versions.
Do you actually need hooking, or are you really just using it for the skip_dxgi_device hack? If the later, remove "recommended" and "all" for now and update to 1.3 as soon as it's out.
Otherwise, if you do need hooking, this should restore the old way 3DMigoto kept StereoParams bound at the cost of some performance:
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 was debugging my crash issue in MA:E and replace the DLL file from the current fix of Helifax with the 1.2.70 to see if stop the crash (because this "Fixed crash on Alt+Enter if the hunting overlay had ever been displayed...") and noticed a lot of effects broken...debugging a little more a noticed the issue using "recommended". In the ini the configuration was "hook=recommended skip_dxgi_device"
I don't currenlty need for any fix...only reporting.
I suppose Helifax change that hook command for "hook=all skip_dxgi_device" to make MA:E works with 1.2.70 version of 3Dmigoto. At least in win7 using "hook=recommended skip_dxgi_device" + 1.2.70 = All effects broken.
Cheers!!
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
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
By chance, is there any support for resizing in-game hud components, as well as opaqueness? Or perhaps, support that allows the components to be relocated from say the top to the bottom of the screen or higher and tighter into the corners?
I would just caution though - splitting up complex HUDs into individual pieces can be challenging at the best of times, so simpler modifications are generally better than trying to do something complex (e.g. in Far Cry 4 I wrote a hugely complex detection shader to identify different HUD elements, and matched up different icons from a texture I painted over to work out what to do with them, but in Far Cry Primal I just made the whole HUD auto-adjust depth, but adjusted the whole HUD equally so it was overall a much simpler modification).
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'm not sure where scaling is applied. I was more interested in trying this in a dx9 game using Helixmod, but I couldn't find anything about scaling and thought maybe I could look to 3Dmigoto for an example.
I did see where a hacker changed a skybox by stretching it after he pushed it further back in Risen, but I couldn't understand how he did so :)
Edit: this should be a requirement by law, that developers implement this in every game :P