3Dmigoto now open-source...
  135 / 143    
I watched your video yesterday, DSS. Great stuff (btw, you sound like a slightly raspier Gabe Newell :p). Everything you did with index buffers was skipping them, so this is my question: can I use a variable or filter_index in their TextureOverride to use different code in the shader depending on that? I don't want to just skip an index buffer. I want to tie it to a hotkey (as you may know I prefer to leave things at their default state and only change them with hotkeys). If it isn't possible, don't worry about it. It was a minor thing I wanted to do for now.
I watched your video yesterday, DSS. Great stuff (btw, you sound like a slightly raspier Gabe Newell :p). Everything you did with index buffers was skipping them, so this is my question: can I use a variable or filter_index in their TextureOverride to use different code in the shader depending on that? I don't want to just skip an index buffer. I want to tie it to a hotkey (as you may know I prefer to leave things at their default state and only change them with hotkeys).

If it isn't possible, don't worry about it. It was a minor thing I wanted to do for now.

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

Posted 05/06/2018 07:48 AM   
[quote="masterotaku"]I watched your video yesterday, DSS. Great stuff (btw, you sound like a slightly raspier Gabe Newell :p).[/quote] Hehe, I should have exaggerated my Aussie accent ;-) [quote]Everything you did with index buffers was skipping them, so this is my question: can I use a variable or filter_index in their TextureOverride to use different code in the shader depending on that? I don't want to just skip an index buffer. I want to tie it to a hotkey (as you may know I prefer to leave things at their default state and only change them with hotkeys).[/quote] Yes, to both: The TextureOverride sections support full command lists, so you can do something like this: [code] [TextureOverrideConditionallyHidden] hash = 12345678 if z handling = skip endif [KeyHideIB] key = F2 z = 1 type = toggle [/code] But, actually for performance it is better to make the checktextureoverride skippable, because that thing can be expensive if it is done a lot every frame (e.g. in DOAXVV the same shader is used for every shadow, so we end up running the corresponding checktextureoverride hundreds of times every frame - fine on my system, but some people with slower CPUs find it too expensive, so I make it possible to use the original shadows, or disable them altogether): [code] [CommandListShadowMap] if z && w == 1 ResourceBakVB = ref vb0 ResourceBakIB = ref ib checktextureoverride = vb0 checktextureoverride = ib ; Game doesn't rebind original vb + ib every draw call, so to make sure we ; don't have missing shadows from other sub-parts of this mesh we restore what ; the game was using: vb0 = ref ResourceBakVB ib = ref ResourceBakIB else if w == 2 handling = skip endif endif [/code] You can also evaluate the resource's filter_index directly (keep in mind that evaluating "ib" like this is just as expensive as the checktextureoverride since it does the same resource lookup. If you want to compare it against several possible values, save it to a variable first so you only have to evaluate "ib" once per shader invocation): [code] [TextureOverrideFoo] hash = ... filter_index = 3 [ShaderOverrideBar] hash = ... if z == 1 && ib === 3 handling = skip endif [/code] And of course you don't have to use handling=skip if you had something else in mind. I'm also planning to update the equality and identical operators in the next release to give you a bit more power if you want to compare one resource to another resource. At the moment they will evaluate both resources to their filter_index and compare those, but I want the equality operator to compare resources by hash, and the identical operators to compare by resource address. That later case is particularly interesting to check if a custom resource is bound in a given slot (it already works for testing if a slot or custom resource is null, which is used in the help text shader), or to test if the back buffer is currently bound as the render target (which is not possible via checktextureoverride, since bb has no hash and cannot match any TextureOverride), and avoids the cost of the resource hash and TextureOverride lookups (testing against a float will still compare by filter_index, and so will still have those costs).
masterotaku said:I watched your video yesterday, DSS. Great stuff (btw, you sound like a slightly raspier Gabe Newell :p).

Hehe, I should have exaggerated my Aussie accent ;-)

Everything you did with index buffers was skipping them, so this is my question: can I use a variable or filter_index in their TextureOverride to use different code in the shader depending on that? I don't want to just skip an index buffer. I want to tie it to a hotkey (as you may know I prefer to leave things at their default state and only change them with hotkeys).

Yes, to both:

The TextureOverride sections support full command lists, so you can do something like this:

[TextureOverrideConditionallyHidden]
hash = 12345678
if z
handling = skip
endif

[KeyHideIB]
key = F2
z = 1
type = toggle

But, actually for performance it is better to make the checktextureoverride skippable, because that thing can be expensive if it is done a lot every frame (e.g. in DOAXVV the same shader is used for every shadow, so we end up running the corresponding checktextureoverride hundreds of times every frame - fine on my system, but some people with slower CPUs find it too expensive, so I make it possible to use the original shadows, or disable them altogether):

[CommandListShadowMap]
if z && w == 1
ResourceBakVB = ref vb0
ResourceBakIB = ref ib
checktextureoverride = vb0
checktextureoverride = ib
; Game doesn't rebind original vb + ib every draw call, so to make sure we
; don't have missing shadows from other sub-parts of this mesh we restore what
; the game was using:
vb0 = ref ResourceBakVB
ib = ref ResourceBakIB
else
if w == 2
handling = skip
endif
endif

You can also evaluate the resource's filter_index directly (keep in mind that evaluating "ib" like this is just as expensive as the checktextureoverride since it does the same resource lookup. If you want to compare it against several possible values, save it to a variable first so you only have to evaluate "ib" once per shader invocation):

[TextureOverrideFoo]
hash = ...
filter_index = 3

[ShaderOverrideBar]
hash = ...
if z == 1 && ib === 3
handling = skip
endif

And of course you don't have to use handling=skip if you had something else in mind.

I'm also planning to update the equality and identical operators in the next release to give you a bit more power if you want to compare one resource to another resource. At the moment they will evaluate both resources to their filter_index and compare those, but I want the equality operator to compare resources by hash, and the identical operators to compare by resource address.

That later case is particularly interesting to check if a custom resource is bound in a given slot (it already works for testing if a slot or custom resource is null, which is used in the help text shader), or to test if the back buffer is currently bound as the render target (which is not possible via checktextureoverride, since bb has no hash and cannot match any TextureOverride), and avoids the cost of the resource hash and TextureOverride lookups (testing against a float will still compare by filter_index, and so will still have those costs).

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

Posted 05/06/2018 08:32 AM   
@DSS Are you a NVIDIA Focus Group Member? If not, perhaps you should look into it. It might make it easier to files bugs as well as getting some free software/hardware.
@DSS

Are you a NVIDIA Focus Group Member? If not, perhaps you should look into it. It might make it easier to files bugs as well as getting some free software/hardware.

Posted 05/07/2018 10:10 AM   
@DSS amazing job! Just tried the "mod" aspect with Nier Automata but I guess I picked the wrong game: * Some Pixel shaders cannot be dumped with key "3", it gives an error "failed to copy marked shader" * handling=skip does not seem to skip (texture becomes black, same thing by the way while cycling through the pixel shader with "1" or "2" some disappear as expected, other become "just" black) * When trying blender part for the mesh I get "Only draw calls using a single vertex buffer and a single index buffer are supported for now"
@DSS amazing job!

Just tried the "mod" aspect with Nier Automata but I guess I picked the wrong game:
* Some Pixel shaders cannot be dumped with key "3", it gives an error "failed to copy marked shader"

* handling=skip does not seem to skip (texture becomes black, same thing by the way while cycling through the pixel shader with "1" or "2" some disappear as expected, other become "just" black)

* When trying blender part for the mesh I get
"Only draw calls using a single vertex buffer and a single index buffer are supported for now"

Posted 05/10/2018 09:33 PM   
Hello, I am trying to mod for VR DCS World 2.5 as Battle of Stalingrad, with 1.3.11 version. I managed to find which eye is drawn, but I am stuck with label masking. To mask label, I add a PS call in the VS drawing cockpit, this PS draw a specific color in a specific output (o7). I mde o7 reference a dedicated resource. I used this resource after in the PS shader which draw the labels, by sampling it and use it as a mask. It works well with battle of stalingrad, I initialized the resource by copying o0 of a shader. But for DCS world, I have a problem. It works in no VR if I initialize the resource with the following lines: [code][Present] post ResourceLabelMask = copy_desc bb[/code] I had o7 output jpeg with good contain when dumping with F8 key. But when I go to VR it does not work. I do not have the o7 jpg when dumping... In log file all seems ok: [code] analyse_options: 00000000 000001 3DMigoto post { 000001 3DMigoto [Present] resourcelabelmask = copy_desc bb 000001 3DMigoto copying resource description 000001 3DMigoto } 000001 UpdateSubresource(pDstResource:0x0000000024A54AA0, DstSubresource:0, pDstBox:0x0000000000000000, pSrcData:0x0000000024A5DA30, SrcRowPitch:0, SrcDepthPitch:0) hash=24e23234 000001 VSSetConstantBuffers(StartSlot:6, NumBuffers:1, ppConstantBuffers:0x00000000435C7128)... ... 000662 GSSetShader(pShader:0x0000000000000000, ppClassInstances:0x0000000000000000, NumClassInstances:0) 000662 IASetIndexBuffer(pIndexBuffer:0x00000003E7E59160, Format:57, Offset:0) hash=cb8d0531 000662 DrawIndexed(IndexCount:38388, StartIndexLocation:0, BaseVertexLocation:0) 000662 3DMigoto pre { 000662 3DMigoto [ShaderOverrideCockpit] analyse_options = dump_rt jpg clear_rt 000662 3DMigoto } 000662 3DMigoto pre { 000662 3DMigoto [ShaderOverridePSCockpit] o7 = ref resourcelabelmask 000662 3DMigoto copying by reference 000662 3DMigoto } 000662 3DMigoto post { 000662 3DMigoto [ShaderOverrideCockpit] run = customshaderwhiteps 000662 3DMigoto pre { 000662 3DMigoto [customshaderwhiteps] Draw = from_caller -> DrawIndexed(38388, 0, 0) 000662 3DMigoto [customshaderwhiteps] o7 = ref resourcelabelmask 000662 3DMigoto copying by reference 000662 3DMigoto } 000662 3DMigoto } 000662 3DMigoto analyse_options (one-shot): 00001081 [/code] => the resource resourcelabelmask is intialized then referenced as o7 for PS shader call. But is does not work as in non VR... I also tried to copy the output of a VS shader (as in IL2 BoS), but I have the same result. In log file, the resource is copied at frame 243 and used at frame 643. As I understand, the problem may be that resource is not correctly intialized ? DCS use defered shading... How can I better initialize the resource for masking ? Here is a link of dump for non VR (working) o7 resources creating mask: http://www.mediafire.com/file/zskqbshzwo559fr/FrameAnalysis-2018-05-12-224243_nonVR_copy_bb.zip And the same for VR (not working) : http://www.mediafire.com/file/db61vcp1raltex1/FrameAnalysis-2018-05-12-230255_VR_copy_bb.zip (blue part is a control for eye detection) For information, I have the following entries for both VR and no VR: [code] 000662 3DMigoto Dumping Texture2D D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\000662-o0=74ad54bf-vs=b58187fd352d2c78-ps=911793d8d482bbc5.jpg -> D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\deduped\b0bbb0d5-R8G8_UNORM.jpg 000662 3DMigoto Failed to dump Texture2D D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\000662-o0=74ad54bf-vs=b58187fd352d2c78-ps=911793d8d482bbc5.jpg -> D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\deduped\b0bbb0d5-R8G8_UNORM.jpg: 0x80070032 000662 3DMigoto Dumping Texture2D D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\000662-o1=74ad54bf-vs=b58187fd352d2c78-ps=911793d8d482bbc5.jpg -> D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\deduped\b0bbb0d5-R8G8_UNORM.jpg[/code] In deduped directory I have the same output as o0, with o7 output for non VR and no o7 for VR... EDIT : I found that I can copy an o0 that works in VR if the resolution of this o0 is the same than the final ouput. So it is working now. But I wonder if there is a way to create a resource by specfiying its resolution. But I found other problems in DCS with complex shader process (lot of vs are associated with cs, ds, hs,... shaders), pixel shader that do not have RGB output, and on top of that deferred rendering...So my zoom feature looks too hard to achieve.
Hello,
I am trying to mod for VR DCS World 2.5 as Battle of Stalingrad, with 1.3.11 version.

I managed to find which eye is drawn, but I am stuck with label masking.
To mask label, I add a PS call in the VS drawing cockpit, this PS draw a specific color in a specific output (o7). I mde o7 reference a dedicated resource. I used this resource after in the PS shader which draw the labels, by sampling it and use it as a mask.
It works well with battle of stalingrad, I initialized the resource by copying o0 of a shader.
But for DCS world, I have a problem.
It works in no VR if I initialize the resource with the following lines:
[Present]

post ResourceLabelMask = copy_desc bb

I had o7 output jpeg with good contain when dumping with F8 key.
But when I go to VR it does not work. I do not have the o7 jpg when dumping...
In log file all seems ok:
analyse_options: 00000000
000001 3DMigoto post {
000001 3DMigoto [Present] resourcelabelmask = copy_desc bb
000001 3DMigoto copying resource description
000001 3DMigoto }
000001 UpdateSubresource(pDstResource:0x0000000024A54AA0, DstSubresource:0, pDstBox:0x0000000000000000, pSrcData:0x0000000024A5DA30, SrcRowPitch:0, SrcDepthPitch:0) hash=24e23234
000001 VSSetConstantBuffers(StartSlot:6, NumBuffers:1, ppConstantBuffers:0x00000000435C7128)...
...
000662 GSSetShader(pShader:0x0000000000000000, ppClassInstances:0x0000000000000000, NumClassInstances:0)
000662 IASetIndexBuffer(pIndexBuffer:0x00000003E7E59160, Format:57, Offset:0) hash=cb8d0531
000662 DrawIndexed(IndexCount:38388, StartIndexLocation:0, BaseVertexLocation:0)
000662 3DMigoto pre {
000662 3DMigoto [ShaderOverrideCockpit] analyse_options = dump_rt jpg clear_rt
000662 3DMigoto }
000662 3DMigoto pre {
000662 3DMigoto [ShaderOverridePSCockpit] o7 = ref resourcelabelmask
000662 3DMigoto copying by reference
000662 3DMigoto }
000662 3DMigoto post {
000662 3DMigoto [ShaderOverrideCockpit] run = customshaderwhiteps
000662 3DMigoto pre {
000662 3DMigoto [customshaderwhiteps] Draw = from_caller -> DrawIndexed(38388, 0, 0)
000662 3DMigoto [customshaderwhiteps] o7 = ref resourcelabelmask
000662 3DMigoto copying by reference
000662 3DMigoto }
000662 3DMigoto }
000662 3DMigoto analyse_options (one-shot): 00001081


=> the resource resourcelabelmask is intialized then referenced as o7 for PS shader call. But is does not work as in non VR...

I also tried to copy the output of a VS shader (as in IL2 BoS), but I have the same result. In log file, the resource is copied at frame 243 and used at frame 643.

As I understand, the problem may be that resource is not correctly intialized ? DCS use defered shading... How can I better initialize the resource for masking ?

Here is a link of dump for non VR (working) o7 resources creating mask: http://www.mediafire.com/file/zskqbshzwo559fr/FrameAnalysis-2018-05-12-224243_nonVR_copy_bb.zip
And the same for VR (not working) : http://www.mediafire.com/file/db61vcp1raltex1/FrameAnalysis-2018-05-12-230255_VR_copy_bb.zip (blue part is a control for eye detection)

For information, I have the following entries for both VR and no VR:
000662 3DMigoto Dumping Texture2D D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\000662-o0=74ad54bf-vs=b58187fd352d2c78-ps=911793d8d482bbc5.jpg -> D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\deduped\b0bbb0d5-R8G8_UNORM.jpg
000662 3DMigoto Failed to dump Texture2D D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\000662-o0=74ad54bf-vs=b58187fd352d2c78-ps=911793d8d482bbc5.jpg -> D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\deduped\b0bbb0d5-R8G8_UNORM.jpg: 0x80070032
000662 3DMigoto Dumping Texture2D D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\000662-o1=74ad54bf-vs=b58187fd352d2c78-ps=911793d8d482bbc5.jpg -> D:\jeux\DCS World\bin\FrameAnalysis-2018-05-12-230255\deduped\b0bbb0d5-R8G8_UNORM.jpg

In deduped directory I have the same output as o0, with o7 output for non VR and no o7 for VR...


EDIT : I found that I can copy an o0 that works in VR if the resolution of this o0 is the same than the final ouput. So it is working now. But I wonder if there is a way to create a resource by specfiying its resolution.
But I found other problems in DCS with complex shader process (lot of vs are associated with cs, ds, hs,... shaders), pixel shader that do not have RGB output, and on top of that deferred rendering...So my zoom feature looks too hard to achieve.

Posted 05/12/2018 09:22 PM   
Is there any way to get and modify ReShade shaders with 3Dmigoto? Not in a way I know, at least. What I want to do is modify Super Depth 3D to make it work in 3D Vision. Although I don't know how useful it would be because with StereoTextureEnable at 0, the ReShade UI and its effects only render in one eye. And if I use normal 3D with 0 separation, I get the full 3D Vision GPU/CPU performance decrease.
Is there any way to get and modify ReShade shaders with 3Dmigoto? Not in a way I know, at least.

What I want to do is modify Super Depth 3D to make it work in 3D Vision. Although I don't know how useful it would be because with StereoTextureEnable at 0, the ReShade UI and its effects only render in one eye. And if I use normal 3D with 0 separation, I get the full 3D Vision GPU/CPU performance decrease.

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

Posted 05/25/2018 07:50 PM   
Just stumbled over this - seems the arty screenshots community is using 3dmigoto to remove HUDs for screenshots. If you've not checked out Dead End Thrills, he does some spectacular work. https://www.deadendthrills.com/forum/discussion/409/using-3dmigoto-to-remove-hud-shaders-from-dx10-11-games/
Just stumbled over this - seems the arty screenshots community is using 3dmigoto to remove HUDs for screenshots. If you've not checked out Dead End Thrills, he does some spectacular work.


https://www.deadendthrills.com/forum/discussion/409/using-3dmigoto-to-remove-hud-shaders-from-dx10-11-games/

Posted 05/30/2018 03:19 AM   
[quote="Pirateguybrush"]Just stumbled over this - seems the arty screenshots community is using 3dmigoto to remove HUDs for screenshots. If you've not checked out Dead End Thrills, he does some spectacular work. https://www.deadendthrills.com/forum/discussion/409/using-3dmigoto-to-remove-hud-shaders-from-dx10-11-games/[/quote] I'm The_Janitor in the second post, I've been using helixmod and 3Dmigoto for a long time to make HUD toggles. Sometimes it's literally the only way to remove the HUD in a game, so I'm very grateful for these wrappers. I like to play games HUDless, so without helixmod and 3Dmigoto there's a lot of games that I wouldn't even have bought. It's also appreciated in the screenshot and video community so I like to upload the toggles I make. Here for example is a cool video made by someone using my HUD toggle in Infinite Warfare (You guys helped me make this in this thread by fixing a broken shader) https://www.youtube.com/watch?v=YNiO7fzNY9U&t=117s
Pirateguybrush said:Just stumbled over this - seems the arty screenshots community is using 3dmigoto to remove HUDs for screenshots. If you've not checked out Dead End Thrills, he does some spectacular work.


https://www.deadendthrills.com/forum/discussion/409/using-3dmigoto-to-remove-hud-shaders-from-dx10-11-games/



I'm The_Janitor in the second post, I've been using helixmod and 3Dmigoto for a long time to make HUD toggles. Sometimes it's literally the only way to remove the HUD in a game, so I'm very grateful for these wrappers. I like to play games HUDless, so without helixmod and 3Dmigoto there's a lot of games that I wouldn't even have bought. It's also appreciated in the screenshot and video community so I like to upload the toggles I make.

Here for example is a cool video made by someone using my HUD toggle in Infinite Warfare (You guys helped me make this in this thread by fixing a broken shader)

;t=117s

1080 Ti - i7 5820k - 16Gb RAM - Win 10 version 1607 - ASUS VG236H (1920x1080@120Hz)

Posted 05/30/2018 07:04 PM   
[quote="DetectiveJohnKimble"][quote="Pirateguybrush"]Just stumbled over this - seems the arty screenshots community is using 3dmigoto to remove HUDs for screenshots. If you've not checked out Dead End Thrills, he does some spectacular work. https://www.deadendthrills.com/forum/discussion/409/using-3dmigoto-to-remove-hud-shaders-from-dx10-11-games/[/quote] I'm The_Janitor in the second post, I've been using helixmod and 3Dmigoto for a long time to make HUD toggles. Sometimes it's literally the only way to remove the HUD in a game, so I'm very grateful for these wrappers. I like to play games HUDless, so without helixmod and 3Dmigoto there's a lot of games that I wouldn't even have bought. It's also appreciated in the screenshot and video community so I like to upload the toggles I make. Here for example is a cool video made by someone using my HUD toggle in Infinite Warfare (You guys helped me make this in this thread by fixing a broken shader) https://www.youtube.com/watch?v=YNiO7fzNY9U&t=117s [/quote] Huge post, tanks!
DetectiveJohnKimble said:
Pirateguybrush said:Just stumbled over this - seems the arty screenshots community is using 3dmigoto to remove HUDs for screenshots. If you've not checked out Dead End Thrills, he does some spectacular work.


https://www.deadendthrills.com/forum/discussion/409/using-3dmigoto-to-remove-hud-shaders-from-dx10-11-games/



I'm The_Janitor in the second post, I've been using helixmod and 3Dmigoto for a long time to make HUD toggles. Sometimes it's literally the only way to remove the HUD in a game, so I'm very grateful for these wrappers. I like to play games HUDless, so without helixmod and 3Dmigoto there's a lot of games that I wouldn't even have bought. It's also appreciated in the screenshot and video community so I like to upload the toggles I make.

Here for example is a cool video made by someone using my HUD toggle in Infinite Warfare (You guys helped me make this in this thread by fixing a broken shader)

;t=117s


Huge post, tanks!

http://photos.3dvisionlive.com/chtiblue/album/530b52d4cb85770d6e000049/3Dvision with 55" LG OLED EG920 interlieved 3D (3840x2160) overide mode, GTX 2080 Ti XC Ultra EVGA, core i5 @4.3GHz, 16Gb@2130, windows 7&10 64bit, Dolby Atmos 5.1.4 Marantz 6010 AVR

Posted 05/31/2018 03:19 AM   
While we're on the subject of non 3D related mods with 3Dmigoto, I'm wondering if I should upload my mods without the nvapi.dll / nvapi64.dll file? Apparently you have fixed the AMD issue by not including that file: https://github.com/bo3b/3Dmigoto/issues/45 Is the Nvapi.dll necessary for Nvidia cards if I'm not using 3D? If not it would be better to just not include the file. So far I have been using the workaround of including a real nvapi for AMD users. I'm using version 1.3.11 of 3Dmigoto btw.
While we're on the subject of non 3D related mods with 3Dmigoto, I'm wondering if I should upload my mods without the nvapi.dll / nvapi64.dll file? Apparently you have fixed the AMD issue by not including that file:

https://github.com/bo3b/3Dmigoto/issues/45

Is the Nvapi.dll necessary for Nvidia cards if I'm not using 3D? If not it would be better to just not include the file.
So far I have been using the workaround of including a real nvapi for AMD users.

I'm using version 1.3.11 of 3Dmigoto btw.

1080 Ti - i7 5820k - 16Gb RAM - Win 10 version 1607 - ASUS VG236H (1920x1080@120Hz)

Posted 08/10/2018 10:35 AM   
Hi guys, Off and on, over the last 6 months, I have had a stab at porting 3DMigoto over to DX9, using the original Chirri wrapper. I should caveat this with the fact that before I started I had no experience of c++, COM, direct x, or shader fixing for that matter, so I imagine a lot of it needs some more work. However, I have got Upscaling, Software Mouse, and SBS working in several DX9 games, and have a very rough conversion of 3DMigoto 1.2 complete (barely any of it tested though). I have run up against a performance problem though, and am running out of things to try, so thought I would ask here to see if anyone with more experience had any suggestions. After some testing, it seems as if any call to nvapi drastically reduces FPS, regardless of what the call is. I tried re-downloading the existing 3DMigoto (with the bare-bones chirri wrapper), ripped out the nvapi project and statically linked to the nvapi library (as nvidia instruct), and then called NvAPI_Stereo_IsActivated 10 times on present. FPS dropped from 70 - 50 with the 'is stereo activated' calls in place...which seems excessive. I have tried different nvapi calls and the same fps drop occurs. I also compiled Flugan's DX9 project, and did the same thing, with the same result. I have a 1080 SLI (the same thing happens with SLI disabled) and have tried a couple of older drivers. I am on Windows 10, but may try duel booting Windows 7 onto my pc, just to see what happens, as I am running out of ideas. Thanks for any help!
Hi guys,

Off and on, over the last 6 months, I have had a stab at porting 3DMigoto over to DX9, using the original Chirri wrapper.

I should caveat this with the fact that before I started I had no experience of c++, COM, direct x, or shader fixing for that matter, so I imagine a lot of it needs some more work.

However, I have got Upscaling, Software Mouse, and SBS working in several DX9 games, and have a very rough conversion of 3DMigoto 1.2 complete (barely any of it tested though).

I have run up against a performance problem though, and am running out of things to try, so thought I would ask here to see if anyone with more experience had any suggestions.

After some testing, it seems as if any call to nvapi drastically reduces FPS, regardless of what the call is.

I tried re-downloading the existing 3DMigoto (with the bare-bones chirri wrapper), ripped out the nvapi project and statically linked to the nvapi library (as nvidia instruct), and then called NvAPI_Stereo_IsActivated 10 times on present. FPS dropped from 70 - 50 with the 'is stereo activated' calls in place...which seems excessive. I have tried different nvapi calls and the same fps drop occurs.

I also compiled Flugan's DX9 project, and did the same thing, with the same result.

I have a 1080 SLI (the same thing happens with SLI disabled) and have tried a couple of older drivers. I am on Windows 10, but may try duel booting Windows 7 onto my pc, just to see what happens, as I am running out of ideas.

Thanks for any help!

Posted 08/10/2018 11:42 AM   
[quote="DetectiveJohnKimble"]While we're on the subject of non 3D related mods with 3Dmigoto, I'm wondering if I should upload my mods without the nvapi.dll / nvapi64.dll file? Apparently you have fixed the AMD issue by not including that file: https://github.com/bo3b/3Dmigoto/issues/45 Is the Nvapi.dll necessary for Nvidia cards if I'm not using 3D? If not it would be better to just not include the file. So far I have been using the workaround of including a real nvapi for AMD users. I'm using version 1.3.11 of 3Dmigoto btw.[/quote] I'm not really sure what the state of our general modding support is here. Much better than before, but I've never personally used or tested this, so I don't know the details. It seems to me the best approach for non-3D modding would be to not include the nvapi64.dll file. Fairly sure that we get an error, but now continue on. Should work on NVidia and AMD and Intel this way.
DetectiveJohnKimble said:While we're on the subject of non 3D related mods with 3Dmigoto, I'm wondering if I should upload my mods without the nvapi.dll / nvapi64.dll file? Apparently you have fixed the AMD issue by not including that file:


https://github.com/bo3b/3Dmigoto/issues/45


Is the Nvapi.dll necessary for Nvidia cards if I'm not using 3D? If not it would be better to just not include the file.
So far I have been using the workaround of including a real nvapi for AMD users.

I'm using version 1.3.11 of 3Dmigoto btw.

I'm not really sure what the state of our general modding support is here. Much better than before, but I've never personally used or tested this, so I don't know the details.

It seems to me the best approach for non-3D modding would be to not include the nvapi64.dll file. Fairly sure that we get an error, but now continue on. Should work on NVidia and AMD and Intel this way.

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

Posted 08/13/2018 12:53 AM   
[quote="davegl1234"]Hi guys, Off and on, over the last 6 months, I have had a stab at porting 3DMigoto over to DX9, using the original Chirri wrapper. I should caveat this with the fact that before I started I had no experience of c++, COM, direct x, or shader fixing for that matter, so I imagine a lot of it needs some more work. However, I have got Upscaling, Software Mouse, and SBS working in several DX9 games, and have a very rough conversion of 3DMigoto 1.2 complete (barely any of it tested though). I have run up against a performance problem though, and am running out of things to try, so thought I would ask here to see if anyone with more experience had any suggestions. After some testing, it seems as if any call to nvapi drastically reduces FPS, regardless of what the call is. I tried re-downloading the existing 3DMigoto (with the bare-bones chirri wrapper), ripped out the nvapi project and statically linked to the nvapi library (as nvidia instruct), and then called NvAPI_Stereo_IsActivated 10 times on present. FPS dropped from 70 - 50 with the 'is stereo activated' calls in place...which seems excessive. I have tried different nvapi calls and the same fps drop occurs. I also compiled Flugan's DX9 project, and did the same thing, with the same result. I have a 1080 SLI (the same thing happens with SLI disabled) and have tried a couple of older drivers. I am on Windows 10, but may try duel booting Windows 7 onto my pc, just to see what happens, as I am running out of ideas. Thanks for any help! [/quote] Hey, this is super cool! Thanks for putting in the effort to bring up a DX9 variant. We've never done it because HelixMod is really fully featured, but damn it's hard to use. Be super nice to have our superior workflow. Jumping into the deep end with C++, HLSL, and shader hacking was the same thing I did when starting on 3Dmigoto. Pretty steep learning curve. :-> In retrospect, a mistake I made that I can pass along is that I did not study the fundamentals very well, and just jumped in. I would have made significantly more progress faster if I'd done some dx11 tutorials. For the performance problem, I don't think that will be related to Win10 vs. Win7. Always possible, but unlikely. We don't see this problem for the DX11 variant of 3Dmigoto. I've done extensive profiling of 3Dmigoto and I would have seen this problem if it existed there. Always possible that 'small' variants like switching to DX9 makes it take a different path in the driver that is not well optimized. So, the calling Stereo_IsActivated might be cached/fine on DX11, but not on DX9 for example. If you've narrowed that down to a big difference, I would say it's definitely worth removing that call. We call it to avoid errors in other stereo calls, and stereo can be disabled or enabled by Ctrl-T at any time. But, it's fairly rare, and a better error handling approach would work if this is a performance hog. Since you've already done a dive into the deep end of the pool with C++ and driver level hacking, I'd recommend going another step, and using the profiling tools in Visual Studio. I'm not sure if they are available for free on VS2013, but they are for sure on VS2017. Make a full release/non-debug build of your tool, for optimal performance, but have it also generate the pdb debugging files. If you have the pdb files, then when you are profiling, you will get function names for any stack crawls or hotspots. Also allow the profiler to fetch pdb files for the OS itself. This will name functions that are in the hot spots lists. Similarly, there is a new server for recent NVidia drivers that will give you function names. With all those names loaded, you can use the profiler to quickly and directly find the key problems. Use the Analyze->Performance Profiler menu. Chooose Running Process, and CPU sampling. As a hard-core performance guy, I can promise that guessing or code inspection is not ever going to get you to the correct answer. You can do experiments to try to narrow it down, but the number of possible tests is very, very high and not a good use of time. If you run into problems using the profiler, let me know, and I can lend a hand.
davegl1234 said:Hi guys,

Off and on, over the last 6 months, I have had a stab at porting 3DMigoto over to DX9, using the original Chirri wrapper.

I should caveat this with the fact that before I started I had no experience of c++, COM, direct x, or shader fixing for that matter, so I imagine a lot of it needs some more work.

However, I have got Upscaling, Software Mouse, and SBS working in several DX9 games, and have a very rough conversion of 3DMigoto 1.2 complete (barely any of it tested though).

I have run up against a performance problem though, and am running out of things to try, so thought I would ask here to see if anyone with more experience had any suggestions.

After some testing, it seems as if any call to nvapi drastically reduces FPS, regardless of what the call is.

I tried re-downloading the existing 3DMigoto (with the bare-bones chirri wrapper), ripped out the nvapi project and statically linked to the nvapi library (as nvidia instruct), and then called NvAPI_Stereo_IsActivated 10 times on present. FPS dropped from 70 - 50 with the 'is stereo activated' calls in place...which seems excessive. I have tried different nvapi calls and the same fps drop occurs.

I also compiled Flugan's DX9 project, and did the same thing, with the same result.

I have a 1080 SLI (the same thing happens with SLI disabled) and have tried a couple of older drivers. I am on Windows 10, but may try duel booting Windows 7 onto my pc, just to see what happens, as I am running out of ideas.

Thanks for any help!

Hey, this is super cool! Thanks for putting in the effort to bring up a DX9 variant. We've never done it because HelixMod is really fully featured, but damn it's hard to use. Be super nice to have our superior workflow.

Jumping into the deep end with C++, HLSL, and shader hacking was the same thing I did when starting on 3Dmigoto. Pretty steep learning curve. :-> In retrospect, a mistake I made that I can pass along is that I did not study the fundamentals very well, and just jumped in. I would have made significantly more progress faster if I'd done some dx11 tutorials.


For the performance problem, I don't think that will be related to Win10 vs. Win7. Always possible, but unlikely.

We don't see this problem for the DX11 variant of 3Dmigoto. I've done extensive profiling of 3Dmigoto and I would have seen this problem if it existed there.

Always possible that 'small' variants like switching to DX9 makes it take a different path in the driver that is not well optimized. So, the calling Stereo_IsActivated might be cached/fine on DX11, but not on DX9 for example.

If you've narrowed that down to a big difference, I would say it's definitely worth removing that call. We call it to avoid errors in other stereo calls, and stereo can be disabled or enabled by Ctrl-T at any time. But, it's fairly rare, and a better error handling approach would work if this is a performance hog.


Since you've already done a dive into the deep end of the pool with C++ and driver level hacking, I'd recommend going another step, and using the profiling tools in Visual Studio.

I'm not sure if they are available for free on VS2013, but they are for sure on VS2017.

Make a full release/non-debug build of your tool, for optimal performance, but have it also generate the pdb debugging files. If you have the pdb files, then when you are profiling, you will get function names for any stack crawls or hotspots.

Also allow the profiler to fetch pdb files for the OS itself. This will name functions that are in the hot spots lists. Similarly, there is a new server for recent NVidia drivers that will give you function names.

With all those names loaded, you can use the profiler to quickly and directly find the key problems. Use the Analyze->Performance Profiler menu. Chooose Running Process, and CPU sampling.

As a hard-core performance guy, I can promise that guessing or code inspection is not ever going to get you to the correct answer. You can do experiments to try to narrow it down, but the number of possible tests is very, very high and not a good use of time.


If you run into problems using the profiler, let me know, and I can lend a hand.

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

Posted 08/13/2018 01:06 AM   
[quote="bo3b"][quote="davegl1234"]Hi guys, Off and on, over the last 6 months, I have had a stab at porting 3DMigoto over to DX9, using the original Chirri wrapper. I should caveat this with the fact that before I started I had no experience of c++, COM, direct x, or shader fixing for that matter, so I imagine a lot of it needs some more work. However, I have got Upscaling, Software Mouse, and SBS working in several DX9 games, and have a very rough conversion of 3DMigoto 1.2 complete (barely any of it tested though). I have run up against a performance problem though, and am running out of things to try, so thought I would ask here to see if anyone with more experience had any suggestions. After some testing, it seems as if any call to nvapi drastically reduces FPS, regardless of what the call is. I tried re-downloading the existing 3DMigoto (with the bare-bones chirri wrapper), ripped out the nvapi project and statically linked to the nvapi library (as nvidia instruct), and then called NvAPI_Stereo_IsActivated 10 times on present. FPS dropped from 70 - 50 with the 'is stereo activated' calls in place...which seems excessive. I have tried different nvapi calls and the same fps drop occurs. I also compiled Flugan's DX9 project, and did the same thing, with the same result. I have a 1080 SLI (the same thing happens with SLI disabled) and have tried a couple of older drivers. I am on Windows 10, but may try duel booting Windows 7 onto my pc, just to see what happens, as I am running out of ideas. Thanks for any help! [/quote] Hey, this is super cool! Thanks for putting in the effort to bring up a DX9 variant. We've never done it because HelixMod is really fully featured, but damn it's hard to use. Be super nice to have our superior workflow. Jumping into the deep end with C++, HLSL, and shader hacking was the same thing I did when starting on 3Dmigoto. Pretty steep learning curve. :-> In retrospect, a mistake I made that I can pass along is that I did not study the fundamentals very well, and just jumped in. I would have made significantly more progress faster if I'd done some dx11 tutorials. For the performance problem, I don't think that will be related to Win10 vs. Win7. Always possible, but unlikely. We don't see this problem for the DX11 variant of 3Dmigoto. I've done extensive profiling of 3Dmigoto and I would have seen this problem if it existed there. Always possible that 'small' variants like switching to DX9 makes it take a different path in the driver that is not well optimized. So, the calling Stereo_IsActivated might be cached/fine on DX11, but not on DX9 for example. If you've narrowed that down to a big difference, I would say it's definitely worth removing that call. We call it to avoid errors in other stereo calls, and stereo can be disabled or enabled by Ctrl-T at any time. But, it's fairly rare, and a better error handling approach would work if this is a performance hog. Since you've already done a dive into the deep end of the pool with C++ and driver level hacking, I'd recommend going another step, and using the profiling tools in Visual Studio. I'm not sure if they are available for free on VS2013, but they are for sure on VS2017. Make a full release/non-debug build of your tool, for optimal performance, but have it also generate the pdb debugging files. If you have the pdb files, then when you are profiling, you will get function names for any stack crawls or hotspots. Also allow the profiler to fetch pdb files for the OS itself. This will name functions that are in the hot spots lists. Similarly, there is a new server for recent NVidia drivers that will give you function names. With all those names loaded, you can use the profiler to quickly and directly find the key problems. Use the Analyze->Performance Profiler menu. Chooose Running Process, and CPU sampling. As a hard-core performance guy, I can promise that guessing or code inspection is not ever going to get you to the correct answer. You can do experiments to try to narrow it down, but the number of possible tests is very, very high and not a good use of time. If you run into problems using the profiler, let me know, and I can lend a hand. [/quote] Ah cheers, ill have a look at the profiler, it will hopefully give me a better understanding of the issue. I first noticed a performance hit simply when checking if stereo is activated in the stereo texture (when deciding every frame whether to update the stereo texture with convergence, seperation values etc) but really noticed performance problems with a SBS shader where there are 9 nvapi calls made (on a single gpu - the reverse stereo blit SLI bottleneck also exists in DX9, as you would expect). It doesn't seem to matter what the nvapi calls are, just the number of calls made (if i replace the code with 9 random nvapi calls i get the same reduced fps), but, as you say, i need to profile this rather than guessing somewhat. Ive also only repeated this in the Heaven benchmark and SWTOR, but haven't tried any other games. The aim initially was to get Helix mod fixes and SBS (plus associated Upcaling and Software mouse) working together, and I realise there would have been quicker ways of doing this, but figured porting DX11 3Dmigoto to DX9 would be a good way of learning as i went along. I've got SBS, Upscaling, and Software Mouse working (albeit with the aforementioned performance issues) and the plan is to eventually consume existing helix mod fixes (Flugan has kindly said i can use his code that already replaces helix shaders, then i can add constant copying logic and other things helix does).
bo3b said:
davegl1234 said:Hi guys,

Off and on, over the last 6 months, I have had a stab at porting 3DMigoto over to DX9, using the original Chirri wrapper.

I should caveat this with the fact that before I started I had no experience of c++, COM, direct x, or shader fixing for that matter, so I imagine a lot of it needs some more work.

However, I have got Upscaling, Software Mouse, and SBS working in several DX9 games, and have a very rough conversion of 3DMigoto 1.2 complete (barely any of it tested though).

I have run up against a performance problem though, and am running out of things to try, so thought I would ask here to see if anyone with more experience had any suggestions.

After some testing, it seems as if any call to nvapi drastically reduces FPS, regardless of what the call is.

I tried re-downloading the existing 3DMigoto (with the bare-bones chirri wrapper), ripped out the nvapi project and statically linked to the nvapi library (as nvidia instruct), and then called NvAPI_Stereo_IsActivated 10 times on present. FPS dropped from 70 - 50 with the 'is stereo activated' calls in place...which seems excessive. I have tried different nvapi calls and the same fps drop occurs.

I also compiled Flugan's DX9 project, and did the same thing, with the same result.

I have a 1080 SLI (the same thing happens with SLI disabled) and have tried a couple of older drivers. I am on Windows 10, but may try duel booting Windows 7 onto my pc, just to see what happens, as I am running out of ideas.

Thanks for any help!

Hey, this is super cool! Thanks for putting in the effort to bring up a DX9 variant. We've never done it because HelixMod is really fully featured, but damn it's hard to use. Be super nice to have our superior workflow.

Jumping into the deep end with C++, HLSL, and shader hacking was the same thing I did when starting on 3Dmigoto. Pretty steep learning curve. :-> In retrospect, a mistake I made that I can pass along is that I did not study the fundamentals very well, and just jumped in. I would have made significantly more progress faster if I'd done some dx11 tutorials.


For the performance problem, I don't think that will be related to Win10 vs. Win7. Always possible, but unlikely.

We don't see this problem for the DX11 variant of 3Dmigoto. I've done extensive profiling of 3Dmigoto and I would have seen this problem if it existed there.

Always possible that 'small' variants like switching to DX9 makes it take a different path in the driver that is not well optimized. So, the calling Stereo_IsActivated might be cached/fine on DX11, but not on DX9 for example.

If you've narrowed that down to a big difference, I would say it's definitely worth removing that call. We call it to avoid errors in other stereo calls, and stereo can be disabled or enabled by Ctrl-T at any time. But, it's fairly rare, and a better error handling approach would work if this is a performance hog.


Since you've already done a dive into the deep end of the pool with C++ and driver level hacking, I'd recommend going another step, and using the profiling tools in Visual Studio.

I'm not sure if they are available for free on VS2013, but they are for sure on VS2017.

Make a full release/non-debug build of your tool, for optimal performance, but have it also generate the pdb debugging files. If you have the pdb files, then when you are profiling, you will get function names for any stack crawls or hotspots.

Also allow the profiler to fetch pdb files for the OS itself. This will name functions that are in the hot spots lists. Similarly, there is a new server for recent NVidia drivers that will give you function names.

With all those names loaded, you can use the profiler to quickly and directly find the key problems. Use the Analyze->Performance Profiler menu. Chooose Running Process, and CPU sampling.

As a hard-core performance guy, I can promise that guessing or code inspection is not ever going to get you to the correct answer. You can do experiments to try to narrow it down, but the number of possible tests is very, very high and not a good use of time.


If you run into problems using the profiler, let me know, and I can lend a hand.


Ah cheers, ill have a look at the profiler, it will hopefully give me a better understanding of the issue.

I first noticed a performance hit simply when checking if stereo is activated in the stereo texture (when deciding every frame whether to update the stereo texture with convergence, seperation values etc) but really noticed performance problems with a SBS shader where there are 9 nvapi calls made (on a single gpu - the reverse stereo blit SLI bottleneck also exists in DX9, as you would expect). It doesn't seem to matter what the nvapi calls are, just the number of calls made (if i replace the code with 9 random nvapi calls i get the same reduced fps), but, as you say, i need to profile this rather than guessing somewhat. Ive also only repeated this in the Heaven benchmark and SWTOR, but haven't tried any other games.

The aim initially was to get Helix mod fixes and SBS (plus associated Upcaling and Software mouse) working together, and I realise there would have been quicker ways of doing this, but figured porting DX11 3Dmigoto to DX9 would be a good way of learning as i went along. I've got SBS, Upscaling, and Software Mouse working (albeit with the aforementioned performance issues) and the plan is to eventually consume existing helix mod fixes (Flugan has kindly said i can use his code that already replaces helix shaders, then i can add constant copying logic and other things helix does).

Posted 08/13/2018 11:48 AM   
Double post.
Double post.

Posted 08/13/2018 11:49 AM   
  135 / 143    
Scroll To Top