Skip to content

Commit eb540f6

Browse files
authored
Fix linearZ slope in GBufferRT (#434)
1 parent 33477f7 commit eb540f6

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

Source/RenderPasses/GBuffer/GBuffer/GBufferRT.slang

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,19 @@ struct GBufferRT
153153

154154
float3 computeDdxPosW(float3 posW, float3 normW, float2 invFrameDim)
155155
{
156-
float3 projRight = normalize(cross(normW, cross(normW, gScene.camera.data.cameraV)));
156+
float3 projRight = normalize(cross(normW, cross(normW, gScene.camera.data.cameraU)));
157157
float distanceToHit = length(posW - gScene.camera.data.posW);
158158
float2 ddNdc = float2(2.f, -2.f) * invFrameDim;
159-
float distRight = distanceToHit * ddNdc.x / dot(normalize(gScene.camera.data.cameraV), projRight);
159+
float distRight = distanceToHit * ddNdc.x / dot(normalize(gScene.camera.data.cameraU), projRight);
160160
return distRight * projRight;
161161
}
162162

163163
float3 computeDdyPosW(float3 posW, float3 normW, float2 invFrameDim)
164164
{
165-
float3 projUp = normalize(cross(normW, cross(normW, gScene.camera.data.cameraU)));
165+
float3 projUp = normalize(cross(normW, cross(normW, gScene.camera.data.cameraV)));
166166
float distanceToHit = length(posW - gScene.camera.data.posW);
167167
float2 ddNdc = float2(2.f, -2.f) * invFrameDim;
168-
float distUp = distanceToHit * ddNdc.y / dot(normalize(gScene.camera.data.cameraU), projUp);
168+
float distUp = distanceToHit * ddNdc.y / dot(normalize(gScene.camera.data.cameraV), projUp);
169169
return distUp * projUp;
170170
}
171171

@@ -329,7 +329,7 @@ struct GBufferRT
329329
float3 ddxPosW = computeDdxPosW(sd.posW, sd.faceN, invFrameDim);
330330
float3 ddyPosW = computeDdyPosW(sd.posW, sd.faceN, invFrameDim);
331331
float4 curPosH_dx = mul(gScene.camera.data.viewProjMatNoJitter, float4(sd.posW + ddxPosW, 1.f));
332-
float4 curPosH_dy = mul(gScene.camera.data.viewProjMatNoJitter, float4(sd.posW + ddxPosW, 1.f));
332+
float4 curPosH_dy = mul(gScene.camera.data.viewProjMatNoJitter, float4(sd.posW + ddyPosW, 1.f));
333333
float ddxLinearZ = abs(curPosH_dx.w - curLinearZ);
334334
float ddyLinearZ = abs(curPosH_dy.w - curLinearZ);
335335
float dLinearZ = max(ddxLinearZ, ddyLinearZ);

0 commit comments

Comments
 (0)