Canalización de gráficos


En gráficos por computadora , una canalización de gráficos por computadora, canalización de representación  o simplemente  canalización de gráficos , es un modelo conceptual que describe qué pasos debe realizar un sistema de gráficos para  representar una escena 3D en una pantalla 2D. [1] Una vez que se ha creado un modelo 3D , por ejemplo, en un videojuego o cualquier otra animación 3D por computadora, la canalización de gráficos es el proceso de convertir ese modelo 3D en lo que muestra la computadora. [2]  Dado que los pasos necesarios para esta operación dependen del software y el hardware utilizados y de las características de visualización deseadas, no existe una canalización gráfica universal adecuada para todos los casos. Sin embargo, las interfaces de programación de aplicaciones gráficas (API) como Direct3D y OpenGL se crearon para unificar pasos similares y controlar la canalización de gráficos de un acelerador de hardware determinado . Estas API abstraen el hardware subyacente y evitan que el programador escriba código para manipular los aceleradores de hardware de gráficos ( AMD , Intel , NVIDIA , etc.).

El modelo de la tubería de gráficos generalmente se usa en la representación en tiempo real. A menudo, la mayoría de los pasos de canalización se implementan en hardware, lo que permite optimizaciones especiales . El término "tubería" se usa en un sentido similar al de la tubería en los procesadores: los pasos individuales de la tubería se ejecutan en paralelo siempre que cada paso tenga lo que necesita.

La canalización 3D por lo general se refiere a la forma más común de renderizado 3D por computadora llamado renderizado de polígonos 3D [ cita requerida ] , distinta del trazado de rayos y el raycasting . En raycasting, un rayo se origina en el punto donde reside la cámara, y si ese rayo incide en una superficie, se calcula el color y la iluminación del punto de la superficie donde incide el rayo. En el renderizado de polígonos 3D ocurre lo contrario: se calcula el área que está a la vista de la cámara y luego se crean rayos desde cada parte de cada superficie a la vista de la cámara y se rastrean hasta la cámara. [3]

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

El paso de la aplicación es ejecutado por el software en el procesador principal ( CPU ). Durante el paso de aplicación, se realizan cambios en la escena según sea necesario, por ejemplo, mediante la interacción del usuario por medio de dispositivos de entrada o durante una animación. La nueva escena con todas sus primitivas , por lo general triángulos, líneas y puntos, se pasa al siguiente paso de la canalización.

En un motor de juego moderno como Unity , el programador se ocupa casi exclusivamente del paso de la aplicación y utiliza un lenguaje de alto nivel como C# , a diferencia de C o C++ [ cita requerida ] .


Izquierda: Posición y dirección del visor virtual (cámara), según lo definido por el usuario. Derecha: Posicionamiento de los objetos después de la transformación de la cámara. El área gris claro es el volumen visible.
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
Ventana-Viewport-Transformación
Hay 11 fases, cada una enumerada aquí. El sombreador de vértices y el código 3D son la entrada para la animación y la transformación. La segunda fase es el sombreador de casco, la teselación y el sombreador de dominio. La tercera fase es el shader de geometría. La cuarta fase es la transformación de la perspectiva. La quinta fase es el recorte y la eliminación de la cara posterior. La sexta fase es la rasterización de triángulos, que genera coordenadas de textura. La séptima fase, caché de texturas, comienza por separado y toma las texturas como entrada. La séptima fase y las coordenadas de textura pasan a la octava fase, filtrado de texturas. De la sexta fase y la salida de la octava fase, texels, pasa a la novena fase, Z inicial y sombreado de píxeles, que también toma un sombreador de píxeles como entrada. La décima fase es prueba Z, mezcla alfa y suavizado. Luego, la fase 11 es el posprocesamiento,