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?
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:
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?