Formalize GaussianSplat scene extraction
This commit is contained in:
@@ -119,6 +119,12 @@ bool CompareVisibleVolumes(const VisibleVolumeItem& lhs, const VisibleVolumeItem
|
||||
return CompareVisibleVolumesStable(lhs, rhs);
|
||||
}
|
||||
|
||||
bool CompareVisibleGaussianSplats(
|
||||
const VisibleGaussianSplatItem& lhs,
|
||||
const VisibleGaussianSplatItem& rhs) {
|
||||
return CompareVisibleGaussianSplatsStable(lhs, rhs);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
RenderSceneData RenderSceneExtractor::Extract(
|
||||
@@ -143,6 +149,7 @@ RenderSceneData RenderSceneExtractor::Extract(
|
||||
cameraPosition,
|
||||
cullingMask,
|
||||
sceneData.visibleItems,
|
||||
sceneData.visibleGaussianSplats,
|
||||
sceneData.visibleVolumes);
|
||||
}
|
||||
|
||||
@@ -150,6 +157,10 @@ RenderSceneData RenderSceneExtractor::Extract(
|
||||
sceneData.visibleItems.begin(),
|
||||
sceneData.visibleItems.end(),
|
||||
CompareVisibleItems);
|
||||
std::stable_sort(
|
||||
sceneData.visibleGaussianSplats.begin(),
|
||||
sceneData.visibleGaussianSplats.end(),
|
||||
CompareVisibleGaussianSplats);
|
||||
std::stable_sort(
|
||||
sceneData.visibleVolumes.begin(),
|
||||
sceneData.visibleVolumes.end(),
|
||||
@@ -181,6 +192,7 @@ RenderSceneData RenderSceneExtractor::ExtractForCamera(
|
||||
cameraPosition,
|
||||
cullingMask,
|
||||
sceneData.visibleItems,
|
||||
sceneData.visibleGaussianSplats,
|
||||
sceneData.visibleVolumes);
|
||||
}
|
||||
|
||||
@@ -188,6 +200,10 @@ RenderSceneData RenderSceneExtractor::ExtractForCamera(
|
||||
sceneData.visibleItems.begin(),
|
||||
sceneData.visibleItems.end(),
|
||||
CompareVisibleItems);
|
||||
std::stable_sort(
|
||||
sceneData.visibleGaussianSplats.begin(),
|
||||
sceneData.visibleGaussianSplats.end(),
|
||||
CompareVisibleGaussianSplats);
|
||||
std::stable_sort(
|
||||
sceneData.visibleVolumes.begin(),
|
||||
sceneData.visibleVolumes.end(),
|
||||
@@ -308,6 +324,7 @@ void RenderSceneExtractor::ExtractVisibleContent(
|
||||
const Math::Vector3& cameraPosition,
|
||||
uint32_t cullingMask,
|
||||
std::vector<VisibleRenderItem>& visibleItems,
|
||||
std::vector<VisibleGaussianSplatItem>& visibleGaussianSplats,
|
||||
std::vector<VisibleVolumeItem>& visibleVolumes) const {
|
||||
if (gameObject == nullptr || !gameObject->IsActiveInHierarchy()) {
|
||||
return;
|
||||
@@ -318,11 +335,12 @@ void RenderSceneExtractor::ExtractVisibleContent(
|
||||
|
||||
if (isVisibleInCameraMask) {
|
||||
AppendRenderItemsForGameObject(*gameObject, cameraPosition, visibleItems);
|
||||
AppendVisibleGaussianSplatsForGameObject(*gameObject, cameraPosition, visibleGaussianSplats);
|
||||
AppendVisibleVolumesForGameObject(*gameObject, cameraPosition, visibleVolumes);
|
||||
}
|
||||
|
||||
for (Components::GameObject* child : gameObject->GetChildren()) {
|
||||
ExtractVisibleContent(child, cameraPosition, cullingMask, visibleItems, visibleVolumes);
|
||||
ExtractVisibleContent(child, cameraPosition, cullingMask, visibleItems, visibleGaussianSplats, visibleVolumes);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user