Otimização dos Efeitos de Partícula na 2.4.0

Apesar da plataforma de multinúcleos ter tido um efeito enorme no desempenho, ainda temos muitas coisas para otimizar. Nosso programador de otimização, Vincent, vem tentando otimizar o sistema de partículas usando as instruções de vetores de propósitos especiais disponíveis em CPUs modernas.

A imagem abaixo mostra alguns dos resultados com o nosso rastreador de quadros em uma cena com muitas partículas.



Essa é uma cena que possui 70 esqueletos de fogo atirando projéteis contra o jogador. É uma cena que funciona muito bem como teste, pois ela estressa o sistema de partículas usando muitas partículas, mas não consome muito da taxa de preenchimento da GPU, que é uma área que não queremos testar aqui.

Como pode ver, sem a Plataforma de Multinúcleos isso resultou em um aumento de velocidade de 1.9X e com a plataforma de multinúcleos vemos um aumento de velocidade de 1.5X. Ambas otimizações juntas dão um aumento significativo de 4.5X nessa cena comparado com o 2.3.0.

Para conseguirmos isso, usamos instruções AVX de propósitos especiais que foram introduzidas nas CPUs em meados de 2011. Instruções AVX lhe permitem aplicar o mesmo conjunto de operações matemáticas em um conjunto maior de dados ao mesmo tempo. Por exemplo, ao invés de calcular a velocidade de uma partícula, podemos calcular quatro partículas de uma vez com o mesmo número de instruções de CPU.

O próprio subsistema de partículas sozinho é por volta de 4X mais rápido que usar essas instruções. Para CPUs que não possuem suporte ao AVX, também temos uma implementação de SSE2 que é por volta de 2X mais rápido que antes, o que ainda terá um resultado final significativo na sua taxa de quadros.

Gostaria de enfatizar que isso é uma otimização de CPU e não fará efeito na taxa de quadros se a sua placa de vídeo for o gargalo.
Última edição por Felipe_GGG em 28 de ago de 2016 17:30:05
Último bump em 28 de ago de 2016 17:15:30

Reportar Post do Fórum

Reportar Conta:

Tipo de Reporte

Informação Adicional