Tiempos del Navegador
Esta página detalla las limitaciones técnicas de la arquitectura WebGL que atañen al parámetro Application.targetFrameRate.
Al compilar un proyecto de Unity para WebGL, el parámetro Application.targetFrameRate no solo modifica el límite de fotogramas interno del motor, sino que también altera la API base del navegador a través de la cual se ejecuta el bucle principal.
Sin Límite (Uncapped) (requestAnimationFrame)
Si eliminas el límite de velocidad de fotogramas (dependiendo de la versión de Unity, estableciendo Application.targetFrameRate en -1 o 0), el compilador Emscripten vinculará el bucle principal de Unity directamente a la API del navegador window.requestAnimationFrame.
- Ventajas: Es el método de renderizado más nativo, fluido y preciso en la web. El navegador sincronizará automáticamente la llamada con la tasa de refresco del monitor del jugador (VSync).
- Análisis: Las métricas de
cpuMainThreadFrameTime(leídas por WebAP) reflejarán el tiempo real que la CPU empleó calculando física y scripts.
Límite Artificial (setTimeout)
Si fuerzas estrictamente una velocidad de fotogramas (por ejemplo, Application.targetFrameRate = 30), Emscripten se verá obligado a abandonar requestAnimationFrame. En su lugar, utilizará la API setTimeout() o complejas combinaciones de temporizadores internos para retrasar artificialmente el bucle.
Distorsión de las Métricas de CPU (La Trampa de Emscripten)
Los temporizadores artificiales introducen una enorme discrepancia al medir el tiempo de la CPU. El procesador puede concluir todos los cálculos de la lógica del juego en un rápido tiempo de 5 ms y pasar a inactividad, pero la corrutina WaitForEndOfFrame no se reanudará hasta que expire el temporizador de setTimeout.
Como resultado: El FrameTimingManager registrará este tiempo de espera dentro de los tiempos de la CPU. El analizador (y el Tracker de WebAP) deducirán que tienes un Cuello de Botella de CPU (CPU Bottleneck), incluso si el procesador está funcionalmente inactivo y los fotogramas simplemente están esperando al temporizador del navegador.
Estrategia de Configuración Correcta
Para el funcionamiento óptimo de Web Adaptive Performance en el navegador:
- No uses
Application.targetFrameRate. Déjalo en-1(sin límite). - Especifica tu FPS deseado en la configuración del plugin (
Target Min FPS = 60). WebAP utilizará ese valor no como un límite estricto, sino como la base para tomar decisiones sobre la calidad de renderizado.
