Skip to content

Multiple viewpoints/SparkRenderers and driving LOD #369

@ayamflow

Description

@ayamflow

Hi, and thanks for all the work on Spark ✨
I've hit a roadblock with LOD across multiple viewpoints.

Setup

  • A scene with several SplatMeshes loaded from .rad files (so LOD + paged).
  • Two cameras: one renders to the full canvas, the other to a RenderTarget that's composited into a corner of the main view (picture-in-picture).

To get correct per-viewport sorting, I use one SparkRenderer per camera. The problem: each SparkRenderer drives LOD from its own camera, but they share the same SplatMeshes, so they fight over the shared LOD/paging state and the splats end up clipping and popping.

As a workaround I switched to a single SparkRenderer with enableDriveLod = true, driven by the main camera. That fixes the clipping/popping — but now the second viewport's LOD is computed from the main camera. So if the main camera zooms out, the PiP view becomes very blurry, because its detail level is chosen for the far main camera instead of its own (closer) viewpoint.

Question: is there a way to have multiple cameras contribute to LOD additively — i.e. pick the maximum detail needed across all viewpoints — without one renderer overwriting the other's state?

I noticed setPrefetchCameras() in the source but it appears to be commented out/disabled — is that the intended mechanism for this, and is it expected to return?

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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