stringtranslate.com

Sombreado diferido

Tampón G de color difuso
Búfer Z
Superficie normal G-Buffer
Composición final (para calcular las sombras que se muestran en esta imagen se deben utilizar otras técnicas como mapeo de sombras , detectores de sombras o un volumen de sombras junto con el sombreado diferido). [1]

En el campo de los gráficos por computadora 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 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 para cada superficie se renderizan en el búfer de geometría ( G-buffer ) 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 buffers de textura en el espacio de la pantalla .

La oclusión direccional del espacio de la pantalla [4] puede formar parte del proceso de sombreado diferido para dar direccionalidad a las sombras y las interreflexiones.

Ventajas

La principal ventaja del sombreado diferido es la desvinculación de la geometría de la escena de la iluminación. Sólo 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 afectar significativamente el rendimiento. [5] Se afirman algunas otras ventajas de este enfoque. Estas ventajas pueden incluir una gestión más sencilla de recursos de iluminación complejos, facilidad para gestionar otros recursos de sombreado complejos y la simplificación del proceso 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 buffer Z y tiende a manejarse retrasando y ordenando 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 g-buffer. El hardware moderno, compatible con DirectX 10 y posteriores, suele ser capaz de realizar lotes lo suficientemente rápido como para mantener velocidades de fotogramas 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 directo utilizando la misma técnica.

Otra grave desventaja es la dificultad de utilizar varios materiales. Es posible utilizar muchos materiales diferentes, pero requiere almacenar más datos en el G-buffer, que ya es bastante grande y ocupa 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 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 post-proceso más avanzadas, como MLAA [9] [ 10] (usado en Killzone 3 y Dragon Age II , entre otros), FXAA [11] (usado en Crysis 2 , FEAR 3 , Duke Nukem Forever ), SRAA, [12] DLAA [13] (usado en Star Wars: The Force Unleashed II ) y publicar MSAA (utilizado en Crysis 2 como solución anti-aliasing 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 funciones que permiten a los sombreadores acceder a muestras individuales en objetivos de renderizado multimuestreados (y buffers de profundidad en la versión 10.1), brindando 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 es posible que se haya 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 el sombreado diferido. En la primera pasada por la geometría de la escena, sólo se escriben en el búfer de color las normales y el factor de dispersión especular. La pasada "diferida" del espacio de la pantalla 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 ventaja aparente de la iluminación diferida es una reducción drástica 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 paso diferido en iluminación diferida debe generar irradiancia difusa y especular por separado, mientras que el paso diferido en sombreado diferido solo necesita generar un único valor de radiancia combinado.

Debido a la reducción del tamaño del G-buffer, esta técnica puede superar parcialmente una grave desventaja del sombreado diferido: los múltiples materiales. Otro problema que se puede solucionar es el MSAA . La iluminación diferida se puede utilizar con MSAA en hardware DirectX 9. [ cita necesaria ]

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:

Sombreado diferido en juegos comerciales

En comparación con la iluminación diferida, esta técnica no es muy popular [ cita necesaria ] 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.

Motores de juegos que presentan técnicas de renderizado o sombreado diferido

Historia

La idea del sombreado diferido fue introducida originalmente por Michael Deering y sus colegas en un artículo [3] publicado en 1988 titulado The Triangle Processor and Normal Vector Shader: a VLSI System for High Performance Graphics . Aunque el documento nunca utiliza la palabra "diferido", se introduce un concepto clave; cada píxel se sombrea sólo una vez después de la resolución de profundidad. El sombreado diferido tal como lo conocemos hoy, utilizando G-buffers, 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 de gráficos básico. [58] Posteriormente, la técnica ganó popularidad para aplicaciones como videojuegos , y finalmente se convirtió en algo común entre 2008 y 2010. [59]

Referencias

  1. ^ Hargreaves, Shawn; Harris, Marcos (2004). "6800 leguas de viaje submarino: sombreado diferido" (PDF) . NVIDIA . Archivado (PDF) desde el original el 22 de noviembre de 2009 . Consultado el 6 de enero de 2021 .
  2. ^ "Renderizado directo frente a renderizado diferido".
  3. ^ ab Deering, Michael; Ganador Estefanía; 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.
  4. ^ O'Donnell, Yuriy (18 de julio de 2011). "Oclusión direccional del espacio de pantalla diferida". kayru.org . Archivado desde el original el 22 de octubre de 2012.
  5. ^ Kayi, Celal Cansin. "Renderizado diferido en XNA 4" (PDF) . Universidad Linneo . Archivado (PDF) desde el original el 13 de agosto de 2013 . Consultado el 6 de enero de 2021 .
  6. ^ "SDK 9.51: ejemplos de códigos destacados". NVIDIA . 17 de enero de 2007. Archivado desde el original el 8 de marzo de 2005 . Consultado el 28 de marzo de 2007 .
  7. ^ Engel, Wolfgang (16 de marzo de 2008). "Renderizador de prepaso ligero". Diario de un programador gráfico . Archivado desde el original el 7 de abril de 2008 . Consultado el 6 de enero de 2021 .
  8. ^ "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 .
  9. ^ "MLAA: traslado eficaz del antialiasing de la GPU a la CPU" (PDF) . Intel . Consultado el 2 de diciembre de 2018 .
  10. ^ "Antialiasing morfológico y reconstrucción topológica" (PDF) . Universidad Gustave Eiffel . Archivado (PDF) desde el original el 3 de abril de 2012 . Consultado el 6 de enero de 2021 .
  11. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 25 de noviembre de 2011 . Consultado el 7 de noviembre de 2011 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  12. ^ Chajdas, Matthäus G.; McGuire, Morgan; Luebke, David (1 de febrero de 2011). "Antialiasing de reconstrucción de subpíxeles". NVIDIA . Archivado desde el original el 27 de enero de 2011 . Consultado el 6 de enero de 2021 .
  13. ^ Andreev, Dmitry (2011). "Anti-Aliasing desde una perspectiva diferente". y.intercon.ru . Archivado desde el original el 4 de abril de 2011 . Consultado el 6 de enero de 2021 .
  14. ^ Andreev, Dmitry (4 de marzo de 2011). "Anti-Aliasing desde una perspectiva diferente (diapositivas ampliadas de GDC 2011)". y.intercon.ru . Archivado desde el original el 5 de abril de 2011 . Consultado el 6 de enero de 2021 .
  15. ^ "Renderizado en tiempo real · Enfoques de iluminación diferida". realtimerendering.com .
  16. ^ "Assassin's Creed III: el motor Anvil rediseñado". www.GameInformer.com .
  17. ^ "El desarrollo de BioShock Infinite está centrado en PS3 y utiliza tecnología de Uncharted 2". blogge.com . Archivado desde el original el 3 de octubre de 2011.
  18. ^ 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 .
  19. ^ "Entrevista técnica: Represión 2". Eurogamer.net . 26 de junio de 2010.
  20. ^ invitado11b095. "Un poco más de llanto diferido Engine3". slideshare.net .{{cite web}}: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace )
  21. ^ "Dead Space de Electronic Arts". NVIDIA . Consultado el 14 de febrero de 2008 .
  22. ^ "Cara a cara: Dead Space 2". Eurogamer . Consultado el 1 de febrero de 2010 .
  23. ^ "Cara a cara: Dead Space 3". Eurogamer . Consultado el 18 de febrero de 2013 .
  24. ^ "Traductor de Google". google.com .
  25. ^ "GregaMan, administrar blog". capcom-unity.com .
  26. ^ "Normal". Imagen
  27. ^ "Entrevista técnica: Halo: Reach". Eurogamer.net . 11 de diciembre de 2010.
  28. ^ ab "Análisis técnico: motor FOX de Metal Gear Solid 5". Eurogamer.net . 5 de abril de 2013.
  29. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 15 de septiembre de 2011 . Consultado el 12 de julio de 2011 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  30. ^ "Artículo The Making of Shift 2 Unleashed • Página 2 • Eurogamer.net". Eurogamer.net . 14 de mayo de 2011.
  31. ^ "Efectos y técnicas de StarCraft II" (PDF) . AMD . Consultado el 9 de julio de 2012 .
  32. ^ "Mantenimiento de la sociedad CGS". cgsociety.org . Archivado desde el original el 2 de abril de 2015 . Consultado el 12 de julio de 2011 .
  33. ^ "Representación diferida« PlatinumGames Inc ". platinumgames.com . Archivado desde el original el 27 de noviembre de 2010.
  34. ^ "Análisis de Ghost of Tsushima: una potencia gráfica de PS4". gamingbolt.com .
  35. ^ Silard Šimon. "Entrevista sobre juegos de fricción". playsomnia.com .
  36. ^ DADOS. "Sombreado diferido basado en SPU en BATTLEFIELD 3 para Playstation 3". slideshare.net .
  37. ^ "Wiki para desarrolladores de Valve - Dota 2" . Consultado el 10 de abril de 2012 .
  38. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 11 de julio de 2011 . Consultado el 12 de julio de 2011 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  39. ^ Guerras mineras 2081
  40. ^ "Entrevista técnica: Entrevista Metro 2033 • Página 2 • Eurogamer.net". Eurogamer.net . 25 de febrero de 2010.
  41. ^ "Historia - Juegos de ovejas eléctricas" . Consultado el 14 de abril de 2011 .
  42. ^ 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 .
  43. ^ "Sombreado diferido en Tabula Rasa". Nvidia. Archivado desde el original el 3 de febrero de 2009 . Consultado el 14 de febrero de 2008 .
  44. ^ "Foros de usuarios de Steam - Ver publicación única - Quitar la carga Physx de la CPU ..." steampowered.com .
  45. ^ "Foros de usuarios de Steam - Ver publicación única - Información de renderizado de Trine 2 - suavizado, sobrecalentamiento, estéreo, retraso de entrada, etc.". steampowered.com .
  46. ^ "Especificaciones de CryENGINE 3". Crytek GmbH. Archivado desde el original el 27 de marzo de 2009 . Consultado el 27 de marzo de 2009 .
  47. ^ "Iluminándote en Battlefield 3". DADO . 3 de marzo de 2011. Archivado desde el original (PDF) el 25 de agosto de 2011 . Consultado el 15 de septiembre de 2011 .
  48. ^ "GameStart - Lista de funciones". Archivado desde el original el 2 de diciembre de 2011.
  49. ^ "Infinity Development Journal - 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 .
  50. ^ "CONSTRUIR: renderizado diferido". 26 de febrero de 2009 . Consultado el 8 de abril de 2015 .
  51. ^ "Desarrollo de Torque 3D - Iluminación avanzada (híbrido de iluminación diferida)". 3 de marzo de 2009 . Consultado el 2 de julio de 2015 .
  52. ^ Vosburgh, Ethan (9 de septiembre de 2010). "Vista previa de funciones de Unity 3: renderizado diferido". Tecnologías de unidad . Consultado el 26 de enero de 2011 .
  53. ^ "Unreal Engine 4: descripción general del renderizado". Juegos épicos . Consultado el 6 de junio de 2015 .
  54. ^ "Vision Engine 8.2 ofrece 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 .
  55. ^ "La tecnología gráfica de Fallout 4". Bethesda Softworks . 4 de noviembre de 2015 . Consultado el 24 de abril de 2020 .
  56. ^ 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.
  57. ^ Geldreich, rico. "Presentación de GDC 2004 sobre iluminación y sombreado diferidos". Archivado desde el original el 11 de marzo de 2014 . Consultado el 24 de agosto de 2013 .
  58. ^ "Sombreado diferido" (PDF) . NVIDIA . Consultado el 28 de marzo de 2007 .
  59. ^ Klint, Josh. "Renderizado diferido en Leadwerks Engine" (PDF) . Trabajos de plomo. Archivado desde el original (PDF) el 9 de diciembre de 2008.