refactor: move builtin forward draw submission internal
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user