13
13
14
14
#include " pch.h"
15
15
#include " BufferManager.h"
16
- #include " GraphicsCore .h"
16
+ #include " Display .h"
17
17
#include " CommandContext.h"
18
18
#include " EsramAllocator.h"
19
19
#include " TemporalEffects.h"
@@ -66,14 +66,15 @@ namespace Graphics
66
66
ColorBuffer g_MotionPrepBuffer;
67
67
ColorBuffer g_LumaBuffer;
68
68
ColorBuffer g_TemporalColor[2 ];
69
- ColorBuffer g_aBloomUAV1[2 ]; // 640x384 (1/3)
70
- ColorBuffer g_aBloomUAV2[2 ]; // 320x192 (1/6)
71
- ColorBuffer g_aBloomUAV3[2 ]; // 160x96 (1/12)
72
- ColorBuffer g_aBloomUAV4[2 ]; // 80x48 (1/24)
73
- ColorBuffer g_aBloomUAV5[2 ]; // 40x24 (1/48)
69
+ ColorBuffer g_TemporalMinBound;
70
+ ColorBuffer g_TemporalMaxBound;
71
+ ColorBuffer g_aBloomUAV1[2 ]; // 640x384 (1/3)
72
+ ColorBuffer g_aBloomUAV2[2 ]; // 320x192 (1/6)
73
+ ColorBuffer g_aBloomUAV3[2 ]; // 160x96 (1/12)
74
+ ColorBuffer g_aBloomUAV4[2 ]; // 80x48 (1/24)
75
+ ColorBuffer g_aBloomUAV5[2 ]; // 40x24 (1/48)
74
76
ColorBuffer g_LumaLR;
75
77
ByteAddressBuffer g_Histogram;
76
- ByteAddressBuffer g_FXAAWorkCounters;
77
78
ByteAddressBuffer g_FXAAWorkQueue;
78
79
TypedBuffer g_FXAAColorQueue (DXGI_FORMAT_R11G11B10_FLOAT);
79
80
@@ -112,7 +113,7 @@ void Graphics::InitializeRenderingBuffers( uint32_t bufferWidth, uint32_t buffer
112
113
g_VelocityBuffer.Create ( L" Motion Vectors" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R32_UINT );
113
114
g_PostEffectsBuffer.Create ( L" Post Effects Buffer" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R32_UINT );
114
115
115
- esram.PushStack (); // Render HDR image
116
+ esram.PushStack (); // Render HDR image
116
117
117
118
g_LinearDepth[0 ].Create ( L" Linear Depth 0" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R16_UNORM );
118
119
g_LinearDepth[1 ].Create ( L" Linear Depth 1" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R16_UNORM );
@@ -148,13 +149,13 @@ void Graphics::InitializeRenderingBuffers( uint32_t bufferWidth, uint32_t buffer
148
149
g_AOHighQuality2.Create ( L" AO High Quality 2" , bufferWidth2, bufferHeight2, 1 , DXGI_FORMAT_R8_UNORM, esram );
149
150
g_AOHighQuality3.Create ( L" AO High Quality 3" , bufferWidth3, bufferHeight3, 1 , DXGI_FORMAT_R8_UNORM, esram );
150
151
g_AOHighQuality4.Create ( L" AO High Quality 4" , bufferWidth4, bufferHeight4, 1 , DXGI_FORMAT_R8_UNORM, esram );
151
- esram.PopStack (); // End generating SSAO
152
+ esram.PopStack (); // End generating SSAO
152
153
153
154
g_ShadowBuffer.Create ( L" Shadow Map" , 2048 , 2048 , esram );
154
155
155
- esram.PopStack (); // End Shading
156
+ esram.PopStack (); // End Shading
156
157
157
- esram.PushStack (); // Begin depth of field
158
+ esram.PushStack (); // Begin depth of field
158
159
g_DoFTileClass[0 ].Create (L" DoF Tile Classification Buffer 0" , bufferWidth4, bufferHeight4, 1 , DXGI_FORMAT_R11G11B10_FLOAT);
159
160
g_DoFTileClass[1 ].Create (L" DoF Tile Classification Buffer 1" , bufferWidth4, bufferHeight4, 1 , DXGI_FORMAT_R11G11B10_FLOAT);
160
161
@@ -167,21 +168,24 @@ void Graphics::InitializeRenderingBuffers( uint32_t bufferWidth, uint32_t buffer
167
168
g_DoFWorkQueue.Create (L" DoF Work Queue" , bufferWidth4 * bufferHeight4, 4 , esram );
168
169
g_DoFFastQueue.Create (L" DoF Fast Queue" , bufferWidth4 * bufferHeight4, 4 , esram );
169
170
g_DoFFixupQueue.Create (L" DoF Fixup Queue" , bufferWidth4 * bufferHeight4, 4 , esram );
170
- esram.PopStack (); // End depth of field
171
+ esram.PopStack (); // End depth of field
171
172
172
173
g_TemporalColor[0 ].Create ( L" Temporal Color 0" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R16G16B16A16_FLOAT);
173
174
g_TemporalColor[1 ].Create ( L" Temporal Color 1" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R16G16B16A16_FLOAT);
174
175
TemporalEffects::ClearHistory (InitContext);
175
176
176
- esram.PushStack (); // Begin motion blur
177
+ g_TemporalMinBound.Create ( L" Temporal Min Color" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R11G11B10_FLOAT);
178
+ g_TemporalMaxBound.Create ( L" Temporal Max Color" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R11G11B10_FLOAT);
179
+
180
+ esram.PushStack (); // Begin motion blur
177
181
g_MotionPrepBuffer.Create ( L" Motion Blur Prep" , bufferWidth1, bufferHeight1, 1 , HDR_MOTION_FORMAT, esram );
178
- esram.PopStack (); // End motion blur
182
+ esram.PopStack (); // End motion blur
179
183
180
- esram.PopStack (); // End opaque geometry
184
+ esram.PopStack (); // End opaque geometry
181
185
182
- esram.PopStack (); // End HDR image
186
+ esram.PopStack (); // End HDR image
183
187
184
- esram.PushStack (); // Begin post processing
188
+ esram.PushStack (); // Begin post processing
185
189
186
190
// This is useful for storing per-pixel weights such as motion strength or pixel luminance
187
191
g_LumaBuffer.Create ( L" Luminance" , bufferWidth, bufferHeight, 1 , DXGI_FORMAT_R8_UNORM, esram );
@@ -194,7 +198,7 @@ void Graphics::InitializeRenderingBuffers( uint32_t bufferWidth, uint32_t buffer
194
198
uint32_t kBloomWidth = bufferWidth > 2560 ? 1280 : 640 ;
195
199
uint32_t kBloomHeight = bufferHeight > 1440 ? 768 : 384 ;
196
200
197
- esram.PushStack (); // Begin bloom and tone mapping
201
+ esram.PushStack (); // Begin bloom and tone mapping
198
202
g_LumaLR.Create ( L" Luma Buffer" , kBloomWidth , kBloomHeight , 1 , DXGI_FORMAT_R8_UINT, esram );
199
203
g_aBloomUAV1[0 ].Create ( L" Bloom Buffer 1a" , kBloomWidth , kBloomHeight , 1 , DefaultHdrColorFormat, esram );
200
204
g_aBloomUAV1[1 ].Create ( L" Bloom Buffer 1b" , kBloomWidth , kBloomHeight , 1 , DefaultHdrColorFormat, esram);
@@ -206,17 +210,15 @@ void Graphics::InitializeRenderingBuffers( uint32_t bufferWidth, uint32_t buffer
206
210
g_aBloomUAV4[1 ].Create ( L" Bloom Buffer 4b" , kBloomWidth /8 , kBloomHeight /8 , 1 , DefaultHdrColorFormat, esram );
207
211
g_aBloomUAV5[0 ].Create ( L" Bloom Buffer 5a" , kBloomWidth /16 , kBloomHeight /16 , 1 , DefaultHdrColorFormat, esram );
208
212
g_aBloomUAV5[1 ].Create ( L" Bloom Buffer 5b" , kBloomWidth /16 , kBloomHeight /16 , 1 , DefaultHdrColorFormat, esram );
209
- esram.PopStack (); // End tone mapping
213
+ esram.PopStack (); // End tone mapping
210
214
211
- esram.PushStack (); // Begin antialiasing
215
+ esram.PushStack (); // Begin antialiasing
212
216
const uint32_t kFXAAWorkSize = bufferWidth * bufferHeight / 4 + 128 ;
213
217
g_FXAAWorkQueue.Create ( L" FXAA Work Queue" , kFXAAWorkSize , sizeof (uint32_t ), esram );
214
218
g_FXAAColorQueue.Create ( L" FXAA Color Queue" , kFXAAWorkSize , sizeof (uint32_t ), esram );
215
- g_FXAAWorkCounters.Create (L" FXAA Work Counters" , 2 , sizeof (uint32_t ));
216
- InitContext.ClearUAV (g_FXAAWorkCounters);
217
- esram.PopStack (); // End antialiasing
219
+ esram.PopStack (); // End antialiasing
218
220
219
- esram.PopStack (); // End post processing
221
+ esram.PopStack (); // End post processing
220
222
221
223
esram.PushStack (); // GenerateMipMaps() test
222
224
g_GenMipsBuffer.Create (L" GenMips" , bufferWidth, bufferHeight, 0 , DXGI_FORMAT_R11G11B10_FLOAT, esram );
@@ -230,8 +232,9 @@ void Graphics::InitializeRenderingBuffers( uint32_t bufferWidth, uint32_t buffer
230
232
InitContext.Finish ();
231
233
}
232
234
233
- void Graphics::ResizeDisplayDependentBuffers (uint32_t /* NativeWidth*/ , uint32_t NativeHeight)
235
+ void Graphics::ResizeDisplayDependentBuffers (uint32_t NativeWidth, uint32_t NativeHeight)
234
236
{
237
+ (NativeWidth);
235
238
g_OverlayBuffer.Create ( L" UI Overlay" , g_DisplayWidth, g_DisplayHeight, 1 , DXGI_FORMAT_R8G8B8A8_UNORM );
236
239
g_HorizontalBuffer.Create ( L" Bicubic Intermediate" , g_DisplayWidth, NativeHeight, 1 , DefaultHdrColorFormat );
237
240
}
@@ -289,6 +292,8 @@ void Graphics::DestroyRenderingBuffers()
289
292
g_LumaBuffer.Destroy ();
290
293
g_TemporalColor[0 ].Destroy ();
291
294
g_TemporalColor[1 ].Destroy ();
295
+ g_TemporalMinBound.Destroy ();
296
+ g_TemporalMaxBound.Destroy ();
292
297
g_aBloomUAV1[0 ].Destroy ();
293
298
g_aBloomUAV1[1 ].Destroy ();
294
299
g_aBloomUAV2[0 ].Destroy ();
@@ -301,7 +306,6 @@ void Graphics::DestroyRenderingBuffers()
301
306
g_aBloomUAV5[1 ].Destroy ();
302
307
g_LumaLR.Destroy ();
303
308
g_Histogram.Destroy ();
304
- g_FXAAWorkCounters.Destroy ();
305
309
g_FXAAWorkQueue.Destroy ();
306
310
g_FXAAColorQueue.Destroy ();
307
311
0 commit comments