Je fais un jeu basé sur un sprite, et j'ai un tas d'images que j'obtiens dans une résolution ridiculement grande et je les redimensionne à la taille de sprite souhaitée (par exemple 64x64 pixels) avant de les convertir en ressource de jeu, donc quand dessinez mon sprite à l'intérieur du jeu, je n'ai pas à le mettre à l'échelle.
Cependant, si je fais pivoter ce petit sprite à l'intérieur du jeu (moteur agnostiquement), certains pixels de destination seront interpolés et le sprite aura l'air taché.
Cela dépend bien sûr de l'angle de rotation ainsi que de l'algorithme d'interpolation, mais peu importe, il n'y a pas suffisamment de données pour échantillonner correctement un pixel de destination spécifique.
Il y a donc deux solutions auxquelles je peux penser. La première consiste à utiliser l'image énorme d'origine, à la faire pivoter selon les angles souhaités, puis à réduire toutes les variations qui en résultent, et à les mettre dans un atlas, qui a l'avantage d'être assez simple à mettre en œuvre, mais consomme naïvement deux fois plus de sprite espace pour chaque rotation (chaque rotation doit être inscrite dans un cercle dont le diamètre est la diagonale du rectangle du sprite d'origine, dont l'aire est le double de ce rectangle d'origine, en supposant des sprites carrés).
Il présente également l'inconvénient de ne disposer que d'un jeu de rotations prédéfini, qui peut être correct ou non selon le jeu.
Donc, l'autre choix serait de stocker une image plus grande, de faire pivoter et de réduire l'échelle pendant le rendu, ce qui m'amène à ma question.
Quelle est la taille optimale pour ce sprite? Optimal signifiant qu'une image plus grande n'aura aucun effet sur l'image résultante.
Cela dépend certainement de la taille de l'image, du nombre de rotations souhaitées sans perte de données jusqu'à 1/256, qui est la différence de couleur minimale représentable.
Je cherche une réponse théorique générale à ce problème, car essayer un tas de tailles peut être correct, mais est loin d'être optimal.