zig11727 said:
Rise of the Tombraider (Steam Version) and Dues EX have a DX12 option.
I know, but they also have a DX11 mode, so a DX12 tool for 3D fixes isn't needed (I mean, that having the need may push people to do something about it).
About the remaining water problem (most noticeable when you look from above), I'm stuck. Here is an example:
How it should be:
How it looks:
Shader example (all of the water shaders are almost the same. 34defe3d2db150e2-ps_replace.txt, without the ASM code to make it shorter here):
//Water PS 9.
// ---- Created with 3Dmigoto v1.2.45 on Sat Oct 29 17:59:54 2016
Texture2D<float4> t11 : register(t11);
The "r5.x+=separation*(r5.z-convergence)*0.5;" correction is for water refraction. I think that the "r1.w = dot(v2.xyz, v2.xyz);" line is what I have to fix. "v2" comes from "o2" in the vertex shader (I picked a random water vertex shader here):
//Water VS 4.
// ---- Created with 3Dmigoto v1.2.45 on Sat Oct 29 12:27:52 2016
cbuffer cb2 : register(b2)
{
float4 cb2[13];
}
Haven't read through the previous posts, just answering your question in your last one: in Helixmod's ASM there is no divide function, so instead that gets split into 2 separate commands, use rcp to set the reciprocal of the source into the destination register, and then multiply by that to achieve the same result as dividing, which is essentially what lines 104 and 105 is doing: dividing v6.xy by v6.w, and storing the values in r11, which is used later on in the shader.
Haven't read through the previous posts, just answering your question in your last one: in Helixmod's ASM there is no divide function, so instead that gets split into 2 separate commands, use rcp to set the reciprocal of the source into the destination register, and then multiply by that to achieve the same result as dividing, which is essentially what lines 104 and 105 is doing: dividing v6.xy by v6.w, and storing the values in r11, which is used later on in the shader.
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
[quote="bo3b"]
If people care about modding- then you need to take Betheseda to task for removing the shader headers. Contact them. It provides them zero value, and makes it 10x harder to mod.
Removing the shader headers is a strictly anti-modder move.[/quote]
I am not actually a fan of this game and probably won't bother with it further, If I want to play a open world fantasy rpg I probably fire up the witcher. And yes that's a bit of a dick move to do that, but that's the only reason why I think it would be worthwhile to fix this is for the modding improvements because as it stands the engine doesn't handle alot of mods very well, and crashes regardless of build order)
I don't think many mods where broken by shaders for this game so I don't think its huge on the modding communities radar, apart from us poor 3dvision outcasts.
bo3b said:
If people care about modding- then you need to take Betheseda to task for removing the shader headers. Contact them. It provides them zero value, and makes it 10x harder to mod.
Removing the shader headers is a strictly anti-modder move.
I am not actually a fan of this game and probably won't bother with it further, If I want to play a open world fantasy rpg I probably fire up the witcher. And yes that's a bit of a dick move to do that, but that's the only reason why I think it would be worthwhile to fix this is for the modding improvements because as it stands the engine doesn't handle alot of mods very well, and crashes regardless of build order)
I don't think many mods where broken by shaders for this game so I don't think its huge on the modding communities radar, apart from us poor 3dvision outcasts.
i7-4790K CPU 4.8Ghz stable overclock.
16 GB RAM Corsair
ASUS Turbo 2080TI
Samsung SSD 840Pro
ASUS Z97-WS3D
Surround ASUS Rog Swift PG278Q(R), 2x PG278Q (yes it works)
Obutto R3volution.
Windows 10 pro 64x (Windows 7 Dual boot)
I honestly don't think I would play Bethesda games if they weren't moddable.
Bethesda games + mods = arguably the best games in the world.
Bethesda games - mods = competent but sloppy games that don't excel in any area.
@DJ-RK
Thank you. I looked at the microsoft documentation before your post, saw that it was the reciprocate (if they had said "inverse" I would have known what they meant :p).
Still, that part of the shader is different from the DX11 version.
The effect is at screen depth. My plan is putting it at 100% depth first and then correct ir back. I suspect that the camera FOV may come into play. If someone can do it, please help (I'm at work and won't be home for 10 hours).
@DJ-RK
Thank you. I looked at the microsoft documentation before your post, saw that it was the reciprocate (if they had said "inverse" I would have known what they meant :p).
Still, that part of the shader is different from the DX11 version.
The effect is at screen depth. My plan is putting it at 100% depth first and then correct ir back. I suspect that the camera FOV may come into play. If someone can do it, please help (I'm at work and won't be home for 10 hours).
[quote="masterotaku"]About the remaining water problem (most noticeable when you look from above), I'm stuck. Here is an example:
[...]
Shader example (all of the water shaders are almost the same. 34defe3d2db150e2-ps_replace.txt, without the ASM code to make it shorter here):
[...]
The "r5.x+=separation*(r5.z-convergence)*0.5;" correction is for water refraction. I think that the "r1.w = dot(v2.xyz, v2.xyz);" line is what I have to fix. "v2" comes from "o2" in the vertex shader (I picked a random water vertex shader here):
[...]
I don't know if I can fix it in the vertex shader directly or if it needs to be done in the pixel shader (like the refraction fix).
Here is where I officially call for help :(.
[/quote]
This is the first time I use 3Dmigoto so I may be wrong.
I didn't found that location of your screenshots but I found similar problems with shallow water in other water shaders. For instance, in the water with ice floes in the north (Water PS 3), the output color of the underwater pixels seems to be sampled from a broken texture. So I guess that the problem has to be fixed in another shader.
In frame analysis I saw the problem first in some assembler-only shaders (see picture) but I don't know how to modify them yet.
001717-ps-t0=4e5bb4ca-vs=d80566665db3dd02-ps=e192bd2508cda3ee
[img]https://forums.geforce.com/cmd/default/download-comment-attachment/70647/[/img]
masterotaku said:About the remaining water problem (most noticeable when you look from above), I'm stuck. Here is an example:
[...]
Shader example (all of the water shaders are almost the same. 34defe3d2db150e2-ps_replace.txt, without the ASM code to make it shorter here):
[...]
The "r5.x+=separation*(r5.z-convergence)*0.5;" correction is for water refraction. I think that the "r1.w = dot(v2.xyz, v2.xyz);" line is what I have to fix. "v2" comes from "o2" in the vertex shader (I picked a random water vertex shader here):
[...]
I don't know if I can fix it in the vertex shader directly or if it needs to be done in the pixel shader (like the refraction fix).
Here is where I officially call for help :(.
This is the first time I use 3Dmigoto so I may be wrong.
I didn't found that location of your screenshots but I found similar problems with shallow water in other water shaders. For instance, in the water with ice floes in the north (Water PS 3), the output color of the underwater pixels seems to be sampled from a broken texture. So I guess that the problem has to be fixed in another shader.
In frame analysis I saw the problem first in some assembler-only shaders (see picture) but I don't know how to modify them yet.
Thanks for the help. I don't know what else could be causing that. There are basically two types of water shaders: surface and all water itself (for refractions and this I'm touching the surface ones. The others just break the position of water if I alter them). Modifying "o2" in the water surface vertex shaders is what moves the effect. After a few hours of trying things (getting it to be better at certain camera angles or distances but worse at others, for example), I accidentally put water reflections to depth instead of at the surface of water :p.
Example of a shader (65dad8a710904ca1-vs_replace.txt. I don't know if this file is present in the current fix I published):
[code]
//Water VS 8.
// ---- Created with 3Dmigoto v1.2.45 on Mon Oct 31 22:11:49 2016
cbuffer cb2 : register(b2)
{
float4 cb2[14];
}
cbuffer cb1 : register(b1)
{
float4 cb1[6];
}
cbuffer cb0 : register(b0)
{
float4 cb0[1];
}
// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);
void main(
float4 v0 : POSITION0,
float2 v1 : TEXCOORD0,
out float4 o0 : SV_POSITION0,
out float4 o1 : COLOR0,
out float4 o2 : TEXCOORD0,
out float4 o3 : TEXCOORD1,
out float4 o4 : TEXCOORD2,
out float4 o5 : TEXCOORD3,
out float4 o6 : TEXCOORD4,
out float4 o7 : TEXCOORD5)
{
float4 r0,r1,r20,r21;
uint4 bitmask, uiDest;
float4 fDest;
float4 stereo = StereoParams.Load(0);
float4 iniparams = IniParams.Load(0);
float separation = stereo.x;
float convergence = stereo.y;
r0.xyz = v0.xyz;
r0.w = 1;
r1.z = dot(cb2[10].xyzw, r0.xyzw);
r1.w = -70000 + r1.z;
r1.w = max(0, r1.w);
r1.w = 9.99999975e-005 * r1.w;
r1.w = min(1, r1.w);
o0.z = r1.w * 0.5 + r1.z;
r1.x = dot(cb2[8].xyzw, r0.xyzw);
r1.y = dot(cb2[9].xyzw, r0.xyzw);
o0.xy = r1.xy;
r1.x = dot(r1.xyz, r1.xyz);
r1.x = sqrt(r1.x);
r1.x = saturate(r1.x * cb1[0].y + -cb1[0].x);
r1.x = log2(r1.x);
r1.x = cb1[5].w * r1.x;
r1.x = exp2(r1.x);
r1.x = min(cb1[2].w, r1.x);
o0.w = dot(cb2[11].xyzw, r0.xyzw);
r1.yzw = cb1[2].xyz + -cb1[1].xyz;
o1.xyz = r1.xxx * r1.yzw + cb1[1].xyz;
o1.w = r1.x;
r1.z = dot(cb2[2].xyzw, r0.xyzw);
r1.x = dot(cb2[0].xyzw, r0.xyzw);
r1.y = dot(cb2[1].xyzw, r0.xyzw);
o7.xyzw = r0.xyzw;
r20.xyzw=r0.xyzw;
float4 depth;
depth=dot(cb2[2].xyzw, r20.xyzw);
r20.x-=separation*(depth*convergence*0.01-convergence)*-cb2[10].y*iniparams.y;
r21.z = dot(cb2[2].xyzw, r20.xyzw);
r21.x = dot(cb2[0].xyzw, r20.xyzw);
r21.y = dot(cb2[1].xyzw, r20.xyzw);
r20.x = dot(r21.xyz, r21.xyz);
r0.x = dot(r1.xyz, r1.xyz);
o2.xyz = r21.xyz;
r0.yz = cb0[0].xy + r1.xy;
o2.w = sqrt(r20.x);
r1.xyzw = r0.yzyz / cb1[5].xxyy;
r0.xy = r0.yz / cb1[5].zz;
o4.xy = cb1[4].xy + r0.xy;
o3.xyzw = cb1[3].xyzw + r1.xyzw;
r0.xy = float2(-0.5,-0.5) + v1.xy;
r0.xy = r0.xy * float2(0.100000001,0.100000001) + cb2[13].xy;
r0.z = -cb2[13].w + cb2[12].x;
r0.w = r0.z / cb2[12].x;
r0.z = cb2[13].z / cb2[12].x;
o4.zw = r0.xy + r0.zw;
r0.xy = v1.xy * float2(0.5,0.5) + cb2[12].yz;
o5.xy = float2(-0.25,-0.25) + r0.xy;
o5.zw = v1.xy;
o6.x = cb2[12].x;
return;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
// using 3Dmigoto v1.2.45 on Mon Oct 31 22:11:49 2016
//
//
// Input signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// POSITION 0 xyzw 0 NONE float xyz
// TEXCOORD 0 xy 1 NONE float xy
//
//
// Output signature:
//
// Name Index Mask Register SysValue Format Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION 0 xyzw 0 POS float xyzw
// COLOR 0 xyzw 1 NONE float xyzw
// TEXCOORD 0 xyzw 2 NONE float xyzw
// TEXCOORD 1 xyzw 3 NONE float xyzw
// TEXCOORD 2 xyzw 4 NONE float xyzw
// TEXCOORD 3 xyzw 5 NONE float xyzw
// TEXCOORD 4 x 6 NONE float x
// TEXCOORD 5 xyzw 7 NONE float xyzw
//
vs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[1], immediateIndexed
dcl_constantbuffer cb1[6], immediateIndexed
dcl_constantbuffer cb2[14], immediateIndexed
dcl_input v0.xyz
dcl_input v1.xy
dcl_output_siv o0.xyzw, position
dcl_output o1.xyzw
dcl_output o2.xyzw
dcl_output o3.xyzw
dcl_output o4.xyzw
dcl_output o5.xyzw
dcl_output o6.x
dcl_output o7.xyzw
dcl_temps 2
mov r0.xyz, v0.xyzx
mov r0.w, l(1.000000)
dp4 r1.z, cb2[10].xyzw, r0.xyzw
add r1.w, r1.z, l(-70000.000000)
max r1.w, r1.w, l(0.000000)
mul r1.w, r1.w, l(0.000100)
min r1.w, r1.w, l(1.000000)
mad o0.z, r1.w, l(0.500000), r1.z
dp4 r1.x, cb2[8].xyzw, r0.xyzw
dp4 r1.y, cb2[9].xyzw, r0.xyzw
mov o0.xy, r1.xyxx
dp3 r1.x, r1.xyzx, r1.xyzx
sqrt r1.x, r1.x
mad_sat r1.x, r1.x, cb1[0].y, -cb1[0].x
log r1.x, r1.x
mul r1.x, r1.x, cb1[5].w
exp r1.x, r1.x
min r1.x, r1.x, cb1[2].w
dp4 o0.w, cb2[11].xyzw, r0.xyzw
add r1.yzw, -cb1[1].xxyz, cb1[2].xxyz
mad o1.xyz, r1.xxxx, r1.yzwy, cb1[1].xyzx
mov o1.w, r1.x
dp4 r1.z, cb2[2].xyzw, r0.xyzw
dp4 r1.x, cb2[0].xyzw, r0.xyzw
dp4 r1.y, cb2[1].xyzw, r0.xyzw
mov o7.xyzw, r0.xyzw
dp3 r0.x, r1.xyzx, r1.xyzx
mov o2.xyz, r1.xyzx
add r0.yz, r1.xxyx, cb0[0].xxyx
sqrt o2.w, r0.x
div r1.xyzw, r0.yzyz, cb1[5].xxyy
div r0.xy, r0.yzyy, cb1[5].zzzz
add o4.xy, r0.xyxx, cb1[4].xyxx
add o3.xyzw, r1.xyzw, cb1[3].xyzw
add r0.xy, v1.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
mad r0.xy, r0.xyxx, l(0.100000, 0.100000, 0.000000, 0.000000), cb2[13].xyxx
add r0.z, cb2[12].x, -cb2[13].w
div r0.w, r0.z, cb2[12].x
div r0.z, cb2[13].z, cb2[12].x
add o4.zw, r0.zzzw, r0.xxxy
mad r0.xy, v1.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), cb2[12].yzyy
add o5.xy, r0.xyxx, l(-0.250000, -0.250000, 0.000000, 0.000000)
mov o5.zw, v1.xxxy
mov o6.x, cb2[12].x
ret
// Approximately 0 instruction slots used
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
[/code]
As you see, I copied some calculations to r20 and r21, imitating r0 and r1 but doing a correction at some point:
[code]r20.x-=separation*(depth*convergence*0.01-convergence)*-cb2[10].y*iniparams.y;[/code]
This is still wrong, by the way. Multiplying by "-cb2[10].y" made reflections be at positive depth at two camera positions. iniparams.y is for the bloom hotkey, but I'm also using it now to toggle this effect quickly.
Imagine that I say north, east, south and west, about the camera position as I rotate. Without "-cb2[10].y", it would be:
- North: inside of the surface.
- East and west: surface level.
- South: outside of the surface.
With it:
- North and south: inside of the surface.
- East and west: surface level.
The shader is aware of my 360 degree camera position. My current code isn't the best I got for the water opacity problem (which affects those glaciers too). Not knowing what all those constant buffers are is annoying. If I somehow fix the opacity, I wonder how reflections will be in the end.
Thanks for the help. I don't know what else could be causing that. There are basically two types of water shaders: surface and all water itself (for refractions and this I'm touching the surface ones. The others just break the position of water if I alter them). Modifying "o2" in the water surface vertex shaders is what moves the effect. After a few hours of trying things (getting it to be better at certain camera angles or distances but worse at others, for example), I accidentally put water reflections to depth instead of at the surface of water :p.
Example of a shader (65dad8a710904ca1-vs_replace.txt. I don't know if this file is present in the current fix I published):
//Water VS 8.
// ---- Created with 3Dmigoto v1.2.45 on Mon Oct 31 22:11:49 2016
cbuffer cb2 : register(b2)
{
float4 cb2[14];
}
This is still wrong, by the way. Multiplying by "-cb2[10].y" made reflections be at positive depth at two camera positions. iniparams.y is for the bloom hotkey, but I'm also using it now to toggle this effect quickly.
Imagine that I say north, east, south and west, about the camera position as I rotate. Without "-cb2[10].y", it would be:
- North: inside of the surface.
- East and west: surface level.
- South: outside of the surface.
With it:
- North and south: inside of the surface.
- East and west: surface level.
The shader is aware of my 360 degree camera position. My current code isn't the best I got for the water opacity problem (which affects those glaciers too). Not knowing what all those constant buffers are is annoying. If I somehow fix the opacity, I wonder how reflections will be in the end.
I was having some issues with the Nvidia profile posted on page 3 where the UI wasn't drawing at the screen depth, and weapons looked like they were being drawn through the wrong eyes. I made some changes to the profile which are giving me good results. Hopefully it helps someone.
I also had to make changes to the profile. With the one posted, the whole game was flat, but at a depth, and with broken shadows. This appears to work:
Hi I don't know whether this is the right place to ask but does anyone know how to enable custom aa using nvidia inspector? Have tried original skyrim compatibility bits, and Fallout 4 profile to apply some MSAA and SSAA but it does not seem to working at all. Am also not a big fan of TAA.
Hi I don't know whether this is the right place to ask but does anyone know how to enable custom aa using nvidia inspector? Have tried original skyrim compatibility bits, and Fallout 4 profile to apply some MSAA and SSAA but it does not seem to working at all. Am also not a big fan of TAA.
I'm making some progress here. In knowledge at least. A bit. Remember when I talked about north, south, etc? Well, it's EXACTLY that. This is a post to remind me of my goals.
With the rest of the vertex shader being what I posted in my previous post (I just replace text for all water shaders with Notepad++ when I make a code change), I saw that with this...
[code]
depth=dot(cb2[2].xyzw, r20.xyzw);
r20.x+=separation*(depth-convergence)*iniparams.y;
[/code]
...(iniparams.y is just to enable/disable this fix with F3) opacity is correct when I'm looking south and adjusting convergence depending on the distance (reflections is outside of the surface). Higher distance = need for less convergence. Higher FOV = need for more convergence, linearly. So if at X distance with 120 fov I need 33 convergence, with 60 fov I need 16.5 convergence (tested).
When I look north, it's like a reverse fix (the wrongness is doubled) and the reflection is inside the surface, and when I look at east or west, the effect is wrong but kind of rotated, and the reflection is at surface depth.
So what I need is making the shader correctly depend on convergence, distance, fov and rotation. This won't be easy.
First step: making everything OK at 0 convergence.
I'm making some progress here. In knowledge at least. A bit. Remember when I talked about north, south, etc? Well, it's EXACTLY that. This is a post to remind me of my goals.
With the rest of the vertex shader being what I posted in my previous post (I just replace text for all water shaders with Notepad++ when I make a code change), I saw that with this...
...(iniparams.y is just to enable/disable this fix with F3) opacity is correct when I'm looking south and adjusting convergence depending on the distance (reflections is outside of the surface). Higher distance = need for less convergence. Higher FOV = need for more convergence, linearly. So if at X distance with 120 fov I need 33 convergence, with 60 fov I need 16.5 convergence (tested).
When I look north, it's like a reverse fix (the wrongness is doubled) and the reflection is inside the surface, and when I look at east or west, the effect is wrong but kind of rotated, and the reflection is at surface depth.
So what I need is making the shader correctly depend on convergence, distance, fov and rotation. This won't be easy.
First step: making everything OK at 0 convergence.
Pardon me if this is a dumb question, but aren't reflections [i]supposed[/i] to be behind the reflective surface? Because 1/s+1/s'=2/R, where R is the radius of the surface.
Pardon me if this is a dumb question, but aren't reflections supposed to be behind the reflective surface? Because 1/s+1/s'=2/R, where R is the radius of the surface.
I know, but they also have a DX11 mode, so a DX12 tool for 3D fixes isn't needed (I mean, that having the need may push people to do something about it).
About the remaining water problem (most noticeable when you look from above), I'm stuck. Here is an example:
How it should be:
How it looks:
Shader example (all of the water shaders are almost the same. 34defe3d2db150e2-ps_replace.txt, without the ASM code to make it shorter here):
The "r5.x+=separation*(r5.z-convergence)*0.5;" correction is for water refraction. I think that the "r1.w = dot(v2.xyz, v2.xyz);" line is what I have to fix. "v2" comes from "o2" in the vertex shader (I picked a random water vertex shader here):
I don't know if I can fix it in the vertex shader directly or if it needs to be done in the pixel shader (like the refraction fix).
Here is where I officially call for help :(.
Edit: an extra water shader for the "ShaderFixes" folder: https://www.dropbox.com/s/mxiaw8w82v89rd8/b316c3fb37c1f863-ps_replace.txt?dl=0
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
Intel Core i7-3820, 4 X 3,60 GHz overclocked to 4,50 GHz ; EVGA Titan X 12VRAM ; 16 GB Corsair Vengeance DDR-1600 (4x 4 GB) ; Asus VG278H 27-inch incl. 3D vision 2 glasses, integrated transmitter ; Xbox One Elite wireless controller ; Windows 10HTC VIVE 2,5 m2 roomscale3D VISION GAMERS - VISIT ME ON STEAM and feel free to add me: http://steamcommunity.com/profiles/76561198064106555 YOUTUBE: https://www.youtube.com/channel/UC1UE5TPoF0HX0HVpF_E4uPQ STEAM CURATOR: https://store.steampowered.com/curator/33611530-Streaming-Deluxe/
In line 153, it does the refraction fix, I think. But I'm not sure what line 104 does.
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
3D Gaming Rig: CPU: i7 7700K @ 4.9Ghz | Mobo: Asus Maximus Hero VIII | RAM: Corsair Dominator 16GB | GPU: 2 x GTX 1080 Ti SLI | 3xSSDs for OS and Apps, 2 x HDD's for 11GB storage | PSU: Seasonic X-1250 M2| Case: Corsair C70 | Cooling: Corsair H115i Hydro cooler | Displays: Asus PG278QR, BenQ XL2420TX & BenQ HT1075 | OS: Windows 10 Pro + Windows 7 dual boot
Like my fixes? Dontations can be made to: www.paypal.me/DShanz or rshannonca@gmail.com
Like electronic music? Check out: www.soundcloud.com/dj-ryan-king
I am not actually a fan of this game and probably won't bother with it further, If I want to play a open world fantasy rpg I probably fire up the witcher. And yes that's a bit of a dick move to do that, but that's the only reason why I think it would be worthwhile to fix this is for the modding improvements because as it stands the engine doesn't handle alot of mods very well, and crashes regardless of build order)
I don't think many mods where broken by shaders for this game so I don't think its huge on the modding communities radar, apart from us poor 3dvision outcasts.
i7-4790K CPU 4.8Ghz stable overclock.
16 GB RAM Corsair
ASUS Turbo 2080TI
Samsung SSD 840Pro
ASUS Z97-WS3D
Surround ASUS Rog Swift PG278Q(R), 2x PG278Q (yes it works)
Obutto R3volution.
Windows 10 pro 64x (Windows 7 Dual boot)
Bethesda games + mods = arguably the best games in the world.
Bethesda games - mods = competent but sloppy games that don't excel in any area.
Thank you. I looked at the microsoft documentation before your post, saw that it was the reciprocate (if they had said "inverse" I would have known what they meant :p).
Still, that part of the shader is different from the DX11 version.
The effect is at screen depth. My plan is putting it at 100% depth first and then correct ir back. I suspect that the camera FOV may come into play. If someone can do it, please help (I'm at work and won't be home for 10 hours).
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
This is the first time I use 3Dmigoto so I may be wrong.
I didn't found that location of your screenshots but I found similar problems with shallow water in other water shaders. For instance, in the water with ice floes in the north (Water PS 3), the output color of the underwater pixels seems to be sampled from a broken texture. So I guess that the problem has to be fixed in another shader.
In frame analysis I saw the problem first in some assembler-only shaders (see picture) but I don't know how to modify them yet.
001717-ps-t0=4e5bb4ca-vs=d80566665db3dd02-ps=e192bd2508cda3ee
My 3D fixes with Helixmod for the Risen series on GitHub
Bo3b's School for Shaderhackers - starting point for your first 3D fix
Example of a shader (65dad8a710904ca1-vs_replace.txt. I don't know if this file is present in the current fix I published):
As you see, I copied some calculations to r20 and r21, imitating r0 and r1 but doing a correction at some point:
This is still wrong, by the way. Multiplying by "-cb2[10].y" made reflections be at positive depth at two camera positions. iniparams.y is for the bloom hotkey, but I'm also using it now to toggle this effect quickly.
Imagine that I say north, east, south and west, about the camera position as I rotate. Without "-cb2[10].y", it would be:
- North: inside of the surface.
- East and west: surface level.
- South: outside of the surface.
With it:
- North and south: inside of the surface.
- East and west: surface level.
The shader is aware of my 360 degree camera position. My current code isn't the best I got for the water opacity problem (which affects those glaciers too). Not knowing what all those constant buffers are is annoying. If I somehow fix the opacity, I wonder how reflections will be in the end.
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
Thumbs up!!
Intel Core I7 8700K @ 5ghz
Corsair Vengeance 3200mhz LXP ram (16GB)
MSI Nvidia RTX 2080Ti Ventus graphics card
Windows 10 64bit latest build
EVGA Supernova 1000w G2 PSU
Country: United Kingdom
With the rest of the vertex shader being what I posted in my previous post (I just replace text for all water shaders with Notepad++ when I make a code change), I saw that with this...
...(iniparams.y is just to enable/disable this fix with F3) opacity is correct when I'm looking south and adjusting convergence depending on the distance (reflections is outside of the surface). Higher distance = need for less convergence. Higher FOV = need for more convergence, linearly. So if at X distance with 120 fov I need 33 convergence, with 60 fov I need 16.5 convergence (tested).
When I look north, it's like a reverse fix (the wrongness is doubled) and the reflection is inside the surface, and when I look at east or west, the effect is wrong but kind of rotated, and the reflection is at surface depth.
So what I need is making the shader correctly depend on convergence, distance, fov and rotation. This won't be easy.
First step: making everything OK at 0 convergence.
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