Articulo de referencia

Canalización gráfica

La canalización de gráficos por computadora , o simplemente canalización de gráficos , también conocida como canalización de renderizado , es una serie de procedimientos para tr...

La canalización de gráficos por computadora , o simplemente canalización de gráficos , también conocida como canalización de renderizado , es una serie de procedimientos para transformar una escena tridimensional (3D) en una representación bidimensional (2D) en una pantalla. [ 1 ] Una vez que se genera un modelo 3D , la canalización de gráficos por computadora 3D convierte el modelo a un formato visualmente perceptible en la pantalla de la computadora. [ 2 ]

Debido a la dependencia de configuraciones específicas de software y hardware , así como de los atributos de visualización deseados, no existe una arquitectura gráfica universalmente aplicable. Sin embargo, se desarrollaron interfaces de programación de aplicaciones (API) gráficas, como Direct3D , OpenGL y Vulkan, para estandarizar procedimientos comunes y supervisar la arquitectura gráfica de un acelerador de hardware determinado. Estas API proporcionan una capa de abstracción sobre el hardware subyacente, lo que evita que los programadores tengan que escribir código específico para diversos aceleradores de hardware gráfico como AMD , Intel , Nvidia y otros.

El modelo de la canalización gráfica se utiliza habitualmente en la renderización en tiempo real. A menudo, la mayoría de los pasos de la canalización se implementan en hardware, lo que permite optimizaciones especiales . El término "canalización" se utiliza de forma similar a la canalización en los procesadores : los pasos individuales de la canalización suelen ejecutarse en paralelo cuando una etapa determinada dispone de suficientes datos.

Concepto

El pipeline 3D generalmente se refiere a la forma más común de renderizado tridimensional por computadora, denominada renderizado de polígonos 3D , distinta del trazado de rayos y el raycasting . En el raycasting, un rayo se origina en el punto donde se encuentra la cámara, y si ese rayo impacta una superficie, se calcula el color y la iluminación del punto de la superficie donde impactó el rayo. En el renderizado de polígonos 3D ocurre lo contrario: se calcula el área que se le da a la cámara y luego se crean rayos desde cada parte de cada superficie dada a la cámara y se trazan de regreso a la cámara. [ 3 ]

Estructura

Una canalización gráfica se puede dividir en tres partes principales: Aplicación, Geometría y Rasterización. [ 4 ]

Solicitud

La fase de aplicación se ejecuta mediante software o hardware en los procesadores principales ( CPU , GPU ). Durante esta fase, se realizan cambios en la escena según sea necesario, por ejemplo, mediante la interacción del usuario con dispositivos de entrada o durante una animación. La nueva escena, con los elementos modificados (puntos, líneas, triángulos, etc.), se pasa a la siguiente fase del proceso.

Ejemplos de pasos de aplicación son la detección de colisiones , la animación, la transformación y las técnicas de aceleración mediante esquemas de subdivisión espacial como quadtrees u octrees . Estos también se utilizan para reducir la cantidad de memoria principal requerida en un momento dado. El "mundo" de un videojuego moderno suele ser mayor que la memoria disponible en la placa base.

Geometría

La canalización de geometría y la canalización de vértices son responsables de la mayoría de las operaciones con polígonos . Estas se pueden subdividir en cinco tareas. La organización de estas tareas como pasos de canalización paralelos depende de la implementación.

  • Transformaciones de modelo y cámara
  • Iluminación
  • Proyección ( Z-buffering )
  • Recorte
  • Ventana panorámica

Sistema de Coordenadas Mundiales

El sistema de coordenadas del mundo es el sistema de coordenadas en el que se crea el mundo virtual. Los objetos que contiene la escena (casas, árboles, coches) suelen diseñarse en su sistema de coordenadas de objeto (también llamado sistema de coordenadas del modelo o sistema de coordenadas local) para simplificar el modelado. Para asignar coordenadas a estos objetos en el sistema de coordenadas del mundo o sistema de coordenadas global de toda la escena, las coordenadas del objeto se transforman mediante traslación, rotación o escalado. Esto se realiza multiplicando las matrices de transformación correspondientes . Además, se pueden crear varias copias transformadas de forma diferente a partir de un mismo objeto; por ejemplo, un bosque a partir de un árbol. Esto se denomina instanciación .

Transformación de la cámara

Izquierda: Posición y dirección del visor virtual (cámara), según lo definido por el usuario. Derecha: Posicionamiento de los objetos tras la transformación de la cámara. El área gris claro representa el volumen visible.

Además de los objetos, la escena también define una cámara virtual o un visor que indica la posición y la dirección de la vista con respecto a la cual se renderiza la escena. La escena se transforma de manera que la cámara se sitúe en el origen, mirando a lo largo del eje Z. El sistema de coordenadas resultante se denomina sistema de coordenadas de la cámara y la transformación se denomina transformación de cámara o transformación de vista .

Proyección

El paso de proyección 3D transforma el volumen de visualización en un cubo con coordenadas de vértice (−1, −1, 0) y (1, 1, 1); ocasionalmente, también se utilizan otros volúmenes objetivo. Este paso se denomina proyección , aunque transforma un volumen en otro, ya que las coordenadas Z resultantes no se almacenan en la imagen, sino que solo se utilizan en el almacenamiento en búfer Z en el paso de rasterización posterior. En una ilustración en perspectiva , se utiliza una proyección central .

Para limitar el número de objetos mostrados, se utilizan dos planos de recorte adicionales; el volumen visual es, por lo tanto, una pirámide truncada ( tronco de pirámide ). La proyección paralela u ortogonal se utiliza, por ejemplo, para representaciones técnicas porque tiene la ventaja de que todos los paralelos en el espacio del objeto también son paralelos en el espacio de la imagen, y las superficies y los volúmenes tienen el mismo tamaño independientemente de la distancia al observador. Los mapas utilizan, por ejemplo, una proyección ortogonal (la llamada ortofoto ), pero las imágenes oblicuas de un paisaje no se pueden utilizar de esta manera; aunque técnicamente se pueden renderizar, parecen tan distorsionadas que no podemos aprovecharlas.

Por motivos de eficiencia, la matriz de la cámara y la de proyección se combinan habitualmente en una matriz de transformación, omitiendo así el sistema de coordenadas de la cámara. La matriz resultante suele ser la misma para una sola imagen, mientras que la matriz del mundo es diferente para cada objeto. En la práctica, por lo tanto, la vista y la proyección se precalculan, de modo que solo es necesario adaptar la matriz del mundo durante la visualización. Sin embargo, son posibles transformaciones más complejas, como la fusión de vértices. También se pueden ejecutar sombreadores de geometría programables libremente que modifican la geometría.

En la etapa de renderizado, se calcula la matriz del mundo * matriz de la cámara * matriz de proyección y, finalmente, se aplica a cada punto. De esta forma, los puntos de todos los objetos se transfieren directamente al sistema de coordenadas de la pantalla (al menos casi, ya que el rango de valores de los ejes sigue siendo de -1 a 1 para el rango visible; véase la sección "Transformación de la ventana gráfica").

Iluminación

A menudo, una escena contiene fuentes de luz colocadas en diferentes posiciones para que la iluminación de los objetos parezca más realista. En este caso, se calcula un factor de ganancia para la textura de cada vértice en función de las fuentes de luz y las propiedades del material asociadas al triángulo correspondiente. En el paso de rasterización posterior, los valores de los vértices de un triángulo se interpolan sobre su superficie. Se aplica una iluminación general (luz ambiental) a todas las superficies. Se trata del brillo difuso y, por lo tanto, independiente de la dirección de la escena. El sol es una fuente de luz dirigida, que se puede suponer que está infinitamente lejos. La iluminación que ejerce el sol sobre una superficie se determina mediante el producto escalar del vector direccional del sol y el vector normal de la superficie. Si el valor es negativo, la superficie está orientada hacia el sol.

Recorte

Recorte de primitivas contra el cubo. El triángulo azul se descarta mientras que el triángulo naranja se recorta, creando dos nuevos vértices.
Tronco

Solo las primitivas que se encuentran dentro del volumen visual necesitan ser rasterizadas (dibujadas). Este volumen visual se define como el interior de un tronco de pirámide , una forma con la parte superior truncada. Las primitivas que están completamente fuera del volumen visual se descartan; esto se denomina eliminación de tronco de pirámide . En teoría, se pueden ejecutar otros métodos de eliminación, como la eliminación de caras posteriores, que reduce el número de primitivas a considerar, en cualquier paso del pipeline gráfico. Las primitivas que están solo parcialmente dentro del cubo deben recortarse contra el cubo. La ventaja del paso de proyección anterior es que el recorte siempre se realiza contra el mismo cubo. Solo las primitivas —posiblemente recortadas— que se encuentran dentro del volumen visual se envían al paso final.

Transformación de ventana gráfica

Transformación de ventana gráfica

Para mostrar la imagen en cualquier área de destino (ventana gráfica) de la pantalla, se debe aplicar otra transformación: la transformación Ventana-Ventana gráfica . Las coordenadas resultantes son las coordenadas del dispositivo de salida.

En el hardware moderno, la mayoría de los pasos de cálculo geométrico se realizan en el sombreador de vértices . Este es, en principio, programable libremente, pero generalmente realiza al menos la transformación de los puntos y el cálculo de la iluminación. Para la interfaz de programación DirectX, es necesario utilizar un sombreador de vértices personalizado a partir de la versión 10, mientras que las versiones anteriores aún utilizan un sombreador estándar.

Rasterización

El paso de rasterización es el último paso antes de la canalización del sombreador de fragmentos, donde se rasterizan todas las primitivas . En el paso de rasterización, se crean fragmentos discretos a partir de primitivas continuas.

En esta etapa del pipeline gráfico, los puntos de la cuadrícula también se denominan fragmentos, para mayor claridad. Cada fragmento corresponde a un píxel en el búfer de fotogramas, que a su vez corresponde a un píxel de la pantalla. Estos pueden tener color (y posiblemente iluminación). Además, es necesario determinar el fragmento visible, más cercano al observador, en caso de polígonos superpuestos. Generalmente se utiliza un búfer Z para esta determinación de la superficie oculta . El color de un fragmento depende de la iluminación, la textura y otras propiedades del material de la primitiva visible, y a menudo se interpola utilizando las propiedades de los vértices del triángulo. Cuando está disponible, se ejecuta un sombreador de fragmentos (también llamado sombreador de píxeles ) en el paso de rasterización para cada fragmento del objeto. Si un fragmento es visible, se puede mezclar con los valores de color ya existentes en la imagen si se utiliza transparencia o muestreo múltiple. En este paso, uno o más fragmentos se convierten en un píxel.

Para evitar que el usuario vea la rasterización gradual de las primitivas, se utiliza un doble búfer. La rasterización se realiza en un área de memoria especial. Una vez que la imagen se ha rasterizado por completo, se copia al área visible de la memoria de imágenes.

Inverso

Todas las matrices utilizadas son no singulares y, por lo tanto, invertibles. Dado que la multiplicación de dos matrices no singulares genera otra matriz no singular, la matriz de transformación completa también es invertible. Se requiere la inversa para recalcular las coordenadas del mundo a partir de las coordenadas de la pantalla; por ejemplo, para determinar el objeto seleccionado a partir de la posición del puntero del ratón. Sin embargo, como la pantalla y el ratón solo tienen dos dimensiones, la tercera es desconocida. Por lo tanto, se proyecta un rayo desde la posición del cursor hacia el mundo y luego se determina la intersección de este rayo con los polígonos en el mundo.

Véase también

Fuentes

  • Akenine-Möller, Tomas; Haines, Eric; Hoffman, Naty (2019) [2008]. Renderizado en tiempo real . CRC Press. ISBN 9781315362007.
  • doblador, Michael; Brillante, Manfred (2006). Computergrafik: ein anwendungsorientiertes Lehrbuch . Múnich: Hanser. ISBN 3-446-40434-1.
  • Fischer, Martín (4 de julio de 2011). Pixel-Fabrik. Wie Grafikchips Spielewelten auf den Schirm zaubern . c't Magazin für Computer Technik. Heise Zeitschriften Verlag. pag.  180. ISSN 0724-8679 . 

Referencias

  1. "Graphics Pipeline" . Microsoft . 30 de mayo de 2018. Consultado el 15 de junio de 2015 .
  2. "Conferencia: Pipeline de gráficos y animación" . Archivado del original el 7 de diciembre de 2017. Consultado el 15 de junio de 2015 .
  3. Lawrence, Jason (22 de octubre de 2012). "Pipeline de renderizado de polígonos 3D" (PDF) . Archivado (PDF) del original el 29 de diciembre de 2016. Recuperado el 19 de septiembre de 2019 .
  4. Akenine-Möller, Haines y Hoffman 2019 , pág. 13 2.1 Arquitectura Figura 2.2