Canalización de gráficos


En los gráficos por ordenador , una tubería de gráficos por ordenador , tubería de renderizado  o simplemente  pipeline de gráficos , es un modelo conceptual que describe los pasos que necesita un sistema de gráficos para llevar a cabo para  hacer que 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]  Debido a que los pasos necesarios para esta operación dependen del software y hardware utilizados y de las características de visualización deseadas, no existe una canalización de gráficos 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 canalización de gráficos se usa generalmente 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 en un sentido similar al de canalización en los procesadores: los pasos individuales de la canalización se ejecutan en paralelo siempre que un paso determinado tenga lo que necesita.

La canalización 3D generalmente se refiere a la forma más común de renderizado 3D por computadora llamada renderizado de polígonos 3D [ cita requerida ] , diferente del trazado de rayos y la emisión de rayos . En la emisión de rayos, 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 lo ejecuta el software en el procesador principal ( CPU ). Durante el paso de la aplicación, se realizan cambios en la escena según sea necesario, por ejemplo, mediante la interacción del usuario mediante dispositivos de entrada o durante una animación. La nueva escena con todas sus primitivas , generalmente triángulos, líneas y puntos, se pasa al siguiente paso de la tubería.

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 # , en lugar 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 de las cuales se enumera aquí. El sombreador de vértices y el código 3D son la entrada a la animación y transformación. La segunda fase es el sombreador de casco, la teselación y el sombreador de dominio. La tercera fase es el sombreador de geometría. La cuarta fase es la transformación de la perspectiva. La quinta fase es el recorte y selección del reverso. La sexta fase es la rasterización de triángulos, que genera coordenadas de textura. La séptima fase, la caché de texturas, comienza por separado y toma texturas como entrada. La séptima fase y las coordenadas de textura pasan a la octava fase, filtrado de texturas. Desde la sexta fase y la salida de la octava fase, texels, pasa a la novena fase, Z temprana y sombreado de píxeles, que también toma un sombreador de píxeles como entrada. La décima fase es la prueba Z, la combinación alfa y el suavizado. Luego, la undécima fase es el posprocesamiento,que da salida al búfer posterior.