Derive gaussian splat SH order from resource layout
This commit is contained in:
@@ -328,6 +328,7 @@ void GaussianSplatSceneTest::PrepareRuntimeProject() {
|
||||
ASSERT_NE(m_gaussianSplat.Get(), nullptr);
|
||||
ASSERT_TRUE(m_gaussianSplat->IsValid());
|
||||
ASSERT_GT(m_gaussianSplat->GetSplatCount(), 0u);
|
||||
ASSERT_EQ(m_gaussianSplat->GetSHOrder(), 3u);
|
||||
m_subsetGaussianSplat = CreateGaussianSplatSubset(
|
||||
*m_gaussianSplat.Get(),
|
||||
kBaselineSubsetSplatCount,
|
||||
@@ -335,6 +336,7 @@ void GaussianSplatSceneTest::PrepareRuntimeProject() {
|
||||
ASSERT_NE(m_subsetGaussianSplat, nullptr);
|
||||
ASSERT_TRUE(m_subsetGaussianSplat->IsValid());
|
||||
ASSERT_GT(m_subsetGaussianSplat->GetSplatCount(), 0u);
|
||||
ASSERT_EQ(m_subsetGaussianSplat->GetSHOrder(), 3u);
|
||||
}
|
||||
|
||||
void GaussianSplatSceneTest::BuildScene() {
|
||||
|
||||
@@ -8,6 +8,14 @@ using namespace XCEngine::Math;
|
||||
|
||||
namespace {
|
||||
|
||||
TEST(GaussianSplat, ResolvesSHOrderFromCoefficientCount) {
|
||||
EXPECT_EQ(ResolveGaussianSplatSHOrderFromCoefficientCount(0u), 0u);
|
||||
EXPECT_EQ(ResolveGaussianSplatSHOrderFromCoefficientCount(9u), 1u);
|
||||
EXPECT_EQ(ResolveGaussianSplatSHOrderFromCoefficientCount(24u), 2u);
|
||||
EXPECT_EQ(ResolveGaussianSplatSHOrderFromCoefficientCount(45u), 3u);
|
||||
EXPECT_EQ(ResolveGaussianSplatSHOrderFromCoefficientCount(46u), 0u);
|
||||
}
|
||||
|
||||
TEST(GaussianSplat, CreateOwnedStoresMetadataSectionsAndPayload) {
|
||||
GaussianSplat gaussianSplat;
|
||||
|
||||
@@ -48,6 +56,29 @@ TEST(GaussianSplat, CreateOwnedStoresMetadataSectionsAndPayload) {
|
||||
EXPECT_NE(gaussianSplat.GetSectionData(GaussianSplatSectionType::Positions), nullptr);
|
||||
}
|
||||
|
||||
TEST(GaussianSplat, GetSHOrderUsesSHSectionStride) {
|
||||
GaussianSplat gaussianSplat;
|
||||
|
||||
GaussianSplatMetadata metadata;
|
||||
metadata.splatCount = 1u;
|
||||
|
||||
XCEngine::Containers::Array<GaussianSplatSection> sections;
|
||||
sections.PushBack(GaussianSplatSection{
|
||||
GaussianSplatSectionType::SH,
|
||||
GaussianSplatSectionFormat::SHFloat32,
|
||||
0u,
|
||||
96u,
|
||||
1u,
|
||||
96u
|
||||
});
|
||||
|
||||
XCEngine::Containers::Array<XCEngine::Core::uint8> payload;
|
||||
payload.Resize(96u);
|
||||
|
||||
ASSERT_TRUE(gaussianSplat.CreateOwned(metadata, std::move(sections), std::move(payload)));
|
||||
EXPECT_EQ(gaussianSplat.GetSHOrder(), 2u);
|
||||
}
|
||||
|
||||
TEST(GaussianSplat, RejectsInvalidSectionLayout) {
|
||||
GaussianSplat gaussianSplat;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user