@@ -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}
0 commit comments