Diagnóstico de desempenho
Onde o frame time vai embora
-
1Excesso de draw calls sem batchingCada chamada de renderização separada adiciona overhead de CPU. Em cenas com centenas de objetos estáticos, a diferença entre usar static batching e não usar pode passar de 8ms por frame em hardware intermediário.
-
2Sombras dinâmicas em cascata mal configuradasCascades de shadow map com resolução excessiva para distâncias longas são um dos maiores desperdícios de GPU em jogos de mundo aberto. Reduzir a distância máxima de shadow e ajustar os splits costuma ser o primeiro passo eficaz.
-
3Texturas sem compressão adequadaTexturas RGBA32 onde BC7 ou ASTC resolveriam o problema ocupam de 4 a 6 vezes mais memória de GPU. O impacto aparece em dispositivos com largura de banda limitada, especialmente em mobile e consoles portáteis.
-
4Ausência de LOD em malhas complexasRenderizar um personagem com 80 mil triângulos a 200 metros de distância não contribui visualmente para nada. Configurar três ou quatro níveis de LOD bem espaçados reduz a carga de vértices de forma consistente sem alterar a percepção do jogador.
Análise de pipeline
O que o profiler revela que o olho não vê
A maioria dos problemas de desempenho em jogos 3D não está onde o desenvolvedor imagina. Frames lentos raramente têm uma causa única - quase sempre é uma combinação de gargalos em CPU, GPU e memória que só aparecem juntos sob condições específicas de cena.
Ferramentas como RenderDoc, PIX e o GPU Profiler nativo da Unity ou Unreal permitem identificar exatamente onde o tempo de frame está sendo consumido. Sem esses dados, qualquer tentativa de otimização é basicamente um chute.
Um padrão recorrente que aparece nas análises: overdraw excessivo em partículas e efeitos de UI. Sistemas de partícula com blending aditivo empilhado em regiões pequenas da tela podem consumir mais fillrate do que toda a geometria da cena.
Ver programa de aprendizadoTópicos em profundidade
Áreas que merecem atenção técnica
Shaders com muitas variantes compiladas aumentam o tempo de carregamento e o uso de memória. Consolidar keywords e usar shader stripping reduz o footprint sem perda visual.
Usar mesh colliders em objetos dinâmicos é uma das decisões mais custosas em física. Colisores primitivos compostos resolvem a maioria dos casos com fração do custo computacional.
Carregar chunks de terreno e assets de forma síncrona causa freezes perceptíveis. Sistemas de streaming com prioridade por distância e câmera evitam interrupções sem exigir hardware mais potente.
Iluminação totalmente dinâmica em cenas estáticas é desperdício de GPU. Identificar quais elementos da cena nunca mudam e fazer bake seletivo é uma decisão de arquitetura, não de estética.
Personagens com muitos ossos e blend trees complexas têm custo de CPU proporcional ao número de instâncias na cena. GPU skinning resolve o gargalo em cenas com dezenas de personagens simultâneos.
Arquivos de áudio carregados como Decompress on Load consomem mais memória; Streaming aumenta I/O. Escolher o modo certo por tipo de som - efeito curto, trilha longa - evita problemas que aparecem tarde no desenvolvimento.