stringtranslate.com

Renderizado (gráficos por computadora)

Una variedad de técnicas de renderizado aplicadas a una sola escena 3D
Una imagen creada con POV-Ray 3.6

La representación o síntesis de imágenes es el proceso de generar una imagen fotorrealista o no fotorrealista a partir de un modelo 2D o 3D por medio de un programa informático . [ cita requerida ] La imagen resultante se conoce como representación . Se pueden definir múltiples modelos en un archivo de escena que contiene objetos en un lenguaje o estructura de datos estrictamente definidos . El archivo de escena contiene información de geometría, punto de vista, texturas , iluminación y sombreado que describe la escena virtual. Los datos contenidos en el archivo de escena se pasan luego a un programa de representación para ser procesados ​​y exportados a una imagen digital o un archivo de imagen de gráficos rasterizados . El término "renderizado" es análogo al concepto de impresión de una escena por parte de un artista . El término "renderizado" también se utiliza para describir el proceso de cálculo de efectos en un programa de edición de vídeo para producir la salida de vídeo final.

Una aplicación o componente de software que realiza la renderización se denomina motor de renderización , [1] motor de renderización , sistema de renderización , motor gráfico o simplemente renderizador .

La renderización es uno de los principales subtemas de los gráficos por computadora en 3D y, en la práctica, siempre está conectada con los demás. Es el último paso importante en el proceso de creación de gráficos , que otorga a los modelos y a la animación su apariencia final. Con la creciente sofisticación de los gráficos por computadora desde la década de 1970, se ha convertido en un tema más diferenciado.

El renderizado tiene aplicaciones en arquitectura , videojuegos , simuladores , efectos visuales de películas y televisión y visualización de diseños, cada uno de los cuales emplea un equilibrio diferente de características y técnicas. Hay una amplia variedad de renderizadores disponibles para su uso. Algunos están integrados en paquetes de modelado y animación más grandes, algunos son independientes y algunos son proyectos gratuitos de código abierto. En el interior, un renderizador es un programa cuidadosamente diseñado basado en múltiples disciplinas, incluida la física de la luz , la percepción visual , las matemáticas y el desarrollo de software .

Aunque los detalles técnicos de los métodos de renderizado varían, los desafíos generales que se deben superar al producir una imagen 2D en una pantalla a partir de una representación 3D almacenada en un archivo de escena son manejados por el flujo de gráficos en un dispositivo de renderizado como una GPU . Una GPU es un dispositivo diseñado específicamente para ayudar a una CPU a realizar cálculos de renderizado complejos. Si se desea que una escena se vea relativamente realista y predecible bajo una iluminación virtual, el software de renderizado debe resolver la ecuación de renderizado . La ecuación de renderizado no tiene en cuenta todos los fenómenos de iluminación, sino que actúa como un modelo de iluminación general para imágenes generadas por computadora.

En el caso de los gráficos 3D, las escenas se pueden pre-renderizar o generar en tiempo real. La pre-renderización es un proceso lento y de alto consumo de recursos que se utiliza normalmente para la creación de películas, donde las escenas se pueden generar con antelación, mientras que la renderización en tiempo real se suele realizar para los videojuegos 3D y otras aplicaciones que deben crear escenas de forma dinámica. Los aceleradores de hardware 3D pueden mejorar el rendimiento de la renderización en tiempo real.

Características

Una imagen renderizada puede entenderse en términos de una serie de características visibles. La investigación y el desarrollo de la renderización se han basado principalmente en la búsqueda de formas de simularlas de manera eficiente. Algunas se relacionan directamente con algoritmos y técnicas particulares, mientras que otras se producen en conjunto.

Entradas

Antes de poder renderizar una escena 3D o una imagen 2D, se debe describir de una manera que el software de renderizado pueda entender. Históricamente, las entradas para el renderizado 2D y 3D eran generalmente archivos de texto , que son más fáciles de editar y depurar que los archivos binarios para los humanos. Para los gráficos 3D, los formatos de texto han sido reemplazados en gran medida por formatos binarios más eficientes y por API que permiten que las aplicaciones interactivas se comuniquen directamente con un componente de renderizado sin generar un archivo en el disco (aunque generalmente se sigue creando una descripción de la escena en la memoria antes del renderizado). [2] : 1.2, 3.2.6, 3.3.1, 3.3.7 

Los algoritmos de renderizado tradicionales utilizan descripciones geométricas de escenas 3D o imágenes 2D. Las aplicaciones y algoritmos que renderizan visualizaciones de datos escaneados del mundo real o simulaciones científicas pueden requerir distintos tipos de datos de entrada.

El formato PostScript (al que a menudo se le atribuye el auge de la autoedición ) proporciona una forma estandarizada e interoperable de describir gráficos 2D y diseño de página . El formato Scalable Vector Graphics (SVG) también está basado en texto, y el formato PDF utiliza el lenguaje PostScript internamente. Por el contrario, aunque muchos formatos de archivos de gráficos 3D se han estandarizado (incluidos los formatos basados ​​en texto como VRML y X3D ), las diferentes aplicaciones de renderizado suelen utilizar formatos adaptados a sus necesidades, y esto ha llevado a una proliferación de formatos propietarios y abiertos, siendo los archivos binarios más comunes. [2] : 3.2.3, 3.2.5, 3.3.7  [3] : vii  [4] [5] : 16.5.2.  [6]

Gráficos vectoriales 2D

Una descripción de imagen de gráficos vectoriales puede incluir: [3] [4]

Geometría 3D

Una descripción de una escena geométrica puede incluir: [2] : Cap. 4-7, 8.7  [7]

Existen muchos formatos de archivo para almacenar objetos 3D individuales o " modelos ". Estos se pueden importar a una escena más grande o se pueden cargar a pedido mediante software de renderizado o juegos. Una escena realista puede requerir cientos de elementos como objetos domésticos, vehículos y árboles, y los artistas 3D a menudo utilizan grandes bibliotecas de modelos. En la producción de juegos, estos modelos (junto con otros datos como texturas, archivos de audio y animaciones) se conocen como " recursos ". [6] [8] : Cap. 4 

Datos volumétricos

La visualización científica y de ingeniería a menudo requiere la representación de datos volumétricos generados por escaneos o simulaciones 3D . Quizás la fuente más común de dichos datos sean las tomografías computarizadas y las resonancias magnéticas médicas , que deben representarse para el diagnóstico. Los datos volumétricos pueden ser extremadamente grandes y requieren formatos de datos especializados para almacenarlos de manera eficiente, en particular si el volumen es escaso (con regiones vacías que no contienen datos). [9] : 14.3.1  [10] [11]

Antes de la renderización, se pueden extraer conjuntos de niveles para datos volumétricos y convertirlos en una malla de triángulos, por ejemplo, utilizando el algoritmo de cubos en marcha . También se han desarrollado algoritmos que trabajan directamente con datos volumétricos, por ejemplo, para renderizar representaciones realistas de la forma en que la luz se dispersa y absorbe por las nubes y el humo, y este tipo de renderización volumétrica se utiliza ampliamente en efectos visuales para películas. Al renderizar datos volumétricos de menor resolución sin interpolación, los cubos individuales o " vóxeles " pueden ser visibles, un efecto que a veces se utiliza deliberadamente para gráficos de juegos. [12] : 4.6  [9] : 13.10, Cap. 14, 16.1 

Fotogrametría y escaneo

Las fotografías de objetos del mundo real se pueden incorporar a una escena renderizada utilizándolas como texturas para objetos 3D. Las fotografías de una escena también se pueden unir para crear imágenes panorámicas o mapas del entorno , que permiten renderizar la escena de forma muy eficiente pero solo desde un único punto de vista. El escaneo de objetos y escenas reales utilizando luz estructurada o lidar produce nubes de puntos que consisten en las coordenadas de millones de puntos individuales en el espacio, a veces junto con información de color. Estas nubes de puntos se pueden renderizar directamente o convertir en mallas antes de renderizar. (Nota: "nube de puntos" a veces también se refiere a un estilo de renderizado minimalista que se puede utilizar para cualquier geometría 3D, similar al renderizado de estructura alámbrica). [9] : 13.3, 13.9  [2] : 1.3 

Aproximaciones neuronales y campos de luz

Un enfoque experimental más reciente es la descripción de escenas utilizando campos de radiancia que definen el color, la intensidad y la dirección de la luz entrante en cada punto del espacio. (Esto es conceptualmente similar, pero no idéntico, al campo de luz registrado por un holograma ). Para cualquier resolución útil, la cantidad de datos en un campo de radiancia es tan grande que no es práctico representarlo directamente como datos volumétricos, y se debe encontrar una función de aproximación . Las redes neuronales se utilizan típicamente para generar y evaluar estas aproximaciones, a veces utilizando fotogramas de vídeo o una colección de fotografías de una escena tomadas desde diferentes ángulos, como " datos de entrenamiento ". [13] [14]

Recientemente se han utilizado algoritmos relacionados con redes neuronales para encontrar aproximaciones de una escena como Gaussianas 3D . La representación resultante es similar a una nube de puntos , excepto que utiliza manchas difusas, parcialmente transparentes de dimensiones y orientaciones variables en lugar de puntos. Al igual que con los campos de radiancia neuronal , estas aproximaciones se generan a menudo a partir de fotografías o fotogramas de vídeo. [15]

Salidas

El resultado de la renderización se puede mostrar inmediatamente en la pantalla (muchas veces por segundo, en el caso de la renderización en tiempo real, como los juegos) o guardarse en un formato de archivo de gráficos rasterizados , como JPEG o PNG . Las aplicaciones de renderización de alta gama suelen utilizar el formato de archivo OpenEXR , que puede representar gradaciones más finas de colores e iluminación de alto rango dinámico , lo que permite aplicar posteriormente el mapeo de tonos u otros ajustes sin pérdida de calidad. [16] [17] : Cap. 14, Ap. B 

Las animaciones renderizadas rápidamente se pueden guardar directamente como archivos de video, pero para una renderización de alta calidad, los cuadros individuales (que pueden ser renderizados por diferentes computadoras en un clúster o granja de renderización y pueden tardar horas o incluso días en renderizarse) se generan como archivos separados y se combinan más tarde en un videoclip. [18] [8] : 1.5, 3.11, 8.11 

La salida de un renderizador a veces incluye más que solo valores de color RGB . Por ejemplo, el espectro se puede muestrear usando múltiples longitudes de onda de luz, o se puede incluir información adicional como la profundidad (distancia desde la cámara) o el material de cada punto en la imagen (estos datos se pueden usar durante la composición o al generar mapas de textura para renderizado en tiempo real, o se pueden usar para ayudar a eliminar el ruido de una imagen trazada por trayectoria). Se puede incluir información de transparencia, lo que permite componer objetos de primer plano renderizados con fotografías o videos. A veces también es útil almacenar las contribuciones de diferentes luces, o de iluminación especular y difusa, como canales separados, de modo que la iluminación se pueda ajustar después del renderizado. El formato OpenEXR permite almacenar muchos canales de datos en un solo archivo. [16] [17] : Cap. 14, Ap. B 

Técnicas

La elección de cómo renderizar una escena 3D generalmente implica hacer concesiones entre velocidad, uso de memoria y realismo (aunque el realismo no siempre es lo deseado).Los algoritmos desarrollados a lo largo de los años siguen una progresión flexible, y los métodos más avanzados se vuelven prácticos a medida que aumenta la capacidad de procesamiento y de memoria. Se pueden utilizar múltiples técnicas para obtener una única imagen final.

Una distinción importante es entre los algoritmos de orden de imágenes , que iteran sobre los píxeles del plano de la imagen, y los algoritmos de orden de objetos , que iteran sobre los objetos de la escena. En el caso de escenas simples, el orden de objetos suele ser más eficiente, ya que hay menos objetos que píxeles. [19] : Cap. 4 

Gráficos vectoriales 2D
Las pantallas vectoriales de los años 1960 y 1970 utilizaban la desviación de un haz de electrones para dibujar segmentos de línea directamente en la pantalla. Hoy en día, los gráficos vectoriales se renderizan mediante algoritmos de rasterización que también admiten formas rellenas. En principio, cualquier renderizador de gráficos vectoriales 2D se puede utilizar para renderizar objetos 3D proyectándolos primero sobre un plano de imagen 2D. [20] : 93, 431, 505, 553 
Rasterización 3D
Adapta algoritmos de rasterización 2D para que puedan usarse de manera más eficiente para renderización 3D, manejando la eliminación de superficies ocultas mediante técnicas de línea de escaneo o búfer z . Se pueden obtener diferentes efectos realistas o estilizados coloreando los píxeles cubiertos por los objetos de diferentes maneras. Las superficies generalmente se dividen en mallas de triángulos antes de ser rasterizadas. La rasterización suele ser sinónimo de renderización de "orden de objetos" (como se describió anteriormente). [20] : 560-561, 575-590  [2] : 8.5  [19] : Cap. 9 
Lanzamiento de rayos
Utiliza fórmulas geométricas para calcular el primer objeto que un rayo interseca. [21] : 8  Se puede utilizar para implementar la representación de "orden de imagen" al proyectar un rayo para cada píxel y encontrar un punto correspondiente en la escena. La proyección de rayos es una operación fundamental utilizada tanto para fines gráficos como no gráficos, [22] : 6  por ejemplo, para determinar si un punto está en la sombra o para verificar lo que puede ver un enemigo en un juego .
Trazado de rayos
Simula las trayectorias de rebote de la luz causadas por la reflexión y refracción especulares , lo que requiere un número variable de operaciones de proyección de rayos para cada trayectoria. Las formas avanzadas utilizan técnicas de Monte Carlo para representar efectos como luces de área, profundidad de campo , reflejos borrosos y sombras suaves , pero el cálculo de la iluminación global suele estar en el dominio del trazado de trayectorias. [21] : 9-13  [23]
Radiosidad
Un método de análisis de elementos finitos que divide las superficies de la escena en partes y calcula la cantidad de luz que cada parte recibe de fuentes de luz o indirectamente de otras superficies. Una vez que se conoce la irradiancia de cada superficie, la escena se puede renderizar mediante rasterización o trazado de rayos. [24] : 888-890, 1044-1045 
Rastreo de ruta
Utiliza la integración de Monte Carlo con una forma simplificada de trazado de rayos, calculando el brillo promedio de una muestra de los posibles caminos que un fotón podría tomar al viajar desde una fuente de luz a la cámara (para algunas imágenes, se deben muestrear miles de caminos por píxel [22] : 8  ). Se introdujo como una forma estadísticamente imparcial de resolver la ecuación de renderizado , lo que le da al trazado de rayos una base matemática rigurosa. [25] [21] : 11-13 

Cada uno de los enfoques anteriores tiene muchas variaciones y existen algunas superposiciones. El trazado de trayectorias puede considerarse una técnica distinta o un tipo particular de trazado de rayos. [24] : 846, 1021  Nótese que el uso de la terminología relacionada con el trazado de rayos y el trazado de trayectorias ha cambiado significativamente con el tiempo. [21] : 7 

Representación de un terreno fractal mediante marcha de rayos

El trazado de rayos es una familia de algoritmos, utilizados por el método de proyección de rayos, para encontrar intersecciones entre un rayo y un objeto complejo, como un conjunto de datos volumétricos o una superficie definida por una función de distancia con signo . No es, por sí mismo, un método de renderizado, pero se puede incorporar al trazado de rayos y al trazado de trayectorias, y se utiliza en la rasterización para implementar la reflexión en el espacio de la pantalla y otros efectos. [21] : 13 

Una técnica llamada mapeo de fotones traza trayectorias de fotones desde una fuente de luz hasta un objeto, acumulando datos sobre la irradiancia que luego se utilizan durante el trazado de rayos o el trazado de trayectorias convencionales. [24] : 1037-1039  Renderizar una escena utilizando solo rayos trazados desde la fuente de luz hasta la cámara es poco práctico, aunque se corresponde más con la realidad, porque se necesitaría simular una gran cantidad de fotones, de los cuales solo una pequeña fracción realmente llega a la cámara. [26] : 7-9  [20] : 587 

Algunos autores llaman al trazado de rayos convencional trazado de rayos "hacia atrás" porque traza las trayectorias de los fotones hacia atrás desde la cámara hasta la fuente de luz, y llaman trazado de rayos "hacia adelante" a las trayectorias siguientes desde la fuente de luz (como en el mapeo de fotones). [26] : 7-9  Sin embargo, a veces el significado de estos términos se invierte. [27] El trazado de rayos que comienza en la fuente de luz también se puede llamar trazado de partículas o trazado de luz , lo que evita esta ambigüedad. [28] : 92  [29] : 4.5.4 

La renderización en tiempo real, incluidos los gráficos de los videojuegos, normalmente utiliza rasterización, pero cada vez más la combina con el trazado de rayos y el trazado de trayectorias. [22] : 2  Para permitir una iluminación global realista , la renderización en tiempo real a menudo se basa en iluminación pre-renderizada ("horneada") para objetos estacionarios. Para objetos en movimiento, puede utilizar una técnica llamada sondas de luz , en la que la iluminación se registra mediante la representación de vistas omnidireccionales de la escena en puntos elegidos en el espacio (a menudo puntos en una cuadrícula para permitir una interpolación más fácil ). Estos son similares a los mapas de entorno , pero normalmente utilizan una resolución muy baja o una aproximación como los armónicos esféricos . [30] (Nota: Blender utiliza el término 'sondas de luz' para una clase más general de datos de iluminación pregrabados, incluidos los mapas de reflexión. [31] )

Rasterización

Representación del Telescopio Extremadamente Grande

El término rasterización (en un sentido amplio) abarca muchas técnicas utilizadas para la renderización 2D y la renderización 3D en tiempo real . Las películas animadas en 3D se renderizaban mediante rasterización antes de que el trazado de rayos y el trazado de trayectorias se volvieran prácticos.

Un renderizador combina la rasterización con el procesamiento de geometría (que no es específico de la rasterización) y el procesamiento de píxeles que calcula los valores de color RGB que se colocarán en el búfer de cuadros para su visualización. [9] : 2.1  [19] : 9 

Las principales tareas de rasterización (incluido el procesamiento de píxeles) son: [9] : 2, 3.8, 23.1.1 

La rasterización 3D es típicamente parte de un proceso de gráficos en el que una aplicación proporciona listas de triángulos que se van a renderizar, y el sistema de renderizado transforma y proyecta sus coordenadas, determina qué triángulos son potencialmente visibles en la ventana gráfica y realiza las tareas de rasterización y procesamiento de píxeles antes de mostrar el resultado final en la pantalla. [9] : 2.1  [19] : 9 

Históricamente, la rasterización 3D utilizaba algoritmos como el algoritmo Warnock y el renderizado de líneas de escaneo (también llamado "conversión de escaneo"), que pueden manejar polígonos arbitrarios y pueden rasterizar muchas formas simultáneamente. Aunque estos algoritmos siguen siendo importantes para el renderizado 2D, el renderizado 3D ahora suele dividir las formas en triángulos y rasterizarlas individualmente utilizando métodos más simples. [32] [33] [20] : 456, 561–569 

Existen algoritmos de alto rendimiento para rasterizar líneas 2D , incluidas líneas suavizadas , así como elipses y triángulos rellenos. Un caso especial importante de rasterización 2D es la representación de texto , que requiere un suavizado cuidadoso y redondeo de coordenadas para evitar distorsionar las formas de las letras y preservar el espaciado, la densidad y la nitidez. [19] : 9.1.1  [34]

Una vez que se han proyectado las coordenadas 3D sobre el plano de la imagen , la rasterización es principalmente un problema 2D, pero la tercera dimensión requiere la eliminación de superficies ocultas . Los primeros gráficos por computadora usaban algoritmos geométricos o proyección de rayos para eliminar las partes ocultas de las formas, o usaban el algoritmo del pintor , que ordena las formas por profundidad (distancia desde la cámara) y las renderiza de atrás hacia adelante. La ordenación por profundidad se evitó más tarde incorporando la comparación de profundidad en el algoritmo de renderizado de líneas de escaneo . El algoritmo de búfer z realiza las comparaciones indirectamente al incluir un valor de profundidad o "z" en el búfer de cuadros . Un píxel solo está cubierto por una forma si el valor z de esa forma es menor (lo que indica que está más cerca de la cámara) que el valor z que se encuentra actualmente en el búfer. El búfer z requiere memoria adicional (un recurso costoso en el momento en que se inventó), pero simplifica el código de rasterización y permite múltiples pasadas. Ahora la memoria es más rápida y abundante, y casi siempre se usa un búfer z para renderizado en tiempo real. [35] [36] [20] : 553–570  [9] : 2.5.2 

Una desventaja del algoritmo básico del búfer z es que cada píxel termina completamente cubierto por un solo objeto o lleno del color de fondo, lo que provoca bordes irregulares en la imagen final. Los primeros enfoques de anti-aliasing abordaron esto detectando cuándo un píxel está parcialmente cubierto por una forma y calculando el área cubierta. El búfer A (y otras técnicas de subpíxeles y muestreo múltiple ) resuelven el problema con menos precisión pero con un mayor rendimiento. Para gráficos 3D en tiempo real, se ha vuelto común usar heurísticas complicadas (e incluso redes neuronales ) para realizar el anti-aliasing. [36] [37] [19] : 9.3  [9] : 5.4.2 

En la rasterización 3D, el color suele estar determinado por un sombreador de píxeles o un sombreador de fragmentos , un pequeño programa que se ejecuta para cada píxel. El sombreador no accede (o no puede hacerlo) directamente a los datos 3D de toda la escena (esto sería muy lento y daría como resultado un algoritmo similar al trazado de rayos) y se han desarrollado diversas técnicas para renderizar efectos como sombras y reflejos utilizando solo el mapeo de texturas y múltiples pasadas. [19] : 17.8 

Las implementaciones de rasterización 3D más antiguas y básicas no admitían sombreadores y utilizaban técnicas de sombreado simples como el sombreado plano (la iluminación se calcula una vez para cada triángulo, que luego se representa completamente en un color), el sombreado Gouraud (la iluminación se calcula utilizando vectores normales definidos en los vértices y luego los colores se interpolan en cada triángulo) o el sombreado Phong (los vectores normales se interpolan en cada triángulo y la iluminación se calcula para cada píxel). [19] : 9.2 

Hasta hace relativamente poco, Pixar utilizaba la rasterización para renderizar sus películas animadas . A diferencia de los renderizadores que se utilizan habitualmente para gráficos en tiempo real, el sistema de renderizado Reyes del software RenderMan de Pixar estaba optimizado para renderizar polígonos muy pequeños (del tamaño de un píxel) e incorporaba técnicas de muestreo estocástico más típicamente asociadas con el trazado de rayos . [2] : 2, 6.3  [38]

Lanzamiento de rayos

Una de las formas más sencillas de renderizar una escena 3D es probar si un rayo que comienza en el punto de vista (el "ojo" o la "cámara") intersecta alguna de las formas geométricas de la escena, repitiendo esta prueba utilizando una dirección de rayo diferente para cada píxel. Este método, llamado ray casting , fue importante en los primeros gráficos por computadora y es un componente fundamental para algoritmos más avanzados. El ray casting se puede utilizar para renderizar formas definidas por operaciones de geometría sólida constructiva (CSG). [21] : 8-9  [39] : 246–249 

Los primeros experimentos de proyección de rayos incluyen el trabajo de Arthur Appel en la década de 1960. Appel representó sombras proyectando un rayo adicional desde cada punto de la superficie visible hacia una fuente de luz. También intentó representar la densidad de la iluminación proyectando rayos aleatorios desde la fuente de luz hacia el objeto y trazando los puntos de intersección (similar a la técnica posterior llamada mapeo de fotones ). [40]

La marcha de rayos se puede utilizar para encontrar la primera intersección de un rayo con una forma intrincada como este fractal de Mandelbulb .

Al renderizar escenas que contienen muchos objetos, probar la intersección de un rayo con cada objeto se vuelve muy costoso. Se utilizan estructuras de datos especiales para acelerar este proceso al permitir excluir rápidamente una gran cantidad de objetos (como los objetos detrás de la cámara). Estas estructuras son análogas a los índices de bases de datos para encontrar los objetos relevantes. Las más comunes son la jerarquía de volumen delimitador (BVH), que almacena un cuadro delimitador o esfera precalculada para cada rama de un árbol de objetos, y el árbol kd que divide recursivamente el espacio en dos partes. Las GPU recientes incluyen aceleración de hardware para pruebas de intersección BVH. Los árboles kd son un caso especial de partición binaria del espacio , que se utilizó con frecuencia en los primeros gráficos de computadora (también puede generar un orden de rasterización para el algoritmo del pintor ). Los octrees , otra técnica históricamente popular, todavía se utilizan a menudo para datos volumétricos. [22] : 16–17  [41] [39] [5] : 36.2 

Las fórmulas geométricas son suficientes para encontrar la intersección de un rayo con formas como esferas , polígonos y poliedros , pero para la mayoría de las superficies curvas no existe una solución analítica o la intersección es difícil de calcular con precisión utilizando números de punto flotante de precisión limitada . A veces se pueden utilizar algoritmos de búsqueda de raíces , como el método de Newton . Para evitar estas complicaciones, las superficies curvas a menudo se aproximan como mallas de triángulos . La representación de volumen (por ejemplo, la representación de nubes y humo) y algunas superficies como los fractales pueden requerir la marcha de rayos en lugar de la proyección de rayos básica. [42] [21] : 13  [9] : 14, 17.3 

Trazado de rayos

Esfera espiral y Julia, detalle , una imagen generada por computadora creada por el artista visual Robert W. McGregor utilizando solo POV-Ray 3.6 y su lenguaje de descripción de escena incorporado

La proyección de rayos se puede utilizar para reproducir una imagen mediante el seguimiento de los rayos de luz hacia atrás desde una cámara simulada. Después de encontrar un punto en una superficie donde se originó un rayo, se traza otro rayo hacia la fuente de luz para determinar si algo está proyectando una sombra en ese punto. Si no es así, se utiliza un modelo de reflectancia (como la reflectancia lambertiana para superficies mate o el modelo de reflexión Phong para superficies brillantes) para calcular la probabilidad de que un fotón que llega desde la luz se refleje hacia la cámara, y esto se multiplica por el brillo de la luz para determinar el brillo del píxel. Si hay varias fuentes de luz, se suman las contribuciones de brillo de las luces. Para las imágenes en color, los cálculos se repiten para múltiples longitudes de onda de luz (por ejemplo, rojo, verde y azul). [9] : 11.2.2  [21] : 8 

El trazado de rayos clásico (también llamado trazado de rayos recursivo o de estilo Whitted ) extiende este método para que pueda representar espejos y objetos transparentes. Si un rayo trazado hacia atrás desde la cámara se origina en un punto de un espejo, se utiliza la fórmula de reflexión de la óptica geométrica para calcular la dirección de la que proviene el rayo reflejado y se proyecta otro rayo hacia atrás en esa dirección. Si un rayo se origina en una superficie transparente, los rayos se proyectan hacia atrás tanto para los rayos reflejados como para los refractados (usando la ley de Snell para calcular la dirección refractada), por lo que el trazado de rayos debe admitir un "árbol" ramificado de rayos. En implementaciones simples, se llama a una función recursiva para trazar cada rayo. [9] : 11.2.2  [21] : 9 

El trazado de rayos generalmente realiza el anti-aliasing tomando el promedio de múltiples muestras para cada píxel. También puede usar múltiples muestras para efectos como profundidad de campo y desenfoque de movimiento . Si se utilizan direcciones o tiempos de rayos espaciados uniformemente para cada una de estas características, se requieren muchos rayos y permanecerá algo de aliasing. El trazado de rayos de estilo Cook , estocástico o Monte Carlo evita este problema al usar muestreo aleatorio en lugar de muestras espaciadas uniformemente. Este tipo de trazado de rayos se denomina comúnmente trazado de rayos distribuido o trazado de rayos de distribución porque toma muestras de rayos de distribuciones de probabilidad . El trazado de rayos de distribución también puede generar sombras "suaves" realistas a partir de luces grandes al usar una muestra aleatoria de puntos en la luz al probar el sombreado, y puede simular la aberración cromática al tomar muestras de múltiples longitudes de onda del espectro de luz . [21] : 10  [26] : 25 

Los materiales de superficie reales reflejan pequeñas cantidades de luz en casi todas las direcciones porque tienen pequeñas (o microscópicas) protuberancias y surcos. Un trazador de rayos de distribución puede simular esto mediante el muestreo de posibles direcciones de rayos, lo que permite reproducir reflejos borrosos de superficies brillantes y metálicas. Sin embargo, si este procedimiento se repite de forma recursiva para simular una iluminación indirecta realista, y si se toma más de una muestra en cada punto de la superficie, el árbol de rayos se vuelve rápidamente enorme. Otro tipo de trazado de rayos, llamado trazado de trayectorias , maneja la luz indirecta de forma más eficiente, evitando la ramificación, y garantiza que la distribución de todas las trayectorias posibles desde una fuente de luz hasta la cámara se muestree de forma imparcial . [26] : 25–27  [25]

El trazado de rayos se utilizó a menudo para reproducir reflejos en películas animadas, hasta que el trazado de trayectorias se convirtió en el estándar para la reproducción de películas. Películas como Shrek 2 y Monsters University también utilizaron el trazado de rayos de distribución o el trazado de trayectorias para calcular previamente la iluminación indirecta de una escena o un fotograma antes de reproducirlo mediante rasterización. [43] : 118–121 

Los avances en la tecnología de GPU han hecho posible el trazado de rayos en tiempo real en los juegos, aunque actualmente casi siempre se usa en combinación con la rasterización. [22] : 2  Esto permite efectos visuales que son difíciles con solo rasterización, incluido el reflejo de superficies curvas y objetos interreflectivos, [44] : 305  y sombras que son precisas en un amplio rango de distancias y orientaciones de superficie. [45] : 159-160  El soporte de trazado de rayos está incluido en versiones recientes de las API de gráficos utilizadas por los juegos, como DirectX , Metal y Vulkan . [46]

El trazado de rayos se ha utilizado para simular agujeros negros y la apariencia de objetos que se mueven a una velocidad cercana a la de la luz, teniendo en cuenta la curvatura del espacio-tiempo y los efectos relativistas durante la simulación de rayos de luz. [47] [48]

Radiosidad

Demostración clásica de radiosidad. Las superficies se dividen en mallas de 16x16 o 16x32. Arriba: solo luz directa. Abajo: solución de radiosidad (para un albedo de 0,85).
Arriba: la misma escena con una malla de radiosidad más fina, suavizando los parches durante la renderización final mediante interpolación bilineal . Abajo: la escena renderizada con trazado de trayectorias (usando el renderizador PBRT).

La radiosidad (denominada así por la cantidad radiométrica del mismo nombre ) es un método para reproducir objetos iluminados por la luz que rebota en superficies rugosas o mate . Este tipo de iluminación se denomina luz indirecta , iluminación ambiental o iluminación difusa , y el problema de reproducirla de forma realista se denomina iluminación global . La rasterización y las formas básicas de trazado de rayos (distintas del trazado de rayos de distribución y el trazado de trayectorias) solo pueden aproximarse de forma aproximada a la luz indirecta, por ejemplo, añadiendo una cantidad de iluminación "ambiental" uniforme elegida por el artista. Las técnicas de radiosidad también son adecuadas para reproducir escenas con luces de área , como paneles de iluminación fluorescentes rectangulares, que son difíciles de rasterizar y de trazar rayos tradicionales. La radiosidad se considera un método basado en la física , lo que significa que tiene como objetivo simular el flujo de luz en un entorno utilizando ecuaciones y datos experimentales de la física, sin embargo, a menudo supone que todas las superficies son opacas y perfectamente lambertianas , lo que reduce el realismo y limita su aplicabilidad. [9] : 10, 11.2.1  [24] : 888, 893  [49]

En el método de radiosidad original (propuesto por primera vez en 1984) ahora llamado radiosidad clásica , las superficies y luces en la escena se dividen en partes llamadas parches , un proceso llamado mallado (este paso lo convierte en un método de elementos finitos ). El código de renderizado debe determinar qué fracción de la luz emitida o reflejada difusamente (dispersada) por cada parche es recibida por cada otro parche. Estas fracciones se denominan factores de forma o factores de vista (usados ​​por primera vez en ingeniería para modelar la transferencia de calor radiativo ). Los factores de forma se multiplican por el albedo de la superficie receptora y se colocan en una matriz . La iluminación en la escena se puede expresar entonces como una ecuación matricial (o equivalentemente un sistema de ecuaciones lineales ) que se puede resolver mediante métodos del álgebra lineal . [49] [50] : 46  [24] : 888, 896 

La solución de la ecuación de radiosidad proporciona la cantidad total de luz emitida y reflejada por cada parche, que se divide por el área para obtener un valor llamado radiosidad que se puede utilizar al rasterizar o trazar rayos para determinar el color de los píxeles correspondientes a las partes visibles del parche. Para la representación en tiempo real, este valor (o más comúnmente la irradiancia , que no depende del albedo de la superficie local) se puede calcular previamente y almacenar en una textura (llamada mapa de irradiancia ) o almacenar como datos de vértice para modelos 3D. Esta característica se utilizó en el software de visualización arquitectónica para permitir recorridos en tiempo real del interior de un edificio después de calcular la iluminación. [24] : 890  [9] : 11.5.1  [51] : 332 

El gran tamaño de las matrices utilizadas en la radiosidad clásica (el cuadrado del número de parches) causa problemas para las escenas realistas. Las implementaciones prácticas pueden utilizar iteraciones de Jacobi o Gauss-Seidel , lo que equivale (al menos en el caso de Jacobi) a simular la propagación de la luz un rebote a la vez hasta que la cantidad de luz restante (aún no absorbida por las superficies) sea insignificante. El número de iteraciones (rebotes) requeridos depende de la escena, no del número de parches, por lo que el trabajo total es proporcional al cuadrado del número de parches (comparado con el cubo para la eliminación gaussiana ). Los factores de forma se pueden volver a calcular cuando sean necesarios, para evitar almacenar una matriz completa en la memoria. [24] : 901, 907 

La calidad de la representación suele estar determinada por el tamaño de los parches, por ejemplo, se necesitan mallas muy finas para representar los bordes de las sombras con precisión. Una mejora importante es la radiosidad jerárquica , que utiliza una malla más gruesa (parches más grandes) para simular la transferencia de luz entre superficies que están alejadas entre sí y subdivide los parches de forma adaptativa según sea necesario. Esto permite utilizar la radiosidad para escenas mucho más grandes y complejas. [24] : 975, 939 

Las versiones alternativas y extendidas del método de radiosidad admiten superficies no lambertianas, como superficies brillantes y espejos, y a veces utilizan volúmenes o "grupos" de objetos, así como parches de superficie. La radiosidad estocástica o de Monte Carlo utiliza un muestreo aleatorio de varias maneras, por ejemplo, tomando muestras de luz incidente en lugar de integrar sobre todos los parches, lo que puede mejorar el rendimiento pero agrega ruido (este ruido se puede reducir utilizando iteraciones deterministas como paso final, a diferencia del ruido de rastreo de trayectoria). Las versiones simplificadas y parcialmente precalculadas de la radiosidad se utilizan ampliamente para la representación en tiempo real, combinadas con técnicas como la radiosidad de octree que almacenan aproximaciones del campo de luz . [24] : 979, 982  [50] : 49  [52] [9] : 11.5 

Rastreo de ruta

Como parte del enfoque conocido como renderizado basado en la física , el trazado de trayectorias se ha convertido en la técnica dominante para renderizar escenas realistas, incluidos los efectos para películas. [53] Por ejemplo, el popular software 3D de código abierto Blender utiliza el trazado de trayectorias en su renderizador Cycles. [54] Las imágenes producidas utilizando el trazado de trayectorias para la iluminación global son generalmente más ruidosas que cuando se utiliza la radiosidad (el principal algoritmo competidor para la iluminación realista), pero la radiosidad puede ser difícil de aplicar a escenas complejas y es propensa a los artefactos que surgen del uso de una representación teselada de la irradiancia . [53] [24] : 975-976, 1045 

Al igual que el trazado de rayos distribuido , el trazado de trayectorias es un tipo de trazado de rayos aleatorio o estocástico que utiliza la integración de Monte Carlo o cuasi-Monte Carlo . Fue propuesto y nombrado en 1986 por Jim Kajiya en el mismo artículo que la ecuación de renderizado . Kajiya observó que gran parte de la complejidad del trazado de rayos distribuido podría evitarse trazando solo una única trayectoria desde la cámara a la vez (en la implementación de Kajiya, esta regla de "sin ramificación" se rompió al rastrear rayos adicionales desde cada punto de intersección de la superficie hasta puntos elegidos aleatoriamente en cada fuente de luz). Kajiya sugirió reducir el ruido presente en las imágenes de salida mediante el uso de muestreo estratificado y muestreo de importancia para tomar decisiones aleatorias, como elegir qué rayo seguir en cada paso de una trayectoria. Incluso con estas técnicas, el trazado de trayectorias no habría sido práctico para la renderización de películas, utilizando las computadoras disponibles en ese momento, porque el costo computacional de generar suficientes muestras para reducir la varianza a un nivel aceptable era demasiado alto. Monster House , el primer largometraje renderizado íntegramente mediante trazado de trayectorias, no se estrenó hasta 20 años después. [25] [53] [55]

En su forma básica, el rastreo de trayectorias es ineficiente (requiere demasiadas muestras) para renderizar cáusticos y escenas donde la luz entra indirectamente a través de espacios estrechos. Se hicieron intentos para abordar estas debilidades en la década de 1990. El rastreo de trayectorias bidireccional tiene similitudes con el mapeo de fotones , rastreando rayos de la fuente de luz y la cámara por separado, y luego encontrando formas de conectar estas trayectorias (pero a diferencia del mapeo de fotones, generalmente muestrea nuevas trayectorias de luz para cada píxel en lugar de usar los mismos datos almacenados en caché para todos los píxeles). El transporte de luz Metropolis muestrea trayectorias modificando trayectorias que se trazaron previamente, dedicando más tiempo a explorar trayectorias que son similares a otras trayectorias "brillantes", lo que aumenta la posibilidad de descubrir trayectorias aún más brillantes. El muestreo de importancia múltiple proporciona una forma de reducir la varianza al combinar muestras de más de un método de muestreo, particularmente cuando algunas muestras son mucho más ruidosas que otras. [53] [28]

Este trabajo posterior fue resumido y ampliado en la tesis doctoral de Eric Veach de 1997, que ayudó a aumentar el interés en el trazado de rutas en la comunidad de gráficos por computadora. El renderizador Arnold , lanzado por primera vez en 1998, demostró que el trazado de rutas era práctico para renderizar fotogramas para películas y que existía una demanda de renderización imparcial y basada en la física en la industria cinematográfica; comenzaron a aparecer otros renderizadores de trazado de rutas comerciales y de código abierto. El costo computacional se abordó con rápidos avances en el rendimiento de la CPU y el clúster . [53]

La relativa simplicidad del trazado de rutas y su naturaleza como un método de Monte Carlo (muestreo de cientos o miles de rutas por píxel) lo han hecho atractivo para implementar en una GPU , especialmente en GPU recientes que admiten la tecnología de aceleración de trazado de rayos como RTX y OptiX de Nvidia . [56] Sin embargo, el trazado de rutas bidireccional y el transporte de luz Metropolis son más difíciles de implementar de manera eficiente en una GPU. [57] [58]

La investigación para mejorar el rastreo de trayectorias continúa. Los enfoques recientes de guía de trayectorias construyen aproximaciones de la distribución de probabilidad del campo de luz en cada volumen del espacio, de modo que las trayectorias se puedan muestrear de manera más efectiva. [59] Se han desarrollado muchas técnicas para eliminar el ruido de la salida del rastreo de trayectorias, reduciendo el número de trayectorias necesarias para lograr una calidad aceptable, con el riesgo de perder algún detalle o introducir artefactos de pequeña escala que son más objetables que el ruido; [60] [61] las redes neuronales se utilizan ahora ampliamente para este propósito. [62] [63] [64]

Representación neuronal

La representación neuronal es un método de representación que utiliza redes neuronales artificiales . [65] [66] La representación neuronal incluye métodos de representación basados ​​en imágenes que se utilizan para reconstruir modelos 3D a partir de imágenes bidimensionales. [65] Uno de estos métodos es la fotogrametría , que es un método en el que una colección de imágenes desde múltiples ángulos de un objeto se convierten en un modelo 3D. También ha habido desarrollos recientes en la generación y representación de modelos 3D a partir de texto y pinturas gruesas por parte de Nvidia , Google y varias otras empresas.

Base científica y matemática

La implementación de un renderizador realista siempre tiene algún elemento básico de simulación o emulación física: algún cálculo que se asemeja o abstrae un proceso físico real.

El término " basado físicamente " indica el uso de modelos físicos y aproximaciones que son más generales y ampliamente aceptados fuera del ámbito de la renderización. Un conjunto particular de técnicas relacionadas se han ido estableciendo gradualmente en la comunidad de renderización.

Los conceptos básicos son relativamente sencillos, pero difíciles de calcular; y no se ha logrado encontrar un único algoritmo o enfoque elegante para los renderizadores de uso más general. Para satisfacer las demandas de solidez, precisión y practicidad, una implementación será una combinación compleja de diferentes técnicas.

La investigación sobre renderizado se ocupa tanto de la adaptación de modelos científicos como de su aplicación eficiente.

Las matemáticas utilizadas en la representación incluyen: álgebra lineal , cálculo , matemáticas numéricas , procesamiento de señales y métodos de Monte Carlo .

La ecuación de renderizado

Este es el concepto académico/teórico clave en el campo de la representación. Sirve como la expresión formal más abstracta del aspecto no perceptual de la representación. Todos los algoritmos más completos pueden considerarse soluciones a formulaciones particulares de esta ecuación.

Significado: en una posición y dirección determinadas, la luz saliente (L o ) es la suma de la luz emitida (L e ) y la luz reflejada. La luz reflejada es la suma de la luz entrante (L i ) de todas las direcciones, multiplicada por la reflexión de la superficie y el ángulo de entrada. Al conectar la luz saliente con la luz entrante, a través de un punto de interacción, esta ecuación representa todo el "transporte de luz" (todo el movimiento de la luz) en una escena.

La función de distribución de reflectancia bidireccional

La función de distribución de reflectancia bidireccional (BRDF) expresa un modelo simple de interacción de la luz con una superficie de la siguiente manera:

La interacción de la luz a menudo se aproxima mediante modelos aún más simples: reflexión difusa y reflexión especular, aunque ambos TAMBIÉN pueden ser BRDF.

Óptica geométrica

La renderización se ocupa prácticamente de manera exclusiva del aspecto de partículas de la física de la luz, conocido como óptica geométrica . Tratar la luz, en su nivel básico, como partículas que rebotan es una simplificación, pero apropiada: los aspectos ondulatorios de la luz son insignificantes en la mayoría de las escenas y son significativamente más difíciles de simular. Los fenómenos notables del aspecto ondulatorio incluyen la difracción (como se ve en los colores de los CD y DVD ) y la polarización (como se ve en las pantallas LCD ). Ambos tipos de efectos, si son necesarios, se realizan mediante un ajuste orientado a la apariencia del modelo de reflexión.

Percepción visual

Aunque recibe menos atención, la comprensión de la percepción visual humana es valiosa para la representación. Esto se debe principalmente a que las pantallas de imágenes y la percepción humana tienen rangos restringidos. Un renderizador puede simular una amplia gama de brillo y color de luz, pero las pantallas actuales (pantalla de cine, monitor de computadora, etc.) no pueden manejar tanto, y algo debe descartarse o comprimirse. La percepción humana también tiene límites, por lo que no es necesario que se le proporcionen imágenes de gran alcance para crear realismo. Esto puede ayudar a resolver el problema de encajar imágenes en las pantallas y, además, sugerir qué atajos se podrían utilizar en la simulación de renderizado, ya que ciertas sutilezas no serán perceptibles. Este tema relacionado es el mapeo de tonos .

Muestreo y filtrado

Un problema que cualquier sistema de renderizado debe afrontar, sin importar el enfoque que adopte, es el problema del muestreo . Básicamente, el proceso de renderizado intenta representar una función continua desde el espacio de la imagen hasta los colores utilizando un número finito de píxeles. Como consecuencia del teorema de muestreo de Nyquist-Shannon (o teorema de Kotelnikov), cualquier forma de onda espacial que se pueda mostrar debe constar de al menos dos píxeles, lo que es proporcional a la resolución de la imagen . En términos más simples, esto expresa la idea de que una imagen no puede mostrar detalles, picos o valles en color o intensidad, que sean más pequeños que un píxel.

Si se utiliza un algoritmo de renderizado ingenuo sin ningún tipo de filtrado, las frecuencias altas en la función de imagen provocarán un efecto de aliasing desagradable en la imagen final. El efecto de aliasing normalmente se manifiesta como bordes irregulares en los objetos donde la cuadrícula de píxeles es visible. Para eliminar el efecto de aliasing, todos los algoritmos de renderizado (si quieren producir imágenes atractivas) deben utilizar algún tipo de filtro de paso bajo en la función de imagen para eliminar las frecuencias altas, un proceso denominado antialiasing .

Hardware

La renderización suele estar limitada por la potencia de procesamiento disponible y el ancho de banda de la memoria , por lo que se ha desarrollado hardware especializado para acelerarla, en particular para la renderización en tiempo real . Se requieren características de hardware como un búfer de cuadros para gráficos rasterizados para mostrar el resultado de la renderización de manera fluida en tiempo real.

Historia

En la era de los monitores vectoriales (también llamados pantallas caligráficas ), una unidad de procesamiento de pantalla (DPU) era una CPU o coprocesador dedicado que mantenía una lista de elementos visuales y los redibujaba continuamente en la pantalla controlando un haz de electrones . Las DPU avanzadas como el Line Drawing System-1 de Evans & Sutherland (y modelos posteriores producidos en la década de 1980) incorporaron funciones de transformación de coordenadas 3D para acelerar la representación de imágenes de estructura alámbrica . [20] : 93–94, 404–421  [67] Evans & Sutherland también fabricó el sistema de proyección de planetario Digistar , que era una pantalla vectorial que podía representar tanto estrellas como gráficos de estructura alámbrica (los Digistar y Digistar II basados ​​en vectores se usaron en muchos planetarios, y algunos aún pueden estar en funcionamiento). [68] [69] [70] Se utilizó un prototipo de Digistar para renderizar campos de estrellas en 3D para la película Star Trek II: La ira de Khan , algunas de las primeras secuencias de gráficos de computadora en 3D jamás vistas en un largometraje. [71]

En los años 1970 y principios de los 1980, la representación de gráficos 3D sombreados se implementaba generalmente en computadoras de propósito general, como la PDP-10 utilizada por investigadores de la Universidad de Utah [72] [36] . Era difícil acelerar el proceso utilizando hardware especializado porque implica una serie de pasos complejos, que requieren direccionamiento de datos, toma de decisiones y capacidades de cálculo que normalmente solo proporcionan las CPU (aunque se propusieron circuitos dedicados para acelerar operaciones particulares [72] ). A veces se utilizaban supercomputadoras o computadoras o clústeres multi-CPU especialmente diseñados para el trazado de rayos. [39] En 1981, James H. Clark y Marc Hannah diseñaron el Geometry Engine, un chip VLSI para realizar algunos de los pasos del proceso de rasterización 3D, y fundaron la empresa Silicon Graphics (SGI) para comercializar esta tecnología. [73] [74]

Los ordenadores domésticos y las consolas de juegos de la década de 1980 contenían coprocesadores gráficos capaces de desplazarse y rellenar áreas de la pantalla, y dibujar sprites y líneas, aunque no eran útiles para renderizar imágenes realistas. [75] [76] Hacia finales de la década de 1980, empezaron a aparecer tarjetas gráficas para PC y juegos arcade con aceleración de renderizado 3D, y en la década de 1990 dicha tecnología se volvió común. Hoy en día, incluso los procesadores móviles de bajo consumo suelen incorporar funciones de aceleración de gráficos 3D. [73] [77]

GPU

Los aceleradores de gráficos 3D de la década de 1990 evolucionaron hasta convertirse en las GPU modernas. Las GPU son procesadores de propósito general, como las CPU , pero están diseñadas para tareas que se pueden dividir en muchas subtareas pequeñas, similares y en su mayoría independientes (como la representación de píxeles individuales) y que se pueden realizar en paralelo . Esto significa que una GPU puede acelerar cualquier algoritmo de representación que se pueda dividir en subtareas de esta manera, a diferencia de los aceleradores 3D de la década de 1990 que solo se diseñaron para acelerar algoritmos de rasterización específicos y efectos de sombreado e iluminación simples (aunque se podían usar trucos para realizar cálculos más generales). [9] : ch3  [78]

Debido a sus orígenes, las GPU generalmente aún brindan aceleración de hardware especializada para algunos pasos de una tubería de rasterización 3D tradicional , incluida la eliminación de superficies ocultas usando un búfer z y el mapeo de texturas con mipmaps , pero estas características ya no siempre se usan. [9] : ch3  Las GPU recientes tienen características para acelerar la búsqueda de intersecciones de rayos con una jerarquía de volumen delimitador , para ayudar a acelerar todas las variantes de trazado de rayos y trazado de rutas , [41] así como características de aceleración de redes neuronales a veces útiles para la renderización. [79]

Las GPU suelen estar integradas con sistemas de memoria de gran ancho de banda para soportar los requisitos de ancho de banda de lectura y escritura de la renderización en tiempo real de alta resolución, en particular cuando se requieren múltiples pasadas para renderizar un fotograma; sin embargo, la latencia de la memoria puede ser mayor que en una CPU, lo que puede ser un problema si la ruta crítica en un algoritmo involucra muchos accesos a la memoria. El diseño de la GPU acepta la alta latencia como inevitable (en parte porque una gran cantidad de subprocesos comparten el bus de memoria ) e intenta "ocultarla" al cambiar de manera eficiente entre subprocesos, de modo que un subproceso diferente pueda realizar cálculos mientras el primer subproceso espera que se complete una lectura o escritura. [9] : ch3  [80] [81]

Los algoritmos de renderizado se ejecutarán de manera eficiente en una GPU solo si se pueden implementar utilizando pequeños grupos de subprocesos que realizan principalmente las mismas operaciones. Como ejemplo de código que cumple con este requisito: al renderizar un pequeño cuadrado de píxeles en una imagen simple con trazado de rayos , es probable que todos los subprocesos intersequen rayos con el mismo objeto y realicen los mismos cálculos de iluminación. Por razones de rendimiento y arquitectura, las GPU ejecutan grupos de alrededor de 16 a 64 subprocesos llamados warps o wavefronts en sincronía (todos los subprocesos del grupo ejecutan las mismas instrucciones al mismo tiempo). Si no todos los subprocesos del grupo necesitan ejecutar bloques de código particulares (debido a las condiciones), algunos subprocesos estarán inactivos o se descartarán los resultados de sus cálculos, lo que provocará una degradación del rendimiento. [9] : ch3  [81]

Cronología de algoritmos y técnicas

A continuación se presenta una cronología aproximada de las técnicas de renderización mencionadas con frecuencia, incluidas las áreas de investigación actuales. Cabe señalar que incluso en los casos en los que se mencionó una idea en un artículo específico, casi siempre hubo varios investigadores o equipos trabajando en la misma área (incluidos trabajos relacionados anteriores). Cuando se propone un método por primera vez, suele ser muy ineficiente y se necesitan investigaciones adicionales y esfuerzos prácticos para convertirlo en una técnica útil. [24] : 887 

La lista se centra en la investigación académica y no incluye el hardware. (Para obtener más información sobre la historia, consulte #Enlaces externos, así como Gráficos por computadora#Historia y La edad de oro de los videojuegos arcade#Tecnología ).

Véase también

Referencias

  1. ^ "¿Qué es un motor de renderizado? | Diccionario". Archivado desde el original el 21 de febrero de 2024. Consultado el 21 de febrero de 2024 .
  2. ^ abcdef Raghavachary, Saty (2005). Rendering para principiantes . Focal Press. ISBN 0-240-51935-3.
  3. ^ de Adobe Systems Incorporated (1990). Manual de referencia del lenguaje PostScript (2.ª edición). Addison-Wesley Publishing Company. ISBN 0-201-18127-4.
  4. ^ ab «SVG: Scalable Vector Graphics». Mozilla Corporation. 7 de agosto de 2024. Archivado desde el original el 24 de agosto de 2024. Consultado el 31 de agosto de 2024 .
  5. ^ ab Hughes, John F.; Van Dam, Andries ; McGuire, Morgan; Sklar, David F.; Foley, James D. ; Feiner, Steven K.; Akeley, Kurt (2014). Gráficos por computadora: principios y práctica (3.ª ed.). Addison-Wesley. ISBN 978-0-321-39952-6.
  6. ^ ab "Manual de Blender 4.2: Importación y exportación de archivos". docs.blender.org . The Blender Foundation. Archivado desde el original el 31 de agosto de 2024 . Consultado el 31 de agosto de 2024 .
  7. ^ Pharr, Matt; Jakob, Wenzel; Humphreys, Greg (2023). «Formato de archivo de entrada pbrt-v4» . Consultado el 31 de agosto de 2024 .
  8. ^ de Dunlop, Renee (2014). Fundamentos del proceso de producción para películas y videojuegos . Focal Press. ISBN 978-1-315-85827-2.
  9. ^ abcdefghijklmnopqrs Akenine-Möller, Tomas; Haines, Eric; Hoffman, Naty; Pesce, Angelo; Iwanicki, Michał; Hillaire, Sébastien (2018). Real-Time Rendering (4.ª ed.). Boca Raton, FL: AK Peters/CRC Press. ISBN 978-1138627000.
  10. ^ "Acerca de OpenVDB". www.openvdb.org . Academy Software Foundation. Archivado desde el original el 3 de septiembre de 2024 . Consultado el 31 de agosto de 2024 .
  11. ^ Museth, Ken (junio de 2013). "VDB: volúmenes dispersos de alta resolución con topología dinámica" (PDF) . ACM Transactions on Graphics . 32 (3). doi :10.1145/2487228.2487235. Archivado (PDF) del original el 15 de abril de 2024 . Consultado el 31 de agosto de 2024 .
  12. ^ Bridson, Robert (2015). Simulación de fluidos para gráficos por computadora (2.ª edición). AK Peters/CRC Press. ISBN 978-1-482-23283-7.
  13. ^ Schmid, Katrin (2 de marzo de 2023). "Una breve historia de 170 años de campos de radiación neuronal (NeRF), hologramas y campos de luz". radiancefields.com . Archivado desde el original el 31 de agosto de 2024 . Consultado el 31 de agosto de 2024 .
  14. ^ ab Mildenhall, Ben; Srinivasan, Pratul P.; Tancik, Matthew; Barron, Jonathan T.; Ramamoorthi, Ravi; Ng, Ren (2020). "NeRF: Representación de escenas como campos de radiancia neuronal para la síntesis de vistas" . Consultado el 31 de agosto de 2024 .
  15. ^ ab Kerbl, Bernhard; Kopanas, Georgios; Leimkühler, Thomas; Drettakis, George (julio de 2023). «3D Gaussian Splatting for Real-Time Radiance Field Rendering». ACM Transactions on Graphics . 42 (4): 1–14. arXiv : 2308.04079 . doi :10.1145/3592433. Archivado desde el original el 22 de agosto de 2024. Consultado el 31 de agosto de 2024 .
  16. ^ ab Pharr, Matt; Jakob, Wenzel; Humphreys, Greg (2023). «Guía del usuario de pbrt-v4». Archivado desde el original el 3 de septiembre de 2024. Consultado el 31 de agosto de 2024 .
  17. ^ ab Brinkmann, Ron (2008). El arte y la ciencia de la composición digital (2.ª ed.). Morgan Kaufmann. ISBN 978-0-12-370638-6.
  18. ^ "Manual de Blender 4.2: Renderizado: Salida de renderizado: Animaciones de renderizado". docs.blender.org . The Blender Foundation. Archivado desde el original el 31 de agosto de 2024 . Consultado el 31 de agosto de 2024 .
  19. ^ abcdefgh Marschner, Steve; Shirley, Peter (2022). Fundamentos de gráficos por computadora (quinta edición). CRC Press. ISBN 978-1-003-05033-9.
  20. ^ abcdef Foley, James D. ; Van Dam, Andries (1982). Fundamentos de gráficos interactivos por computadora . Addison-Wesley Publishing Company, Inc. ISBN 0-201-14468-9.
  21. ^ abcdefghij Haines, Eric; Shirley, Peter (25 de febrero de 2019). "1. Terminología del trazado de rayos". Ray Tracing Gems: renderizado de alta calidad y en tiempo real con DXR y otras API. Berkeley, CA: Apress. doi :10.1007/978-1-4842-4427-2. ISBN 978-1-4842-4427-2. S2CID  71144394. Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  22. ^ abcde Akenine-Möller, Tomas; Haines, Eric; Hoffman, Naty; Pesce, Angelo; Iwanicki, Michał; Hillaire, Sébastien (6 de agosto de 2018). "Capítulo en línea 26. Trazado de rayos en tiempo real" (PDF) . Representación en tiempo real (4.ª ed.). Boca Raton, FL: AK Peters/CRC Press. ISBN 978-1138627000. Archivado (PDF) del original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  23. ^ Cook, Robert L. (11 de abril de 2019) [1989]. "5. Muestreo estocástico y trazado de rayos distribuido". En Glassner, Andrew S. (ed.). Introducción al trazado de rayos (PDF) . 1.3. PRENSA ACADÉMICA. ISBN 978-0-12-286160-4. Archivado (PDF) del original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  24. ^ abcdefghijk Glassner, Andrew S. (2011) [1995]. Principios de síntesis de imágenes digitales (PDF) . 1.0.1. Morgan Kaufmann Publishers, Inc. ISBN 978-1-55860-276-2. Archivado (PDF) del original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  25. ^ abcde Kajiya, James T. (agosto de 1986). "La ecuación de renderizado". ACM SIGGRAPH Computer Graphics . 20 (4): 143–150. doi :10.1145/15886.15902. Archivado desde el original el 3 de septiembre de 2024. Consultado el 27 de enero de 2024 .
  26. ^ abcd Glassner, Andrew S. (11 de abril de 2019) [1989]. "1. Una descripción general del trazado de rayos". Introducción al trazado de rayos (PDF) . 1.3. PRENSA ACADÉMICA. ISBN 978-0-12-286160-4. Archivado (PDF) del original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  27. ^ Arvo, James (agosto de 1986). Trazado de rayos hacia atrás (notas del curso) (PDF) . SIGGRAPH 1986 Developments in Ray Tracing. Vol. 12. CiteSeerX 10.1.1.31.581 . Consultado el 5 de octubre de 2024 . 
  28. ^ ab Veach, Eric (1997). Métodos robustos de Monte Carlo para la simulación del transporte de luz (PDF) (tesis doctoral). Universidad de Stanford.
  29. ^ Dutré, Felipe; Bala, Kavita; Bekaert, Philippe (2015). Iluminación global avanzada (2ª ed.). AK Peters/Prensa CRC. ISBN 978-1-4987-8562-4.
  30. ^ "Manual de Unity: Sondas de luz: Introducción". docs.unity3d.com . Archivado desde el original el 3 de septiembre de 2024 . Consultado el 27 de enero de 2024 .
  31. ^ "Manual de Blender: Renderizado: EEVEE: Sondas de luz: Introducción". docs.blender.org . The Blender Foundation. Archivado desde el original el 24 de marzo de 2024 . Consultado el 27 de enero de 2024 .
  32. ^ ab Warnock, John (junio de 1969), Un algoritmo de superficie oculta para imágenes de medios tonos generadas por computadora, Universidad de Utah, TR 69-249 , consultado el 19 de septiembre de 2024
  33. ^ ab Bouknight, WJ (1970). "Un procedimiento para la generación de presentaciones de gráficos informáticos tridimensionales de semitonos". Comunicaciones de la ACM . 13 (9): 527–536. doi : 10.1145/362736.362739 . S2CID  15941472.
  34. ^ Stamm, Beat (21 de junio de 2018). "La tragedia del raster en baja resolución revisitada: oportunidades y desafíos más allá de la "insinuación delta"". rastertragedy.com . Consultado el 19 de septiembre de 2024 .
  35. ^ ab Watkins, Gary Scott (junio de 1970), A Real Time Visible Surface Algorithm, Universidad de Utah , consultado el 19 de septiembre de 2024
  36. ^ abcde Catmull, Edwin (diciembre de 1974). Un algoritmo de subdivisión para la visualización por computadora de superficies curvas (PDF) (tesis doctoral). Universidad de Utah . Consultado el 19 de septiembre de 2024 .
  37. ^ ab Carpenter, Loren (julio de 1984). "El A-buffer, un método de superficie oculta antialiasing". Computer Graphics . 18 (3): 103–108. doi :10.1145/964965.808585.
  38. ^ ab Cook, Robert L. ; Carpenter, Loren ; Catmull, Edwin (julio de 1987). "La arquitectura de renderizado de imágenes de Reyes" (PDF) . ACM SIGGRAPH Computer Graphics . 21 (4). Association for Computing Machinery: 95–102. doi :10.1145/37402.37414. ISSN  0097-8930. Archivado (PDF) desde el original el 15 de julio de 2011 . Consultado el 19 de septiembre de 2024 .
  39. ^ abc Arvo, James; Kirk, David (11 de abril de 2019) [1989]. "6. Un estudio de las técnicas de aceleración del trazado de rayos". En Glassner, Andrew S. (ed.). Introducción al trazado de rayos (PDF) . 1.3. PRENSA ACADÉMICA. ISBN 978-0-12-286160-4. Recuperado el 13 de septiembre de 2024 .
  40. ^ ab Appel, A. (1968). "Algunas técnicas para sombrear representaciones de sólidos por máquina" (PDF) . Actas de la Conferencia Conjunta de Computación de Primavera . Vol. 32. págs. 37–49. Archivado (PDF) desde el original el 13 de marzo de 2012. Consultado el 19 de septiembre de 2024 .
  41. ^ ab Stich, Martin (25 de febrero de 2019). "Prólogo". En Haines, Eric; Akenine-Möller, Tomas (eds.). Ray Tracing Gems: renderizado de alta calidad y en tiempo real con DXR y otras API. Berkeley, CA: Apress. doi :10.1007/978-1-4842-4427-2. ISBN 978-1-4842-4427-2. S2CID  71144394 . Consultado el 13 de septiembre de 2024 .
  42. ^ Hanrahan, Pat (11 de abril de 2019) [1989]. "2. Un estudio de los algoritmos de intersección de rayos y superficies". En Glassner, Andrew S. (ed.). Introducción al trazado de rayos (PDF) . 1.3. PRENSA ACADÉMICA. ISBN 978-0-12-286160-4. Archivado (PDF) del original el 27 de enero de 2024 . Consultado el 22 de septiembre de 2024 .
  43. ^ Christensen, Per H.; Jarosz, Wojciech (27 de octubre de 2016). "El camino hacia las películas con trazado de trayectorias" (PDF) . Fundamentos y tendencias en gráficos y visión por computadora . 10 (2): 103–175. arXiv : 1611.02145 . doi :10.1561/0600000073 . Consultado el 26 de octubre de 2024 .
  44. ^ Liu, Edward; Llamas, Ignacio; Cañada, Juan; Kelly, Patrick (25 de febrero de 2019). "19: Cinematic Rendering in UE4 with Real-Time Ray Tracing and Denoising". Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs (Joyas del trazado de rayos: renderizado de alta calidad y en tiempo real con DXR y otras API). Berkeley, CA: Apress. doi :10.1007/978-1-4842-4427-2. ISBN . 978-1-4842-4427-2. S2CID  71144394. Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  45. ^ Boksansky, Jakub; Wimmer, Michael; Bittner, Jiri (25 de febrero de 2019). "13. Sombras con trazado de rayos: mantenimiento de frecuencias de cuadros en tiempo real". Ray Tracing Gems: renderizado de alta calidad y en tiempo real con DXR y otras API. Berkeley, CA: Apress. doi :10.1007/978-1-4842-4427-2. ISBN 978-1-4842-4427-2. S2CID  71144394. Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  46. ^ "Blog de Khronos: trazado de rayos en Vulkan". www.khronos.org . The Khronos® Group Inc. 15 de diciembre de 2020 . Consultado el 27 de enero de 2024 .
  47. ^ Alain, Riazuelo (marzo de 2019). "Viendo la relatividad-I: trazado de rayos en una métrica de Schwarzschild para explorar la extensión analítica máxima de la métrica y hacer una representación adecuada de las estrellas". Revista Internacional de Física Moderna D . 28 (2). arXiv : 1511.06025 . doi :10.1142/S0218271819500421.
  48. ^ Howard, Andrew; Dance, Sandy; Kitchen, Les (24 de julio de 1995), Trazado de rayos relativista: simulación de la apariencia visual de objetos en rápido movimiento, Universidad de Melbourne, Departamento de Ciencias de la Computación , consultado el 26 de octubre de 2024
  49. ^ ab Goral, Cindy M.; Torrance, Kenneth E.; Greenberg, Donald P .; Battaile, Bennett (julio de 1984). "Modelado de la interacción de la luz entre superficies difusas" (PDF) . Actas de la 11.ª conferencia anual sobre gráficos por ordenador y técnicas interactivas . Vol. 18. Association for Computing Machinery. págs. 213–222. doi :10.1145/800031.808601. ISBN . 0-89791-138-5. ISSN  0097-8930 . Consultado el 8 de octubre de 2024 .
  50. ^ ab Dutré, Philip (29 de septiembre de 2003), Compendio de iluminación global: la guía concisa de algoritmos de iluminación global , consultado el 6 de octubre de 2024
  51. ^ Cohen, Michael F. ; Wallace, John R. (1993). Radiosidad y síntesis de imágenes realistas . Academic Press. ISBN 0-12-178270-0.
  52. ^ Bekaert, Philippe (1999). Algoritmos jerárquicos y estocásticos para radiosidad (Tesis). Departamento de Ciencias Informáticas, KU Leuven.
  53. ^ abcde Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "1.6". Representación basada en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  54. ^ "Manual de Blender: Renderizado: Ciclos: Introducción". docs.blender.org . The Blender Foundation. Archivado desde el original el 3 de septiembre de 2024 . Consultado el 27 de enero de 2024 .
  55. ^ Kulla, Christopher (30 de julio de 2017), Arnold en Sony Pictures Imageworks: De Monster House a Los Pitufos: La aldea perdida (diapositivas del curso) (PDF) , SIGGRAPH, Los Ángeles{{citation}}: CS1 maint: location missing publisher (link)
  56. ^ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "15. Representación de frente de onda en GPU". Representación basada en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  57. ^ Otte, Vilém (2015). Seguimiento de ruta bidireccional en GPU (PDF) (tesis de maestría). Universidad Masaryk, Brno.
  58. ^ Schmidt, Martin; Lobachev, Oleg; Guthe, Michael (2016). "Transporte coherente de luz de metrópolis en la GPU usando mutaciones especulativas" (PDF) . Revista de WSCG . 24 (1): 1–8. ISSN  1213-6972.
  59. ^ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "13. Lectura adicional: Guía de rutas". Representación basada en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026. Recuperado el 8 de septiembre de 2024 .
  60. ^ Pharr, Matt ; Jakob, Wenzel; Humphreys, Greg (28 de marzo de 2023). "5. Lectura adicional: eliminación de ruido". Renderizado basado en la física: de la teoría a la implementación (4.ª ed.). Cambridge, Massachusetts: The MIT Press. ISBN 978-0262048026Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  61. ^ "Manual de Blender: Renderizado: Ciclos: Optimización de renderizados: Reducción de ruido". docs.blender.org . The Blender Foundation. Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  62. ^ "Manual de Blender: Renderizado: Ciclos: Ajustes de renderizado: Muestreo". docs.blender.org . The Blender Foundation. Archivado desde el original el 27 de enero de 2024 . Consultado el 27 de enero de 2024 .
  63. ^ "Intel® Open Image Denoise: biblioteca de eliminación de ruido de alto rendimiento para trazado de rayos". www.openimagedenoise.org . Intel Corporation. Archivado desde el original el 6 de enero de 2024 . Consultado el 27 de enero de 2024 .
  64. ^ "Denoiser acelerado por IA de NVIDIA OptiX™". developer.nvidia.com . NVIDIA Corporation. Archivado desde el original el 18 de enero de 2024 . Consultado el 27 de enero de 2024 .
  65. ^ ab Tewari, A.; Frito, O.; Thiès, J.; Sitzmann, V.; Lombardi, S.; Sunkavalli, K.; Martín-Brualla, R.; Simón, T.; Saragih, J.; Nießner, M.; Pandey, R.; Fanello, S.; Wetzstein, G.; Zhu, J.-Y.; Teobaldo, C.; Agrawala, M.; Shechtman, E.; Goldman, DB; Zollhöfer, M. (2020). "Estado del arte sobre renderizado neuronal". Foro de gráficos por computadora . 39 (2): 701–727. arXiv : 2004.03805 . doi :10.1111/cgf.14022. S2CID  215416317.
  66. ^ Knight, Will. "Un nuevo truco permite a la inteligencia artificial ver en 3D". Wired . ISSN  1059-1028. Archivado desde el original el 2022-02-07 . Consultado el 2022-02-08 .
  67. ^ Sistema multiimagen Evans & Sutherland (folleto), Evans & Sutherland Corporation, 1979
  68. ^ "Museo de Ciencias de la Ciudad de Nagoya - Guía de exposiciones - Digistar II". www.ncsm.city.nagoya.jp . Museo de Ciencias de la Ciudad de Nagoya . Consultado el 13 de septiembre de 2024 .
  69. ^ "Evans_and_Sutherland Digistar-II". planetariums-database.org . Base de datos mundial de planetarios . Consultado el 13 de septiembre de 2024 .
  70. ^ "Listado de planetarios que utilizan un Evans_and_Sutherland Digistar-II". planetariums-database.org . Base de datos mundial de planetarios . Consultado el 13 de septiembre de 2024 .
  71. ^ Smith, Alvy Ray (octubre de 1982). «Efectos especiales para Star Trek II: The Genesis Demo» (PDF) . American Cinematographer : 1038. Consultado el 13 de septiembre de 2024 .
  72. ^ ab Bùi, Tường-Phong (1973). Iluminación para imágenes generadas por computadora (PDF) (tesis doctoral). Universidad de Utah.
  73. ^ ab Peddie, Jon (24 de septiembre de 2020). «Famous Graphics Chips: Geometry Engine». www.computer.org . Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) . Consultado el 13 de septiembre de 2024 .
  74. ^ Clark, James H. (1980). "Estructuración de una arquitectura de sistema VLSI" (PDF) . Lambda (2.º trimestre): 25–30.
  75. ^ Fox, Charles (2024). "11. ARQUITECTURAS RETRO: Diseño de computadoras de 16 bits con Commodore Amiga: comprensión de la arquitectura". Arquitectura de computadoras . No Starch Press. ISBN 978-1-7185-0287-1.
  76. ^ "Wiki para desarrolladores de NES: PPU". www.nesdev.org . wiki de nesdev . Consultado el 13 de septiembre de 2024 .
  77. ^ Harold, David (11 de agosto de 2017). "PowerVR cumple 25 años: la historia de una revolución gráfica". blog.imaginationtech.com . Imagination Technologies Limited . Consultado el 13 de septiembre de 2024 .
  78. ^ Peercy, Mark S.; Olano, Marc; Airey, John; Ungar, P. Jeffrey (2000). "Sombreado interactivo programable de múltiples pasadas" (PDF) . Actas de la 27.ª conferencia anual sobre gráficos por ordenador y técnicas interactivas - SIGGRAPH '00 . pág. 425-432. doi :10.1145/344779.344976. ISBN. 1-58113-208-5. Recuperado el 13 de septiembre de 2024 .
  79. ^ "NVIDIA DLSS 3". nvidia.com . NVIDIA Corporation . Consultado el 13 de septiembre de 2024 .
  80. ^ Lam, Chester (16 de abril de 2021). "Medición de la latencia de la memoria de la GPU". chipsandcheese.com . Chips and Cheese . Consultado el 13 de septiembre de 2024 .
  81. ^ ab Gong, Xun; Gong, Xiang; Yu, Leiming; Kaeli, David (marzo de 2019). "HAWS: Aceleración de la ejecución de frente de onda de GPU mediante ejecución selectiva fuera de orden". ACM Trans. Archit. Code Optim . 16 (2). Association for Computing Machinery. doi :10.1145/3291050 . Consultado el 15 de septiembre de 2024 .
  82. ^ Warnock, John (20 de mayo de 1968), Un algoritmo de línea oculta para la representación de imágenes en semitonos (PDF) , Universidad de Utah, TR 4-5 , consultado el 19 de septiembre de 2024
  83. ^ Gouraud, H. (1971). "Sombreado continuo de superficies curvas" (PDF) . IEEE Transactions on Computers . 20 (6): 623–629. doi :10.1109/tc.1971.223313. S2CID  123827991. Archivado desde el original (PDF) el 2 de julio de 2010.
  84. ^ ab «Historia | Facultad de Informática». Archivado desde el original el 2013-12-03 . Consultado el 2021-11-22 .
  85. ^ ab Phong, BT (1975). "Iluminación para imágenes generadas por computadora" (PDF) . Comunicaciones de la ACM . 18 (6): 311–316. CiteSeerX 10.1.1.330.4718 . doi :10.1145/360825.360839. S2CID  1439868. Archivado desde el original (PDF) el 27 de marzo de 2012. 
  86. ^ Blinn, JF ; Newell, ME (1976). "Textura y reflexión en imágenes generadas por ordenador". Comunicaciones de la ACM . 19 (10): 542–546. CiteSeerX 10.1.1.87.8903 . doi :10.1145/360349.360353. S2CID  408793. 
  87. ^ Blinn, James F. (20 de julio de 1977). "Modelos de reflexión de la luz para imágenes sintetizadas por computadora". ACM SIGGRAPH Computer Graphics . 11 (2): 192–198. doi : 10.1145/965141.563893 – vía dl.acm.org.
  88. ^ Crow, FC (1977). "Algoritmos de sombras para gráficos por ordenador" (PDF) . Computer Graphics (Proceedings of SIGGRAPH 1977) . Vol. 11. págs. 242–248. Archivado desde el original (PDF) el 2012-01-13 . Consultado el 2011-07-15 .
  89. ^ Williams, L. (1978). "Proyección de sombras curvas sobre superficies curvas". Computer Graphics (Actas de SIGGRAPH 1978) . Vol. 12. págs. 270–274. CiteSeerX 10.1.1.134.8225 . 
  90. ^ Blinn, JF (1978). Simulación de superficies arrugadas (PDF) . Computer Graphics (Actas de SIGGRAPH 1978). Vol. 12. págs. 286–292. Archivado (PDF) desde el original el 21 de enero de 2012.
  91. ^ Fuchs, H. ; Kedem, ZM; Naylor, BF (1980). Generación de superficies visibles mediante estructuras de árbol a priori . Computer Graphics (Actas de SIGGRAPH 1980). Vol. 14. págs. 124–133. CiteSeerX 10.1.1.112.4406 . 
  92. ^ Whitted, T. (1980). "Un modelo de iluminación mejorado para visualización sombreada". Comunicaciones de la ACM . 23 (6): 343–349. CiteSeerX 10.1.1.114.7629 . doi :10.1145/358876.358882. S2CID  9524504. 
  93. ^ Cook, RL ; Torrance, KE (1981). Un modelo de reflectancia para gráficos de computadora . Gráficos de computadora (Actas de SIGGRAPH 1981). Vol. 15. págs. 307–316. CiteSeerX 10.1.1.88.7796 . 
  94. ^ Williams, L. (1983). Parametría piramidal . Gráficos por ordenador (Actas de SIGGRAPH 1983). Vol. 17. págs. 1–11. CiteSeerX 10.1.1.163.6298 . 
  95. ^ Glassner, AS (1984). "Subdivisión espacial para trazado rápido de rayos". IEEE Computer Graphics & Applications . 4 (10): 15–22. doi :10.1109/mcg.1984.6429331. S2CID  16965964.
  96. ^ Porter, T.; Duff, T. (1984). Composición de imágenes digitales (PDF) . Computer Graphics (Actas de SIGGRAPH 1984). Vol. 18. págs. 253–259. Archivado (PDF) desde el original el 16 de febrero de 2015.
  97. ^ Cook, RL ; Porter, T.; Carpenter, L. (1984). Trazado de rayos distribuido (PDF) . Gráficos por ordenador (Actas de SIGGRAPH 1984). Vol. 18. págs. 137–145.[ enlace muerto permanente ]
  98. ^ Goral, C.; Torrance, KE; Greenberg, DP ; Battaile, B. (1984). Modelado de la interacción de la luz entre superficies difusas . Gráficos por ordenador (Actas de SIGGRAPH 1984). Vol. 18. págs. 213–222. CiteSeerX 10.1.1.112.356 . 
  99. ^ Cohen, MF ; Greenberg, DP (1985). El hemicubo: una solución de radiosidad para entornos complejos (PDF) . Computer Graphics (Actas de SIGGRAPH 1985). Vol. 19. págs. 31–40. doi :10.1145/325165.325171. Archivado desde el original (PDF) el 24 de abril de 2014 . Consultado el 25 de marzo de 2020 .
  100. ^ Arvo, J. (1986). Trazado de rayos hacia atrás . SIGGRAPH 1986 Notas del curso de Desarrollos en trazado de rayos. CiteSeerX 10.1.1.31.581 . 
  101. ^ Wu, Xiaolin (julio de 1991). Una técnica eficaz de antialiasing. Vol. 25. págs. 143-152. doi :10.1145/127719.122734. ISBN 978-0-89791-436-9. {{cite book}}: |journal=ignorado ( ayuda )
  102. ^ Wu, Xiaolin (1991). "Generación rápida de círculos antialias". En James Arvo (ed.). Gemas gráficas II . San Francisco: Morgan Kaufmann. págs. 446–450. ISBN 978-0-12-064480-3.
  103. ^ Hanrahan, P. ; Salzman, D. ; Aupperle, L. (1991). Un algoritmo rápido de radiosidad jerárquica . Gráficos por ordenador (Actas de SIGGRAPH 1991). Vol. 25. págs. 197–206. CiteSeerX 10.1.1.93.5694 . 
  104. ^ M. Oren y SK Nayar, "Generalización del modelo de reflectancia de Lambert Archivado el 15 de febrero de 2010 en Wayback Machine ". SIGGRAPH, págs. 239-246, julio de 1994
  105. ^ Tumblin, J.; Rushmeier, HE (1993). "Reproducción de tonos para imágenes realistas generadas por computadora" (PDF) . IEEE Computer Graphics & Applications . 13 (6): 42–48. doi :10.1109/38.252554. S2CID  6459836. Archivado (PDF) desde el original el 8 de diciembre de 2011.
  106. ^ Hanrahan, P. ; Krueger, W. (1993). Reflexión desde superficies estratificadas debido a dispersión subsuperficial . Gráficos por ordenador (Actas de SIGGRAPH 1993). Vol. 27. págs. 165–174. CiteSeerX 10.1.1.57.9761 . 
  107. ^ Lafortune, Eric; Willems, Yves (diciembre de 1993). "Trazado de trayectoria bidireccional" (PDF) . Actas de la Tercera Conferencia Internacional sobre Gráficos Computacionales y Técnicas de Visualización (CompuGraphics) . págs. 145–153. Archivado (PDF) desde el original el 21 de mayo de 2022 . Consultado el 2 de septiembre de 2024 .
  108. ^ Miller, Gavin (24 de julio de 1994). "Algoritmos eficientes para sombreado de accesibilidad local y global". Actas de la 21.ª conferencia anual sobre gráficos por ordenador y técnicas interactivas - SIGGRAPH '94 . ACM. págs. 319–326. doi :10.1145/192161.192244. ISBN 978-0897916677. S2CID  15271113. Archivado desde el original el 22 de noviembre de 2021. Consultado el 7 de mayo de 2018 en dl.acm.org.
  109. ^ Jensen, HW ; Christensen, NJ (1995). "Mapas de fotones en el trazado de rayos bidireccional de Monte Carlo de objetos complejos". Computers & Graphics . 19 (2): 215–224. CiteSeerX 10.1.1.97.2724 . doi :10.1016/0097-8493(94)00145-o. 
  110. ^ Veach, Eric; Guibas, Leonidas J. (15 de septiembre de 1995). "Combinación óptima de técnicas de muestreo para renderizado de Monte Carlo". SIGGRAPH95: 22.ª Conferencia Internacional ACM sobre Gráficos por Computadora y Técnicas Interactivas . págs. 419–428. doi :10.1145/218380.218498. Archivado desde el original el 26 de julio de 2024. Consultado el 2 de septiembre de 2024 .
  111. ^ Veach, E. ; Guibas, L. (1997). Metropolis light transport . Computer Graphics (Actas de SIGGRAPH 1997). Vol. 16. págs. 65–76. CiteSeerX 10.1.1.88.944 . 
  112. ^ Veach, E. ; Guibas, L. (1997). Metropolis light transport . Computer Graphics (Actas de SIGGRAPH 1997). Vol. 16. págs. 65–76. CiteSeerX 10.1.1.88.944 . 
  113. ^ Keller, A. (1997). Radiosidad instantánea . Gráficos por ordenador (Actas de SIGGRAPH 1997). Vol. 24. págs. 49–56. CiteSeerX 10.1.1.15.240 . 
  114. ^ Sloan, P.; Kautz, J.; Snyder, J. (2002). Transferencia de radiancia precalculada para renderización en tiempo real en entornos de iluminación dinámicos de baja frecuencia (PDF) . Gráficos por computadora (Actas de SIGGRAPH 2002). Vol. 29. págs. 527–536. Archivado desde el original (PDF) el 24 de julio de 2011.
  115. ^ Loper, Matthew M; Black, Michael J (6 de septiembre de 2014). «OpenDR: un renderizador diferenciable aproximado» (PDF) . Computer Vision - ECCV 2014. Vol. 8695. Zúrich, Suiza: Springer International Publishing. págs. 154–169. doi :10.1007/978-3-319-10584-0_11. Archivado (PDF) desde el original el 24 de junio de 2024. Consultado el 2 de septiembre de 2024 .
  116. ^ Müller, Thomas; Gross, Markus; Novák, Jan (junio de 2017). "Guía práctica de trayectorias para simulación eficiente del transporte de luz". Computer Graphics Forum (Actas de EGSR) . 36 (4). The Eurographs Association y John Wiley & Sons, Ltd.: 91–100. doi :10.1111/cgf.13227 . Consultado el 4 de septiembre de 2024 .
  117. ^ Bitterli, Benedikt; Wyman, Chris; Pharr, Matt; Shirley, Peter; Lefohn, Aaron; Jarosz, Wojciech (julio de 2020). "Remuestreo de reservorio espaciotemporal para trazado de rayos en tiempo real con iluminación directa dinámica". ACM Transactions on Graphics . 39 (4). doi :10.1145/3386569.3392481. Archivado desde el original el 1 de marzo de 2024 . Consultado el 2 de septiembre de 2024 .

Lectura adicional

Enlaces externos