La rasterización es el proceso de convertir una descripción vectorial de primitivas tridimensionales (triángulos, líneas, puntos) en un conjunto de píxeles (fragmentos) para mostrarlos en una pantalla. Según Khronos Group, 2025, la rasterización es una etapa automática (no programable) del pipeline gráfico, ubicada entre el Vertex Shader y el Fragment Shader. Rasterization determina qué píxeles de la pantalla pertenecen a cada triángulo y calcula los atributos interpolados para cada fragmento.
Puntos clave
Rasterization es una etapa del pipeline gráfico que convierte primitivas geométricas (triángulos, líneas) en un conjunto de fragmentos para su posterior procesamiento por el Fragment Shader. Los datos de entrada son los vértices del triángulo en coordenadas de pantalla y sus atributos (color, normales, UV). La salida es un conjunto de fragmentos con atributos interpolados.
A diferencia de los shaders programables (Vertex Shader y Fragment Shader), la rasterización es una etapa fija (no programable). El desarrollador no puede cambiar el algoritmo de rasterización, pero puede controlar sus parámetros: modo de recorte (culling), ancho de línea, desplazamiento de profundidad (polygon offset) y multisampling.
Prácticamente todos los gráficos modernos en tiempo real — juegos, UI, AR/VR — utilizan rasterización. Es el método de renderizado más eficiente, capaz de procesar millones de triángulos por fotograma a 60 FPS. Los rasterizadores GPU están optimizados para el procesamiento paralelo de miles de triángulos simultáneamente a través de bloques ROP (Render Output Units) especializados.
La rasterización de triángulos comienza después de que el Vertex Shader ha transformado los vértices en coordenadas de pantalla. La GPU toma los tres vértices de un triángulo y determina qué píxeles de la pantalla están dentro de ese triángulo.
El proceso incluye tres pasos secuenciales: determinar el bounding box del triángulo en píxeles — verificar cada píxel dentro del bounding box para determinar su pertenencia al triángulo (edge function) — calcular los atributos interpolados (coordenadas barycéntricas) para cada píxel cubierto. La Edge function es una ecuación lineal que determina de qué lado de la arista del triángulo se encuentra un punto.
| Etapa | Descripción | Resultado |
|---|---|---|
| Clipping | Recorte de triángulos fuera de los límites del viewport | Primitivas visibles |
| Viewport transform | Transformación a coordenadas de pantalla | Coordenadas de píxeles |
| Triangle setup | Cálculo de edge functions y bounding box | Parámetros de rasterización |
| Fragment generation | Verificación de cobertura e interpolación | Fragmentos + atributos |
Rasterization puede implementarse mediante varios algoritmos, cada uno con sus propias ventajas y desventajas entre rendimiento y calidad. Las GPU modernas utilizan una combinación de varios enfoques.
El algoritmo clásico de rasterización desarrollado para las primeras GPU. El triángulo se procesa línea por línea (scanline): para cada línea de la pantalla se determinan los puntos de entrada y salida del triángulo, y se rellenan todos los píxeles entre ellos. Scanline conversion es eficiente para triángulos grandes, pero requiere lógica compleja para triángulos de forma arbitraria.
Las GPU modernas utilizan el método de rasterización half-space: para cada lado del triángulo se calcula una edge function — una ecuación lineal que es positiva en un lado y negativa en el otro. Un píxel pertenece al triángulo si las tres edge functions son positivas. Half-space rasterization es fácilmente paralelizable y muy adecuado para arquitecturas GPU SIMD.
Las GPU móviles (Qualcomm Adreno, ARM Mali) utilizan Tile-Based Rendering (TBR). La pantalla se divide en pequeños tiles (16x16 o 32x32 píxeles) y la rasterización se realiza para cada tile por separado. Esto minimiza los accesos a memoria al almacenar el framebuffer en memoria local rápida (tile memory). TBR reduce el consumo de energía, algo crítico para dispositivos móviles.
Rasterization y ray tracing son dos enfoques fundamentalmente diferentes para el renderizado de gráficos 3D. La rasterización domina en aplicaciones en tiempo real, mientras que el ray tracing se utiliza en renderizado offline y está penetrando gradualmente en tiempo real (en GPU compatibles con RTX).
| Parámetro | Rasterización | Ray Tracing |
|---|---|---|
| Principio | Triángulo → fragmentos | Rayo → intersección con la escena |
| Velocidad | Muy rápido (millones de triángulos/fotograma) | Lento (miles de rayos/fotograma) |
| Calidad | Requiere técnicas adicionales (sombras, reflejos) | Sombras y reflejos físicamente correctos |
| GPU móviles | Método estándar | Soporte limitado (A17 Pro, Snapdragon Gen 3) |
| Consumo de energía | Bajo | Alto |
La rasterización introduce el problema del aliasing — bordes dentados (jaggies) en los límites de los triángulos. Esto ocurre porque un píxel es discreto y no puede estar parcialmente cubierto por un triángulo. Para combatir el aliasing se utiliza el multisampling (MSAA).
MSAA (Multisample Anti-Aliasing) realiza la rasterización con una frecuencia de muestreo aumentada (2x, 4x, 8x). En lugar de una muestra por píxel, se utilizan múltiples submuestras, cada una verificada para la cobertura del triángulo. MSAA 4x procesa 4 submuestras por píxel, proporcionando un notable suavizado de bordes sin aumentar completamente la resolución de renderizado.
A diferencia de MSAA, los métodos de suavizado de post-proceso (FXAA, SMAA, TAA) funcionan después de la rasterización analizando la imagen final. FXAA (Fast Approximate Anti-Aliasing) detecta los bordes de la imagen y aplica desenfoque para suavizar, funcionando significativamente más rápido que MSAA pero con menor calidad.
Rasterization en las GPU modernas se realiza mediante bloques de hardware especializados — ROP (Render Output Units). La cantidad de ROP afecta directamente la tasa de relleno (fill rate) — la cantidad de píxeles que la GPU puede procesar por segundo.
Para GPU móviles (Tile-Based Rendering), los factores críticos incluyen: minimizar overdraw mediante early-Z rejection, usar back-face culling para eliminar triángulos invisibles y occlusion culling para descartar triángulos completamente cubiertos por otros objetos.
Preguntas frecuentes
La rasterización es el proceso de convertir triángulos en píxeles en la pantalla. La GPU toma un triángulo tridimensional, determina qué píxeles de la pantalla cubre y los pasa al Fragment Shader para colorearlos.
La rasterización proyecta triángulos en la pantalla y determina la cobertura de píxeles (muy rápida). Ray tracing lanza rayos desde la cámara y verifica la intersección con la geometría (físicamente más preciso, pero significativamente más lento).
Durante la rasterización, un píxel pertenece completamente a un triángulo o no — de ahí los bordes dentados (aliasing). MSAA suaviza los bordes mediante múltiples submuestras por píxel, mientras que FXAA aplica un filtro a la imagen final.
No, la rasterización es una etapa fija del pipeline gráfico. El desarrollador no puede cambiar el algoritmo, pero puede controlar ajustes: culling, polygon offset, modo de rasterización (puntos, líneas, triángulos) y parámetros de MSAA.
Tile-Based Rendering (TBR) divide la pantalla en tiles y los procesa en memoria local rápida en lugar de VRAM global. Esto reduce radicalmente el consumo de energía y el ancho de banda, algo crítico para dispositivos móviles con batería.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también