Skip to content
This repository was archived by the owner on Nov 30, 2020. It is now read-only.

Commit 2d42db1

Browse files
committed
Take RVS into account for clamp
Clamp needs to know about RVS so it can clamp neighborhoods correctly. New TODO: we need to make sure the TAA history textures have previous RVS values accounted for...
1 parent 461d2a8 commit 2d42db1

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

PostProcessing/Runtime/Effects/TemporalAntialiasing.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,8 @@ internal void Render(PostProcessRenderContext context)
199199
sheet.properties.SetVector(ShaderIDs.FinalBlendParameters, new Vector4(stationaryBlending, motionBlending, kMotionAmplification, 0f));
200200
sheet.properties.SetTexture(ShaderIDs.HistoryTex, historyRead);
201201

202+
// TODO: Account for different possible RenderViewportScale value from previous frame...
203+
202204
int pass = context.camera.orthographic ? (int)Pass.SolverNoDilate : (int)Pass.SolverDilate;
203205
m_Mrt[0] = context.destination;
204206
m_Mrt[1] = historyWrite;

PostProcessing/Shaders/xRLib.hlsl

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ float4 UnityStereoScreenSpaceUVAdjust(float4 uv, float4 scaleAndOffset)
3636
return float4(UnityStereoScreenSpaceUVAdjust(uv.xy, scaleAndOffset), UnityStereoScreenSpaceUVAdjust(uv.zw, scaleAndOffset));
3737
}
3838

39+
float2 UnityStereoClampScaleOffset(float2 uv, float4 scaleAndOffset)
40+
{
41+
return clamp(uv, scaleAndOffset.zw, scaleAndOffset.zw + scaleAndOffset.xy);
42+
}
43+
3944
#if defined(UNITY_SINGLE_PASS_STEREO)
4045
float2 TransformStereoScreenSpaceTex(float2 uv, float w)
4146
{
@@ -54,15 +59,11 @@ float4 UnityStereoTransformScreenSpaceTex(float4 uv)
5459
return float4(UnityStereoTransformScreenSpaceTex(uv.xy), UnityStereoTransformScreenSpaceTex(uv.zw));
5560
}
5661

57-
float2 UnityStereoClampScaleOffset(float2 uv, float4 scaleAndOffset)
58-
{
59-
return float2(clamp(uv.x, scaleAndOffset.z, scaleAndOffset.z + scaleAndOffset.x), uv.y);
60-
}
61-
6262
float2 UnityStereoClamp(float2 uv)
6363
{
64-
// TODO: Factor in RVS?
65-
return UnityStereoClampScaleOffset(uv, unity_StereoScaleOffset[unity_StereoEyeIndex]);
64+
float4 scaleOffset = unity_StereoScaleOffset[unity_StereoEyeIndex];
65+
scaleOffset.xy *= rvsGlobal;
66+
return UnityStereoClampScaleOffset(uv, scaleOffset);
6667
}
6768
#else
6869
float2 TransformStereoScreenSpaceTex(float2 uv, float w)
@@ -75,8 +76,11 @@ float2 UnityStereoTransformScreenSpaceTex(float2 uv)
7576
return TransformStereoScreenSpaceTex(saturate(uv), 1.0);
7677
}
7778

78-
#define UnityStereoClampScaleOffset(uv, scaleAndOffset) uv
79-
#define UnityStereoClamp(uv) uv
79+
float2 UnityStereoClamp(float2 uv)
80+
{
81+
float4 scaleOffset = float4(rvsGlobal, rvsGlobal, 0.f, 0.f);
82+
return UnityStereoClampScaleOffset(uv, scaleOffset);
83+
}
8084
#endif
8185

8286
#endif // UNITY_POSTFX_XRLIB

0 commit comments

Comments
 (0)