Tubería de renderizado
# Tubería de renderizado

En gráficos 3D por computadora, el término tubería de gráficos o tubería de renderizado (del inglés rendering pipeline) se refiere comúnmente a la renderización basada en la implementación hardware de gráficos (tarjeta gráfica). La tubería de renderizado típicamente recibe la representación de una escena tridimensional como entrada y genera una imagen en dos dimensiones como salida. OpenGL y Direct3D son dos estándares gráficos que proporcionan tuberías de renderizado y permiten además la programación de shaders para modificar su comportamiento.

## Etapas de la tubería de renderizado de gráficos

### Transformación de modelos

En esta etapa, la geometría 3D (modelo) es ubicada en el espacio tridimensional, aplicando transformaciones como la traslación o la rotación a sus primitivas.

### Iluminación

La geometría de la escena 3D es iluminada de acuerdo con la ubicación de las fuentes de luz, reflejo y otras propiedades de las superficies. La implementación más común de las tuberías de renderizado actuales procesan la iluminación sólo en los vértices de los polígonos, que luego se interpolan en el proceso de rasterización para obtener la iluminación en cualquier otro punto. Esto se conoce como iluminación por vértice, en contraposición a la iluminación por fragmento (por píxel), que encontramos cada vez en mayor medida y se implementa como un proceso de posrasterización usando sombreadores de fragmentos.

### Transformación de vista

Los objetos son transformados de coordenadas en un mundo 3D a un sistema de coordenadas 3D basadas en la posición y orientación de una cámara virtual. Esto resulta en la escena 3D original vista desde la perspectiva de la cámara, definida en lo que es espacio visual o espacio de cámara.

### Proyección y transformación

En esta etapa de la tubería de renderizado, la geometría es transformada del espacio visual de la cámara de renderizado a un espacio de imagen 2D, mapeando la escena 3D a un plano como visto por la cámara virtual.

### Clipping

Las primitivas geométricas que quedan fuera del polígono de visión (frustum) no serán visibles y son descartadas del escenario. El clipping no es necesario para lograr una correcta salida de video, pero acelera el proceso de renderización al eliminar la rasterización y el posprocesamiento innecesarios en primitivas que no aparecerán en la imagen final de todas formas.

### Shading o texturizado de fragmentos

En esta etapa, a cada fragmento individual (o prepíxeles) se les asigna un color basado en valores interpolados de los vértices durante la rasterización o de una textura en la memoria.

### Rasterización

La rasterización es el proceso en el cual la representación de la escena en el espacio de la imagen en 2D es convertida a un formato ráster de imagen 2D y se determina el correcto valor de cada pixel resultante.

### Visualización

Los píxeles coloreados finales pueden ser mostrados en la pantalla, o usados para otro fin (por ejemplo, como textura dentro de otra tubería de renderizado).

## Tubería de renderizado en hardware

La tubería de renderizado es mapeada en el hardware de aceleración de gráficos tal que la entrada a la tarjeta de video (GPU) esté en la forma de vértices. Estos vértices se someten a transformación e iluminación por vértice. En este punto en tuberías modernas de las GPU un programa de sombreado de vértices personalizado puede ser usado para manipular los vértices 3D antes de la rasterización. Una vez transformados e iluminados los vértices (también llamada transformación e iluminación) se someten al clipping y a la rasterización resultando en fragmentos. Un segundo programa personalizado de sombreado puede ser ejecutado en cada fragmento antes de que los valores finales de píxeles salgan al buffer de trama para ser desplegados.

La tubería de gráficos se adecúa bien al proceso de renderización porque permite a la GPU funcionar como un procesador de flujo ya que todos los vértices y fragmentos pueden ser vistos de manera independiente. Esto permite a todas las etapas de la tubería ser usados simultáneamente para diferentes vértices o fragmentos mientras van a través de la tubería. Además, la independencia de vértices y fragmentos permite a los procesadores gráficos usar unidades de procesamiento paralelo para procesar múltiples vértices o fragmentos en una sola etapa de la tubería al mismo tiempo.

