Best approach for instancing

I have to decide which approach we use for instancing.

- Vertex attribute instancing
- UBO
- SSBO

According to the docs, on the one hand they say:

Do
- Use a single interleaved vertex buffer for all instance data.
- Use instanced attributes to work around limitation of 16KB uniform buffers.
- If feasible, try to use a power-of-two divisor, i.e. number of vertices per instance should be power-of-two.
- Prefer indexed lookups using gl_InstanceID into uniform buffers or shader storage buffers if the suggestions here cannot be followed.
- Prefer instanced attributes if instance data can be represented with smaller data types, as uniform buffers and shader storage buffers cannot utilize these denser data types.

So it seems to say that vertex attributes ARE preferred IF we meet the requirements.



However, on another place of the website it says this:

- Prefer indexed lookups using gl_InstanceID into uniform buffers or shader storage buffers. Rather than per-instance attribute data.

Unconditionally, like UBOs and SSBOs are always preferred to vertex attributes.

What is the preferred approach even if we meet the requirements above?

Thanks!

Parents Reply Children
No data