Hasta cierto punto, esta es una función de cómo se representa el 3D. Por ejemplo, OpenGL eliminará automáticamente la geometría fuera del rango -1.0, +1.0 en el espacio de la pantalla XY (Z es más complejo pero similar). La geometría seleccionada nunca genera fragmentos (aproximadamente píxeles) y, por lo tanto, nunca se convierte en imágenes reales, a pesar de ser enviada al sistema para renderizar. En cualquier caso, es imposible escribir en el espacio fuera de la ventana de renderizado (si todo funciona como debería).
En algunos contextos, es suficiente confiar en este comportamiento como una optimización. Sin embargo, aún debe pasar todos los datos de su juego a través de al menos una etapa de representación (sombreadores de vértices) antes de que la tarjeta de video pueda saber qué es visible. En algo como, digamos, Skyrim, eso sería poco práctico. No solo tiene que enviar todos los vértices del mundo a través de la canalización de renderizado, sino que debe cargar cada vértice en la memoria del sistema / video. Eso es ineficiente, si es posible.
Por lo tanto, muchos juegos utilizarán el sacrificio basado en CPU. Por lo general, implementarán algún tipo de sistema LOD (nivel de detalle), donde la calidad y la existencia de los activos se ven afectados por la importancia que tienen en un contexto determinado. Una malla piramidal podría ser una aproximación aceptable para una montaña si estás a 50 millas de distancia. Si no puede verlo en absoluto (como si estuviera bloqueado por otras montañas), ni siquiera es necesario cargarlo. Hay varios métodos más complejos para hacer esto que son temas que no creo que sean directamente relevantes para la profundidad solicitada por esta pregunta, pero mire la teselación para uno de los ejemplos más comunes.
La verdadera esencia de esto es que las imágenes son solo el producto del juego. Los datos reales no tienen nada que ver directamente con lo que está viendo o no ve la mayor parte del tiempo, y los datos se filtran por varias etapas para eliminar información extraña antes de llegar al punto donde se escribe una imagen en la pantalla. Dependiendo del diseño del motor, los elementos visuales pueden estar extremadamente desacoplados de la lógica real del juego, en la medida en que sea posible tener una interfaz 2D y 3D para el mismo juego. Incluso es posible que muchos motores de juego funcionen sin salida alguna; a veces esto se usa para probar la IA del juego.
Sin embargo, ahí es donde las cosas pueden complicarse. En algo simple como un juego de Mario, no es demasiado prohibitivo calcular el movimiento de todos los enemigos en el nivel, incluso si no son visibles. En contextos modernos, lo que sucede fuera de la pantalla es una cuestión real de seria consideración. Si hay varias ciudades enteras de NPC, ¿cómo manejas cómo se comportan cuando son eliminados por completo, como cuando el jugador está en una ciudad diferente? ¿Realmente quieres calcular cientos de decisiones de NPC en todo el mapa? La respuesta generalmente es no, pero el enfoque exacto para lograr no hacerlo puede variar, y puede tener algunos impactos en el juego.
Es importante tener en cuenta que así es como funcionan las cosas ahora . Los viejos juegos de Mario probablemente fueron programados de maneras muy diferentes (no puedo hablar de las formas exactas), dadas las limitaciones extremas de hardware en ese momento. El concepto de 3D no existía en aquel entonces; Sin embargo, hoy en día, casi todos los juegos, incluso los que son completamente 2D, utilizan la representación 3D de alguna forma, incluso si no saben que lo hacen. El hardware de video moderno es primero en 3D, y la representación en 2D (al menos cuando hace uso del hardware correctamente) simplemente ignora la tercera dimensión.