# Canalització gràfica

La canalització (pipeline) de gràfics per ordinador, també coneguda com a canalització de renderització o canalització de gràfics, és un marc dins dels gràfics per ordinador que descriu els procediments necessaris per transformar una escena tridimensional (3D) en una representació bidimensional (2D) en una pantalla. Un cop generat un model 3D, la canalització de gràfics converteix el model en un format visualment perceptible a la pantalla de l'ordinador. A causa de la dependència de programari específic, configuracions de maquinari i atributs de visualització desitjats, no existeix una canalització de gràfics d'aplicació universal. No obstant això, es van desenvolupar interfícies de programació d'aplicacions gràfiques (API), com ara Direct3D, OpenGL i Vulkan per estandarditzar procediments comuns i supervisar la canalització de gràfics d'un accelerador de maquinari determinat. Aquestes API proporcionen una capa d'abstracció sobre el maquinari subjacent, allunyant els programadors de la necessitat d'escriure codi de manera explícita dirigida a diversos acceleradors de maquinari gràfic com AMD, Intel, Nvidia i altres.
El model de la canalització de gràfics s'utilitza normalment en la representació en temps real. Sovint, la majoria dels passos del pipeline s'implementen al maquinari, cosa que permet optimitzacions especials. El terme "pipeline" s'utilitza en un sentit similar per al pipeline als processadors: els passos individuals del pipeline s'executen en paral·lel sempre que qualsevol pas tingui el que necessita.

## Concepte

El pipeline 3D sol referir-se a la forma més comuna de renderització tridimensional de l'ordinador anomenada renderització de polígons 3D, diferent de Raytracing i Raycasting. En Raycasting, un raig s'origina en el punt on resideix la càmera, i si aquest raig arriba a una superfície, es calcula el color i la il·luminació del punt de la superfície on el raig impacta. En la representació de polígons 3D passa el contrari: es calcula l'àrea que es dóna a la càmera i després es creen raigs des de cada part de cada superfície donada a la càmera i es remunten a la càmera.

## Estructura

Una canalització de gràfics es pot dividir en tres parts principals: aplicació, geometria i rasterització.

### Aplicació

El pas de l'aplicació l'executa el programari al processador principal (CPU). Durant el pas de l'aplicació, es fan canvis a l'escena segons sigui necessari, per exemple, mitjançant la interacció de l'usuari mitjançant dispositius d'entrada o durant una animació. La nova escena amb totes les seves primitives, normalment triangles, línies i punts, es passa al següent pas de la canalització.
Exemples de tasques que es fan normalment al pas de l'aplicació són les tècniques de detecció de col·lisions, animació, transformació i acceleració que utilitzen esquemes de subdivisió espacial com ara Quadtrees o Octrees. També s'utilitzen per reduir la quantitat de memòria principal necessària en un moment determinat. El "món" d'un joc d'ordinador modern és molt més gran del que podria cabre a la memòria alhora.

### Geometria

El pas de geometria (amb el pipeline de geometria), que és responsable de la majoria de les operacions amb polígons i els seus vèrtexs (amb el pipeline de Vertex), es pot dividir en les cinc tasques següents. Depèn de la implementació particular de com s'organitzen aquestes tasques com a passos reals del pipeline paral·lel.

### Rasterització

El pas de rasterització és el pas final abans de la canalització d'ombres de fragments amb què es rasteritzen totes les primitives. En el pas de rasterització, es creen fragments discrets a partir de primitives contínues.

## Ombrejador (Shader)

Les targetes gràfiques clàssiques encara estan relativament a prop de la canalització de gràfics. Amb les demandes creixents de la GPU, les restriccions es van eliminar gradualment per crear més flexibilitat. Les targetes gràfiques modernes utilitzen una canalització lliurement programable i controlada per shader, que permet l'accés directe als passos de processament individuals. Per alleujar el processador principal, s'han mogut passos de processament addicionals al pipeline i a la GPU.
Les unitats d'ombrejats més importants són els ombrejadors de vèrtex, els ombrejats de geometria i els ombrejadors de píxels.
S'ha introduït Unified Shader per aprofitar al màxim totes les unitats. Això dóna un sol gran grup d'unitats d'ombra. Segons sigui necessari, la piscina es divideix en diferents grups d'ombres. Per tant, una separació estricta entre els tipus d'ombra ja no és útil.
També és possible utilitzar l'anomenat compute-shader per realitzar qualsevol càlcul fora de la visualització d'un gràfic a la GPU. L'avantatge és que funcionen molt paral·lels, però hi ha limitacions. Aquests càlculs universals també s'anomenen informàtica de propòsit general en unitats de processament de gràfics o GPGPU per abreujar-se.
Els shaders de malla són una incorporació recent, amb l'objectiu de superar els colls d'ampolla del disseny fix de la canonada de geometria.

## Referències

* ↑ «Graphics Pipeline» (en anglès). Microsoft, 30-05-2018. [Consulta: 15 juny 2015].
* ↑ «Lecture: Graphics pipeline and animation» (en anglès). Arxivat de l'original el 7 December 2017. [Consulta: 15 juny 2015].
* ↑ Jack. «Graphics pipeline» (en anglès), 17-11-2022. [Consulta: 17 març 2025].
* ↑ «Graphics Compendium | Overview» (en anglès). [Consulta: 17 març 2025].
* ↑ Lawrence, Jason. «3D Polygon Rendering Pipeline» (en anglès), 22-10-2012. Arxivat de l'original el December 29, 2016. [Consulta: 19 setembre 2019].