<p>Updating the position/rotation/scale in the vertex buffer will use less memory bandwidth—that’s 9 values, where a transform matrix would be either 12 or 16—and the GPU can parallelize the work of turning the position/rotation/scale into a transform for the vertices. I’d go with 1.</p>

CC BY-SA 4.0
2019-11-09T00:00:14.923Z
2019-11-09T00:00:14.923Z
Noah Witherspoon
<p>I am about to implement the renderer for a simple particle system. Every particle has to be updated every frame (position, rotation, scale) and so I was wondering which way is usually faster:</p>

<ol>
<li><p>Calculate translation, rotation, scale and update the final positions in the vertexbuffer.</p></li>
<li><p>Calculate translation, rotation, scale into one transformation matrix and send that one to the GPU Shader for each particle.</p></li>
</ol>

<gpu><vertex-buffer-object><particles>
Performance of particle implementation
clamp
# Performance of particle implementation

(Asked by: username_0 on 2019-11-08)

I am about to implement the renderer for a simple particle system. Every particle has to be updated every frame (position, rotation, scale) and so I was wondering which way is usually faster:

1. Calculate translation, rotation, scale and update the final positions in the vertexbuffer.
2. Calculate translation, rotation, scale into one transformation matrix and send that one to the GPU Shader for each particle.

**Tags:** gpu, vertex-buffer-object, particles


---

## 1 answers

### Answer by username_1 on 2019-11-09. Score: 1 | Accepted answer

Updating the position/rotation/scale in the vertex buffer will use less memory bandwidth—that’s 9 values, where a transform matrix would be either 12 or 16—and the GPU can parallelize the work of turning the position/rotation/scale into a transform for the vertices. I’d go with 1.


---

