J'ai récemment ajouté un packager de textures à mon projet qui regroupera une certaine quantité de textures en une seule, comme ceci:
Ainsi, par exemple, celui-ci a une taille de 582x1023 pixels. Le but d'ajouter ces textures compactes était évidemment d'améliorer les performances, donc je voulais rechercher la taille de texture optimale pour les textures OpenGL (en utilisant LWJGL). Les choses que j'ai trouvées étaient qu'une taille de texture maximale largement prise en charge semble être 1024x1024, selon cela par exemple. Cela me semble étrange, car évidemment, beaucoup de textures seules seraient plus grandes que cela, alors que se passe-t-il avec celles-ci? Je suis sûr que la plupart des cartes graphiques prennent en charge des textures plus grandes que cela. Puis-je raisonnablement m'attendre à ce que la plupart des cartes graphiques gèrent par exemple les textures 4096x4096 (ou peut-être même plus grandes que cela)?
Pour en venir à mon deuxième point (j'espère que cela compte toujours pour une question, mais cela revient essentiellement au même problème): les textures doivent-elles être dimensionnées à une puissance de 2 (256x256, 512x512, 1024x1024, 2048x2048, ..) et devraient Je rembourre des textures plus petites que celle à la prochaine puissance de 2? Selon cette question de 2011, ce n'est pas une exigence, mais peut améliorer les performances et éviter les bugs mineurs et celui de 2012 dit que vous devez certainement remplir les textures. Je me rends donc compte que ces questions ont été posées auparavant, mais elles sont raisonnablement datées pour que les réponses aient changé et, en outre, chacune ne répond que partiellement à ma question. Comment les autres projets / gèrent-ils cela?
TL; DR: Quelles tailles de textures puis-je attendre de la plupart des cartes graphiques? Quelles sont les tailles de texture optimales (ou y en a-t-il)? Dois-je rembourrer la largeur des textures à la prochaine puissance de 2?
la source
Réponses:
Je vais essayer de répondre à cela, bien que YMMV. J'utilise le Steam Hardware Survey ( http://store.steampowered.com/hwsurvey?platform=pc ) pour déterminer quelle est la RAM vidéo (VRAM) disponible sur la plupart des ordinateurs. En regardant les résultats au 13/10/2015 (aujourd'hui), près de 85% des gens ont 1024 Mo de VRAM.
Votre question est très large, car elle n'indique pas le matériel cible (console, PC, ordinateur de poche, appareils mobiles?) Je vais parler des PC et vous pouvez extrapoler pour d'autres plates-formes en fonction des spécifications matérielles.
En supposant 32 bits de couleur + alpha par pixel, soit 4 octets par pixel, 1 Go de VRAM peut contenir au maximum ~ 256 millions de pixels. Cela équivaut à 256 textures 1K par 1K. Cela suppose (à tort) que vous ne souhaitez conserver que des textures dans votre VRAM, alors qu'il y aura une foule d'autres choses (par exemple des données de maillage, si vous travaillez en 3D) pour lesquelles vous devez laisser de l'espace. Vous voudrez probablement aussi laisser plus d'espace pour le mip-mapping des textures, ce qui fonctionne généralement mieux si vos textures sont des puissances de deux.
Les consoles modernes (XBOX One et PS4) ont 4 à 8 Go de RAM unifiée, la plupart des ordinateurs de poche et des appareils mobiles ont 1 à 2 Go de RAM unifiée, avec des restrictions sur la quantité que vous pouvez allouer en tant que VRAM.
Je créais généralement des textures 2K pour que cela fonctionne sur la plupart des PC, ce qui permet de réduire la taille des appareils bas de gamme. Si vous écrivez un jeu 2D et que vous souhaitez cibler des écrans de résolution supérieure (4K, iPad rétine, etc.), vous pouvez utiliser des textures 4K pour l'arrière-plan, mais pour la plupart des autres parties, cela peut être exagéré.
J'espère que cela a aidé et n'a pas boué les eaux.
la source