Estou criando um jogo baseado em sprite e tenho um monte de imagens em uma resolução ridiculamente grande e as dimensiono para o tamanho desejado de sprite (por exemplo, 64x64 pixels) antes de convertê-las em um recurso do jogo. sprite dentro do jogo, não preciso escalá-lo.
No entanto, se eu girar esse pequeno sprite dentro do jogo (mecanismo agnóstico), alguns pixels de destino serão interpolados e o sprite parecerá borrado.
Obviamente, isso depende do ângulo de rotação e do algoritmo de interpolação, mas, independentemente disso, não há dados suficientes para amostrar corretamente um pixel de destino específico.
Portanto, existem duas soluções em que posso pensar. O primeiro é usar a imagem enorme original, girá-la para os ângulos desejados e, em seguida, reduzir todas as variações resultantes e colocá-las em um atlas, que tem a vantagem de ser bastante simples de implementar, mas ingenuamente consome o dobro de sprite espaço para cada rotação (cada rotação deve ser inscrita em um círculo cujo diâmetro é a diagonal do retângulo original do sprite, cuja área é duas vezes maior que o retângulo original, supondo sprites quadrados).
Ele também tem a desvantagem de ter apenas um conjunto predefinido de rotações disponíveis, o que pode ser bom ou não, dependendo do jogo.
Portanto, a outra opção seria armazenar uma imagem maior e girar e reduzir a escala durante a renderização, o que leva à minha pergunta.
Qual é o tamanho ideal para este sprite? Ótimo significado que uma imagem maior não terá efeito na imagem resultante.
Definitivamente, isso depende do tamanho da imagem, da quantidade de rotações desejada sem perda de dados até 1/256, que é a diferença mínima de cor representável.
Estou procurando uma resposta geral teórica para esse problema, porque tentar vários tamanhos pode ser bom, mas está longe de ser o ideal.