
El renderizado Reyes es una arquitectura de software informático utilizada en gráficos 3D para renderizar imágenes fotorrealistas. Fue desarrollado a mediados de la década de 1980 por Loren Carpenter y Robert L. Cook en el Grupo de Investigación de Gráficos por Computadora de Lucasfilm , ahora Pixar . [ 1 ] Se utilizó por primera vez en 1982 para renderizar imágenes para la secuencia del efecto Génesis en la película Star Trek II: La ira de Khan . RenderMan de Pixar era una implementación del algoritmo Reyes, fue descontinuado en 2016 y eliminado en RenderMan 21. [ 2 ] Según el artículo original que describe el algoritmo, el sistema de renderizado de imágenes Reyes es "Una arquitectura para el renderizado rápido y de alta calidad de imágenes complejas". Reyes se propuso como una colección de algoritmos y sistemas de procesamiento de datos. Sin embargo, los términos "algoritmo" y "arquitectura" se han llegado a usar como sinónimos en este contexto y se usan indistintamente en este artículo.
Nombre
Reyes es un acrónimo de Renders Everything You Ever Saw (el nombre también es un juego de palabras con Point Reyes , California, cerca de donde se ubicaba Lucasfilm) y sugiere procesos relacionados con sistemas de imágenes ópticas. Según Robert L. Cook , Reyes se escribe con solo la primera letra en mayúscula, como aparece en el artículo de Cook, Carpenter y Catmull de 1987 en SIGGRAPH.
Arquitectura
La arquitectura fue diseñada teniendo en cuenta varios objetivos:
- Complejidad/diversidad del modelo : Para generar imágenes visualmente complejas y ricas, los usuarios de un sistema de renderizado necesitan tener la libertad de modelar un gran número (cientos de miles) de estructuras geométricas complejas, posiblemente generadas mediante modelos procedimentales como fractales y sistemas de partículas .
- Complejidad del sombreado : Gran parte de la complejidad visual de una escena se genera por la forma en que los rayos de luz interactúan con las superficies de los objetos sólidos. Generalmente, en gráficos por computadora, esto se modela mediante texturas. Las texturas pueden ser matrices de píxeles coloreados, describir desplazamientos de superficie, transparencia o reflectividad. Reyes permite a los usuarios incorporar sombreadores procedimentales, mediante los cuales la estructura de la superficie y la interacción óptica se logran utilizando programas informáticos que implementan algoritmos procedimentales en lugar de simples tablas de búsqueda. Una buena parte del algoritmo está orientada a minimizar el tiempo que los procesadores dedican a obtener las texturas de los almacenes de datos.
- Trazado de rayos mínimo : Cuando se propuso Reyes, los sistemas informáticos tenían una capacidad de procesamiento y almacenamiento significativamente menor. Esto significaba que el trazado de rayos de una escena fotorrealista podía tardar decenas o cientos de horas por fotograma. Algoritmos como Reyes, que generalmente no utilizaban trazado de rayos, eran mucho más rápidos y ofrecían resultados casi fotorrealistas.
- Velocidad : Renderizar una película de dos horas a 24 fotogramas por segundo en un año requiere, en promedio, 3 minutos de tiempo de renderizado por fotograma.
- Calidad de la imagen : Cualquier imagen que contenga artefactos no deseados relacionados con el algoritmo se considera inaceptable.
- Flexibilidad : La arquitectura debe ser lo suficientemente flexible como para incorporar nuevas técnicas a medida que estén disponibles, sin necesidad de una reimplementación completa del algoritmo.
Reyes logra de manera eficiente varios efectos que se consideraron necesarios para una renderización con calidad cinematográfica: superficies suaves y curvas; texturizado de superficies; desenfoque de movimiento ; y profundidad de campo .
Reyes renderiza superficies curvas, como las representadas por parches paramétricos , dividiéndolas en micropolígonos , pequeños cuadriláteros de menos de un píxel cada uno. Si bien se necesitan muchos micropolígonos para aproximar con precisión las superficies curvas, estos se pueden procesar con operaciones sencillas y paralelizable . Un renderizador de Reyes tesela primitivas de alto nivel en micropolígonos según sea necesario, dividiendo cada primitiva con la precisión justa para lograr una apariencia suave en la imagen final.
A continuación, un sistema de sombreado asigna un color y una opacidad a cada vértice de un micropolígono. La mayoría de los renderizadores Reyes permiten a los usuarios proporcionar funciones de iluminación y texturizado arbitrarias escritas en un lenguaje de sombreado . Los micropolígonos se procesan en grandes cuadrículas que permiten vectorizar los cálculos .
Los micropolígonos sombreados se muestrean en el espacio de la pantalla para producir la imagen de salida. Reyes emplea un innovador algoritmo de superficie oculta, o " ocultador" , que realiza las integraciones necesarias para el desenfoque de movimiento y la profundidad de campo sin requerir más muestras de geometría o sombreado que las que necesitaría una renderización sin desenfoque. El ocultador acumula los colores de los micropolígonos en cada píxel a lo largo del tiempo y la posición de la lente mediante un método de Monte Carlo llamado muestreo estocástico .
Tubería
El proceso básico de Reyes consta de los siguientes pasos:
- Delimitación. Calcula el volumen delimitador de cada primitiva geométrica.
- Dividir. Divide las primitivas grandes en primitivas más pequeñas y divisibles.
- Dados. Convierte la primitiva en una cuadrícula de micropolígonos, cada uno aproximadamente del tamaño de un píxel.
- Sombra. Calcula la iluminación y el sombreado en cada vértice de la cuadrícula de micropolígonos.
- Divide la cuadrícula en micropolígonos individuales, cada uno de los cuales está delimitado y se comprueba su visibilidad.
- Ocultar. Muestrear los micropolígonos, produciendo la imagen 2D final.
En este diseño, el renderizador debe almacenar todo el búfer de fotogramas en memoria, ya que la imagen final no se puede generar hasta que se hayan procesado todas las primitivas. Una optimización de memoria común introduce un paso llamado agrupamiento antes del paso de corte. La imagen de salida se divide en una cuadrícula gruesa de "cubetas", cada una típicamente de 16 por 16 píxeles. Los objetos se dividen aproximadamente a lo largo de los límites de las cubetas y se colocan en cubetas según su ubicación. Cada cubeta se corta y se dibuja individualmente, y los datos de la cubeta anterior se descartan antes de procesar la siguiente. De esta manera, solo se debe mantener en memoria un búfer de fotogramas para la cubeta actual y las descripciones de alto nivel de todas las primitivas geométricas. Para escenas típicas, esto conlleva una reducción significativa en el uso de memoria en comparación con el algoritmo de Reyes sin modificar.
Renderizadores Reyes
Los siguientes motores de renderizado utilizan el algoritmo de Reyes de una forma u otra, o al menos permiten a los usuarios seleccionarlo para producir sus imágenes:
- Digits 'n Art's 3Delight ( enlace )
- Aqsis ( enlace ) código abierto
- jrMan ( enlace ) código abierto
- RenderMan Pro Server de Pixar y RenderMan para Maya ( enlace ) hasta la versión 20 (lanzada en 2015) [ 3 ]
- Renderizador 3D de píxeles ( enlace )
- Pixie ( enlace ) código abierto
- RenderDotC de DotC Software ( enlace )
- El mantra del software de efectos secundarios ( enlace )
- Luciérnaga de Poser ( enlace )
- Reinauguración de panadería ( enlace )
- Unreal Engine ( enlace )
Referencias
- Robert L. Cook , Loren Carpenter y Edwin Catmull . " La arquitectura de renderizado de imágenes de Reyes " . Computer Graphics ( Actas de SIGGRAPH '87) , págs. 95-102 .
- Anthony Apodaca y Larry Gritz . Advanced RenderMan: Creación de CGI para películas . Morgan Kaufmann Publishers. ISBN 1-55860-618-1
Enlaces externos
- REYES, los primitivos y algo de filosofía
- Bienvenido a Renderman: Reyes
- Renderizado 3D