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

Commit 27c6098

Browse files
committed
Added ResetHistory for Screen-space Reflections
1 parent fa655c3 commit 27c6098

2 files changed

Lines changed: 26 additions & 12 deletions

File tree

PostProcessing/Runtime/Effects/ScreenSpaceReflections.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public enum Resolution
3030

3131
[Tooltip("Choose a quality preset, or use \"Custom\" to fine tune it. Don't use a preset higher than \"Medium\" if you care about performances on consoles.")]
3232
public Preset preset = Preset.Medium;
33-
33+
3434
[Range(0, 256), Tooltip("Maximum iteration count.")]
3535
public int maximumIterationCount;
3636

@@ -72,6 +72,8 @@ class QualityPreset
7272
RenderTexture m_History;
7373
int[] m_MipIDs;
7474

75+
bool m_ResetHistory = true;
76+
7577
enum Pass
7678
{
7779
Test,
@@ -146,6 +148,12 @@ internal void Render(PostProcessRenderContext context)
146148
CheckRT(ref m_Resolve, size, size, context.sourceFormat, FilterMode.Trilinear, true);
147149
CheckRT(ref m_History, size, size, context.sourceFormat, FilterMode.Bilinear, false);
148150

151+
if (m_ResetHistory)
152+
{
153+
context.command.BlitFullscreenTriangle(context.source, m_History);
154+
m_ResetHistory = false;
155+
}
156+
149157
var noiseTex = context.resources.blueNoise256[0];
150158
var sheet = context.propertySheets.Get(context.resources.shaders.screenSpaceReflections);
151159
sheet.properties.SetTexture(ShaderIDs.Noise, noiseTex);
@@ -211,7 +219,7 @@ internal void Render(PostProcessRenderContext context)
211219

212220
for (int i = 0; i < lodCount; i++)
213221
cmd.ReleaseTemporaryRT(m_MipIDs[i]);
214-
222+
215223
sheet.properties.SetTexture(ShaderIDs.Resolve, m_Resolve);
216224
cmd.BlitFullscreenTriangle(context.source, context.destination, sheet, (int)Pass.Composite);
217225
cmd.EndSample("Screen-space Reflections");
@@ -226,5 +234,10 @@ internal void Release()
226234
m_Resolve = null;
227235
m_History = null;
228236
}
237+
238+
internal void ResetHistory()
239+
{
240+
m_ResetHistory = true;
241+
}
229242
}
230243
}

PostProcessing/Runtime/PostProcessLayer.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ void OnEnable()
139139
public void Init(PostProcessResources resources)
140140
{
141141
if (resources != null) m_Resources = resources;
142-
142+
143143
RuntimeUtilities.CreateIfNull(ref monitors);
144144
RuntimeUtilities.CreateIfNull(ref ambientOcclusion);
145145
RuntimeUtilities.CreateIfNull(ref screenSpaceReflections);
@@ -281,7 +281,7 @@ void OnPreCull()
281281
context.Reset();
282282
context.camera = m_Camera;
283283
context.sourceFormat = sourceFormat;
284-
284+
285285
m_LegacyCmdBufferBeforeReflections.Clear();
286286
m_LegacyCmdBufferBeforeLighting.Clear();
287287
m_LegacyCmdBufferOpaque.Clear();
@@ -389,14 +389,14 @@ void OnPreCull()
389389
}
390390

391391
void OnPostRender()
392-
{
393-
// Unused in scriptable render pipelines
394-
if (RuntimeUtilities.scriptableRenderPipelineActive)
395-
return;
396-
397-
if (m_CurrentContext.IsTemporalAntialiasingActive())
398-
m_Camera.ResetProjectionMatrix();
399-
}
392+
{
393+
// Unused in scriptable render pipelines
394+
if (RuntimeUtilities.scriptableRenderPipelineActive)
395+
return;
396+
397+
if (m_CurrentContext.IsTemporalAntialiasingActive())
398+
m_Camera.ResetProjectionMatrix();
399+
}
400400

401401
PostProcessBundle GetBundle<T>()
402402
where T : PostProcessEffectSettings
@@ -467,6 +467,7 @@ public void ResetHistory()
467467
bundle.Value.ResetHistory();
468468

469469
temporalAntialiasing.ResetHistory();
470+
screenSpaceReflections.ResetHistory();
470471
}
471472

472473
public bool HasOpaqueOnlyEffects(PostProcessRenderContext context)

0 commit comments

Comments
 (0)