-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
Change default vertex layout to seperate buffers #592
Comments
I think this is a good idea. When we were looking into this for Amethyst, benchmarks basically said performance was a wash or slightly better for the separate version, and that's without taking into account stuff like shadow map where you're actually using less of the data. The flexibility gains on top of that makes it very worth it. |
I'm not sure if we should keep the possiblity to have multiple attributes per buffer, as it just takes up code and is likely to be never used (?). Also the buffers are set up multiple times per frame now. I will fix that once I got more feedback from you people. 🙂 |
I don't think it's particularly useful to have multiple attributes per buffer tbh |
Hi, I am curious if this solves/affects the issue #155 and if so would it be possible to get an example added as part of the PR that demonstrates how to use separate buffers to add colour data to a mesh or similar? Forgive me if I am way off on the intentions for this one. |
@nickbryan Yes this would affect #155... I think the scope of this PR isn't necessarily to fully solve that but it will make solving it much easier for sure. Once this lands, #155 and an associated example should be fairly easy. |
That's awesome news! Thanks for the information. |
Okay, I have some additional Info: Prefere Seperate:
Prefere Interleaved:
Would say we still make this PR and then at some point provide functions that converts seperate buffers into interleaved ones for mobile if the user/platform demands. |
Something also to consider is that WGPU has limits to the max number of vertex buffers that can be bound. Interleaving is one way to work around that limitation. Ideally the vertex format would be fully customizable as there are use cases for both separate and interleaved. See also: |
I think I'm going to call this resolved by #592. Midway through the implementation it changed from "separate buffers" back to "interleaved" (but still bound as separate buffers). But it lays solid foundations for both approaches. I think we should open new issues for specific changes to the new approach. |
Right now the vertex layout is interleave, meaning data is stored like (VVVNNNCCC). It would make sense to use seperate buffers, like in (VVV) (NNN) (CCC).
Pro:
Cons:
The text was updated successfully, but these errors were encountered: