



En el campo de los gráficos por computadora 3D , el sombreado diferido es una técnica de sombreado en el espacio de la pantalla que se realiza en una segunda pasada de renderizado , después de que se renderizan 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, normales y materiales de cada superficie se renderizan en el búfer de geometría ( G-buffer ) mediante la función " renderizar a textura ". Posteriormente, 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 en el espacio de la pantalla [ 4 ] puede formar parte del pipeline de sombreado diferido para dar direccionalidad a las sombras y las interreflexiones.
Ventajas
La principal ventaja del sombreado diferido es la separación entre la geometría de la escena y la iluminación. Solo se requiere un paso de geometría, y cada luz se calcula únicamente para los píxeles que realmente afecta. Esto permite renderizar muchas luces en una escena sin una pérdida significativa de rendimiento. [ 5 ] Existen otras ventajas que se atribuyen a este enfoque. Entre ellas se incluyen una gestión más sencilla de los recursos de iluminación complejos, una gestión más fácil de otros recursos de sombreado complejos y la simplificación del proceso de renderizado por 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 ser manejado retrasando y ordenando el renderizado de partes transparentes de la escena. [ 6 ] El pelado de profundidad puede usarse para lograr 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 posterior, suele ser capaz de realizar lotes lo suficientemente rápido como para mantener velocidades de fotogramas interactivas. Cuando se desea transparencia independiente del orden (comúnmente para aplicaciones de consumo) el sombreado diferido no es menos efectivo que el sombreado directo usando la misma técnica.
Otra desventaja importante es la dificultad para utilizar múltiples materiales. Si bien es posible usar muchos materiales diferentes, esto requiere almacenar más datos en el búfer G, que ya es bastante grande y consume una gran cantidad de ancho de banda de 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 antialiasing por 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 usar 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 de posprocesamiento 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 post MSAA (utilizado en Crysis 2 como solución de antialiasing predeterminada). Aunque no es una técnica de suavizado de bordes, el antialiasing 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 multimuestreados (y búferes de profundidad en la versión 10.1), lo que da a los usuarios de esta API acceso al antialiasing por hardware en sombreado diferido. Estas características también les permiten aplicar correctamente el mapeo de luminancia HDR a los bordes con antialiasing, donde en versiones anteriores de la API cualquier beneficio del antialiasing podría haberse perdido.
Iluminación diferida en juegos comerciales
El uso de esta técnica ha aumentado en los videojuegos debido al control que permite en cuanto al uso de una gran cantidad de luces dinámicas y a la reducción de la complejidad de las instrucciones de sombreado necesarias. Algunos ejemplos de juegos que utilizan iluminación diferida son:
- Alan Wake
- Assassin's Creed III [ 15 ]
- BioShock Infinite [ 16 ]
- Mesa Negra [ 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: Revolución Humana [ 23 ]
- Dragon's Dogma [ 24 ]
- Guild Wars 2 [ 25 ]
- Halo: Reach [ 26 ]
- inFamous e inFamous 2
- PequeñoGranPlaneta
- Metal Gear Solid V: Ground Zeroes
- Metal Gear Solid V: El dolor fantasma [ 27 ]
- Minecraft
- Red Dead Redemption
- Serie de resistencia [ 28 ]
- Rochard
- Turno 2: Desatado [ 29 ]
- StarCraft II [ 30 ]
- Uncharted y Uncharted 2 [ 31 ]
- Vencer [ 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 debido a los altos requisitos de memoria y 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 constituyen cuellos de botella.
- Amnesia: El descenso oscuro [ 34 ]
- Campo de batalla 3 [ 35 ]
- Dota 2 [ 36 ]
- Mazmorras
- Simulador de Combate Digital (DCS) Mundo 2.5
- Grand Theft Auto IV
- Killzone 2 y Killzone 3 [ 37 ]
- Mafia II
- Guerras Mineras 2081 [ 38 ]
- Metro 2033 [ 39 ]
- Grieta
- Shrek [ 40 ]
- Splinter Cell: Conviction
- La serie de juegos STALKER : Shadow of Chernobyl , Clear Sky y Call of Pripyat [ 41 ]
- Tabula Rasa [ 42 ]
- Trine [ 43 ]
- Trín 2 [ 44 ]
- Viva Piñata
Motores de juego que incorporan técnicas de sombreado o renderizado diferido.
- AnvilNext
- Motor cromado
- CryEngine 3 [ 45 ]
- Motor Fox [ 27 ]
- Congelación 2 [ 46 ]
- GameStart [ 47 ]
- Motor de juegos Haemimont (HGE)
- I-Novas [ 48 ]
- Leadwerks
- Marco de trabajo MT
- Motor de juego avanzado de Rockstar [ 49 ]
- Torque 3D [ 50 ]
- Unidad [ 51 ]
- Unreal Engine 4 [ 52 ]
- Visión [ 53 ]
- Creation Engine a partir de Fallout 4 y Skyrim SE [ 54 ]
- Motor Fusion (versión temprana del motor Illusion) presente en 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 de triángulos y el sombreador vectorial normal: un sistema VLSI para gráficos de alto rendimiento ". Aunque el artículo nunca usa la palabra "diferido", 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, usando búferes G, fue introducido en un artículo de Saito y Takahashi en 1990, [ 56 ] aunque ellos tampoco usan la palabra "diferido". El primer videojuego con sombreado diferido fue Shrek , un título de lanzamiento de Xbox lanzado en 2001. [ 57 ] Alrededor de 2004, comenzaron a aparecer implementaciones en hardware gráfico comercial. [ 58 ] La técnica luego ganó popularidad para aplicaciones como videojuegos , finalmente convirtiéndose en algo común entre 2008 y 2010. [ 59 ]
Referencias
- ↑ Hargreaves, Shawn; Harris, Mark (2004). "6800 leguas de viaje submarino: sombreado diferido" (PDF) . Nvidia . Archivado (PDF) del original el 22 de noviembre de 2009. Recuperado el 6 de enero de 2021 .
- ↑ "Renderizado directo frente a renderizado diferido" . 28 de octubre de 2013.
- 1 2 Deering, Michael; Stephanie Winner; Bic Schediwy; Chris Duffy; Neil Hunt (1988). "El procesador de triángulos y el sombreador de vectores normales: un sistema VLSI para gráficos de alto rendimiento". ACM SIGGRAPH Computer Graphics . 22 (4): 21– 30. doi : 10.1145/378456.378468 .
- ↑ O'Donnell, Yuriy (18 de julio de 2011). "Oclusión direccional en el espacio de la pantalla diferida" . kayru.org . Archivado del original el 22 de octubre de 2012.
- ↑ Kayi, Celal Cansin. "Renderizado diferido en XNA 4" (PDF) . Universidad Linnaeus . Archivado (PDF) del original el 13 de agosto de 2013. Recuperado el 6 de enero de 2021 .
- ↑ "SDK 9.51 – Ejemplos de código destacados" . Nvidia . 17 de enero de 2007. Archivado del original el 8 de marzo de 2005. Consultado el 28 de marzo de 2007 .
- ↑ Engel, Wolfgang (16 de marzo de 2008). "Renderizador de pre-paso ligero" . Diario de un programador gráfico . Archivado del original el 7 de abril de 2008. Recuperado el 6 de enero de 2021 .
- ↑ "Tutorial de sombreado diferido" (PDF) . Pontificia Universidad Católica de Río de Janeiro. Archivado del original (PDF) el 6 de marzo de 2009. Recuperado el 14 de febrero de 2008 .
- ↑ "MLAA: Traslado eficiente del suavizado de bordes 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 . Archivado (PDF) del original el 3 de abril de 2012. Recuperado el 6 de enero de 2021 .
- ↑ "Copia archivada" (PDF) . Archivado del original (PDF) el 25 de noviembre de 2011. Recuperado el 7 de noviembre de 2011 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ Chajdas, Matthäus G.; McGuire, Morgan; Luebke, David (1 de febrero de 2011). "Subpixel Reconstruction Antialiasing" . Nvidia . Archivado del original el 27 de enero de 2011. Recuperado el 6 de enero de 2021 .
- ↑ Andreev, Dmitry (2011). "Antialiasing desde una perspectiva diferente" . and.intercon.ru . Archivado del original el 4 de abril de 2011. Recuperado el 6 de enero de 2021 .
- ↑ Andreev, Dmitry (4 de marzo de 2011). "Antialiasing desde una perspectiva diferente (diapositivas extendidas de GDC 2011)" . and.intercon.ru . Archivado del original el 5 de abril de 2011. Recuperado el 6 de enero de 2021 .
- ↑ "Assassin's Creed III: El motor Anvil rediseñado" . Game Informer . Archivado del original el 30 de marzo de 2012.
- ↑ "El desarrollo de BioShock Infinite está enfocado en PS3 y utiliza tecnología de Uncharted 2" . blorge.com . Archivado del original el 3 de octubre de 2011.
- ↑ Chetan Jags (18 de julio de 2023). "BlackMesa XenEngine: Parte 4 – Iluminación y sombras" . chetanjags.wordpress.com . Consultado el 18 de septiembre de 2023 .
- ↑ "Entrevista técnica: Crackdown 2" . Eurogamer.net . 26 de junio de 2010.
- ↑ guest11b095 (14 de mayo de 2009). "Un poco más de retraso en Cry Engine 3" . slideshare.net .
{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace ) - ↑ "Dead Space de Electronic Arts" . NVIDIA . Consultado el 14 de febrero de 2008 .
- ↑ "Face-Off: Dead Space 2" . Eurogamer . Consultado el 1 de febrero de 2010 .
- ↑ "Face-Off: Dead Space 3" . Eurogamer . 18 de febrero de 2013. Consultado el 18 de febrero de 2013 .
- ↑ "Google Translate" . google.com .
- ↑ "GregaMan, Administrar Blog" . capcom-unity.com .
- ↑ "Normales" . Imgur .
- ↑ "Entrevista técnica: Halo: Reach" . Eurogamer.net . 11 de diciembre de 2010.
- 1 2 "Análisis técnico: el motor FOX de Metal Gear Solid 5" . Eurogamer.net . 5 de abril de 2013.
- ↑ "Copia archivada" (PDF) . Archivado del original (PDF) el 15 de septiembre de 2011. Recuperado el 12 de julio de 2011 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ "El proceso de creación de Shift 2 Unleashed • Página 2 • Eurogamer.net" . Eurogamer.net . 14 de mayo de 2011.
- ↑ "Efectos y técnicas de StarCraft II" (PDF) . AMD . Consultado el 9 de julio de 2012 .
- ↑ "Mantenimiento de CGSociety" . cgsociety.org . Archivado del original el 2 de abril de 2015. Consultado el 12 de julio de 2011 .
- ↑ "Renderizado diferido « PlatinumGames Inc" . platinumgames.com . Archivado del original el 27 de noviembre de 2010.
- ↑ "Análisis de Ghost of Tsushima: Un juego con gráficos impresionantes para PS4" . gamingbolt.com
- ↑ Silard Šimon. "Entrevista sobre Frictional Games" . playsomnia.com .
- ↑ DICE (8 de marzo de 2011). "Sombreado diferido basado en SPU en BATTLEFIELD 3 para Playstation 3" . slideshare.net .
- ↑ "Valve Developer Wiki - Dota 2" . Consultado el 10 de abril de 2012 .
- ↑ "Copia archivada" (PDF) . Archivado del original (PDF) el 11 de julio de 2011. Recuperado el 12 de julio de 2011 .
{{cite web}}: CS1 mantenimiento: copia archivada como título ( enlace ) - ↑ Guerras Mineras 2081
- ↑ "Entrevista técnica: Entrevista sobre 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 del original el 3 de febrero de 2009. Recuperado el 14 de febrero de 2008 .
- ↑ "Foros de usuarios de Steam - Ver publicación individual - Quitando la carga de Physx de la CPU..." steampowered.com .
- ↑ "Foros de usuarios de Steam - Ver publicación individual - Información de renderizado de Trine 2 - suavizado de bordes, sobrecalentamiento, estéreo, retardo de entrada, etc." . steampowered.com .
- ↑ "Especificaciones de CryENGINE 3" . Crytek GmbH. Archivado del original el 27 de marzo de 2009. Consultado el 27 de marzo de 2009 .
- ↑ "Ilumínate en Battlefield 3" . DICE . 3 de marzo de 2011. Archivado del original (PDF) el 25 de agosto de 2011. Consultado el 15 de septiembre de 2011 .
- ↑ "GameStart – Lista de características" . Archivado del original el 2 de diciembre de 2011.
- ↑ "Diario de desarrollo de Infinity – Iluminación diferida" . I-Novae Studios. 3 de abril de 2009. Consultado el 26 de enero de 2011 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "BUILD: Renderizado diferido" . MCV . 26 de febrero de 2009. Consultado el 8 de abril de 2015 .
- ↑ "Desarrollo de Torque 3D - Iluminación avanzada (sistema híbrido de iluminación diferida)" . 3 de marzo de 2009. Consultado el 2 de julio de 2015 .
- ↑ Vosburgh, Ethan (9 de septiembre de 2010). "Vista previa de las características de Unity 3: renderizado diferido" . Unity Technologies . Recuperado el 26 de enero de 2011 .
- ↑ "Unreal Engine 4 - Descripción general del renderizado" . Epic Games . Consultado el 6 de junio de 2015 .
- ↑ "Vision Engine 8.2 lleva las tecnologías 3D a múltiples plataformas" . 10 de octubre de 2011. Archivado del 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 .
- ↑ "raylib [ shaders ] example - deferred rendering" . Comunidad de Raylib, Justin Andreas Lacoste . 31 de octubre de 2023. Consultado el 1 de enero de 2024 .
- ^ Saito, Takafumi; Tokiichiro Takahashi (1990). "Representación comprensible de formas tridimensionales". Gráficos por computadora ACM SIGGRAPH . 24 (4): 197– 206. doi : 10.1145/97880.97901 .
- ↑ Geldreich, Rich. "Presentación de GDC 2004 sobre iluminación y sombreado diferidos" . Archivado del original el 11 de marzo de 2014. Recuperado el 24 de agosto de 2013 .
- ↑ "Sombreado diferido" (PDF) . NVIDIA . Consultado el 28 de marzo de 2007 .
- ↑ Klint, Josh. "Renderizado diferido en Leadwerks Engine" (PDF) . Leadwerks. Archivado del original (PDF) el 9 de diciembre de 2008.
- Sombreado