@@ -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,22 +131,22 @@ public override void Render(PostProcessRenderContext context)
131131
132132 cmd . GetTemporaryRT ( mipDown , tw , th , 0 , FilterMode . Bilinear , context . sourceFormat ) ;
133133 cmd . GetTemporaryRT ( mipUp , tw , th , 0 , FilterMode . Bilinear , context . sourceFormat ) ;
134- cmd . BlitFullscreenTriangle ( last , mipDown , sheet , pass ) ;
134+ cmd . BlitFullscreenTriangle ( lastDown , mipDown , sheet , pass ) ;
135135
136- last = mipDown ;
136+ lastDown = mipDown ;
137137 tw = Mathf . Max ( tw / 2 , 1 ) ;
138138 th = Mathf . Max ( th / 2 , 1 ) ;
139139 }
140140
141141 // Upsample
142- last = m_Pyramid [ iterations - 1 ] . down ;
142+ int lastUp = m_Pyramid [ iterations - 1 ] . down ;
143143 for ( int i = iterations - 2 ; i >= 0 ; i -- )
144144 {
145145 int mipDown = m_Pyramid [ i ] . down ;
146146 int mipUp = m_Pyramid [ i ] . up ;
147147 cmd . SetGlobalTexture ( ShaderIDs . BloomTex , mipDown ) ;
148- cmd . BlitFullscreenTriangle ( last , mipUp , sheet , ( int ) Pass . UpsampleTent + qualityOffset ) ;
149- last = mipUp ;
148+ cmd . BlitFullscreenTriangle ( lastUp , mipUp , sheet , ( int ) Pass . UpsampleTent + qualityOffset ) ;
149+ lastUp = mipUp ;
150150 }
151151
152152 var linearColor = settings . color . value . linear ;
@@ -193,16 +193,20 @@ public override void Render(PostProcessRenderContext context)
193193 uberSheet . properties . SetVector ( ShaderIDs . Bloom_Settings , shaderSettings ) ;
194194 uberSheet . properties . SetColor ( ShaderIDs . Bloom_Color , linearColor ) ;
195195 uberSheet . properties . SetTexture ( ShaderIDs . Bloom_DirtTex , dirtTexture ) ;
196- cmd . SetGlobalTexture ( ShaderIDs . BloomTex , m_Pyramid [ 0 ] . up ) ;
196+ cmd . SetGlobalTexture ( ShaderIDs . BloomTex , lastUp ) ;
197197
198198 // Cleanup
199199 for ( int i = 0 ; i < iterations ; i ++ )
200200 {
201- cmd . ReleaseTemporaryRT ( m_Pyramid [ i ] . down ) ;
202- 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 ) ;
203205 }
204206
205207 cmd . EndSample ( "BloomPyramid" ) ;
208+
209+ context . bloomTemporaryRT = lastUp ;
206210 }
207211 }
208212}
0 commit comments