Perché è importante avere target di rendering con le stesse dimensioni di bit?


10

Attualmente sto pensando a quale tipo di GBuffer avrò bisogno per l'ombreggiatura differita, quindi ho provato anche a documentarmi online su quelli più comuni e sul loro formato.

La maggior parte del GBuffer che ho visto utilizzava le stesse dimensioni di bit per ciascun target di rendering, portando spesso anche a canali inutilizzati. Tuttavia, come prima ipotesi per il mio GBuffer, sulla carta, ho bisogno di due target a 24 bit e due 32 uno o tre 24 e uno 32.

Capisco che avere la stessa "dimensione" ogni allegato può essere allineato meglio, ma in pratica è meglio sprecare canali (o riservarli per un uso futuro) e avere tutti i RT della stessa dimensione o dovrei usare esattamente ciò di cui hai bisogno? Nel primo caso, perché è un tale vantaggio, i 24 bit saranno comunque imbottiti a 32?

Risposte:


9

Capisco che avere la stessa "dimensione" ogni allegato può essere allineato meglio, ma in pratica è meglio sprecare canali (o riservarli per un uso futuro) e avere tutti i RT della stessa dimensione o dovrei usare esattamente ciò di cui hai bisogno?

Avere un obiettivo di rendering unificato a 32 bit è migliore, anche se significa "sprecare" un po 'di memoria. Questo sarà molto più veloce di avere una memoria allineata non a 32 bit. Inoltre non avrai il problema di supportare più tipi di buffer, la copia e la combinazione di buffer sarà più semplice poiché non dovrai convertire tra più tipi.

32 bit è il nativo per GPU e CPU, quindi ridurrai il numero di cicli richiesti per leggere la memoria. Le GPU cercheranno naturalmente di leggere 32 bit, se si sta tentando di leggere un indirizzo di memoria non allineato, ad esempio 24 bit allineati, le GPU leggeranno 32 bit e quindi trasferiranno i byte indesiderati.

Ecco un articolo dettagliato sul perché l'allineamento della memoria è importante (anche se si parla di CPU e non GPU, il concetto di alto livello si applica ancora).

I 24 bit saranno comunque imbottiti a 32?

Alcune GPU lo riempiranno, ma non può essere garantito, quindi si trova nell'area di implementazione del driver / GPU. Quindi devi profilare e controllare i risultati.

PS: 32 bit o 64 bit a seconda dell'architettura.


5
e se sono tutti della stessa dimensione po 'è possibile blit sopra senza bisogno di convertire
cricchetto maniaco del
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.