@@ -120,7 +120,7 @@ public override void Render(PostProcessRenderContext context)
120
120
int qualityOffset = settings . mobileOptimized ? 1 : 0 ;
121
121
122
122
// Downsample
123
- var last = context . source ;
123
+ var lastDown = context . source ;
124
124
for ( int i = 0 ; i < iterations ; i ++ )
125
125
{
126
126
int mipDown = m_Pyramid [ i ] . down ;
@@ -131,22 +131,22 @@ public override void Render(PostProcessRenderContext context)
131
131
132
132
cmd . GetTemporaryRT ( mipDown , tw , th , 0 , FilterMode . Bilinear , context . sourceFormat ) ;
133
133
cmd . GetTemporaryRT ( mipUp , tw , th , 0 , FilterMode . Bilinear , context . sourceFormat ) ;
134
- cmd . BlitFullscreenTriangle ( last , mipDown , sheet , pass ) ;
134
+ cmd . BlitFullscreenTriangle ( lastDown , mipDown , sheet , pass ) ;
135
135
136
- last = mipDown ;
136
+ lastDown = mipDown ;
137
137
tw = Mathf . Max ( tw / 2 , 1 ) ;
138
138
th = Mathf . Max ( th / 2 , 1 ) ;
139
139
}
140
140
141
141
// Upsample
142
- last = m_Pyramid [ iterations - 1 ] . down ;
142
+ int lastUp = m_Pyramid [ iterations - 1 ] . down ;
143
143
for ( int i = iterations - 2 ; i >= 0 ; i -- )
144
144
{
145
145
int mipDown = m_Pyramid [ i ] . down ;
146
146
int mipUp = m_Pyramid [ i ] . up ;
147
147
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 ;
150
150
}
151
151
152
152
var linearColor = settings . color . value . linear ;
@@ -193,16 +193,20 @@ public override void Render(PostProcessRenderContext context)
193
193
uberSheet . properties . SetVector ( ShaderIDs . Bloom_Settings , shaderSettings ) ;
194
194
uberSheet . properties . SetColor ( ShaderIDs . Bloom_Color , linearColor ) ;
195
195
uberSheet . properties . SetTexture ( ShaderIDs . Bloom_DirtTex , dirtTexture ) ;
196
- cmd . SetGlobalTexture ( ShaderIDs . BloomTex , m_Pyramid [ 0 ] . up ) ;
196
+ cmd . SetGlobalTexture ( ShaderIDs . BloomTex , lastUp ) ;
197
197
198
198
// Cleanup
199
199
for ( int i = 0 ; i < iterations ; i ++ )
200
200
{
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 ) ;
203
205
}
204
206
205
207
cmd . EndSample ( "BloomPyramid" ) ;
208
+
209
+ context . bloomTemporaryRT = lastUp ;
206
210
}
207
211
}
208
212
}
0 commit comments