Merci d'une reponce aussi rapide et claire !
Ce que je fais pour le moment est mettre les batchs dans une multimap en utilisant comme clef un uint64 représentant la signature du material (en gros je compacte tout sur 64 bits en mettant les changements d’état les plus lourds dans les bits de poids les plus forts) puis j’itère sur ma map ce qui me donne les matériaux dans un ordre a peu pres coherent (le problème de batcher de façon parfaite étant np je me contente d'une approximation)
je pense aussi atlasser les textures au chargement des matériaux (pourquoi pas un seul atlas pour tout façon virtual texture même (ou un atlas par mode de filtrage pour éviter les problèmes)).
Est ce suffisant ou dois je prévoir un truc plus efficace pour grouper mes matériaux (les technique décrite revient a faire exactement :
bool operator<(Batch b) {
if(translutent != b.transluent) return !transluent;
if(blendMode != b.blendMode) return (int)blendMode < (int)b.blendMode;
...
}
en plus rapide (1 seule comparaison à faire), ce qui reste vachement limité)
Partager