En el campo de los gráficos por ordenador en 3D , el sombreado diferido es una técnica de sombreado del espacio de la pantalla que se realiza en una segunda pasada de renderizado , después de renderizar los sombreadores de vértices y píxeles . [2] Fue sugerido por primera vez por Michael Deering en 1988. [3]
En la primera pasada de un sombreador diferido, solo se recopilan los datos necesarios para el cálculo del sombreado. Las posiciones, las normales y los materiales de cada superficie se renderizan en el búfer de geometría (búfer G ) usando " renderizar a textura ". Después de esto, un sombreador de píxeles calcula la iluminación directa e indirecta en cada píxel utilizando la información de los búferes de textura en el espacio de la pantalla .
La oclusión direccional del espacio de la pantalla [4] se puede hacer parte de la tubería de sombreado diferido para dar direccionalidad a las sombras y las interreflexiones.
Ventajas
La principal ventaja del sombreado diferido es el desacoplamiento de la geometría de la escena de la iluminación. Solo se requiere una pasada de geometría, y cada luz solo se calcula para aquellos píxeles a los que realmente afecta. Esto brinda la capacidad de renderizar muchas luces en una escena sin un impacto significativo en el rendimiento. [5] Hay algunas otras ventajas que se alegan del enfoque. Estas ventajas pueden incluir una gestión más sencilla de recursos de iluminación complejos, la facilidad de gestionar otros recursos de sombreadores complejos y la simplificación de la canalización de renderizado del software.
Desventajas
Una desventaja clave del renderizado diferido es la incapacidad de manejar la transparencia dentro del algoritmo, aunque este problema es genérico en escenas con búfer Z y tiende a manejarse retrasando y clasificando el renderizado de partes transparentes de la escena. [6] El pelado en profundidad se puede utilizar para lograr una transparencia independiente del orden en el renderizado diferido, pero a costa de lotes adicionales y tamaño de búfer g. El hardware moderno, compatible con DirectX 10 y versiones posteriores, a menudo es capaz de realizar lotes lo suficientemente rápido como para mantener velocidades de cuadro interactivas. Cuando se desea una transparencia independiente del orden (comúnmente para aplicaciones de consumo), el sombreado diferido no es menos efectivo que el sombreado hacia adelante utilizando la misma técnica.
Otra seria desventaja es la dificultad de utilizar múltiples materiales. Es posible utilizar muchos materiales diferentes, pero requiere que se almacenen más datos en el búfer G, que ya es bastante grande y ocupa una gran cantidad de ancho de banda de la memoria. [7]
Una desventaja más es que, debido a la separación de la etapa de iluminación de la etapa geométrica, el suavizado de hardware ya no produce resultados correctos, ya que las submuestras interpoladas darían como resultado atributos de posición, normal y tangente sin sentido. Una de las técnicas habituales para superar esta limitación es utilizar la detección de bordes en la imagen final y luego aplicar desenfoque sobre los bordes, [8] sin embargo, recientemente se han desarrollado técnicas de suavizado de bordes posteriores al proceso más avanzadas, como MLAA [9] [ 10] (utilizado en Killzone 3 y Dragon Age II , entre otros), FXAA [11] (utilizado en Crysis 2 , FEAR 3 , Duke Nukem Forever ), SRAA , [12] DLAA [13] (utilizado en Star Wars: The Force Unleashed II ) y publicar MSAA (utilizado en Crysis 2 como solución de suavizado predeterminada). Aunque no es una técnica de suavizado de bordes, el suavizado temporal (utilizado en Halo Reach y Unreal Engine ) también puede ayudar a dar a los bordes una apariencia más suave. [14] DirectX 10 introdujo características que permiten a los sombreadores acceder a muestras individuales en objetivos de renderizado con múltiples muestras (y búferes de profundidad en la versión 10.1), lo que brinda a los usuarios de esta API acceso al suavizado de hardware en sombreado diferido. Estas características también les permiten aplicar correctamente el mapeo de luminancia HDR a los bordes suavizados, donde en versiones anteriores de la API se puede haber perdido cualquier beneficio del suavizado.
Iluminación diferida
La iluminación diferida (también conocida como Light Pre-Pass) es una modificación del Sombreado diferido. [15] Esta técnica utiliza tres pasadas, en lugar de dos en sombreado diferido. En la primera pasada sobre la geometría de la escena, solo se escriben en el búfer de color las normales y el factor de dispersión especular. La pasada de espacio de pantalla, "diferida" acumula datos de iluminación difusa y especular por separado, por lo que se debe realizar una última pasada sobre la geometría de la escena para generar la imagen final con sombreado por píxel. La aparente ventaja de la iluminación diferida es una reducción espectacular del tamaño del G-Buffer. El costo obvio es la necesidad de renderizar la geometría de la escena dos veces en lugar de una. Un costo adicional es que el pase diferido en iluminación diferida debe generar irradiancia difusa y especular por separado, mientras que el pase diferido en sombreado diferido solo necesita generar un único valor de radiancia combinado.
Debido a la reducción del tamaño del tampón G, esta técnica puede superar parcialmente una seria desventaja del sombreado diferido: múltiples materiales. Otro problema que se puede resolver es MSAA. La iluminación diferida se puede utilizar con MSAA en hardware DirectX 9. [ cita requerida ]
Iluminación diferida en juegos comerciales
El uso de la técnica ha aumentado en los videojuegos debido al control que permite en términos de usar una gran cantidad de luces dinámicas y reducir la complejidad de las instrucciones de sombreado requeridas. Algunos ejemplos de juegos que utilizan iluminación diferida son:
- Alan Wake
- Assassin's Creed III [16]
- BioShock Infinite [17]
- Difuminar
- Borde
- Represión y represión 2 [18]
- Crysis 2 [19]
- Dead Space , [20] Dead Space 2 [21] y Dead Space 3 [22]
- Deus Ex: Human Revolution [23]
- Dogma del dragón [24]
- Guild Wars 2 [25]
- Halo: Reach [26]
- inFamous e inFamous 2
- Pequeño gran planeta
- Metal Gear Solid V: Ground Zeroes
- Metal Gear Solid V: El dolor fantasma [27]
- Turno 2 DESATADO [28]
- Red Dead Redemption
- Serie de resistencia [29]
- Rochard
- StarCraft II [30]
- Uncharted y Uncharted 2 [31]
- Vence [32]
- Fantasma de Tsushima [33]
Sombreado diferido en juegos comerciales
En comparación con la iluminación diferida, esta técnica no es muy popular [ cita requerida ] debido al alto tamaño de la memoria y los requisitos de ancho de banda, especialmente en las consolas de séptima generación donde el tamaño de la memoria gráfica y el ancho de banda son limitados y, a menudo, cuellos de botella.
- Amnesia: El descenso oscuro [34]
- Campo de batalla 3 [35]
- Dota 2 [36]
- Mazmorras
- Simulador de combate digital (DCS) World 2.5
- Grand Theft Auto IV
- Killzone 2 y Killzone 3 [37]
- Mafia II
- Miner Wars 2081 [38]
- Metro 2033 [39]
- Grieta
- Shrek [40]
- Splinter Cell: Convicción
- La serie de juegos STALKER : Shadow of Chernobyl , Clear Sky y Call of Pripyat [41]
- Tabula Rasa [42]
- Trígono [43]
- Trígono 2 [44]
- Viva piñata
Motores de juego con técnicas de renderizado o sombreado diferido
- YunqueSiguiente
- Motor de cromo
- CryEngine 3 [45]
- Locomotora Fox [27]
- Congelación 2 [46]
- GameStart [47]
- Motor de juegos de Haemimont (HGE)
- I-Novae [48]
- Leadwerks
- Marco MT
- Motor de juego avanzado de Rockstar [49]
- Torque 3D [50]
- Unidad [51]
- Unreal Engine 4 [52]
- Visión [53]
- Motor de creación a partir de Fallout 4 y Skyrim SE [54]
- Mafia Engine (Early Illusion Engine) a partir de Mafia III y Mafia: Definitive Edition
Historia
La idea del sombreado diferido fue introducida originalmente por Michael Deering y sus colegas en un artículo [3] publicado en 1988 titulado El procesador triangular y el sombreador vectorial normal: un sistema VLSI para gráficos de alto rendimiento . Aunque el documento nunca usa la palabra "diferido", se introduce un concepto clave; cada píxel se sombrea solo una vez después de la resolución de profundidad. El sombreado diferido tal como lo conocemos hoy, utilizando búferes G, fue introducido en un artículo por Saito y Takahashi en 1990, [55] aunque tampoco utilizan la palabra "diferido". El primer videojuego sombreado diferido fue Shrek , un título de lanzamiento de Xbox enviado en 2001. [56] Alrededor de 2004, comenzaron a aparecer implementaciones en hardware gráfico básico. [57] Posteriormente, la técnica ganó popularidad para aplicaciones como los videojuegos , y finalmente se generalizó entre 2008 y 2010. [58]
Referencias
- ^ Hargreaves, Shawn; Harris, Mark (2004). "6800 leguas de viaje submarino: sombreado diferido" (PDF) . Nvidia . Consultado el 6 de enero de 2021 .
- ^ "Renderizado hacia adelante vs. Renderizado diferido" .
- ^ a b Deering, Michael; Stephanie Winner; Bic Schediwy; Chris Duffy; Neil Hunt (1988). "El procesador triangular y el sombreador vectorial normal: un sistema VLSI para gráficos de alto rendimiento". Gráficos por computadora ACM SIGGRAPH . 22 (4): 21-30. doi : 10.1145 / 378456.378468 .
- ^ O'Donnell, Yuriy (18 de julio de 2011). "Oclusión direccional del espacio de la pantalla diferida" . kayru.org .
- ^ Kayi, Celal Cansin. "Representación diferida en XNA 4" (PDF) . Universidad de Linneo . Consultado el 6 de enero de 2021 .
- ^ "SDK 9.51 - Ejemplos de código destacados" . Nvidia . 17 de enero de 2007 . Consultado el 28 de marzo de 2007 .
- ^ Engel, Wolfgang (16 de marzo de 2008). "Light Pre-Pass Renderer" . Diario de un programador gráfico . Consultado el 6 de enero de 2021 .
- ^ "Tutorial de sombreado diferido" (PDF) . Pontificia Universidad Católica de Río de Janeiro. Archivado desde el original (PDF) el 6 de marzo de 2009 . Consultado el 14 de febrero de 2008 .
- ^ "MLAA: mover eficazmente el suavizado de la GPU a la CPU" (PDF) . Intel . Consultado el 2 de diciembre de 2018 .
- ^ "Antialiasing morfológico y reconstrucción topológica" (PDF) . Universidad Gustave Eiffel . Consultado el 6 de enero de 2021 .
- ^ http://www.ngohq.com/images/articles/fxaa/FXAA_WhitePaper.pdf
- ^ Chajdas, Matthäus G .; McGuire, Morgan; Luebke, David (1 de febrero de 2011). "Antialiasing de reconstrucción de subpíxeles" . Nvidia . Consultado el 6 de enero de 2021 .
- ^ Andreev, Dmitry (2011). "Anti-Aliasing desde una perspectiva diferente" . e.intercon.ru . Consultado el 6 de enero de 2021 .
- ^ Andreev, Dmitry (4 de marzo de 2011). "Anti-Aliasing desde una perspectiva diferente (GDC 2011 Extended Slides)" . e.intercon.ru . Consultado el 6 de enero de 2021 .
- ^ "Representación en tiempo real · Enfoques de iluminación diferida" . realtimerendering.com .
- ^ "Assassin's Creed III: El motor de yunque rediseñado" . www.GameInformer.com .
- ^ "El desarrollo de BioShock Infinite se centra en PS3 y utiliza la tecnología Uncharted 2" . blorge.com . Archivado desde el original el 3 de octubre de 2011.
- ^ "Entrevista técnica: Crackdown 2" . Eurogamer.net . 26 de junio de 2010.
- ^ guest11b095. "Un motor de llanto un poco más diferido3" . slideshare.net .
- ^ "Dead Space de Electronic Arts" . NVIDIA . Consultado el 14 de febrero de 2008 .
- ^ "Enfrentamiento: Dead Space 2" . Consultado el 1 de febrero de 2010 .
- ^ "Enfrentamiento: Dead Space 3" . Consultado el 18 de febrero de 2013 .
- ^ "Traductor de Google" . google.com .
- ^ "GregaMan, administrar blog" . capcom-unity.com .
- ^ "Normales" . Imgur .
- ^ "Entrevista técnica: Halo: Reach" . Eurogamer.net . 11 de diciembre de 2010.
- ^ a b "Análisis técnico: motor FOX de Metal Gear Solid 5" . Eurogamer.net . 5 de abril de 2013.
- ^ "Artículo de Making of Shift 2 Unleashed • Página 2 • Eurogamer.net" . Eurogamer.net . 14 de mayo de 2011.
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 15 de septiembre de 2011 . Consultado el 12 de julio de 2011 .CS1 maint: copia archivada como título ( enlace )
- ^ "Efectos y técnicas de StarCraft II" (PDF) . AMD . Consultado el 9 de julio de 2012 .
- ^ "Mantenimiento CGSociety" . cgsociety.org . Archivado desde el original el 2 de abril de 2015 . Consultado el 12 de julio de 2011 .
- ^ "Representación diferida« PlatinumGames Inc " . platinumgames.com . Archivado desde el original el 27 de noviembre de 2010.
- ^ "Análisis de Ghost of Tsushima: una potencia gráfica de PS4" . gamingbolt.com .
- ^ Silard Šimon. "Entrevista de Frictional Games" . playsomnia.com .
- ^ DADO. "Sombreado diferido basado en SPU en BATTLEFIELD 3 para Playstation 3" . slideshare.net .
- ^ "Wiki de desarrolladores de válvulas - Dota 2" . Consultado el 10 de abril de 2012 .
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 11 de julio de 2011 . Consultado el 12 de julio de 2011 .CS1 maint: copia archivada como título ( enlace )
- ↑ Miner Wars 2081
- ^ "Entrevista técnica: Entrevista Metro 2033 • Página 2 • Eurogamer.net" . Eurogamer.net . 25 de febrero de 2010.
- ^ "Historia - Juegos de ovejas eléctricas" . Consultado el 14 de abril de 2011 .
- ^ Shishkovtsov, Oles (7 de marzo de 2005). "GPU Gems 2: Capítulo 9. Sombreado diferido en STALKER" . Nvidia . Consultado el 2 de febrero de 2011 .
- ^ "Sombreado diferido en Tabula Rasa" . NVIDIA. Archivado desde el original el 3 de febrero de 2009 . Consultado el 14 de febrero de 2008 .
- ^ "Foros de usuarios de Steam - Ver publicación única - Quitar la carga Physx de la CPU ..." steampowered.com .
- ^ "Foros de usuarios de Steam - Ver publicación única - Información de renderizado de Trine 2 - anti-aliasing, sobrecalentamiento, estéreo, retraso de entrada, etc." . steampowered.com .
- ^ "Especificaciones de CryENGINE 3" . Crytek GmbH. Archivado desde el original el 27 de marzo de 2009 . Consultado el 27 de marzo de 2009 .
- ^ "Iluminandote en Battlefield 3" . DADOS . 3 de marzo de 2011. Archivado desde el original el 25 de agosto de 2011 . Consultado el 15 de septiembre de 2011 .
- ^ "GameStart - Lista de funciones" . Archivado desde el original el 2 de diciembre de 2011.
- ^ "Diario de desarrollo infinito - iluminación diferida" . Estudios I-Novae. 3 de abril de 2009. Archivado desde el original el 26 de enero de 2013 . Consultado el 26 de enero de 2011 .
- ^ "CONSTRUIR: Representación diferida" . 26 de febrero de 2009 . Consultado el 8 de abril de 2015 .
- ^ "Torque 3D Development - Advanced Lighting (iluminación diferida híbrida)" . 3 de marzo de 2009 . Consultado el 2 de julio de 2015 .
- ^ Vosburgh, Ethan (9 de septiembre de 2010). "Vista previa de la función de Unity 3 - Representación diferida" . Tecnologías de la unidad . Consultado el 26 de enero de 2011 .
- ^ "Unreal Engine 4 - Descripción general de la representación" . Juegos épicos . Consultado el 6 de junio de 2015 .
- ^ "Vision Engine 8.2 trae tecnologías 3D multiplataforma" . 10 de octubre de 2011. Archivado desde el original el 16 de noviembre de 2012 . Consultado el 8 de abril de 2015 .
- ^ "La tecnología gráfica de Fallout 4" . Bethesda Softworks . 4 de noviembre de 2015 . Consultado el 24 de abril de 2020 .
- ^ Saito, Takafumi; Tokiichiro Takahashi (1990). "Representación comprensible de formas 3-D". Gráficos por computadora ACM SIGGRAPH . 24 (4): 197–206. doi : 10.1145 / 97880.97901 .
- ^ Geldreich, Rich. "Presentación GDC 2004 sobre iluminación diferida y sombreado" .
- ^ "Sombreado diferido" (PDF) . NVIDIA . Consultado el 28 de marzo de 2007 .
- ^ Klint, Josh. "Representación diferida en Leadwerks Engine" (PDF) . Leadwerks. Archivado desde el original (PDF) el 9 de diciembre de 2008. Cite journal requiere
|journal=
( ayuda )