-
Notifications
You must be signed in to change notification settings - Fork 195
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: Start mesharrow document conventions #3161
base: master
Are you sure you want to change the base?
Conversation
@ibgreen if we might want to entertain the idea of Arrow becoming the core GPU memory layout for luma.gl ... should we consider supporting multi-draw indirect in this design? The mesharrow proposal currently in the PR seems close to optimal for a single mesh (perhaps with some uncertainty about the indices), but a list of such per-mesh tables won't scale up for complex AEC/BIM scenes, and I suspect that glTF scenes using Multi-draw could, for example, involve:
A comparable concept in three.js is THREE.BatchedMesh, but it's newer, experimental, and very much "opt-in" today. Totally understand if you prefer to focus on the mesh-per-table approach, it's just very interesting to consider APIs in which batching is foundational and on by default. :) |
No, I am actually thinking about this primarily as "one-mesh-per-row" approach.
The record batch structure can certainly be used to wrap each mesh in its own record batch, that way there is no need to concatenate all the array buffers from the different meshes being combined into a table. As for multidraw, my understanding is that it is an optimized way to draw all the mesh primitives that share materials etc in a single lower overhead call. If we store one mesh per row, we could just filter out all the Arrow Table rows that were using the same material, and get the start and end indices from the underlying |
1ffab85
to
80fa024
Compare
https://loaders.gl/docs/arrowjs/usage-guide/mesharrow