@@ -153,19 +153,19 @@ struct GBufferRT
153
153
154
154
float3 computeDdxPosW(float3 posW, float3 normW, float2 invFrameDim)
155
155
{
156
- float3 projRight = normalize(cross(normW, cross(normW, gScene .camera .data .cameraV )));
156
+ float3 projRight = normalize(cross(normW, cross(normW, gScene .camera .data .cameraU )));
157
157
float distanceToHit = length(posW - gScene .camera .data .posW );
158
158
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);
160
160
return distRight * projRight;
161
161
}
162
162
163
163
float3 computeDdyPosW(float3 posW, float3 normW, float2 invFrameDim)
164
164
{
165
- float3 projUp = normalize(cross(normW, cross(normW, gScene .camera .data .cameraU )));
165
+ float3 projUp = normalize(cross(normW, cross(normW, gScene .camera .data .cameraV )));
166
166
float distanceToHit = length(posW - gScene .camera .data .posW );
167
167
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);
169
169
return distUp * projUp;
170
170
}
171
171
@@ -329,7 +329,7 @@ struct GBufferRT
329
329
float3 ddxPosW = computeDdxPosW(sd .posW , sd .faceN , invFrameDim);
330
330
float3 ddyPosW = computeDdyPosW(sd .posW , sd .faceN , invFrameDim);
331
331
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 ));
333
333
float ddxLinearZ = abs(curPosH_dx .w - curLinearZ);
334
334
float ddyLinearZ = abs(curPosH_dy .w - curLinearZ);
335
335
float dLinearZ = max(ddxLinearZ, ddyLinearZ);
0 commit comments