Questa è una vecchia domanda, ma la risposta attuale non spiega davvero per cosa li useresti.
Si tratta di risparmiare spazio. E con gli attributi del vertice, meno spazio può significare prestazioni più elevate (se sei legato al trasferimento del vertice).
I colori in genere non richiedono molto più di 8 bit per componente. A volte hai bisogno di 16 bit, se si tratta di un valore di luce HDR o qualcosa del genere. Ma per le caratteristiche della superficie (che è ciò che la maggior parte degli attributi del vertice sono), 8 bit vanno bene. Quindi i byte normalizzati senza segno sono un buon formato di vertice.
Le coordinate delle trame non richiedono 32 bit di precisione in virgola mobile. È sufficiente un valore di 16 bit da [0, 1]. I cortometraggi non firmati così normalizzati sono un formato vertice ragionevole.
Le normali non hanno mai bisogno di 32 bit di precisione. Sono indicazioni. I byte normalizzati con segno a 8 bit tendono ad essere un po 'piccoli, ma i valori normalizzati a 10 bit sono abbastanza buoni per la maggior parte del tempo. OpenGL (3.3+) consente persino di utilizzare normali a 10 bit tramite un formato compresso 10/10/10/2 bit, memorizzato in un singolo numero intero senza segno a 32 bit.
Puoi persino giocare con posizioni di vertice, se ti trovi in un serio bisogno di più memoria.
Senza la normalizzazione, dovresti sprecare preziosi cicli nei tuoi attributi di byte che dividono lo shader per 255.0. Perché farlo, quando l'hardware può farlo gratuitamente?