The Elder Scrolls V: Skyrim Special Edition
  6 / 17    
[quote="X_Parasite"]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.[/quote] Yes, that's the theory. Once I fix the rotation issue (and the other problems), reflections should always be inside the surface. I hope. Now that we are talking about that, another thing is screen space reflections. They are a post processing effect (are they?) that in my experience works alright when they are on the ground and you look from a low angle. With a high angle, they position themselves outside of the surface instead of inside. In walls they are a problem in 3D, so they need a fix. They are available in this Special Edition and can be turned off in the launcher options. If they are enabled, they are used for water instead of normal reflections. Is there a good DX11 example with this effect fixed? Reading the description of MGSV, I'm not sure if they are fixed there. In this Skyrim case, they are the same shader as the snow particles on the environment (I don't remember if they are on top or replacing them). I guess the effect is inside some condition.
X_Parasite said: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.


Yes, that's the theory. Once I fix the rotation issue (and the other problems), reflections should always be inside the surface. I hope.

Now that we are talking about that, another thing is screen space reflections. They are a post processing effect (are they?) that in my experience works alright when they are on the ground and you look from a low angle. With a high angle, they position themselves outside of the surface instead of inside. In walls they are a problem in 3D, so they need a fix. They are available in this Special Edition and can be turned off in the launcher options. If they are enabled, they are used for water instead of normal reflections.

Is there a good DX11 example with this effect fixed? Reading the description of MGSV, I'm not sure if they are fixed there. In this Skyrim case, they are the same shader as the snow particles on the environment (I don't remember if they are on top or replacing them). I guess the effect is inside some condition.

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

#76
Posted 11/03/2016 11:00 AM   
[quote="masterotaku"]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.[/quote] That kinda sounds like the coordinate is a world space coordinate, instead of a view space or clip space coordinate. Not sure if you're familiar with that concept or not, but I'll explain as if you don't. If it is a world space coordinate, then what you would need would be to multiply the coordinate by a ViewProjectionMatrix to convert it to a view space coordinate, perform the stereo correction, and then multiply it back by an inverse ViewProjectionMatrix to convert it back to a world space coordinate. The tricky part is finding either a VPM or iVPM, especially if the game doesn't have shader headers. Fortunately if you can find either one, then you can use DarkStarSwords matrix inverse custom shader to give you the other.
masterotaku said: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...

depth=dot(cb2[2].xyzw, r20.xyzw);
r20.x+=separation*(depth-convergence)*iniparams.y;



...(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.


That kinda sounds like the coordinate is a world space coordinate, instead of a view space or clip space coordinate. Not sure if you're familiar with that concept or not, but I'll explain as if you don't. If it is a world space coordinate, then what you would need would be to multiply the coordinate by a ViewProjectionMatrix to convert it to a view space coordinate, perform the stereo correction, and then multiply it back by an inverse ViewProjectionMatrix to convert it back to a world space coordinate. The tricky part is finding either a VPM or iVPM, especially if the game doesn't have shader headers. Fortunately if you can find either one, then you can use DarkStarSwords matrix inverse custom shader to give you the other.

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

#77
Posted 11/03/2016 06:17 PM   
[quote="DJ-RK"] That kinda sounds like the coordinate is a world space coordinate, instead of a view space or clip space coordinate. Not sure if you're familiar with that concept or not, but I'll explain as if you don't. If it is a world space coordinate, then what you would need would be to multiply the coordinate by a ViewProjectionMatrix to convert it to a view space coordinate, perform the stereo correction, and then multiply it back by an inverse ViewProjectionMatrix to convert it back to a world space coordinate. The tricky part is finding either a VPM or iVPM, especially if the game doesn't have shader headers. Fortunately if you can find either one, then you can use DarkStarSwords matrix inverse custom shader to give you the other.[/quote] Thanks for the help. I know that method exists, I've seen it in fixes where I contributed late (The Evil Within and Lords of the Fallen, for example), but I didn't have to do it myself until now. The main problem is what you say: no shader headers. All the water vertex shaders have is: [code] cbuffer cb2 : register(b2) { float4 cb2[13]; } cbuffer cb1 : register(b1) { float4 cb1[6]; } cbuffer cb0 : register(b0) { float4 cb0[1]; } [/code] And I can only try to guess what does what, seeing what they do in the shader. I tried doing this, copying from Lords of the Fallen: [code] 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 : TEXCOORD5) { float4 r0,r1,r2,r3,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); r1.y = dot(cb2[11].xyzw, r0.xyzw); o0.w = r1.y; o4.z = r1.y; 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); o6.xyzw = r0.xyzw; //Work out Inverse //...Variables float4 a1, a2, a3, a4; float4 b1, b2, b3, b4; float det; //...Original Matrix a1 = cb2[0].xyzw; a2 = cb2[1].xyzw; a3 = cb2[2].xyzw; a4 = cb2[3].xyzw; //...Determinant det = a1.x*(a2.y*(a3.z*a4.w - a3.w*a4.z) + a2.z*(a3.w*a4.y - a3.y*a4.w) + a2.w*(a3.y*a4.z - a3.z*a4.y)); det += a1.y*(a2.x*(a3.w*a4.z - a3.z*a4.w) + a2.z*(a3.x*a4.w - a3.w*a4.z) + a2.w*(a3.z*a4.x - a3.x*a4.z)); det += a1.z*(a2.x*(a3.y*a4.w - a3.w*a4.y) + a2.y*(a3.w*a4.x - a3.x*a4.w) + a2.w*(a3.x*a4.y - a3.y*a4.x)); det += a1.w*(a2.x*(a3.z*a4.y - a3.y*a4.z) + a2.y*(a3.x*a4.z - a3.z*a4.x) + a2.z*(a3.y*a4.x - a3.x*a4.y)); //...Inverse Matrix Elemets b1.x = a2.y*(a3.z*a4.w - a3.w*a4.z) + a2.z*(a3.w*a4.y - a3.y*a4.w) + a2.w*(a3.y*a4.z - a3.z*a4.y); b1.y = a1.y*(a3.w*a4.z - a3.z*a4.w) + a1.z*(a3.y*a4.w - a3.w*a4.y) + a1.w*(a3.z*a4.y - a3.y*a4.z); b1.z = a1.y*(a2.z*a4.w - a2.w*a4.z) + a1.z*(a2.w*a4.y - a2.y*a4.w) + a1.w*(a2.y*a4.z - a2.z*a4.y); b1.w = a1.y*(a2.w*a3.z - a2.z*a3.w) + a1.z*(a2.y*a3.w - a2.w*a3.y) + a1.w*(a2.z*a3.y - a2.y*a3.z); b2.x = a2.x*(a3.w*a4.z - a3.z*a4.w) + a2.z*(a3.x*a4.w - a3.w*a4.x) + a2.w*(a3.z*a4.x - a3.x*a4.z); b2.y = a1.x*(a3.z*a4.w - a3.w*a4.z) + a1.z*(a3.w*a4.x - a3.x*a4.w) + a1.w*(a3.x*a4.z - a3.z*a4.x); b2.z = a1.x*(a2.w*a4.z - a2.z*a4.w) + a1.z*(a2.x*a4.w - a2.w*a4.x) + a1.w*(a2.z*a4.x - a2.x*a4.z); b2.w = a1.x*(a2.z*a3.w - a2.w*a3.z) + a1.z*(a2.w*a3.x - a2.x*a3.w) + a1.w*(a2.x*a3.z - a2.z*a3.x); b3.x = a2.x*(a3.y*a4.w - a3.w*a4.y) + a2.y*(a3.w*a4.x - a3.x*a4.w) + a2.w*(a3.x*a4.y - a3.y*a4.x); b3.y = a1.x*(a3.w*a4.y - a3.y*a4.w) + a1.y*(a3.x*a4.w - a3.w*a4.x) + a1.w*(a3.y*a4.x - a3.x*a4.y); b3.z = a1.x*(a2.y*a4.w - a2.w*a4.y) + a1.y*(a2.w*a4.x - a2.x*a4.w) + a1.w*(a2.x*a4.y - a2.y*a4.x); b3.w = a1.x*(a2.w*a3.y - a2.y*a3.w) + a1.y*(a2.x*a3.w - a2.w*a3.x) + a1.w*(a2.y*a3.x - a2.x*a3.y); b4.x = a2.x*(a3.z*a4.y - a3.y*a4.z) + a2.y*(a3.x*a4.z - a3.z*a4.x) + a2.z*(a3.y*a4.x - a3.x*a4.y); b4.y = a1.x*(a3.y*a4.z - a3.z*a4.y) + a1.y*(a3.z*a4.x - a3.x*a4.z) + a1.z*(a3.x*a4.y - a3.y*a4.x); b4.z = a1.x*(a2.z*a4.y - a2.y*a4.z) + a1.y*(a2.x*a4.z - a2.z*a4.x) + a1.z*(a2.y*a4.x - a2.x*a4.y); b4.w = a1.x*(a2.y*a3.z - a2.z*a3.y) + a1.y*(a2.z*a3.x - a2.x*a3.z) + a1.z*(a2.x*a3.y - a2.y*a3.x); b1.xyzw /= det; b2.xyzw /= det; b3.xyzw /= det; b4.xyzw /= det; //End Inverse //Get the proj element float4 col; col.x = b1.x; col.y = b2.x; col.z = b3.x; col.w = b4.x; r20.xyzw=r0.xyzw; float4 depth; depth=dot(cb2[2].xyzw, r20.xyzw); //r20.x+=separation*(r1.w-convergence)*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; o2.x = dot(cb2[0].xyzw, col.xyzw); r0.yz = cb0[0].xy + r1.xy; o2.w = sqrt(r20.x); //o2.x+=separation*(o2.w-convergence)*0.5; r1.zw = r0.yz / cb1[5].zz; r0.xyzw = r0.yzyz / cb1[5].xxyy; r1.xy = r0.zw; r2.xyz = float3(0.00100000005,0.00100000005,0.00100000005) * cb1[5].xyz; r3.zw = v1.xy / r2.zz; r2.xyzw = v1.xyxy / r2.xxyy; r3.xy = r2.zw; r0.z = cmp(0 != cb2[12].x); r1.xyzw = r0.zzzz ? r3.xyzw : r1.xyzw; r0.xy = r0.zz ? r2.xy : r0.xy; o3.xy = cb1[3].xy + r0.xy; o3.zw = cb1[3].zw + r1.xy; o4.xy = cb1[4].xy + r1.zw; o4.w = 0; o5.xy = v1.xy; o5.zw = float2(0,0); return; } [/code] Things got wrong. Opacity didn't move, refrections were broken (no weird flickering, at least, but there was a thick part where the surface of water was dark). I suppose I did it wrong on too many levels :p.
DJ-RK said:
That kinda sounds like the coordinate is a world space coordinate, instead of a view space or clip space coordinate. Not sure if you're familiar with that concept or not, but I'll explain as if you don't. If it is a world space coordinate, then what you would need would be to multiply the coordinate by a ViewProjectionMatrix to convert it to a view space coordinate, perform the stereo correction, and then multiply it back by an inverse ViewProjectionMatrix to convert it back to a world space coordinate. The tricky part is finding either a VPM or iVPM, especially if the game doesn't have shader headers. Fortunately if you can find either one, then you can use DarkStarSwords matrix inverse custom shader to give you the other.


Thanks for the help. I know that method exists, I've seen it in fixes where I contributed late (The Evil Within and Lords of the Fallen, for example), but I didn't have to do it myself until now. The main problem is what you say: no shader headers. All the water vertex shaders have is:

cbuffer cb2 : register(b2)
{
float4 cb2[13];
}

cbuffer cb1 : register(b1)
{
float4 cb1[6];
}

cbuffer cb0 : register(b0)
{
float4 cb0[1];
}


And I can only try to guess what does what, seeing what they do in the shader.

I tried doing this, copying from Lords of the Fallen:

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 : TEXCOORD5)
{
float4 r0,r1,r2,r3,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);
r1.y = dot(cb2[11].xyzw, r0.xyzw);
o0.w = r1.y;
o4.z = r1.y;
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);
o6.xyzw = r0.xyzw;

//Work out Inverse
//...Variables
float4 a1, a2, a3, a4;
float4 b1, b2, b3, b4;
float det;

//...Original Matrix
a1 = cb2[0].xyzw;
a2 = cb2[1].xyzw;
a3 = cb2[2].xyzw;
a4 = cb2[3].xyzw;

//...Determinant
det = a1.x*(a2.y*(a3.z*a4.w - a3.w*a4.z) + a2.z*(a3.w*a4.y - a3.y*a4.w) + a2.w*(a3.y*a4.z - a3.z*a4.y));
det += a1.y*(a2.x*(a3.w*a4.z - a3.z*a4.w) + a2.z*(a3.x*a4.w - a3.w*a4.z) + a2.w*(a3.z*a4.x - a3.x*a4.z));
det += a1.z*(a2.x*(a3.y*a4.w - a3.w*a4.y) + a2.y*(a3.w*a4.x - a3.x*a4.w) + a2.w*(a3.x*a4.y - a3.y*a4.x));
det += a1.w*(a2.x*(a3.z*a4.y - a3.y*a4.z) + a2.y*(a3.x*a4.z - a3.z*a4.x) + a2.z*(a3.y*a4.x - a3.x*a4.y));

//...Inverse Matrix Elemets
b1.x = a2.y*(a3.z*a4.w - a3.w*a4.z) + a2.z*(a3.w*a4.y - a3.y*a4.w) + a2.w*(a3.y*a4.z - a3.z*a4.y);
b1.y = a1.y*(a3.w*a4.z - a3.z*a4.w) + a1.z*(a3.y*a4.w - a3.w*a4.y) + a1.w*(a3.z*a4.y - a3.y*a4.z);

b1.z = a1.y*(a2.z*a4.w - a2.w*a4.z) + a1.z*(a2.w*a4.y - a2.y*a4.w) + a1.w*(a2.y*a4.z - a2.z*a4.y);
b1.w = a1.y*(a2.w*a3.z - a2.z*a3.w) + a1.z*(a2.y*a3.w - a2.w*a3.y) + a1.w*(a2.z*a3.y - a2.y*a3.z);

b2.x = a2.x*(a3.w*a4.z - a3.z*a4.w) + a2.z*(a3.x*a4.w - a3.w*a4.x) + a2.w*(a3.z*a4.x - a3.x*a4.z);
b2.y = a1.x*(a3.z*a4.w - a3.w*a4.z) + a1.z*(a3.w*a4.x - a3.x*a4.w) + a1.w*(a3.x*a4.z - a3.z*a4.x);

b2.z = a1.x*(a2.w*a4.z - a2.z*a4.w) + a1.z*(a2.x*a4.w - a2.w*a4.x) + a1.w*(a2.z*a4.x - a2.x*a4.z);
b2.w = a1.x*(a2.z*a3.w - a2.w*a3.z) + a1.z*(a2.w*a3.x - a2.x*a3.w) + a1.w*(a2.x*a3.z - a2.z*a3.x);

b3.x = a2.x*(a3.y*a4.w - a3.w*a4.y) + a2.y*(a3.w*a4.x - a3.x*a4.w) + a2.w*(a3.x*a4.y - a3.y*a4.x);
b3.y = a1.x*(a3.w*a4.y - a3.y*a4.w) + a1.y*(a3.x*a4.w - a3.w*a4.x) + a1.w*(a3.y*a4.x - a3.x*a4.y);

b3.z = a1.x*(a2.y*a4.w - a2.w*a4.y) + a1.y*(a2.w*a4.x - a2.x*a4.w) + a1.w*(a2.x*a4.y - a2.y*a4.x);
b3.w = a1.x*(a2.w*a3.y - a2.y*a3.w) + a1.y*(a2.x*a3.w - a2.w*a3.x) + a1.w*(a2.y*a3.x - a2.x*a3.y);

b4.x = a2.x*(a3.z*a4.y - a3.y*a4.z) + a2.y*(a3.x*a4.z - a3.z*a4.x) + a2.z*(a3.y*a4.x - a3.x*a4.y);
b4.y = a1.x*(a3.y*a4.z - a3.z*a4.y) + a1.y*(a3.z*a4.x - a3.x*a4.z) + a1.z*(a3.x*a4.y - a3.y*a4.x);

b4.z = a1.x*(a2.z*a4.y - a2.y*a4.z) + a1.y*(a2.x*a4.z - a2.z*a4.x) + a1.z*(a2.y*a4.x - a2.x*a4.y);
b4.w = a1.x*(a2.y*a3.z - a2.z*a3.y) + a1.y*(a2.z*a3.x - a2.x*a3.z) + a1.z*(a2.x*a3.y - a2.y*a3.x);

b1.xyzw /= det;
b2.xyzw /= det;
b3.xyzw /= det;
b4.xyzw /= det;
//End Inverse

//Get the proj element
float4 col;
col.x = b1.x;
col.y = b2.x;
col.z = b3.x;
col.w = b4.x;



r20.xyzw=r0.xyzw;
float4 depth;
depth=dot(cb2[2].xyzw, r20.xyzw);
//r20.x+=separation*(r1.w-convergence)*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;
o2.x = dot(cb2[0].xyzw, col.xyzw);
r0.yz = cb0[0].xy + r1.xy;
o2.w = sqrt(r20.x);
//o2.x+=separation*(o2.w-convergence)*0.5;
r1.zw = r0.yz / cb1[5].zz;
r0.xyzw = r0.yzyz / cb1[5].xxyy;
r1.xy = r0.zw;
r2.xyz = float3(0.00100000005,0.00100000005,0.00100000005) * cb1[5].xyz;
r3.zw = v1.xy / r2.zz;
r2.xyzw = v1.xyxy / r2.xxyy;
r3.xy = r2.zw;
r0.z = cmp(0 != cb2[12].x);
r1.xyzw = r0.zzzz ? r3.xyzw : r1.xyzw;
r0.xy = r0.zz ? r2.xy : r0.xy;
o3.xy = cb1[3].xy + r0.xy;
o3.zw = cb1[3].zw + r1.xy;
o4.xy = cb1[4].xy + r1.zw;
o4.w = 0;
o5.xy = v1.xy;
o5.zw = float2(0,0);
return;
}


Things got wrong. Opacity didn't move, refrections were broken (no weird flickering, at least, but there was a thick part where the surface of water was dark). I suppose I did it wrong on too many levels :p.

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

#78
Posted 11/03/2016 07:54 PM   
I'm sorry, this likely is a dumb question but hope someone will take the time to help. With Geforce 3D Profile Manager I tried adding the profile posted at page 3 and the ones from page 6, but with the one from page 3 there is something wrong, image kind of flikers expecially when I move the camera. As to the other two on page 6, profile manager gives an error when trying to update the new profile (I had no Skyrim SE profile to cancel, so I just added the new one under the Skyrim standard edition profile). Also tried adding SkyrimSE.exe to witcher 3 profile in Nvidia Inspector: character appear purple with no textures. What am I doing wrong? All my other helix-fixed 3d games work flawlessly (also Skyrim standard ed)
I'm sorry, this likely is a dumb question but hope someone will take the time to help. With Geforce 3D Profile Manager I tried adding the profile posted at page 3 and the ones from page 6, but with the one from page 3 there is something wrong, image kind of flikers expecially when I move the camera. As to the other two on page 6, profile manager gives an error when trying to update the new profile (I had no Skyrim SE profile to cancel, so I just added the new one under the Skyrim standard edition profile). Also tried adding SkyrimSE.exe to witcher 3 profile in Nvidia Inspector: character appear purple with no textures. What am I doing wrong?
All my other helix-fixed 3d games work flawlessly (also Skyrim standard ed)

#79
Posted 11/04/2016 12:58 AM   
@masterotaku: Yeah, kinda hard to explain the suggestion I have, so maybe I'll try loading up the game and testing it myself. Give me a good excuse to actually play this game again. Do you happen to have a save file at the exact location you can send me to save me having to search for the broken effect?
@masterotaku: Yeah, kinda hard to explain the suggestion I have, so maybe I'll try loading up the game and testing it myself. Give me a good excuse to actually play this game again. Do you happen to have a save file at the exact location you can send me to save me having to search for the broken effect?

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

#80
Posted 11/04/2016 07:23 AM   
[quote="DJ-RK"]@masterotaku: Yeah, kinda hard to explain the suggestion I have, so maybe I'll try loading up the game and testing it myself. Give me a good excuse to actually play this game again. Do you happen to have a save file at the exact location you can send me to save me having to search for the broken effect?[/quote] I'll give you my save file when I'm home (in 4 hours or so), but I think you won't need it, especially if you use the alternate start mod. Any river or sea water works. But they may have different vertex shaders. All of them have the name "Water VS X", where "X" is a number. But yeah, it will be better for you if I show you a certain place with a known vertex and pixel shader (I'll give you all info). There are usually two vertex shaders and two pixel shaders at the same time. One is a square surrounding the character (20 meters, maybe?) and the other is long distance. And I'll also upload my current fix, with that wrong formula for reflections. Remember to disable screen space reflections, to see the normal reflections. And thank you very much for the help. I don't know if I would be able to do this.
DJ-RK said:@masterotaku: Yeah, kinda hard to explain the suggestion I have, so maybe I'll try loading up the game and testing it myself. Give me a good excuse to actually play this game again. Do you happen to have a save file at the exact location you can send me to save me having to search for the broken effect?


I'll give you my save file when I'm home (in 4 hours or so), but I think you won't need it, especially if you use the alternate start mod. Any river or sea water works. But they may have different vertex shaders. All of them have the name "Water VS X", where "X" is a number. But yeah, it will be better for you if I show you a certain place with a known vertex and pixel shader (I'll give you all info). There are usually two vertex shaders and two pixel shaders at the same time. One is a square surrounding the character (20 meters, maybe?) and the other is long distance.

And I'll also upload my current fix, with that wrong formula for reflections. Remember to disable screen space reflections, to see the normal reflections.

And thank you very much for the help. I don't know if I would be able to do this.

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

#81
Posted 11/04/2016 10:29 AM   
As promised, here are my save files (you will see that they are from a modded game): https://s3.amazonaws.com/masterotaku/SkyrimSE/skyrimse_saves.7z And here is the current fix: https://s3.amazonaws.com/masterotaku/SkyrimSE/skyrimse_wip_3dfix_for_dj-rk.7z It's for you, so "hunting" is set to "2" and shader cache is disabled. Now have this information with the contents of the first line of each shader: In save 5, there is a small lake ("//Water VS 4" and "//Water PS 5") and a small river ("//Water VS 6" and "//Water PS 5"). In save 6, there are mainly "//Water VS 2", "//Water VS 3" and "//Water PS 8", but hunting you may see other shaders that are very far from you.
As promised, here are my save files (you will see that they are from a modded game): https://s3.amazonaws.com/masterotaku/SkyrimSE/skyrimse_saves.7z


And here is the current fix: https://s3.amazonaws.com/masterotaku/SkyrimSE/skyrimse_wip_3dfix_for_dj-rk.7z


It's for you, so "hunting" is set to "2" and shader cache is disabled.

Now have this information with the contents of the first line of each shader:

In save 5, there is a small lake ("//Water VS 4" and "//Water PS 5") and a small river ("//Water VS 6" and "//Water PS 5").

In save 6, there are mainly "//Water VS 2", "//Water VS 3" and "//Water PS 8", but hunting you may see other shaders that are very far from you.

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

#82
Posted 11/04/2016 03:26 PM   
I solved the problem by turning off the antialiasing from the skyrim launcher, don't know if this make any sense to you. Now I'm trying to find out why the game hardly uses my 2 780 in SLI at a proper % of usage to get constant 60 fps (i get fps drops to 30 with gpu running only 50% of their capacity)
I solved the problem by turning off the antialiasing from the skyrim launcher, don't know if this make any sense to you. Now I'm trying to find out why the game hardly uses my 2 780 in SLI at a proper % of usage to get constant 60 fps (i get fps drops to 30 with gpu running only 50% of their capacity)

#83
Posted 11/04/2016 05:11 PM   
Reading here and there it appears SLI isn't supported to begin with, so having almost same performance with single gpu VS dual should be normal I suppose.
Reading here and there it appears SLI isn't supported to begin with, so having almost same performance with single gpu VS dual should be normal I suppose.

#84
Posted 11/05/2016 01:48 PM   
I'm having a lot of difficulty trying to get this to work, I've spent the last few hours searching the internet for help and haven't had any luck. Here's the situation: When I load the game right now with 3D enabled all I see is the distant backdrop and a few nearby plants, everything else is invisible. Also the loading image is not there, only the text (usually a creature or item of some kind). I've been attempting to edit the profile as suggested earlier in this thread but: Can't seem to be able to import the profiles back into Nvidia Profile Inspector 2.13 (edited or non-edited) - (I made sure they were in the same folder as the inspector program as suggested elsewhere). Through searching I discovered a secondary option: "GeForce 3D Settings Profile Manager". I can export and then import a non-edited .txt file successfully but if I attempt to copy any of the profiles posted here earlier over the "SkyrimSE" profile text the import fails. The Chinese characters don't seem to match ones pasted so maybe there's an issue with the font? I copied the contents of the fix into the same folder as the .EXE but I honestly don't know if even that is correct (it worked with pretty much all of the other fixes I've used). I know a lot of you guys posting in these threads are pretty experienced with these fix files but there are a lot of people like me that could really use a simple "Readme" file or basic instructions posted along with these fix files. It would really save up a lot of trouble (and wasted hours of frustration). If someone could provide some instruction or perhaps some advice on an alternate way to edit the profile I'd really appreciate it.
I'm having a lot of difficulty trying to get this to work, I've spent the last few hours searching the internet for help and haven't had any luck. Here's the situation:

When I load the game right now with 3D enabled all I see is the distant backdrop and a few nearby plants, everything else is invisible. Also the loading image is not there, only the text (usually a creature or item of some kind).

I've been attempting to edit the profile as suggested earlier in this thread but:

Can't seem to be able to import the profiles back into Nvidia Profile Inspector 2.13 (edited or non-edited) - (I made sure they were in the same folder as the inspector program as suggested elsewhere).

Through searching I discovered a secondary option: "GeForce 3D Settings Profile Manager". I can export and then import a non-edited .txt file successfully but if I attempt to copy any of the profiles posted here earlier over the "SkyrimSE" profile text the import fails. The Chinese characters don't seem to match ones pasted so maybe there's an issue with the font?

I copied the contents of the fix into the same folder as the .EXE but I honestly don't know if even that is correct (it worked with pretty much all of the other fixes I've used). I know a lot of you guys posting in these threads are pretty experienced with these fix files but there are a lot of people like me that could really use a simple "Readme" file or basic instructions posted along with these fix files. It would really save up a lot of trouble (and wasted hours of frustration).

If someone could provide some instruction or perhaps some advice on an alternate way to edit the profile I'd really appreciate it.

#85
Posted 11/07/2016 09:01 AM   
[quote="Grimlock_Arts"]I'm having a lot of difficulty trying to get this to work, I've spent the last few hours searching the internet for help and haven't had any luck. Here's the situation: When I load the game right now with 3D enabled all I see is the distant backdrop and a few nearby plants, everything else is invisible. Also the loading image is not there, only the text (usually a creature or item of some kind). I've been attempting to edit the profile as suggested earlier in this thread but: Can't seem to be able to import the profiles back into Nvidia Profile Inspector 2.13 (edited or non-edited) - (I made sure they were in the same folder as the inspector program as suggested elsewhere). Through searching I discovered a secondary option: "GeForce 3D Settings Profile Manager". I can export and then import a non-edited .txt file successfully but if I attempt to copy any of the profiles posted here earlier over the "SkyrimSE" profile text the import fails. The Chinese characters don't seem to match ones pasted so maybe there's an issue with the font? I copied the contents of the fix into the same folder as the .EXE but I honestly don't know if even that is correct (it worked with pretty much all of the other fixes I've used). I know a lot of you guys posting in these threads are pretty experienced with these fix files but there are a lot of people like me that could really use a simple "Readme" file or basic instructions posted along with these fix files. It would really save up a lot of trouble (and wasted hours of frustration). If someone could provide some instruction or perhaps some advice on an alternate way to edit the profile I'd really appreciate it.[/quote] The profile on page 3 https://forums.geforce.com/default/topic/969381/3d-vision/the-elder-scrolls-v-skyrim-special-edition/3/ is the the only one I could import succesfully ! The other suggestions failed on import. Allso only use Notepad++ for editing profiles !
Grimlock_Arts said:I'm having a lot of difficulty trying to get this to work, I've spent the last few hours searching the internet for help and haven't had any luck. Here's the situation:

When I load the game right now with 3D enabled all I see is the distant backdrop and a few nearby plants, everything else is invisible. Also the loading image is not there, only the text (usually a creature or item of some kind).

I've been attempting to edit the profile as suggested earlier in this thread but:

Can't seem to be able to import the profiles back into Nvidia Profile Inspector 2.13 (edited or non-edited) - (I made sure they were in the same folder as the inspector program as suggested elsewhere).

Through searching I discovered a secondary option: "GeForce 3D Settings Profile Manager". I can export and then import a non-edited .txt file successfully but if I attempt to copy any of the profiles posted here earlier over the "SkyrimSE" profile text the import fails. The Chinese characters don't seem to match ones pasted so maybe there's an issue with the font?

I copied the contents of the fix into the same folder as the .EXE but I honestly don't know if even that is correct (it worked with pretty much all of the other fixes I've used). I know a lot of you guys posting in these threads are pretty experienced with these fix files but there are a lot of people like me that could really use a simple "Readme" file or basic instructions posted along with these fix files. It would really save up a lot of trouble (and wasted hours of frustration).

If someone could provide some instruction or perhaps some advice on an alternate way to edit the profile I'd really appreciate it.


The profile on page 3 https://forums.geforce.com/default/topic/969381/3d-vision/the-elder-scrolls-v-skyrim-special-edition/3/ is the the only one I could import succesfully !
The other suggestions failed on import.

Allso only use Notepad++ for editing profiles !

Win7 64bit Pro
CPU: 4790K 4.8 GHZ
GPU: Asus Geforce RTX 2080 TI Rog Strix OC
Monitor: Asus PG278QR
And lots of ram and HD's ;)

#86
Posted 11/07/2016 10:21 AM   
What Blacksmith56 said. In case you have never imported profiles for DX11 games before, remember that before exporting and before importing you need to delete the "C:\ProgramData\NVIDIA Corporation\Drs\nvdrssel.bin" file, or the import will fail. With each action the file will be created again. If you are reading this, DJ-RK, how is the water going? Did you find something or made some progress? By the way, what do you people want about blood on screen effect?: 1- Option to disable it in the "d3dx.ini". 2- Hotkey to disable it. 3- Give it depth (same depth as the HUD?). 4- Leave it as it is.
What Blacksmith56 said. In case you have never imported profiles for DX11 games before, remember that before exporting and before importing you need to delete the "C:\ProgramData\NVIDIA Corporation\Drs\nvdrssel.bin" file, or the import will fail. With each action the file will be created again.


If you are reading this, DJ-RK, how is the water going? Did you find something or made some progress?


By the way, what do you people want about blood on screen effect?:

1- Option to disable it in the "d3dx.ini".
2- Hotkey to disable it.
3- Give it depth (same depth as the HUD?).
4- Leave it as it is.

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

#87
Posted 11/07/2016 10:28 AM   
[quote="masterotaku"]What Blacksmith56 said. In case you have never imported profiles for DX11 games before, remember that before exporting and before importing you need to delete the "C:\ProgramData\NVIDIA Corporation\Drs\nvdrssel.bin" file, or the import will fail. With each action the file will be created again. If you are reading this, DJ-RK, how is the water going? Did you find something or made some progress? By the way, what do you people want about blood on screen effect?: 1- Option to disable it in the "d3dx.ini". 2- Hotkey to disable it. 3- Give it depth (same depth as the HUD?). 4- Leave it as it is.[/quote] A combo would be nice 2+3 :) Edit: I'm actually very pleased with the Remaster's graphics, but off cource I would like some companion + gameplay mods.. Thanks for your work masterotaku :)
masterotaku said:What Blacksmith56 said. In case you have never imported profiles for DX11 games before, remember that before exporting and before importing you need to delete the "C:\ProgramData\NVIDIA Corporation\Drs\nvdrssel.bin" file, or the import will fail. With each action the file will be created again.


If you are reading this, DJ-RK, how is the water going? Did you find something or made some progress?


By the way, what do you people want about blood on screen effect?:

1- Option to disable it in the "d3dx.ini".
2- Hotkey to disable it.
3- Give it depth (same depth as the HUD?).
4- Leave it as it is.


A combo would be nice 2+3 :)

Edit: I'm actually very pleased with the Remaster's graphics, but off cource I would like some companion + gameplay mods..

Thanks for your work masterotaku :)

Win7 64bit Pro
CPU: 4790K 4.8 GHZ
GPU: Asus Geforce RTX 2080 TI Rog Strix OC
Monitor: Asus PG278QR
And lots of ram and HD's ;)

#88
Posted 11/07/2016 10:34 AM   
@Blacksmith56: done (HUD depth + separate on/off option and hotkey). I'll upload it tomorrow. While I was bored today, I noticed that I missed a very small HUD shader that appears in the favorite list. Then I had a fun idea: making the HUD have curvature :). It works. I'll put a lot of options in "d3dx.ini": curvature on/off, concave/convex, X axis / Y axis / both (I'll have to think about the formula), etc. Using hotkeys for all that would take a lot of keys. I'll have to test that. It would be nice if 3Dmigoto could display a custom OSD message when a hotkey changes a variable.
@Blacksmith56: done (HUD depth + separate on/off option and hotkey). I'll upload it tomorrow.

While I was bored today, I noticed that I missed a very small HUD shader that appears in the favorite list.

Then I had a fun idea: making the HUD have curvature :). It works. I'll put a lot of options in "d3dx.ini": curvature on/off, concave/convex, X axis / Y axis / both (I'll have to think about the formula), etc.

Using hotkeys for all that would take a lot of keys. I'll have to test that.

It would be nice if 3Dmigoto could display a custom OSD message when a hotkey changes a variable.

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

#89
Posted 11/07/2016 11:25 PM   
[quote="masterotaku"]If you are reading this, DJ-RK, how is the water going? Did you find something or made some progress?[/quote] I didn't have time to look at it all weekend, but just got to spend some time now and things are going well, as you can see. [img]https://forums.geforce.com/cmd/default/download-comment-attachment/70720/[/img] I actually had to remove your fixes because they kinda worked, but were not exactly correct and interfered with correct fixes. Only thing left is to fix the lighting reflections on the water, which is always a challenge for me and I might end up leaving if I can't figure something out for that relatively soon, as they are not that noticeable. [quote="masterotaku"] It would be nice if 3Dmigoto could display a custom OSD message when a hotkey changes a variable.[/quote] Yeah, I already put in a feature request for this very thing, but haven't gotten any response. Feel free to add your request to mine, and hopefully we may be able to get this looked at: [url]https://github.com/bo3b/3Dmigoto/issues/46[/url]
masterotaku said:If you are reading this, DJ-RK, how is the water going? Did you find something or made some progress?


I didn't have time to look at it all weekend, but just got to spend some time now and things are going well, as you can see.

Image

I actually had to remove your fixes because they kinda worked, but were not exactly correct and interfered with correct fixes. Only thing left is to fix the lighting reflections on the water, which is always a challenge for me and I might end up leaving if I can't figure something out for that relatively soon, as they are not that noticeable.

masterotaku said: It would be nice if 3Dmigoto could display a custom OSD message when a hotkey changes a variable.
Yeah, I already put in a feature request for this very thing, but haven't gotten any response. Feel free to add your request to mine, and hopefully we may be able to get this looked at: https://github.com/bo3b/3Dmigoto/issues/46
Attachments

SkyrimSE01_85.jpg

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

#90
Posted 11/08/2016 01:17 AM   
  6 / 17    
Scroll To Top