segunda-feira, 14 de junho de 2010

Combinação de Malha

Gostaria de compartilhar os resultados de um teste que fiz neste fim de semana com a combinação de malhas no Unity. Como provavelmente iremos usar apenas 1 luz para o efeito de sombras dinâmicas e vários objetos da cena compartilharão o mesmo material, imaginei que a combinação de malhas resultaria em uma melhora significativa de desempenho.

Para testar isso, montei um cenário específico com os objetos dos cogumelos. Cada grupo de cogumelos possui 3 cogumelos distintos. Cada grupo ficou com aproximadamente 1.500 tris e criei na cena 256 grupos, totalizando 384.000 tris. O cenário ficou assim:


Em seguida fiz 4 testes para esse cenário. Para cada teste eu medi:

a) Frames per Second dentro do editor do Unity.
b) Frames per Second de um build Windows Standalone, 1600x900, qualidade Good.

c) Draw Calls
d) Tempo médio de Render de 1 frame

Os testes foram:

Teste1: Execução normal, sem combinação de malhas.
Teste2: Cada grupo de cogumelos com as malhas dos seus cogumelos individuais combinadas.

Teste3: Os grupos de cogumelos do teste 2 divididos em 2 GameObjects, também com malhas combinadas.
Teste4: Igual ao teste 3, mas com combinação de malhas apenas nos 2 GameObjects "pais".


Os resultados dos testes estão na imagem abaixo:


Os testes foram feitos em um desktop Core i7 com 12G de RAM mas, independentemente da capacidade da minha máquina, ficou evidente o benefício significativo que teremos com a combinação de malhas. É curiosa a pequena melhora em desempenho quando apenas os objetos raíz da hierarquia de cogumelos possuem a combinação de malhas e não os pais de cada grupo de cogumelos.

Assim que puder, farei este mesmo teste no meu Notebook Vaio, Core Duo com 1GB.

Nenhum comentário:

Postar um comentário