Refactor rendering frame execution contracts

This commit is contained in:
2026-04-13 22:16:04 +08:00
parent 48daaa1bd0
commit 712f99e723
30 changed files with 1398 additions and 247 deletions

View File

@@ -3,6 +3,7 @@
#include "Components/CameraComponent.h"
#include "Components/GameObject.h"
#include "Components/LightComponent.h"
#include "Rendering/FrameData/RendererListUtils.h"
#include "Rendering/Extraction/RenderSceneUtility.h"
#include "Scene/Scene.h"
@@ -125,6 +126,21 @@ bool CompareVisibleGaussianSplats(
return CompareVisibleGaussianSplatsStable(lhs, rhs);
}
void BuildRendererLists(RenderSceneData& sceneData) {
sceneData.cullingResults.Clear();
sceneData.cullingResults.rendererLists.reserve(5u);
sceneData.cullingResults.rendererLists.push_back(
BuildRendererList(RendererListType::AllVisible, sceneData.visibleItems));
sceneData.cullingResults.rendererLists.push_back(
BuildRendererList(RendererListType::Opaque, sceneData.visibleItems));
sceneData.cullingResults.rendererLists.push_back(
BuildRendererList(RendererListType::Transparent, sceneData.visibleItems));
sceneData.cullingResults.rendererLists.push_back(
BuildRendererList(RendererListType::ShadowCaster, sceneData.visibleItems));
sceneData.cullingResults.rendererLists.push_back(
BuildRendererList(RendererListType::ObjectId, sceneData.visibleItems));
}
} // namespace
RenderSceneData RenderSceneExtractor::Extract(
@@ -165,6 +181,7 @@ RenderSceneData RenderSceneExtractor::Extract(
sceneData.visibleVolumes.begin(),
sceneData.visibleVolumes.end(),
CompareVisibleVolumes);
BuildRendererLists(sceneData);
ExtractLighting(scene, cameraPosition, cullingMask, sceneData.lighting);
return sceneData;
@@ -208,6 +225,7 @@ RenderSceneData RenderSceneExtractor::ExtractForCamera(
sceneData.visibleVolumes.begin(),
sceneData.visibleVolumes.end(),
CompareVisibleVolumes);
BuildRendererLists(sceneData);
ExtractLighting(scene, cameraPosition, cullingMask, sceneData.lighting);
return sceneData;