Che ho un modello composto da vertici, ciascuno con position
, normal
, tangent
e texcoord
gli attributi, in cui i triangoli sono specificati da triple indice.
Se ci concentriamo solo sugli attributi del vertice, sono a conoscenza di due grandi strategie: la struttura delle matrici e la matrice delle strutture. Ho anche sentito che la matrice di strutture è preferita perché aumenta la località di memoria (e quindi la località di cache) degli attributi per un dato vertice.
È davvero così che migliora le prestazioni? Il modo principale in cui potrei pensare che ciò avvenga è attraverso indici di vertici che richiedono al rasterizzatore di acquisire dati di vertici che sono stati da tempo sfrattati dalla cache. Se l'accesso ai dati dei vertici è casuale come questo, quindi mantenere tutti gli attributi di un vertice sulla stessa riga della cache renderebbe sicuramente le cose più veloci, ma questo non è un problema che potrebbe essere mitigato principalmente ottimizzando l'ordine delle specifiche del triangolo?
Inoltre, capisco che le GPU moderne potrebbero essere migliori nel disimballare lunghi vettori dello stesso tipo, rispetto ai vettori di strutture di molti tipi. Sarebbe quindi possibile che un layout di struttura di array superi costantemente un layout di matrice di strutture degli stessi dati di vertice, se l'ordine dell'indice è ottimizzato?