Introduce CameraRenderRequest scheduling and fix Vulkan build

This commit is contained in:
2026-03-27 16:57:04 +08:00
parent a72f9f7f05
commit dbec62608c
13 changed files with 605 additions and 21 deletions

View File

@@ -70,6 +70,33 @@ RenderSceneData RenderSceneExtractor::Extract(
return sceneData;
}
RenderSceneData RenderSceneExtractor::ExtractForCamera(
const Components::Scene& scene,
Components::CameraComponent& camera,
uint32_t viewportWidth,
uint32_t viewportHeight) const {
RenderSceneData sceneData;
if (!IsUsableCamera(&camera)) {
return sceneData;
}
sceneData.camera = &camera;
sceneData.cameraData = BuildCameraData(camera, viewportWidth, viewportHeight);
const Math::Vector3 cameraPosition = sceneData.cameraData.worldPosition;
const std::vector<Components::GameObject*> rootGameObjects = scene.GetRootGameObjects();
for (Components::GameObject* rootGameObject : rootGameObjects) {
ExtractVisibleItems(rootGameObject, cameraPosition, sceneData.visibleItems);
}
std::stable_sort(
sceneData.visibleItems.begin(),
sceneData.visibleItems.end(),
CompareVisibleItems);
return sceneData;
}
Components::CameraComponent* RenderSceneExtractor::SelectCamera(
const Components::Scene& scene,
Components::CameraComponent* overrideCamera) const {