Commit Graph

10 Commits

Author SHA1 Message Date
Alexandru Popovici 4aef572a44 Multi Viewer (#1518)
* Fixed an issue with HDRIs not generating proper PMREMs over multiple viewer instances

* WIP on makign the world tree multiple instanced

* The WorldTree is no longer static. Each viewer has it's own instance and it hands it over to whoever needs it.

* Fixed an issue with filtering and the new non-static tree. Also removed the 'root' key from the NodeData structure since it's not needed

* Added an guard when building batches for situations where all render views have invalid geometries. This generally means there is somethign wrong with the stream itself

* multi-viewer css fixes

---------

Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com>
2023-04-21 13:12:15 +03:00
Alexandru Popovici 6b7dbc5d70 Reduced Viewer Memory Footprint (#1406)
* The ObjectLoader and ViewerObjectsLoaders are disposed upon loading complete.

* Added viewer parameter for keeping or discarding original geometry data. Defaults to discarding it. WIP on mesh and point cloud implementation for actual discarding it

* Geometry data from raw nodes is now disposed after building their reder views

* Removed raw geometry data from points and lines

* Removed the float64 array which was persisted pointlessly by the section plane outlines feature. Also fixed a bug for this feature regarding resizing the point buffer and RTE

* Implemented BVHs in local space, relative to world origin. This cuts down on it's redundant memory footprint by half

* Implemented SpeckleMeshBVH which completely hides the RTE-related transformations that we're making to reduce memory footprint.

* Added some clarifications to the SpeckleMeshBVH class
2023-02-28 13:07:33 +02:00
Alexandru Popovici 1c78607942 Alex/#1347 Async Loading and Load cancelling (#1367)
* Implemented async walk for the world tree. Implemented asyn render tree building and async batch building. Implemented progressive loading

* WIP tree walk async that actually works using a generator

* Async walking now properly works and can be interrupted

* Properly working async walk

* Added loadObjectAsync function in the API which should be used if stream loading needs to be cancelled and for 'progressive' loading. Added a priority argument to the loadObjectAsync and to walkAsync functions which makes the async-iness so to speak configurable.

* Refactored the sync and async subtree batch building to remove duplicate code. Changed some logs for better clarity

* Fixed an issue with point clouds and material creation
2023-02-17 13:45:22 +02:00
AlexandruPopovici 248948363a Fixed an issue I created myslef a while ago. Reverted the object loader to the original state and made the ViewerObjectLoader to send the logger's logging function instead of the logger itself when creating ObjectLoader instances 2023-01-26 18:42:12 +02:00
Alexandru Popovici de2bce89a5 Alex/verbosity and mouse event (#1275)
* Added a verbose flag in the viewer params. Default is false and it's equivalent to the ERROR level

* Piggybacked the original pointer event into the SelectionEvent
2023-01-02 16:23:52 +02:00
AlexandruPopovici 25c74556d0 Sandbox uses official viewer API exclusively. Added ViewerEvent for any events that the viewer emits and updated the references everywhere 2022-08-24 16:42:11 +03:00
AlexandruPopovici d029c3dd32 Added message showing how much time it took to load the objects. LOAD, not DOWNLOAD 2022-08-18 18:21:42 +03:00
AlexandruPopovici c90fe75356 #827 Implemented most of multi-stream adding to the viewer. Mostly works, just needs some quality of life changes + making sure stuff doesn't leak too bad when removing 2022-08-02 18:47:59 +03:00
AlexandruPopovici 923e835c54 #811 Added the the unload functionality, so we can load/unload stuff in the sandbox. It's currently a bit leaky but we'll fix that. Also we currentyl don;t support multiple paralel streams to be loaded in. I first want to make sure things work properly for 1 stream before having multiple at the same time 2022-06-24 14:20:27 +03:00
AlexandruPopovici 499653d983 #811 Started taking the axe on a lot of legacy code which became obsolete after redux Stage 2. Turned ViewerObjectLoader to typescript and started moving a lot of stuff from viewer to a new class, SpeckleRenderer, which will centralize and handle a lot of stuff 2022-06-21 00:58:20 +03:00