ESPACIO PUBLICITARIO DISPONIBLE · HABLEMOS

Frustum culling, oclusión y aparición repentina de LOD: Cómo descartan geometría los motores de juegos 3D

365Finds Editorial
11.430 artículos Wiki recopilados

Usa 365 Wiki con tu IA

Copia el prompt de abajo, pégalo en la IA que ya usas y haz tu pregunta.

Descargar el Skill completo

Pruébalo primero con el prompt. Si usas 365 Wiki a menudo, instala el Skill completo de 365Wiki y no tendrás que volver a pegarlo. Si no tienes una IA habitual, también sirven las versiones web de Gemini o Microsoft Copilot.

Introducción: El dilema de la optimización geométrica en juegos modernos

Los escenarios de los videojuegos de mundo abierto actuales —como los densos bosques de The Witcher 3, los intrincados corredores urbanos de Cyberpunk 2077 o los amplios paisajes de Horizon Zero Dawn— contienen con facilidad decenas de millones de polígonos, cientos de fuentes luminosas y gigabytes de texturas en alta resolución en cada fotograma. Si la unidad de procesamiento gráfico (GPU) tuviese que rasterizar y sombrear cada uno de los triángulos del mundo virtual en cada instante, cualquier hardware moderno colapsaría, reduciendo el rendimiento a tasas de fotogramas de un solo dígito.

El renderizado 3D en tiempo real es, en esencia, el arte de la eliminación. Los motores gráficos logran tasas de refresco elevadas no solo acelerando el dibujado, sino descartando de manera fulminante toda la geometría que el jugador no puede ver.

Esta depuración visual se ejecuta a través de una arquitectura en tres fases: Frustum Culling (recorte por volumen de visión), Occlusion Culling (descarte por oclusión) y gestión de Niveles de Detalle (LOD). Cuando estos sistemas funcionan coordinados, ahorran una inmensa cantidad de llamadas de dibujado (Draw Calls) en la CPU y ancho de banda en la GPU. Sin embargo, cuando se calibran con excesiva agresividad o se desincronizan por movimientos bruscos de cámara, provocan uno de los defectos visuales más notorios del juego en PC: la aparición repentina de geometría (Pop-in).

Frustum Culling: Descarte de geometría fuera del campo de visión

El descarte por frustum es la prueba de visibilidad primaria y computacionalmente más económica que realiza un motor de juego en su pipeline gráfico.

                   [Posición de cámara / Ojo del jugador]
                            / \
                           /   \
        Plano cercano     /=====\
                         /   ▲   \
                        /    │    \   <--- Interior del frustum (RENDERIZADO)
                       / [Visible] \
                      /   Objeto    \
        Plano lejano   /=============\
                      /               \
       [Descarte: izq] [Descarte: fondo] [Descarte: der]

La geometría del frustum de cámara

En gráficos 3D, el área visible de la cámara no es una caja infinita, sino una pirámide con la cúspide seccionada, denominada geométricamente tronco de pirámide o frustum. El frustum queda delimitado por seis planos matemáticos:

  1. Plano de recorte cercano (Near Plane): Descarta la geometría demasiado próxima a la cámara para evitar que los polígonos atraviesen la lente virtual.
  2. Plano de recorte lejano (Far Plane): Define la distancia máxima de renderizado; todo objeto más allá queda suprimido.
  3. Planos laterales, superior e inferior: Establecidos por el campo de visión (FOV) y la relación de aspecto del monitor.

Volúmenes envolventes y pruebas de intersección

Comprobar las coordenadas de millones de vértices individuales contra seis planos en la CPU generaría un colapso de procesamiento. Por ello, los motores envuelven cada modelo 3D en un volumen envolvente (Bounding Volume) simplificado:

Antes de emitir una orden de dibujado hacia DirectX, Vulkan o el controlador de la tarjeta, el motor realiza sencillos productos escalares entre la esfera envolvente y las ecuaciones de los seis planos. Si el volumen queda por completo fuera de cualquiera de los planos, la malla se descarta al instante y la GPU no procesa ni un solo vértice de dicho objeto.

Occlusion Culling: La eliminación del sobregiro (Overdraw) oculto

Aunque el frustum culling elimina lo que está a la espalda o fuera del ángulo de visión del jugador, no puede solucionar el problema del sobregiro (Overdraw): objetos situados dentro del frustum pero ocultos tras obstáculos en primer plano, como murallas, cordilleras o puertas cerradas.

Renderizar un mercado medieval con cientos de puestos poligonales cuando el jugador está de cara a un muro de piedra macizo supondría un desperdicio masivo de potencia. Para evitarlo, los motores emplean el descarte por oclusión (Occlusion Culling).

[Punto de vista] ───► [Enorme muro de piedra de castillo] ───X (BLOQUEADO)
                               │
                   (Prueba de descarte por oclusión)
                               │
                     ┌─────────┴─────────┐
                     ▼                   ▼
            [Mercado oculto]      [Herrería oculta]
           (DRAW CALL ANULADO)   (CARGA GPU: CERO)

Tres arquitecturas principales de oclusión

  1. Conjuntos de visibilidad potencial (PVS) y sistemas celda-portal:
    • Predominantes en títulos de pasillos e interiores (diseño clásico en motores id Tech y Source).
    • El escenario se divide en habitaciones (celdas) conectadas por aberturas (portales). Si un portal no entra en el frustum actual, ninguna geometría de la celda enlazada se procesa.
  2. Consultas de oclusión por hardware (Hardware Occlusion Queries):
    • El motor envía a la GPU cajas envolventes simplificadas de objetos distantes y consulta: "¿Superó algún píxel de esta caja la prueba de profundidad (Z-buffer)?".
    • Si no pasa ningún píxel, la malla compleja se descarta en los siguientes fotogramas.
    • El retardo de sincronización: Esperar la respuesta de la GPU a través del bus implica un desfase de 1 a 2 fotogramas entre CPU y GPU. Al girar la cámara velozmente, este retardo puede provocar que ciertos objetos parpadeen o tarden fracciones de segundo en aparecer.
  3. Búfer Z jerárquico (HZB) y culling por Compute Shader:
    • Empleado en motores modernos como Unreal Engine 5 y Unity HDRP. El búfer de profundidad del fotograma previo se reduce a una pirámide de mapas de profundidad escalonados (HZB).
    • Los Compute Shaders comprueban en paralelo decenas de miles de volúmenes contra esta pirámide dentro de la propia memoria de la GPU, eliminando atascos de comunicación con la CPU.

Niveles de detalle (LOD) y la física de la aparición repentina (Pop-in)

Incluso cuando un objeto está en el frustum y no está ocluido, renderizar una estatua de 100.000 polígonos que apenas ocupa 8 píxeles en el horizonte resulta sumamente ineficiente. Para gestionar esto se utilizan los Niveles de Detalle (LOD).

LOD discreto frente a geometría virtualizada

Por qué ocurre el Pop-in: Cuellos de botella en la transmisión de datos

El fenómeno de objetos o texturas que aparecen de golpe frente al jugador rara vez es un error de código; suele ser el resultado de límites de hardware en el subsistema de carga continua (Streaming):

  1. Latencia de lectura en almacenamiento: Los discos mecánicos o SSD saturados no logran transferir los cientos de megabytes de mallas de alta resolución a la memoria RAM con la suficiente rapidez.
  2. Ancho de banda del bus PCIe y VRAM: Durante giros rápidos de visión, la transferencia de búferes de vértices y texturas hacia la memoria de vídeo se congestiona.
  3. Retardo en la predicción de oclusión: Al salir a gran velocidad de una esquina, la cámara avanza más rápido de lo que el sistema HZB tarda en desmarcar el estado de oclusión, retrasando la aparición de los objetos durante milisegundos.

Matriz de diagnóstico: Defectos visuales en culling y transiciones LOD

Reconocer el origen específico de cada fallo visual permite aplicar los ajustes adecuados en el motor:

Síntoma visualSubsistema responsableMecanismo técnico subyacenteMedida de corrección sugerida
Los objetos desaparecen en los bordes de la pantallaFrustum CullingCálculo de caja envolvente excesivamente restrictivoAmpliar el margen de seguridad de FOV en los archivos del motor
Parpadeo momentáneo de edificios al doblar esquinasOcclusion CullingLatencia de comunicación en consultas de hardware CPU-GPUHabilitar oclusión por Búfer Z Jerárquico (HZB)
Modelos que cambian bruscamente de forma al acercarseSesgo de LOD discretoDistancia de conmutación de LOD configurada demasiado cortaAumentar el ajuste de "Detalle de malla" o "Distancia de visión"
Sombras en el suelo que aparecen de golpe a 10 metrosCascaded Shadow Maps (CSM)Distancia de división de cascada de sombras insuficienteSubir la calidad de distancia de sombras en el menú gráfico
Texturas borrosas que tardan en ganar nitidezStreaming de MipmapsSaturación de VRAM o lentitud de lectura del discoMover el juego a una unidad SSD NVMe y ajustar resolución de texturas

La optimización de entornos tridimensionales exige un equilibrio continuo entre las capacidades de procesamiento, el ancho de banda y la velocidad de almacenamiento. Consultando los análisis técnicos especializados de 365Finds, jugadores y creadores de contenido pueden personalizar los parámetros de renderizado para erradicar las molestas transiciones bruscas sin comprometer la fluidez de fotogramas ni la estabilidad del sistema.

Referencias