Skip to content

LOD vs. loading and VRAM usage #108

Description

@nvoelzow

as noted in #107 it seems like the LOD method currently only saves render time but not read time or VRAM buffer space - this comment in PointCloudViewerTilesDX11.cs recaps this issue:

            int newPointCount = tiles[index].totalPoints; // FIXME why whole count? but causes flicker if read only needed amount

so if I read your code correctly, the full tile is read from file and uploaded to gpu memory - only to render a fraction of the points contained depending on LOD.
This causes severe performance issues with dense point clouds and effectively limits the part of the point cloud that can be rendered - not because of the number of points that need to be rendered (thanks to LOD) but because all of the contained points need to be read into memory.

The gpuUploadSteps uploads the buffers in multiple segments to avoid blocking from what I can tell, but the data already uploaded is not being used until the last bit is uploaded. Would it be possible to render the portion of the tile that is already uploaded so that the rendering reflects the incremental loading?

The other comments in the code suggest that you already have a fix in mind (loading batches of points instead of updating the buffers for single points etc) - is this something that could be available soon?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions