-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
WebGPU: support vertex buffers with non multiple of 4 bytes strides #14413
WebGPU: support vertex buffers with non multiple of 4 bytes strides #14413
Conversation
… webgpu-vertexbuffer-stride-align
Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s). |
Snapshot stored with reference name: Test environment: To test a playground add it to the URL, for example: https://babylonsnapshots.z22.web.core.windows.net/refs/pull/14413/merge/index.html#WGZLGJ#4600 Links to test babylon tools with this snapshot: https://playground.babylonjs.com/?snapshot=refs/pull/14413/merge To test the snapshot in the playground with a playground ID add it after the snapshot query string: https://playground.babylonjs.com/?snapshot=refs/pull/14413/merge#BCU1XR#0 |
I added the support as a whole and not to WebGPU specifically, this way it can benefit to any engine that requires that strides be a multiple of 4 bytes (like probably Native does).
If the stride is not a multiple of 4 bytes, each time you call
VertexBuffer.update()
, it will create a new GPU buffer. But callingVertexBuffer.update()
is slow anyway, because we must create a new buffer on the js side to make space for padding data. So, I prefered not to handle this case and simply create a new GPU buffer instead of making the PR more complex. If necessary, we can update the docs to explain what happens with non aligned strides and how to handle it on the user side.[EDIT] Ready for review again!