Cronología | |
Basado en | id Tech 5 |
Título actual | Id Tech 6 |
---|---|
Base para | Id Tech 7 |
El motor de juego id Tech 6, también llamado de manera informal como id Tech 666 por los desarrolladores de id Software, es el sucesor tecnológico de id Tech 5 que motorizaba Rage y otros juegos de varios desarrollos internos de ZeniMax Media. Impulsa el reinicio de la serie Doom, anteriormente mencionado como Doom 4, ahora también llamado simplemente DOOM ó Doom (2016).
Representa un avance importante con respecto a la iteración anterior, con soporte para renderizado basado en la física (PBR), almacenamiento en caché extenso y precomputación de efectos, un modelo de sombreado (shader) optimizado para geometría, uso de sombreadores de cómputo asíncronos y restauración de iluminación dinámica y unificada de tuberías y efectos de sombreado a la par con los que aparecieron anteriormente en id Tech 4.
El soporte para la API gráfica de vanguardia Vulkan se inició tres meses antes del lanzamiento de Doom, y se puso a disposición de los usuarios finales en una actualización poco después del lanzamiento.
Preliminares[]
La información preliminar dada por John Carmack sobre este motor, cuando todavía estaba en las primeras fases de desarrollo, tendían a mostrar que id Software estaba mirando hacia una dirección donde el trazado de rayos y clásicos gráficos de trama se mezclaban. Sin embargo, también explicó durante la QuakeCon 2008 que el hardware capaz de soportar id Tech 6 aún no existía. En julio de 2011, explicó que estaban comenzando la investigación para el desarrollo de id Tech 6.
Aunque John Carmack había planeado utilizar el nombre "id Tech 6" para un motor de voxel conceptual, este concepto no se sabe que alguna vez haya avanzado en una fase de ejecución. Carmack dejó id Software a finales de 2013, dejando a Robert Duffy como Director Técnico.
El 19 de julio de 2014, dados los problemas financieros de Crytek, se anunció que Tiago Sousa, el director del departamento de Investigación y Desarrollo, dejaría la empresa para unirse al equipo de desarrollo de Doom e idTech 6.
Tiago llevó el motor id Tech 5 en una dirección diferente, utilizando enfoques para PBR similares a los que utilizó anteriormente en CryEngine. Las demostraciones efectuadas en QuakeCon 2016 de las versiones alfa del motor que se habían utilizado para impulsar el concepto abandonado de Doom 4 eran mucho menos avanzadas, y la mayoría parecía ser solo una pequeña iteración de la tecnología id Tech 5 en comparación con el producto final.
Detalles técnicos[]
El motor del juego se diseñó teniendo en cuenta la escalabilidad, con el objetivo de generar un mínimo de 60 fps (fotogramas por segundo) a una resolución de 1080p en todas sus plataformas compatibles. También se hizo hincapié en acelerar el flujo de trabajo de activos artísticos para el motor, permitiendo a los diseñadores de texturas y niveles tener un control preciso sobre los detalles y los parámetros de complejidad de la escena. El proceso de representación de id Tech 6 consta de una serie de fases distintas.
Representación (rendering)[]
Pases delanteros opacos[]
Actualización de megatexturas[]
Al igual que en id Tech 5, el texturizado se logra mediante el uso de texturas virtuales, atlas de 16000x8000 en mosaicos de 128x128 que se almacenan en caché según la visibilidad. Las texturas se mueven dentro y fuera del atlas cuando es necesario, aunque esto todavía se logra en una naturaleza principalmente reactiva, en lugar de predictiva, lo que resulta en una visibilidad ocasional de la ventana emergente de textura. Los programadores de id Software citan esto como espacio para futuras mejoras de ingeniería.
Caché de sombras[]
El motor almacena en caché las sombras dinámicas, utilizando los resultados calculados en cuadros anteriores y reteniéndolos en un atlas de megatexturas. Si la iluminación de un área no ha cambiado cuando se necesita renderizar nuevamente (por ejemplo, no se han movido elementos dinámicos como actores dentro o fuera de ella), entonces el mapa de sombras anterior se conserva. Los elementos estáticos también se pueden retener de forma independiente, mientras que las sombras proyectadas por la geometría dinámica en movimiento se vuelven a calcular sobre ellos.
El caché de sombra es una textura de 8 bits de 8000x8000 en PC y una textura de 16 bits de 8000x4000 en consolas. La porción de resolución y tiempo de actualización de los mapas de sombras individuales se basa en cálculos de nivel de detalle (LOD), de modo que las áreas más cercanas al reproductor tienen mapas de alto detalle calculados con frecuencia, y las áreas más distantes tienen mapas más pequeños que se actualizan de manera menos agresiva.
Profundización previa[]
Las mallas opacas, incluida la geometría de escena estática y dinámica, así como el arma del jugador, se procesan en el búfer de profundidad para obtener información z. En este momento, el motor también calcula un mapa de velocidad utilizando la diferencia en las posiciones de vértice de los objetos dinámicos del cuadro anterior, el resultado es una textura de color que representa el movimiento de los objetos en la escena con respecto al jugador en direcciones horizontal y vertical. Esto se usa más tarde para lograr el antialiasing temporal del espacio de pantalla (TSSAA) y los efectos de desenfoque de movimiento.
Sacrificio (culling)[]
En preparación para enviar la geometría de la escena, primero se eliminan las mallas que no son visibles. Se utilizan tanto el middleware de Umbra Software como las consultas de oclusión de GPU adicionales.
Dado que los resultados de la consulta no están disponibles de inmediato, se toman algunas decisiones conservadoras para permitir confiar en los datos calculados en marcos anteriores. Esto evita que los objetos parezcan aparecer o salir inesperadamente.
Representación directa en clúster[]
La geometría opaca y las calcomanías se representan mediante el renderizado en clúster hacia adelante, una técnica que subdivide el fruntum de la vista y las áreas afectadas por las fuentes de luz y las sondas del entorno (para mapas cúbicos) en una cuadrícula de celdas en capas a escala logarítmica en tres dimensiones. Las fuentes de luz y las sondas se voxelizan para probar la intersección con estas celdas con el fin de crear una búsqueda de varios niveles que puede usar el sombreador de píxeles de paso hacia adelante principal para calcular rápidamente los parámetros de iluminación y calcomanías para cada píxel en la pantalla.
Dado que la información de profundidad se calculó previamente, el dibujo de la geometría opaca se realiza de adelante hacia atrás con cero superposición, con la función de prueba de profundidad configurada en "igual" para evitar cálculos innecesarios de la GPU durante esta fase.
Para el detalle de las escenas, se aplican calcomanías, también utilizando un estampado de mega-textura con un atlas de 8000x8000. Se establece un límite de 4000 puntos de vista en las calcomanías, con parámetros de nivel de detalle controlados por los artistas.
Al final de este paso, la escena se ha generado como un búfer de punto flotante HDR, y los búferes gráficos integrales adicionales contienen los mapas normales y especulares. La información de suavidad se conserva adicionalmente en el canal alfa del mapa especular. Todos estos búferes se representan simultáneamente mediante el uso de MRT.
En este punto se envía un sombreador de proceso asincrónico para ejecutar la simulación de partículas. La información de cada partícula se almacena en búfer para su uso posterior.
Pase diferido[]
En el pase diferido, se calculan varios efectos de espacio de pantalla. El primero de ellos es la oclusión ambiental del espacio de pantalla (SSAO), una técnica que oscurece los colores alrededor de las costuras y evita los artefactos de la geometría ocluida. Las reflexiones de espacio de pantalla (SSR) se calculan luego, usando una combinación de la memoria intermedia de profundidad, las normales, el mapa especular y el marco renderizado anterior. Se utiliza una forma de trazado de rayos para generar el mapa SSR a partir de estas entradas. También se genera un mapa de reflexión estático utilizando los mapas de cubos precalculados insertados en las búsquedas de frustum agrupadas anteriormente.
Los buffers de profundidad, normal y especular se combinan con los datos de los mapas de cubos, con la influencia de cada mapa determinada por su distancia desde el píxel que se representa. Esta es una forma de iluminación basada en imágenes. Después de que estos efectos se hayan calculado individualmente, se usa un sombreador de cálculo de composición para combinar los datos del mapa de iluminación de paso directo, SSAO, SSR y reflexión estática. Los efectos de niebla también se calculan en este sombreador. Los resultados son más o menos la información de la escena completamente mostrada, menos los elementos transparentes y efectos post-proceso.
Pase de transparencias[]
En el pase de transparencias, se calcula la iluminación de partículas, se procesan varios efectos visuales y se procesan las superficies de vidrio.
La iluminación de partículas se desacopla de otros elementos debido a la gran cantidad de posibles efectos de partículas por escena. La iluminación para partículas se calcula independientemente de la resolución de la pantalla, con adaptación a LOD. Las texturas de iluminación de partículas calculadas se almacenan en caché en un atlas de 4000x4000, y cada textura de iluminación se aplica a su geometría de partículas utilizando una escala bicúbica.
Los efectos de vidrio se logran utilizando una combinación de calcomanías y el cálculo de cuatro niveles de desenfoque MIP aplicados a la escena, calculados utilizando una aproximación gaussiana. Para los niveles de mip más pequeños, los pasos de desenfoque horizontal y vertical se realizan por separado para mejorar la calidad. Las dos texturas de nivel de desenfoque más cercanas, basadas en la suavidad local del vidrio, se combinan con una interpolación lineal.
Se crea un mapa de distorsión para las áreas que están "calientes", lo que permite una refracción aparente de la luz. Esto no se aplica hasta la etapa posterior al proceso.
La interfaz de usuario se representa en su propio búfer en este punto con alfa pre-multiplicado.
Post-proceso asincrónico[]
Los efectos posteriores al proceso se calculan de forma asíncrona y pueden superponerse con elementos del pase opaco, ya que el primero rara vez usa sombreadores de cálculo.
Si un efecto de profundidad de campo está activo, se calculará primero. Se crea una imagen de campo cercano y de campo lejano, utilizando el desenfoque de disco a la mitad de la resolución para lograr un efecto Bokeh adecuado. El suavizado temporal y el desenfoque de movimiento se calculan a partir del mapa de velocidad generado en el paso previo de profundidad en combinación con fotogramas anteriores, con una pequeña fluctuación en la información de posición introducida para eliminar artefactos de sub-píxeles.
La luminosidad promedio de la escena se calcula como una entrada al mapeador de tonos. Bloom se calcula mediante el uso de un filtro de paso brillante y un conjunto de texturas de desenfoque gaussiano similares a las utilizadas para los efectos de vidrio.
Una pasada final de procesamiento posterior combina todas estas entradas usando un solo sombreador, con efectos adicionales como viñeteado, mapeo de tonos y gradación de color. Finalmente, los elementos de la interfaz de usuario y un sutil efecto de grano de película se combinan con la escena, y el renderizado se completa.
Videojuegos que utilizan id Tech 6[]
- Doom (2016) (TBA)
- Wolfenstein II: The New Colossus (MachineGames, 2017)
- Doom VFR (id Software, 2017)
- Wolfenstein: Youngblood (MachineGames y Arkane Lyon, 2019)
- Wolfenstein: Cyberpilot (Arkane Lyon y MachineGames, 2019)
Enlaces externos[]
Esta página utiliza contenido publicado por Wikipedia en el artículo titulado Id Tech 6. | |
Al igual que en Doom Wiki, el texto de Wikipedia está disponible en el GNU Free Documentation License. |