Skip to content

Commit 12e4fd8

Browse files
WebGPURenderer: Fix storage buffer update range (#30532)
1 parent 5f2b92f commit 12e4fd8

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

src/renderers/webgpu/utils/WebGPUAttributeUtils.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,21 @@ class WebGPUAttributeUtils {
186186
for ( let i = 0, l = updateRanges.length; i < l; i ++ ) {
187187

188188
const range = updateRanges[ i ];
189+
let dataOffset, size;
189190

190-
const dataOffset = range.start * byteOffsetFactor;
191-
const size = range.count * byteOffsetFactor;
191+
if ( bufferData._force3to4BytesAlignment === true ) {
192+
193+
const vertexStart = Math.floor( range.start / 3 );
194+
const vertexCount = Math.ceil( range.count / 3 );
195+
dataOffset = vertexStart * 4 * byteOffsetFactor;
196+
size = vertexCount * 4 * byteOffsetFactor;
197+
198+
} else {
199+
200+
dataOffset = range.start * byteOffsetFactor;
201+
size = range.count * byteOffsetFactor;
202+
203+
}
192204

193205
device.queue.writeBuffer(
194206
buffer,

0 commit comments

Comments
 (0)