refactor: move builtin forward draw submission internal

This commit is contained in:
2026-04-10 03:01:30 +08:00
parent 57331c1c25
commit 1f79afba3c
3 changed files with 59 additions and 48 deletions

View File

@@ -289,40 +289,6 @@ bool BuiltinForwardPipeline::ExecuteForwardTransparentPass(const RenderPassConte
return DrawVisibleItems(context, surface, sceneData, true);
}
bool BuiltinForwardPipeline::DrawVisibleItems(
const RenderContext& context,
const RenderSurface& surface,
const RenderSceneData& sceneData,
bool drawTransparentItems) {
RHI::RHICommandList* commandList = context.commandList;
RHI::RHIPipelineState* currentPipelineState = nullptr;
for (const VisibleRenderItem& visibleItem : sceneData.visibleItems) {
const bool isTransparentItem = IsTransparentRenderQueue(visibleItem.renderQueue);
if (isTransparentItem != drawTransparentItems) {
continue;
}
const Resources::Material* material = ResolveMaterial(visibleItem);
BuiltinMaterialPass pass = BuiltinMaterialPass::ForwardLit;
if (!TryResolveSurfacePassType(material, pass)) {
continue;
}
RHI::RHIPipelineState* pipelineState = GetOrCreatePipelineState(context, surface, sceneData, material);
if (pipelineState == nullptr) {
continue;
}
if (pipelineState != currentPipelineState) {
commandList->SetPipelineState(pipelineState);
currentPipelineState = pipelineState;
}
DrawVisibleItem(context, surface, sceneData, visibleItem);
}
return true;
}
bool BuiltinForwardPipeline::EnsureInitialized(const RenderContext& context) {
if (!context.IsValid()) {
return false;