Dang, those pics look awesome. You guys are amazing!!
So can these new features in 3DMigoto be used to update the Dragon Age Inquisitions fix as well and make it less convoluted?
@D-Man11
Yes can work with Dragon Age Inquisitions....the idea of the unviversal fix, is to work with the engine...not the particular game. (in my sign i also have an UE4 Universal fix)
I still want to solve an issue:
[b]@DarkStarSword
If you are looking this[/b]....only in this game i have inconsistency when passing the inverse matrix to the shader + ShaderRegex (i put the run customtilelight in the ShaderRegex), the CS lights disappear because *i suppose* the inverse is passed empty....BUT if only add one of the CS (yes only one) in the ini like this make 100% consistence and the CS lights appear again.
[code][ShaderOverride_CS1]
Hash= 3c3fdd42a66ae2fb
[/code]
Any suggestion?
Also for this game i have to use this texture override:
(in Battlefront i have to use this one also)
[code][TextureOverrideCubeMapReflections]
; Fixes broken environment mapped reflections
match_misc_flags = +texturecube
match_usage = default
StereoMode = 2
[/code]
@D-Man11
Yes can work with Dragon Age Inquisitions....the idea of the unviversal fix, is to work with the engine...not the particular game. (in my sign i also have an UE4 Universal fix)
I still want to solve an issue:
@DarkStarSword
If you are looking this....only in this game i have inconsistency when passing the inverse matrix to the shader + ShaderRegex (i put the run customtilelight in the ShaderRegex), the CS lights disappear because *i suppose* the inverse is passed empty....BUT if only add one of the CS (yes only one) in the ini like this make 100% consistence and the CS lights appear again.
[ShaderOverride_CS1]
Hash= 3c3fdd42a66ae2fb
Any suggestion?
Also for this game i have to use this texture override:
(in Battlefront i have to use this one also)
@DHR:
Yes, the cube texture fix should be universal as well as the Copy Stereo Texture to fix the missing lights in the left eye.
As to your problem:
- Make sure the location were you make the mat multiply is correct. I had this issue before and it was happening because I pasted the code in the middle of the "decl_" space. Also make sure you don't overwrite any of the used registers by the shader.
- You can always use the debug shaders and see if the matrix is actually empty or not (I expect not and is the problem from above).
@DHR:
Yes, the cube texture fix should be universal as well as the Copy Stereo Texture to fix the missing lights in the left eye.
As to your problem:
- Make sure the location were you make the mat multiply is correct. I had this issue before and it was happening because I pasted the code in the middle of the "decl_" space. Also make sure you don't overwrite any of the used registers by the shader.
- You can always use the debug shaders and see if the matrix is actually empty or not (I expect not and is the problem from above).
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
Thanks for the suggestions Helifax.
Yes i know the cube texture is universal. But in this case i have to tweak the override....probably others game will also need a different tweak....i put 6 options in the ini, to cover all cases....is trial and error.
About the problem, is not related to the fix location...i'm using ShaderRegex so is very very consistent on that. I think is kind of issue or bug...because of 10 times i start the game without the solution i found, 5 of them the CS lights are on and fixed and 5 of them are disabled.....when are disabled if i add the override (that btw don't do nothing) is fixed pressing F10....i remove the override, press F10 and disappear...so is clearly an inconsistency in passing the inverse or some kind of other bug.
Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.
About this game....MAN...this game looks very nice with all the lights ON.
Thanks for the suggestions Helifax.
Yes i know the cube texture is universal. But in this case i have to tweak the override....probably others game will also need a different tweak....i put 6 options in the ini, to cover all cases....is trial and error.
About the problem, is not related to the fix location...i'm using ShaderRegex so is very very consistent on that. I think is kind of issue or bug...because of 10 times i start the game without the solution i found, 5 of them the CS lights are on and fixed and 5 of them are disabled.....when are disabled if i add the override (that btw don't do nothing) is fixed pressing F10....i remove the override, press F10 and disappear...so is clearly an inconsistency in passing the inverse or some kind of other bug.
Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.
About this game....MAN...this game looks very nice with all the lights ON.
[quote] If you are looking this....only in this game i have inconsistency when passing the inverse matrix to the shader + ShaderRegex (i put the run customtilelight in the ShaderRegex), the CS lights disappear because *i suppose* the inverse is passed empty....BUT if only add one of the CS (yes only one) in the ini like this make 100% consistence and the CS lights appear again.[/quote]Hard to say what's going on without more info. I take it the matrices are all still in cb0[0:3]? It might well be that the first pass has valid matrices, but none of the later passes do. If that is the case, you might be able to add max_executions_per_frame=1 to the CustomShader section to limit it to the first per frame.
You can take a frame analysis log and examine that to see if it did what you were expecting, or if there were any issues (like "Copy source was NULL", "max_copies_per_frame exceeded", etc).
[quote]Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.[/quote]Frame analysis dumps are done after the post command list has been processed, so remove the 'post cs-cb1 = ResourceBackup' if you want to leave it bound for analysis that way (or bind it to another otherwise unused slot if you still need to restore cb1). One of these days I want to tie frame analysis into the command list so you can have it dump out a resource at any point, but generally the live debug shaders serve much the same purpose and are superior in many ways.
You can use my cb debug shader to examine the contents of the buffers live:
https://github.com/DarkStarSword/3d-fixes/tree/master/custom_shader_cb_live_view
To examine the original constant buffer and make sure the matrix there looks sane:
[code]ResourceDebugCB = cs-cb0[/code]
Or, to examine the inversed constant buffer add this to a ShaderOverride:
[code]
post ResourceDebugCB = ResourceInverseMatrix
[/code]
The [ResourceDebugCB] section has a max_copies_per_frame you can adjust to choose whether you want to see the first, second, last, etc. instance in a frame.
If you are looking this....only in this game i have inconsistency when passing the inverse matrix to the shader + ShaderRegex (i put the run customtilelight in the ShaderRegex), the CS lights disappear because *i suppose* the inverse is passed empty....BUT if only add one of the CS (yes only one) in the ini like this make 100% consistence and the CS lights appear again.
Hard to say what's going on without more info. I take it the matrices are all still in cb0[0:3]? It might well be that the first pass has valid matrices, but none of the later passes do. If that is the case, you might be able to add max_executions_per_frame=1 to the CustomShader section to limit it to the first per frame.
You can take a frame analysis log and examine that to see if it did what you were expecting, or if there were any issues (like "Copy source was NULL", "max_copies_per_frame exceeded", etc).
Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.
Frame analysis dumps are done after the post command list has been processed, so remove the 'post cs-cb1 = ResourceBackup' if you want to leave it bound for analysis that way (or bind it to another otherwise unused slot if you still need to restore cb1). One of these days I want to tie frame analysis into the command list so you can have it dump out a resource at any point, but generally the live debug shaders serve much the same purpose and are superior in many ways.
To examine the original constant buffer and make sure the matrix there looks sane:
ResourceDebugCB = cs-cb0
Or, to examine the inversed constant buffer add this to a ShaderOverride:
post ResourceDebugCB = ResourceInverseMatrix
The [ResourceDebugCB] section has a max_copies_per_frame you can adjust to choose whether you want to see the first, second, last, etc. instance in a frame.
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="DHR"]Thanks for the suggestions Helifax.
Yes i know the cube texture is universal. But in this case i have to tweak the override....probably others game will also need a different tweak....i put 6 options in the ini, to cover all cases....is trial and error.
About the problem, is not related to the fix location...i'm using ShaderRegex so is very very consistent on that. I think is kind of issue or bug...because of 10 times i start the game without the solution i found, 5 of them the CS lights are on and fixed and 5 of them are disabled.....when are disabled if i add the override (that btw don't do nothing) is fixed pressing F10....i remove the override, press F10 and disappear...so is clearly an inconsistency in passing the inverse or some kind of other bug.
Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.
About this game....MAN...this game looks very nice with all the lights ON.[/quote]
You don't need a new constant buffer!
Please wait a bit till I'll release the fix for ME:A. It will all be clearer then! (And you can update the Regex Pattern accordingly;) )
You don't EVEN NEED THE INVERSE!!! (My PC is all over my living room floor atm and I am typuing from my phone trying not to make spelling mistakes).
Wait a bit more! YOu will see very clear how I fixed those CS Tile Lights;) and this problem will go away1!
DHR said:Thanks for the suggestions Helifax.
Yes i know the cube texture is universal. But in this case i have to tweak the override....probably others game will also need a different tweak....i put 6 options in the ini, to cover all cases....is trial and error.
About the problem, is not related to the fix location...i'm using ShaderRegex so is very very consistent on that. I think is kind of issue or bug...because of 10 times i start the game without the solution i found, 5 of them the CS lights are on and fixed and 5 of them are disabled.....when are disabled if i add the override (that btw don't do nothing) is fixed pressing F10....i remove the override, press F10 and disappear...so is clearly an inconsistency in passing the inverse or some kind of other bug.
Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.
About this game....MAN...this game looks very nice with all the lights ON.
You don't need a new constant buffer!
Please wait a bit till I'll release the fix for ME:A. It will all be clearer then! (And you can update the Regex Pattern accordingly;) )
You don't EVEN NEED THE INVERSE!!! (My PC is all over my living room floor atm and I am typuing from my phone trying not to make spelling mistakes).
Wait a bit more! YOu will see very clear how I fixed those CS Tile Lights;) and this problem will go away1!
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
@DarkStarSword
Yes the matrices are all in cb0[0:3].
Also max_executions_per_frame=1 don't work
If i use Frame Analysis or the debug shader to see if inverse is passed, always works and the fix works, because i need to declare at least 1 ShaderOverride and that fix the issue....in this cases the inverse is passed correctly (checked in Frame Analysis and Debug overlay)
BUT, i found that add this override fix the issue (100% consistent):
[code][ShaderOverride1]
Hash=1111111111111111[/code]
That hash shader is invented, don't exist. So to make this works at least 1 ShaderOverride need to be declared, no matter what hash shader number. That's why in others games always works (just checked!)...because always at least one ShaderOverride is declared in the ini (like HUD).
Now i'm not that sure that is the inverse that is passed empty. I think we have a bug here.
I tested in Battlefront removing all the ShaderOverride and also this issue happens. I can replicate the issue not only in Mirror Edge....we need only one ShaderOVerride (any hash) and all works OK.
So i will put that override in the ini (workaround)....with that the Universal Fix will always work.
@Helifax
Thanks!
The Universal Fix is working...i'm only debugging an issue that now i almost sure is a bug.
@DarkStarSword
Yes the matrices are all in cb0[0:3].
Also max_executions_per_frame=1 don't work
If i use Frame Analysis or the debug shader to see if inverse is passed, always works and the fix works, because i need to declare at least 1 ShaderOverride and that fix the issue....in this cases the inverse is passed correctly (checked in Frame Analysis and Debug overlay)
BUT, i found that add this override fix the issue (100% consistent):
[ShaderOverride1]
Hash=1111111111111111
That hash shader is invented, don't exist. So to make this works at least 1 ShaderOverride need to be declared, no matter what hash shader number. That's why in others games always works (just checked!)...because always at least one ShaderOverride is declared in the ini (like HUD).
Now i'm not that sure that is the inverse that is passed empty. I think we have a bug here.
I tested in Battlefront removing all the ShaderOverride and also this issue happens. I can replicate the issue not only in Mirror Edge....we need only one ShaderOVerride (any hash) and all works OK.
So i will put that override in the ini (workaround)....with that the Universal Fix will always work.
@Helifax
Thanks!
The Universal Fix is working...i'm only debugging an issue that now i almost sure is a bug.
Yeah, ok - that suggests we have a bug where ShaderRegex command lists are ignored if there are no other ShaderOverride sections. I'll take a look.
Currently at: Stage "grumble" AKA "Gah, not this one again!"
[img]https://res.cloudinary.com/teepublic/image/private/s--Du8RFld4--/t_Preview/b_rgb:191919,c_limit,f_jpg,h_630,q_90,w_630/v1452204627/production/designs/390179_1.jpg[/img]
Found it:
[code]
// grumble grumble this optimisation caught me out grumble grumble -DSS
if (!G->mShaderOverrideMap.empty() || (G->hunting == HUNTING_MODE_ENABLED)) {
ShaderMap::iterator i = G->mShaders.find(pShader);
if (i != G->mShaders.end()) {
*currentShaderHash = i->second;
[/code]
Fixed it:
[code]
// grumble grumble this optimisation caught me out *TWICE* grumble grumble -DSS
if (!G->mShaderOverrideMap.empty() || !G->shader_regex_groups.empty() || (G->hunting == HUNTING_MODE_ENABLED)) {
ShaderMap::iterator i = G->mShaders.find(pShader);
if (i != G->mShaders.end()) {
*currentShaderHash = i->second;
[/code]
Yeah, ok - that suggests we have a bug where ShaderRegex command lists are ignored if there are no other ShaderOverride sections. I'll take a look.
Currently at: Stage "grumble" AKA "Gah, not this one again!"
Found it:
// grumble grumble this optimisation caught me out grumble grumble -DSS
if (!G->mShaderOverrideMap.empty() || (G->hunting == HUNTING_MODE_ENABLED)) {
ShaderMap::iterator i = G->mShaders.find(pShader);
if (i != G->mShaders.end()) {
*currentShaderHash = i->second;
Fixed it:
// grumble grumble this optimisation caught me out *TWICE* grumble grumble -DSS
if (!G->mShaderOverrideMap.empty() || !G->shader_regex_groups.empty() || (G->hunting == HUNTING_MODE_ENABLED)) {
ShaderMap::iterator i = G->mShaders.find(pShader);
if (i != G->mShaders.end()) {
*currentShaderHash = i->second;
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
@DHR:
You don't need to calculate the inverse and you don't need to multiply by cb0[0-3].
All you need is this:
[code]
ubfe r2.y, l(1), l(2), vThreadIDInGroupFlattened.x
movc r5.z, r2.y, l(1.000000), r2.x
mov r5.w, l(1.000000)
// Instead of Matrix * Inverse multiply
// depth
dp4 r38.x, r5.xyzw, cb0[3].xyzw
// stereo.y * depth
mul r40.w, r40.y, r38.x
// (stereo.y * depth - 1)
add r40.w, r40.w, l(-1.000)
// stereo.x * (stereo.y * depth - 1)
mul r40.w, r40.x, r40.w
// r5.x += stereo.x * (stereo.y * depth - 1)
mov r38.x, r5.x
add r38.x, r38.x, r40.w
mov r5.x, r38.x
// Original code below
[/code]
That is it! Is the same formula I discovered a while ago and it has been part of all the fixes after DA:I. (I actually figured it during the DA:I development but all the shaders were already fixed by Mike (using the inverse multiply) and I was lazy to change them.
You can also add this to Regex if you find the right pattern;) And problem solved!
(No double matrix multiplication. Saves some GPU time and no extra Compute Shader to calculate the Inverse: Win, Win, Win) :)
Also, before you post the Frostbite3 Universal fix, can I have a look at it? :)
That is it! Is the same formula I discovered a while ago and it has been part of all the fixes after DA:I. (I actually figured it during the DA:I development but all the shaders were already fixed by Mike (using the inverse multiply) and I was lazy to change them.
You can also add this to Regex if you find the right pattern;) And problem solved!
(No double matrix multiplication. Saves some GPU time and no extra Compute Shader to calculate the Inverse: Win, Win, Win) :)
Also, before you post the Frostbite3 Universal fix, can I have a look at it? :)
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
[quote]and this problem will go away1![/quote]I want to be clear on something - 3DMigoto is open source and we fix our bugs. If you find a workaround that's great and can help in the short term or if Bo3b and I are too busy, MIA or the proper fix is going to take a long time, or too low priority for us to focus on, but it is not a substitute for reporting the issue and having us fix it properly.
I've seen this mentality a few times in this community, and it's perfectly understandable where it comes from - we all have to work around bugs in closed source software (Windows, NVIDIA Driver, etc) all the time, and if you can find a workaround it might well solve your problem in the short term, but don't let that stop you from reporting it so we can try to solve it for everyone.
In this case - thanks to DHR's observations I tracked down an obscure bug that might be hurting other fixes using ShaderRegex, so everyone benefits from solving this properly, but only a small number of people benefit from working around the issue.
I want to be clear on something - 3DMigoto is open source and we fix our bugs. If you find a workaround that's great and can help in the short term or if Bo3b and I are too busy, MIA or the proper fix is going to take a long time, or too low priority for us to focus on, but it is not a substitute for reporting the issue and having us fix it properly.
I've seen this mentality a few times in this community, and it's perfectly understandable where it comes from - we all have to work around bugs in closed source software (Windows, NVIDIA Driver, etc) all the time, and if you can find a workaround it might well solve your problem in the short term, but don't let that stop you from reporting it so we can try to solve it for everyone.
In this case - thanks to DHR's observations I tracked down an obscure bug that might be hurting other fixes using ShaderRegex, so everyone benefits from solving this properly, but only a small number of people benefit from working around the issue.
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"][quote]and this problem will go away1![/quote]I want to be clear on something - 3DMigoto is open source and we fix our bugs. If you find a workaround that's great and can help in the short term or if Bo3b and I are too busy, MIA or the proper fix is going to take a long time, or too low priority for us to focus on, but it is not a substitute for reporting the issue and having us fix it properly.
I've seen this mentality a few times in this community, and it's perfectly understandable where it comes from - we all have to work around bugs in closed source software (Windows, NVIDIA Driver, etc) all the time, and if you can find a workaround it might well solve your problem in the short term, but don't let that stop you from reporting it so we can try to solve it for everyone.
In this case - thanks to DHR's observations I tracked down an obscure bug that might be hurting other fixes using ShaderRegex, so everyone benefits from solving this properly, but only a small number of people benefit from working around the issue.[/quote]
I find this post a bit disturbing. I never meant that it was bad that he reported it, just that for this particular case, that approach is not required.
So like you, just to be clear: Reporting Bugs is more than OK and perfect! (I have done in numerous occasions). Is how the whole code base grows and matures.
My solution was simply related to the Frostbite3 fix(es) and nothing more. (And is not a work-around, is just a different approach to the same problem, but not exposing the bug). I am really sorry if it came out as anything else. (I was typing from my phone since my PC was all over the floor for 3 days - changing the Case and redoing the whole water-loop :( )
I want to be clear on something - 3DMigoto is open source and we fix our bugs. If you find a workaround that's great and can help in the short term or if Bo3b and I are too busy, MIA or the proper fix is going to take a long time, or too low priority for us to focus on, but it is not a substitute for reporting the issue and having us fix it properly.
I've seen this mentality a few times in this community, and it's perfectly understandable where it comes from - we all have to work around bugs in closed source software (Windows, NVIDIA Driver, etc) all the time, and if you can find a workaround it might well solve your problem in the short term, but don't let that stop you from reporting it so we can try to solve it for everyone.
In this case - thanks to DHR's observations I tracked down an obscure bug that might be hurting other fixes using ShaderRegex, so everyone benefits from solving this properly, but only a small number of people benefit from working around the issue.
I find this post a bit disturbing. I never meant that it was bad that he reported it, just that for this particular case, that approach is not required.
So like you, just to be clear: Reporting Bugs is more than OK and perfect! (I have done in numerous occasions). Is how the whole code base grows and matures.
My solution was simply related to the Frostbite3 fix(es) and nothing more. (And is not a work-around, is just a different approach to the same problem, but not exposing the bug). I am really sorry if it came out as anything else. (I was typing from my phone since my PC was all over the floor for 3 days - changing the Case and redoing the whole water-loop :( )
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
I think we're on the same page, and you're right - if you've found an alternate way to get the linear depth without requiring the matrix inverse that is better all round for Frostbyte - I was just a little concerned that a fairly obscure yet severe bug that had been uncovered in 3DMigoto might get forgotton once the workaround means this case no longer exposes it.
I don't remember specifically when I've seen this happen before - it has been cases of downloading someone else' fix and finding they have done something very strange to get around a simple bug in 3DMigoto that would have been better off being fixed. Then again, I've done the same to get around bugs in Helix Mod, so... :-/
I think we're on the same page, and you're right - if you've found an alternate way to get the linear depth without requiring the matrix inverse that is better all round for Frostbyte - I was just a little concerned that a fairly obscure yet severe bug that had been uncovered in 3DMigoto might get forgotton once the workaround means this case no longer exposes it.
I don't remember specifically when I've seen this happen before - it has been cases of downloading someone else' fix and finding they have done something very strange to get around a simple bug in 3DMigoto that would have been better off being fixed. Then again, I've done the same to get around bugs in Helix Mod, so... :-/
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"]Currently at: Stage "grumble" AKA "Gah, not this one again!"
.
.
Fixed it: **code here**[/quote]
Very nice !! Thanks DSS!! i suppose will be included in the next release of 3Dmigoto.
Hope this will be the last grumble!
@Helifax
MAny Thanks! But the inverse is working OK in the Universal Fix and for this CS fix, there are only 3 or 4 shaders to patch (ME:A have 4, is the max number i saw...Battlefront 1 and Mirror Edge have 3..and FIFA 18 Demo have 2)...no big deal about we have a very big hit performance on this.
In the PS i first made the ShaderRegex using also the inverse, but in this case sometimes there are like 20 or more shaders to patch on the fly and is Frostbite3 engine...so in this case i go with the approach you posted, mainly to save some potencial lost in performance...but still don't noticed when tested.
About the Universal Fix i'm still testing (i want to test in a couple of games more)...so i prefer to share something i have test a little more. I will probably release tomorrow or tuesday.
DarkStarSword said:Currently at: Stage "grumble" AKA "Gah, not this one again!"
.
.
Fixed it: **code here**
Very nice !! Thanks DSS!! i suppose will be included in the next release of 3Dmigoto.
Hope this will be the last grumble!
@Helifax
MAny Thanks! But the inverse is working OK in the Universal Fix and for this CS fix, there are only 3 or 4 shaders to patch (ME:A have 4, is the max number i saw...Battlefront 1 and Mirror Edge have 3..and FIFA 18 Demo have 2)...no big deal about we have a very big hit performance on this.
In the PS i first made the ShaderRegex using also the inverse, but in this case sometimes there are like 20 or more shaders to patch on the fly and is Frostbite3 engine...so in this case i go with the approach you posted, mainly to save some potencial lost in performance...but still don't noticed when tested.
About the Universal Fix i'm still testing (i want to test in a couple of games more)...so i prefer to share something i have test a little more. I will probably release tomorrow or tuesday.
Ofc DHR:) I am really glad that you are looking into it and make it an Universal Fix! Many many thanks!
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
The fix is updated with all the Lights ON!!
Thanks DSS!!!
[url]http://helixmod.blogspot.com/2016/11/mirrors-edge-catalyst-dx11.html[/url]
@D-Man11
Totally off-topic....can you test Dragon Age Inquisition if works?
I copy-paste all the others effects fixed by mike and Helifax in to the Universal Fix, try [url="https://s3.amazonaws.com/dhr/Test/Dragon.Age.Inquisition.3Dfix.zip"]HERE[/url] and post your results in the Dragon Age thread.
@D-Man11
Totally off-topic....can you test Dragon Age Inquisition if works?
I copy-paste all the others effects fixed by mike and Helifax in to the Universal Fix, try HERE and post your results in the Dragon Age thread.
So can these new features in 3DMigoto be used to update the Dragon Age Inquisitions fix as well and make it less convoluted?
Yes can work with Dragon Age Inquisitions....the idea of the unviversal fix, is to work with the engine...not the particular game. (in my sign i also have an UE4 Universal fix)
I still want to solve an issue:
@DarkStarSword
If you are looking this....only in this game i have inconsistency when passing the inverse matrix to the shader + ShaderRegex (i put the run customtilelight in the ShaderRegex), the CS lights disappear because *i suppose* the inverse is passed empty....BUT if only add one of the CS (yes only one) in the ini like this make 100% consistence and the CS lights appear again.
Any suggestion?
Also for this game i have to use this texture override:
(in Battlefront i have to use this one also)
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
Yes, the cube texture fix should be universal as well as the Copy Stereo Texture to fix the missing lights in the left eye.
As to your problem:
- Make sure the location were you make the mat multiply is correct. I had this issue before and it was happening because I pasted the code in the middle of the "decl_" space. Also make sure you don't overwrite any of the used registers by the shader.
- You can always use the debug shaders and see if the matrix is actually empty or not (I expect not and is the problem from above).
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
Yes i know the cube texture is universal. But in this case i have to tweak the override....probably others game will also need a different tweak....i put 6 options in the ini, to cover all cases....is trial and error.
About the problem, is not related to the fix location...i'm using ShaderRegex so is very very consistent on that. I think is kind of issue or bug...because of 10 times i start the game without the solution i found, 5 of them the CS lights are on and fixed and 5 of them are disabled.....when are disabled if i add the override (that btw don't do nothing) is fixed pressing F10....i remove the override, press F10 and disappear...so is clearly an inconsistency in passing the inverse or some kind of other bug.
Also using Frame Analysis, the cb1 (where we copied the inverse) passed is not dumped....only cb0 (original in the shader). Also trying changin to cb13, same issue.
About this game....MAN...this game looks very nice with all the lights ON.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
You can take a frame analysis log and examine that to see if it did what you were expecting, or if there were any issues (like "Copy source was NULL", "max_copies_per_frame exceeded", etc).
Frame analysis dumps are done after the post command list has been processed, so remove the 'post cs-cb1 = ResourceBackup' if you want to leave it bound for analysis that way (or bind it to another otherwise unused slot if you still need to restore cb1). One of these days I want to tie frame analysis into the command list so you can have it dump out a resource at any point, but generally the live debug shaders serve much the same purpose and are superior in many ways.
You can use my cb debug shader to examine the contents of the buffers live:
https://github.com/DarkStarSword/3d-fixes/tree/master/custom_shader_cb_live_view
To examine the original constant buffer and make sure the matrix there looks sane:
Or, to examine the inversed constant buffer add this to a ShaderOverride:
The [ResourceDebugCB] section has a max_copies_per_frame you can adjust to choose whether you want to see the first, second, last, etc. instance in a frame.
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
You don't need a new constant buffer!
Please wait a bit till I'll release the fix for ME:A. It will all be clearer then! (And you can update the Regex Pattern accordingly;) )
You don't EVEN NEED THE INVERSE!!! (My PC is all over my living room floor atm and I am typuing from my phone trying not to make spelling mistakes).
Wait a bit more! YOu will see very clear how I fixed those CS Tile Lights;) and this problem will go away1!
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
Yes the matrices are all in cb0[0:3].
Also max_executions_per_frame=1 don't work
If i use Frame Analysis or the debug shader to see if inverse is passed, always works and the fix works, because i need to declare at least 1 ShaderOverride and that fix the issue....in this cases the inverse is passed correctly (checked in Frame Analysis and Debug overlay)
BUT, i found that add this override fix the issue (100% consistent):
That hash shader is invented, don't exist. So to make this works at least 1 ShaderOverride need to be declared, no matter what hash shader number. That's why in others games always works (just checked!)...because always at least one ShaderOverride is declared in the ini (like HUD).
Now i'm not that sure that is the inverse that is passed empty. I think we have a bug here.
I tested in Battlefront removing all the ShaderOverride and also this issue happens. I can replicate the issue not only in Mirror Edge....we need only one ShaderOVerride (any hash) and all works OK.
So i will put that override in the ini (workaround)....with that the Universal Fix will always work.
@Helifax
Thanks!
The Universal Fix is working...i'm only debugging an issue that now i almost sure is a bug.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
Currently at: Stage "grumble" AKA "Gah, not this one again!"
Found it:
Fixed 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
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
You don't need to calculate the inverse and you don't need to multiply by cb0[0-3].
All you need is this:
That is it! Is the same formula I discovered a while ago and it has been part of all the fixes after DA:I. (I actually figured it during the DA:I development but all the shaders were already fixed by Mike (using the inverse multiply) and I was lazy to change them.
You can also add this to Regex if you find the right pattern;) And problem solved!
(No double matrix multiplication. Saves some GPU time and no extra Compute Shader to calculate the Inverse: Win, Win, Win) :)
Also, before you post the Frostbite3 Universal fix, can I have a look at it? :)
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
I've seen this mentality a few times in this community, and it's perfectly understandable where it comes from - we all have to work around bugs in closed source software (Windows, NVIDIA Driver, etc) all the time, and if you can find a workaround it might well solve your problem in the short term, but don't let that stop you from reporting it so we can try to solve it for everyone.
In this case - thanks to DHR's observations I tracked down an obscure bug that might be hurting other fixes using ShaderRegex, so everyone benefits from solving this properly, but only a small number of people benefit from working around the issue.
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 find this post a bit disturbing. I never meant that it was bad that he reported it, just that for this particular case, that approach is not required.
So like you, just to be clear: Reporting Bugs is more than OK and perfect! (I have done in numerous occasions). Is how the whole code base grows and matures.
My solution was simply related to the Frostbite3 fix(es) and nothing more. (And is not a work-around, is just a different approach to the same problem, but not exposing the bug). I am really sorry if it came out as anything else. (I was typing from my phone since my PC was all over the floor for 3 days - changing the Case and redoing the whole water-loop :( )
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
I don't remember specifically when I've seen this happen before - it has been cases of downloading someone else' fix and finding they have done something very strange to get around a simple bug in 3DMigoto that would have been better off being fixed. Then again, I've done the same to get around bugs in Helix Mod, so... :-/
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
Very nice !! Thanks DSS!! i suppose will be included in the next release of 3Dmigoto.
Hope this will be the last grumble!
@Helifax
MAny Thanks! But the inverse is working OK in the Universal Fix and for this CS fix, there are only 3 or 4 shaders to patch (ME:A have 4, is the max number i saw...Battlefront 1 and Mirror Edge have 3..and FIFA 18 Demo have 2)...no big deal about we have a very big hit performance on this.
In the PS i first made the ShaderRegex using also the inverse, but in this case sometimes there are like 20 or more shaders to patch on the fly and is Frostbite3 engine...so in this case i go with the approach you posted, mainly to save some potencial lost in performance...but still don't noticed when tested.
About the Universal Fix i'm still testing (i want to test in a couple of games more)...so i prefer to share something i have test a little more. I will probably release tomorrow or tuesday.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com
1x Palit RTX 2080Ti Pro Gaming OC(watercooled and overclocked to hell)
3x 3D Vision Ready Asus VG278HE monitors (5760x1080).
Intel i9 9900K (overclocked to 5.3 and watercooled ofc).
Asus Maximus XI Hero Mobo.
16 GB Team Group T-Force Dark Pro DDR4 @ 3600.
Lots of Disks:
- Raid 0 - 256GB Sandisk Extreme SSD.
- Raid 0 - WD Black - 2TB.
- SanDisk SSD PLUS 480 GB.
- Intel 760p 256GB M.2 PCIe NVMe SSD.
Creative Sound Blaster Z.
Windows 10 x64 Pro.
etc
My website with my fixes and OpenGL to 3D Vision wrapper:
http://3dsurroundgaming.com
(If you like some of the stuff that I've done and want to donate something, you can do it with PayPal at tavyhome@gmail.com)
Thanks DSS!!!
http://helixmod.blogspot.com/2016/11/mirrors-edge-catalyst-dx11.html
@D-Man11
Totally off-topic....can you test Dragon Age Inquisition if works?
I copy-paste all the others effects fixed by mike and Helifax in to the Universal Fix, try HERE and post your results in the Dragon Age thread.
MY WEB
Helix Mod - Making 3D Better
My 3D Screenshot Gallery
Like my fixes? you can donate to Paypal: dhr.donation@gmail.com