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