reworked begin and end

This commit is contained in:
2026-08-27 20:00:21 +03:00
parent a6818a6cf4
commit aaf298d8cc
10 changed files with 181 additions and 283 deletions
+34 -14
View File
@@ -345,20 +345,37 @@ void CFunnyWorldRenderer::Frame( float fDelta )
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);
m_pRasterCommandList->SetRenderTarget(2, v->m_pWorldCoords);
m_pRasterCommandList->SetDepthTarget(v->m_pDepth);
m_pRasterCommandList->SetViewport(0, 0, uWidth, uHeight, 0, 1);
m_pRasterCommandList->SetScissors(0, 0, uWidth, uHeight);
m_pRasterCommandList->SetClearColor(0, 0, 0, 0, 0);
m_pRasterCommandList->SetClearColor(1, 0, 0, 0, 0);
m_pRasterCommandList->SetClearColor(2, 0, 0, 0, 0);
m_pRasterCommandList->SetClearDepth(1);
m_pRasterCommandList->SetLoadStoreModes(0, LOAD_MODE_CLEAR, STORE_MODE_STORE);
m_pRasterCommandList->SetLoadStoreModes(1, LOAD_MODE_CLEAR, STORE_MODE_STORE);
m_pRasterCommandList->SetLoadStoreModes(2, LOAD_MODE_CLEAR, STORE_MODE_STORE);
RenderImage images[] = {
{
v->m_pColor,
LOAD_MODE_CLEAR,
STORE_MODE_STORE,
},
{
v->m_pNormal,
LOAD_MODE_CLEAR,
STORE_MODE_STORE,
},
{
v->m_pWorldCoords,
LOAD_MODE_CLEAR,
STORE_MODE_STORE,
}
};
RenderImage depth = {
v->m_pDepth,
LOAD_MODE_CLEAR,
STORE_MODE_STORE,
{.depth = 0},
};
BeginInfo begin = {};
begin.uWidth = uWidth;
begin.uHeight = uHeight;
begin.pDepth = &depth;
begin.pRenderImages = images;
begin.uRenderImageCount = sizeof(images)/sizeof(*images);
m_pRasterCommandList->Begin(&begin);
uint32_t uTotalMeshes = 0;
uint32_t u = 0;
for ( auto mesh: m_pMeshes)
@@ -390,6 +407,8 @@ void CFunnyWorldRenderer::Frame( float fDelta )
m_pRasterMaterial->PSSetTextureArray(1, m_pTextures);
m_pRasterCommandList->SetMaterial(m_pRasterMaterial);
m_pRasterCommandList->SetViewport(0, 0, uWidth, uHeight, 0, 1);
m_pRasterCommandList->SetScissors(0, 0, uWidth, uHeight);
u = 0;
for ( auto mesh: m_pMeshes)
{
@@ -399,6 +418,7 @@ 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->End();
m_pRasterCommandList->Barrier(STAGE_HAZARD_RASTER_COLOR_OUT, STAGE_HAZARD_NONE, 0);
m_pRasterCommandList->BarrierTransition(
v->m_pColor,