Skip to content

Gaussian Splatting crashes in Filament due to MSAA and sampleable depth RenderTarget assertion #7495

@ShineSea

Description

@ShineSea

Checklist

Describe the issue

When running the GaussianSplat example, the application crashes with the following assertion:

[Open3D DEBUG] GaussianSplat Vulkan: created shared image 'gs.color' 768x744 GL=23
[Open3D DEBUG] GaussianSplat Vulkan: created shared image 'gs.scene_depth' 768x744 GL=24
PanicLog
in void __cdecl utils::panic(const char *,const char *,int,const char *) noexcept:34
in file D:\a\filament\filament\libs\utils\src\debug.cpp
reason: D:\a\filament\filament\filament\src\details/View.h:211:
failed assertion
'!renderTarget || !mMultiSampleAntiAliasingOptions.enabled || !renderTarget->hasSampleableDepth()'

After debugging, I believe this is caused by the order of operations in
GaussianSplatVulkanBackend::PrepareOutputTextures.

The current code is:

view.SetRenderTarget(targets.render_target);

auto* native = view.GetNativeView();
auto msaa = native->getMultiSampleAntiAliasingOptions();
msaa.enabled = false;
native->setMultiSampleAntiAliasingOptions(msaa);

view.SetPostProcessing(false);

The crash occurs because MSAA is still enabled when View::setRenderTarget() is called,
and Filament validates MSAA and render target compatibility inside setRenderTarget(),
which triggers the assertion when using a render target with a sampleable depth texture.

Steps to reproduce the bug

run GaussianSplat Example

Error message

[Open3D DEBUG] GaussianSplat Vulkan: created shared image 'gs.color' 768x744 GL=23
[Open3D DEBUG] GaussianSplat Vulkan: created shared image 'gs.scene_depth' 768x744 GL=24
PanicLog
in void __cdecl utils::panic(const char *,const char *,int,const char *) noexcept:34
in file D:\a\filament\filament\libs\utils\src\debug.cpp
reason: D:\a\filament\filament\filament\src\details/View.h:211: failed assertion '!renderTarget || !mMultiSampleAntiAliasingOptions.enabled || !renderTarget->hasSampleableDepth()'

Expected behavior

No response

Open3D, Python and System information

- Operating system: Windows 10 64-bit
- Open3D version: 
- System architecture: x86
- Is this a remote workstation?: no
- How did you install Open3D?: build from source
- Compiler version (if built from source): MSVC 19.xx (Visual Studio 2022, v143 toolset)

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugNot a build issue, this is likely a bug.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions