Skip to content

Browser Timings

Esta página detalha as restrições técnicas da arquitetura WebGL que dizem respeito ao parâmetro Application.targetFrameRate.

Quando um projeto Unity é compilado para WebGL, o parâmetro Application.targetFrameRate não altera apenas o limite interno de frames da engine, mas também modifica a API de base do navegador através da qual o loop principal corre.

Uncapped (Sem Limite) (requestAnimationFrame)

Se você remover o limite da taxa de frames (dependendo da versão do Unity, configurando Application.targetFrameRate para -1 ou 0), o compilador Emscripten ligará o loop principal do Unity diretamente à API do navegador window.requestAnimationFrame.

  • Vantagens: É o método de renderização mais nativo, suave e preciso na web. O navegador irá sincronizar automaticamente a chamada com a taxa de atualização do monitor do jogador (VSync).
  • Análise: As métricas cpuMainThreadFrameTime (lidas pelo WebAP) irão refletir o tempo real que a CPU gastou calculando física e scripts.

Artificialmente Limitado (setTimeout)

Se você forçar estritamente uma taxa de frames (por exemplo, Application.targetFrameRate = 30), o Emscripten será obrigado a abandonar o requestAnimationFrame. Em vez disso, utilizará a API setTimeout() ou combinações complexas de temporizadores internos para atrasar o loop artificialmente.

Distorção de Métricas de CPU (A Armadilha do Emscripten)

Temporizadores artificiais introduzem uma discrepância enorme ao medir o tempo da CPU. O processador pode concluir todos os cálculos da lógica do jogo num tempo super-rápido de 5 ms e entrar em inatividade, mas a corrotina WaitForEndOfFrame não continuará até que o temporizador do setTimeout acabe.

Como resultado: O FrameTimingManager gravará este tempo de espera dentro dos timings da CPU. O profiler (e o Tracker do WebAP) irão deduzir que tem um Gargalo de CPU (CPU Bottleneck), mesmo que o processador esteja funcionalmente inativo e os frames estejam simplesmente à espera do temporizador do navegador.

A Estratégia Correta de Configuração

Para o Web Adaptive Performance funcionar da melhor forma no navegador:

  1. Não use Application.targetFrameRate. Deixe em -1 (sem limites).
  2. Especifique o seu FPS desejado nas configurações do plugin (Target Min FPS = 60). O WebAP irá utilizar esse valor não como um limite rígido, mas como a base para tomar decisões sobre a qualidade de renderização.