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

Commit e4228f5

Browse files
authored
Merge pull request #346 from slime73/v2-bloom
Fix bloom texture lifespan
2 parents 317608b + 02c2af1 commit e4228f5

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

PostProcessing/Runtime/Effects/Bloom.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public override void Render(PostProcessRenderContext context)
120120
int qualityOffset = settings.mobileOptimized ? 1 : 0;
121121

122122
// Downsample
123-
var last = context.source;
123+
var lastDown = context.source;
124124
for (int i = 0; i < iterations; i++)
125125
{
126126
int mipDown = m_Pyramid[i].down;
@@ -131,23 +131,22 @@ public override void Render(PostProcessRenderContext context)
131131

132132
context.GetScreenSpaceTemporaryRT(cmd, mipDown, 0, context.sourceFormat, RenderTextureReadWrite.Default, FilterMode.Bilinear, tw, th);
133133
context.GetScreenSpaceTemporaryRT(cmd, mipUp, 0, context.sourceFormat, RenderTextureReadWrite.Default, FilterMode.Bilinear, tw, th);
134+
cmd.BlitFullscreenTriangle(lastDown, mipDown, sheet, pass);
134135

135-
cmd.BlitFullscreenTriangle(last, mipDown, sheet, pass);
136-
137-
last = mipDown;
136+
lastDown = mipDown;
138137
tw = Mathf.Max(tw / 2, 1);
139138
th = Mathf.Max(th / 2, 1);
140139
}
141140

142141
// Upsample
143-
last = m_Pyramid[iterations - 1].down;
142+
int lastUp = m_Pyramid[iterations - 1].down;
144143
for (int i = iterations - 2; i >= 0; i--)
145144
{
146145
int mipDown = m_Pyramid[i].down;
147146
int mipUp = m_Pyramid[i].up;
148147
cmd.SetGlobalTexture(ShaderIDs.BloomTex, mipDown);
149-
cmd.BlitFullscreenTriangle(last, mipUp, sheet, (int)Pass.UpsampleTent + qualityOffset);
150-
last = mipUp;
148+
cmd.BlitFullscreenTriangle(lastUp, mipUp, sheet, (int)Pass.UpsampleTent + qualityOffset);
149+
lastUp = mipUp;
151150
}
152151

153152
var linearColor = settings.color.value.linear;
@@ -194,16 +193,20 @@ public override void Render(PostProcessRenderContext context)
194193
uberSheet.properties.SetVector(ShaderIDs.Bloom_Settings, shaderSettings);
195194
uberSheet.properties.SetColor(ShaderIDs.Bloom_Color, linearColor);
196195
uberSheet.properties.SetTexture(ShaderIDs.Bloom_DirtTex, dirtTexture);
197-
cmd.SetGlobalTexture(ShaderIDs.BloomTex, m_Pyramid[0].up);
196+
cmd.SetGlobalTexture(ShaderIDs.BloomTex, lastUp);
198197

199198
// Cleanup
200199
for (int i = 0; i < iterations; i++)
201200
{
202-
cmd.ReleaseTemporaryRT(m_Pyramid[i].down);
203-
cmd.ReleaseTemporaryRT(m_Pyramid[i].up);
201+
if (m_Pyramid[i].down != lastUp)
202+
cmd.ReleaseTemporaryRT(m_Pyramid[i].down);
203+
if (m_Pyramid[i].up != lastUp)
204+
cmd.ReleaseTemporaryRT(m_Pyramid[i].up);
204205
}
205206

206207
cmd.EndSample("BloomPyramid");
208+
209+
context.bloomTemporaryRT = lastUp;
207210
}
208211
}
209212
}

PostProcessing/Runtime/PostProcessLayer.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,7 @@ int RenderBuiltins(PostProcessRenderContext context, bool isFinalPass, int relea
773773
uberSheet.properties.Clear();
774774
context.uberSheet = uberSheet;
775775
context.autoExposureTexture = RuntimeUtilities.whiteTexture;
776+
context.bloomTemporaryRT = -1;
776777

777778
var cmd = context.command;
778779
cmd.BeginSample("BuiltinStack");
@@ -836,6 +837,7 @@ int RenderBuiltins(PostProcessRenderContext context, bool isFinalPass, int relea
836837
if (releaseTargetAfterUse > -1) cmd.ReleaseTemporaryRT(releaseTargetAfterUse);
837838
if (motionBlurTarget > -1) cmd.ReleaseTemporaryRT(motionBlurTarget);
838839
if (depthOfFieldTarget > -1) cmd.ReleaseTemporaryRT(motionBlurTarget);
840+
if (context.bloomTemporaryRT > -1) cmd.ReleaseTemporaryRT(context.bloomTemporaryRT);
839841

840842
cmd.EndSample("BuiltinStack");
841843

PostProcessing/Runtime/PostProcessRenderContext.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,5 +268,6 @@ public void PushDebugOverlay(CommandBuffer cmd, RenderTargetIdentifier source, P
268268
internal LogHistogram logHistogram;
269269
internal Texture logLut;
270270
internal AutoExposure autoExposure;
271+
internal int bloomTemporaryRT;
271272
}
272273
}

0 commit comments

Comments
 (0)