I hadn't heard of 3D migoto before. I would certainly appreciate that little 'how to', if you have time, thank you.
I wish I had the sort of mathematical mind that could understand this stuff without handholding. (Not nec. 3D migoto - I don't know how that works so it might not be mathematical at all.) My coding experience goes no further than html and css, and that's not even coding. Numbers, formulas, all that sort of thing, are a mystery to me, always have been. You and others do great work, and I for one am very grateful you do
What you need is to make the shader which renders the vignette do nothing (so it doesn't render anything). 3D migoto allows you to do that, after some work. The hud toggles you see are all made with this tool and simply make the shaders which render the hud do nothing, with a toggle key to switch this on/off. 3D migoto makes this easy as it lets you find the shader in question and export it as normal text so you can edit it
1) Download 3D migoto:
https://github.com/bo3b/3Dmigoto/releases/download/1.2.56/3Dmigoto-1.2.56.zip
2) unpack the zip in a folder.
3) Go to the x64 folder. Copy all files and the folder, except the uninstall.bat, and copy them into the bin folder of mass effect: andromeda. The same folder you installed reshade in. If it already contains the d3dcompiler_46.dll you don't need to overwrite it.
4) disable reshade's dll by renaming it to dxgi.dll.old. This is only for scanning the shaders, you can enable it later
5) start the game. You'll see green text at the top like vs: 0/
some number ps: 0/
some number etc. and at the bottom 'stereo disabled'. We're interested in pixelshaders, so the numbers after 'ps' are important. They illustrate the current shader number and the total. So e.g. 'ps: 4/120' means you are currently at the 4th shader of 120.
6) Start a level, so you see the vignette you want to hide. you'll now go through the pixel shaders one by one. The active shader will be disabled by 3d migoto so you can see what it does. You can walk through the shaders by using numpad 1 (go back 1 shader) and numpad 2 (go forth 1 shader). you'll see all kinds of things disappear, geometry, shadows etc. That's ok: the current shader (the number at the top of the screen) renders that particular thing. Once you arrive at the vignette shader, it will disappear. When you go to the next/previous shader it reappears again. Select with numpad 1/2 the vignette shader so it's hidden and press numpad 3. This will export the shader as text. You'll see a text at the top saying '// ---- Created with 3Dmigoto ' etc.
7) you're done hunting, and can close the game. In the bin folder of the game where you copied 3D migoto, go into the ShaderFixes folder. There should now be a file with a gibberish filename similar to '2cbe61e6d361ec15-ps_replace.txt'. open it in notepad
8) Now we'll alter the shader so it does nothing if we have pressed the toggle.
Every shader code looks different, so I'll illustrate it with a shader from Hitman. Scroll down in the code till you see:
Code:
void main(
float4 v0 : TEXCOORD0,
float4 v1 : TEXCOORD1,
float2 v2 : TEXCOORD2,
out float4 o0 : SV_Target0)
{
That's the start of the shader code. Here I'll use an example, a shader from Hitman. Your shader will have a similar structure:
Code:
void main(
float4 v0 : TEXCOORD0,
float4 v1 : TEXCOORD1,
float2 v2 : TEXCOORD2,
out float4 o0 : SV_Target0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;
r0.xyzw = tex.Sample(sampler_tex_s, v2.xy).xyzw;
r1.xyz = v1.xyz;
r1.w = 1;
r0.xyzw = r1.xyzw * r0.xyzw;
r0.xyzw = v1.wwww * r0.xyzw;
r0.xyzw = saturate(v0.xyzw * r0.wwww + r0.xyzw);
r0.xyz = log2(r0.xyz);
o0.w = r0.w;
r0.xyz = fGammaPower * r0.xyz;
r0.xyz = exp2(r0.xyz);
o0.xyz = fGammaScale * r0.xyz;
return;
}
You see that empty line under float4 fDest? That's the place where you add the first part. Copy at that location the following code:
Code:
float4 params = IniParams.Load(0);
if (params.x == 0)
{
o0 = 0;
discard;
} else {
Now at the bottom,
below 'return;', you add a '}' to match the '{' after else, like a closing tag in HTML
So in my example this looks like:
Code:
void main(
float4 v0 : TEXCOORD0,
float4 v1 : TEXCOORD1,
float2 v2 : TEXCOORD2,
out float4 o0 : SV_Target0)
{
float4 r0,r1;
uint4 bitmask, uiDest;
float4 fDest;
float4 params = IniParams.Load(0);
if (params.x == 0)
{
o0 = 0;
discard;
} else {
r0.xyzw = tex.Sample(sampler_tex_s, v2.xy).xyzw;
r1.xyz = v1.xyz;
r1.w = 1;
r0.xyzw = r1.xyzw * r0.xyzw;
r0.xyzw = v1.wwww * r0.xyzw;
r0.xyzw = saturate(v0.xyzw * r0.wwww + r0.xyzw);
r0.xyz = log2(r0.xyz);
o0.w = r0.w;
r0.xyz = fGammaPower * r0.xyz;
r0.xyz = exp2(r0.xyz);
o0.xyz = fGammaScale * r0.xyz;
return;
}
}
Save your shader. You're almost done.
9) In the game bin folder you copied the 3d migoto ini file, in step 3). This ini file is setup so you can find shaders, with the numpad keys, logging and the green text. You don't want that during gameplay so rename the d3dx.ini file to d3dx.ini.hunting. Then copy an ini file from a hud toggle into it, or get this one:
https://gist.github.com/FransBouma/e00c31fef7f64d5ed1ba4d56eb3781c9 (click the download zip button at the top right, or copy / paste the file contents into a new d3dx.ini file). THe one I linked to is from hitman, but it's really the default ini file with a key definition for the toggle and all logging disabled as well as 'hunting' switched to 0 as we already found the shader
10) rename the reshade dll file back to dxgi.dll
11) start the game. You should now be able to toggle the vignette with caps lock. (if you want another key, you can configure that in the d3dx.ini file under [Keys].
If it doesn't work, as in: the key toggle does nothing, the vignette stays up, check the shader code again in step 8 and see if you didn't forget the trailing }
Good luck
(thanks to One3rd for his
older guide over at DET)