Skip to content

Improve voxel memory distribution among metadata attributes #13169

@jjhembd

Description

@jjhembd

Feature

VoxelTraversal constructs a Megatexture for each metadata field coming from the VoxelProvider. The megatextures are sized rather simplistically:

  1. Maximum size is set to 512 MB. The VoxelTraversal constructor takes a maximumTextureMemoryByteLength, but this parameter is not set when the VoxelTraversal is constructed in VoxelPrimitive.
  2. Each metatadata field is allowed the full maximumTextureMemoryByteLength. There is no option to limit the total memory of the whole VoxelTraversal

After constructing the megatextures, the VoxelTraversal then uses the maximumTileCount from the first Megatexture, to compute things like the length of the priority queue. However, if different metadata fields have different sample sizes in memory (e.g., single float vs RGBA float), the different megatextures could potentially have different maximumTileCount values--because they were all allocated with the same maximum memory.

Some ideas for improvement:

  • Expose maximum memory limits to the user, similar to Cesium3DTileset.maximumCacheOverflowBytes.
  • Divide the maximum available memory among the metadata properties proportionally to the different byte sizes of a single sample in the property
  • Compute a valid maximumTileCount that is the same for all Megatextures

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions