render pass first work

This commit is contained in:
2026-08-26 21:07:12 +03:00
parent 8055881fef
commit a6818a6cf4
18 changed files with 342 additions and 84 deletions
+11 -9
View File
@@ -48,13 +48,13 @@ void CFunnyViewport::UpdateResolution( uint32_t uX, uint32_t uY )
g_pRenderContext->DestroyImage(m_pColorResolved);
g_pRenderContext->DestroyImage(m_pRenderImage);
}
m_pColor = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_4_SAMPLES);
m_pColor = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_1_SAMPLES);
m_pColor->SetDebugName("m_pColor");
m_pNormal = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA16_SNORM, MULTISAMPLE_TYPE_4_SAMPLES);
m_pNormal = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA16_SNORM, MULTISAMPLE_TYPE_1_SAMPLES);
m_pNormal->SetDebugName("m_pNormal");
m_pWorldCoords = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA32_SFLOAT, MULTISAMPLE_TYPE_4_SAMPLES);
m_pWorldCoords = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_RGBA32_SFLOAT, MULTISAMPLE_TYPE_1_SAMPLES);
m_pWorldCoords->SetDebugName("m_pWorldCoords");
m_pDepth = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_D32_SFLOAT, MULTISAMPLE_TYPE_4_SAMPLES);
m_pDepth = g_pRenderContext->CreateRenderTarget(uX, uY, IMAGE_FORMAT_D32_SFLOAT, MULTISAMPLE_TYPE_1_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");
@@ -268,7 +268,7 @@ void CFunnyWorldRenderer::ConfigureShader( IShader *pShader )
pShader->AddOutputImage(1, IMAGE_FORMAT_RGBA16_SNORM);
pShader->AddOutputImage(2, IMAGE_FORMAT_RGBA32_SFLOAT);
pShader->SetMultisampling(MULTISAMPLE_TYPE_4_SAMPLES);
pShader->SetMultisampling(MULTISAMPLE_TYPE_1_SAMPLES);
pShader->SetDepthImage(IMAGE_FORMAT_D32_SFLOAT);
}
@@ -402,9 +402,10 @@ void CFunnyWorldRenderer::Frame( float fDelta )
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,
IMAGE_LAYOUT_COLOR, IMAGE_LAYOUT_GENERAL,
STAGE_HAZARD_RASTER_COLOR_OUT, STAGE_HAZARD_COMPUTE,
0);
/*
m_pRasterCommandList->BarrierTransition(
v->m_pColorResolved,
IMAGE_LAYOUT_UNDEFINED, IMAGE_LAYOUT_TRANSFER_DST,
@@ -417,16 +418,17 @@ void CFunnyWorldRenderer::Frame( float fDelta )
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(0, 0, v->m_pColor);
m_pPostProcessingMaterial->CSSetTexture(1, 0, v->m_pRenderImage);
m_pRasterCommandList->SetMaterial(m_pPostProcessingMaterial);
m_pRasterCommandList->DispatchCompute(uWidth, uHeight, 1);
m_pRasterCommandList->DispatchCompute((uWidth+31)/32, (uHeight+31)/32, 1);
m_pRasterCommandList->Barrier(STAGE_HAZARD_COMPUTE, STAGE_HAZARD_NONE, 0);
m_pRasterCommandList->EndRecording();