global update
This commit is contained in:
@@ -49,11 +49,17 @@ void CFunnyViewport::UpdateResolution( uint32_t uX, uint32_t uY )
|
||||
g_pRenderContext->DestroyImage(m_pRenderImage);
|
||||
}
|
||||
m_pColor = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_4_SAMPLES);
|
||||
m_pColor->SetDebugName("m_pColor");
|
||||
m_pNormal = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA16_SNORM, MULTISAMPLE_TYPE_4_SAMPLES);
|
||||
m_pNormal->SetDebugName("m_pNormal");
|
||||
m_pWorldCoords = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA32_SFLOAT, MULTISAMPLE_TYPE_4_SAMPLES);
|
||||
m_pWorldCoords->SetDebugName("m_pWorldCoords");
|
||||
m_pDepth = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_D32_SFLOAT, MULTISAMPLE_TYPE_4_SAMPLES);
|
||||
m_pDepth->SetDebugName("m_pDepth");
|
||||
m_pColorResolved = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_1_SAMPLES);
|
||||
m_pColorResolved->SetDebugName("m_pColorResolved");
|
||||
m_pRenderImage = g_pRenderContext->CreateStorageImage(uX, uY, IMAGE_FORMAT_RGBA16_SFLOAT, MULTISAMPLE_TYPE_1_SAMPLES);
|
||||
m_pRenderImage->SetDebugName("m_pRenderImage");
|
||||
m_uX = uX;
|
||||
m_uY = uY;
|
||||
}
|
||||
@@ -319,6 +325,26 @@ void CFunnyWorldRenderer::Frame( float fDelta )
|
||||
m_pViewBuffer->Unmap();
|
||||
|
||||
m_pRasterCommandList->StartRecording();
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pColor,
|
||||
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_COLOR,
|
||||
STAGE_HAZARD_NONE, STAGE_HAZARD_RASTER_COLOR_OUT,
|
||||
BARRIER_HAZARD_RASTER_COLOR);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pNormal,
|
||||
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_COLOR,
|
||||
STAGE_HAZARD_NONE, STAGE_HAZARD_RASTER_COLOR_OUT,
|
||||
BARRIER_HAZARD_RASTER_COLOR);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pWorldCoords,
|
||||
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_COLOR,
|
||||
STAGE_HAZARD_NONE, STAGE_HAZARD_RASTER_COLOR_OUT,
|
||||
BARRIER_HAZARD_RASTER_COLOR);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pDepth,
|
||||
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_DEPTH_STENCIL,
|
||||
STAGE_HAZARD_NONE, STAGE_HAZARD_RASTER_EARLY_DEPTH_OUT,
|
||||
BARRIER_HAZARD_DEPTH_STENCIL);
|
||||
m_pRasterCommandList->SetRenderResolution(uWidth, uHeight);
|
||||
m_pRasterCommandList->SetRenderTarget(0, v->m_pColor);
|
||||
m_pRasterCommandList->SetRenderTarget(1, v->m_pNormal);
|
||||
@@ -373,15 +399,35 @@ void CFunnyWorldRenderer::Frame( float fDelta )
|
||||
m_pRasterCommandList->DrawPrimitives(mesh->m_pVertexBuffer->GetSize()/32, 0, mesh->m_instances.GetSize(), u);
|
||||
u += mesh->m_instances.GetSize();
|
||||
}
|
||||
m_pRasterCommandList->Barrier(STAGE_HAZARD_RASTER_COLOR_OUT, STAGE_HAZARD_NONE, 0);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pColor,
|
||||
IMAGE_LAYOUT_COLOR, IMAGE_LAYOUT_TRANSFER_SRC,
|
||||
STAGE_HAZARD_RASTER_COLOR_OUT, STAGE_HAZARD_TRANSFER,
|
||||
0);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pColorResolved,
|
||||
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_TRANSFER_DST,
|
||||
STAGE_HAZARD_NONE, STAGE_HAZARD_TRANSFER,
|
||||
0);
|
||||
|
||||
m_pRasterCommandList->ResolveImage(v->m_pColor, v->m_pColorResolved);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pColorResolved,
|
||||
IMAGE_LAYOUT_TRANSFER_DST, IMAGE_LAYOUT_GENERAL,
|
||||
STAGE_HAZARD_TRANSFER, STAGE_HAZARD_COMPUTE,
|
||||
0);
|
||||
m_pRasterCommandList->BarrierTransition(
|
||||
v->m_pRenderImage,
|
||||
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_GENERAL,
|
||||
STAGE_HAZARD_NONE, STAGE_HAZARD_COMPUTE,
|
||||
0);
|
||||
|
||||
m_pPostProcessingMaterial->CSSetTexture(0, 0, v->m_pColorResolved);
|
||||
m_pPostProcessingMaterial->CSSetTexture(1, 0, v->m_pRenderImage);
|
||||
m_pRasterCommandList->SetMaterial(m_pPostProcessingMaterial);
|
||||
m_pRasterCommandList->Barrier(v->m_pColorResolved, true, false);
|
||||
m_pRasterCommandList->Barrier(v->m_pRenderImage, false, true);
|
||||
m_pRasterCommandList->DispatchCompute(uWidth, uHeight, 1);
|
||||
m_pRasterCommandList->Barrier(STAGE_HAZARD_COMPUTE, STAGE_HAZARD_NONE, 0);
|
||||
m_pRasterCommandList->EndRecording();
|
||||
|
||||
g_pRenderContext->SubmitCommandList(m_pRasterCommandList);
|
||||
|
||||
Reference in New Issue
Block a user