한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Libro blanco del lag en juegos › L1 Proceso del juego en el cliente

Carga síncrona y compilación de shaders en el hilo principal Synchronous asset load, shader compile

ID de la causa cg-sync-load · Responsable principal Desarrollo de cliente (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

El juego se detiene para leer archivos y crear shaders justo antes de dibujar zonas, monstruos o efectos que aparecen por primera vez.

Por qué Entrar en una zona nueva o ver por primera vez una habilidad, un equipamiento o un monstruo → Efecto El hilo principal espera a que terminen la lectura de archivos y la compilación de shaders → En pantalla Se detiene 0.1–1 s solo la primera vez; a partir de la segunda va bien

Síntomas
Congelamiento, Tirones
Factores
Detención
A quién afecta
Solo yo
Cuándo
Al moverse o cambiar de zona, Al hacer ciertas acciones
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Carga asíncrona, precarga (prewarming), compilar los shaders por adelantado en la pantalla de carga o en la primera ejecución, aprovechar las pantallas de carga.
Cifras de referencia
Compilar un shader lleva decenas de ms, y a veces más de 100 ms. Cargar una textura lleva de decenas a cientos de ms según la velocidad del almacenamiento.
En el gráfico
Avalancha tras la apertura · Número de picos de frametime (justo después de un parche o una actualización de drivers)
Dónde mirar
Grabar con PresentMon dos veces el mismo recorrido y comparar la primera visita con la segunda. En una build de desarrollo, en Unreal activar r.PSOPrecache.Validation y revisar stat PSOPrecache y “PSO PRECACHING MISS” en el log; en Unity, los tramos de carga y de shaders de los frames con pico en la vista Timeline del Profiler
Se confirma si
Picos de 0.1–1 s solo en sitios nuevos o con habilidades usadas por primera vez, que desaparecen la segunda vez. Los reportes se concentran justo después de un parche o de una actualización del driver gráfico y luego bajan
Se descarta si
Si hay picos en el mismo sitio cada vez, el problema no es la caché de shaders. Si se repiten en cada desplazamiento solo en PC con almacenamiento lento: “Almacenamiento lento que retrasa el streaming de assets”; si la memoria dedicada de la GPU está llena: “Falta de memoria gráfica (VRAM)”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego
Para saber más
En PC, el driver gráfico guarda en la caché de shaders cada shader que compila y luego lo reutiliza. Por eso, justo después de actualizar el driver gráfico o de un parche del juego, esa caché se invalida y hasta quien jugaba bien vuelve a tener tirones durante un tiempo. El reporte típico es “después del parche se traba la primera vez que voy a cada sitio”.

Fuentes

  1. Shader loading Unity
    La primera vez que se usa una variante de shader, el driver gráfico la compila para la GPU y puede provocar una pausa visible; lo ya compilado queda en caché y no vuelve a provocar pausas
  2. Optimizing Rendering With PSO Caches in Unreal Engine Epic Games
    Crear el estado de pipeline (PSO) en el momento en que se necesita puede tardar más de 100 ms, así que hay que crearlo por adelantado
  3. Direct3D 12 Return Codes Microsoft
    D3D12_ERROR_DRIVER_VERSION_MISMATCH: una caché de PSO creada con otra versión del driver no se puede reutilizar (hay que recompilar tras actualizar el driver)
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    Graba el tiempo de cada frame con FrameTime (tiempo de CPU entre frames)
  5. PSO Precaching for Unreal Engine Epic Games
    Al activar r.PSOPrecache.Validation, stat PSOPrecache muestra estadísticas de los PSO que no se precargaron y el log registra “PSO PRECACHING MISS”; si crear un PSO en tiempo de ejecución supera los 20 ms (valor predeterminado), cuenta como tirón (hitch)

Ver también

Misma capa: L1 Proceso del juego en el cliente

Causas de otras capas con el mismo síntoma (Congelamiento)

Ver la ficha interactiva con gráficos y simulaciones