Rasterização é o processo de converter uma descrição vetorial de primitivas tridimensionais (triângulos, linhas, pontos) em um conjunto de pixels (fragmentos) para exibição em uma tela. De acordo com Khronos Group, 2025, a rasterização é uma etapa automática (não programável) do pipeline gráfico, localizada entre o Vertex Shader e o Fragment Shader. Rasterization determina quais pixels da tela pertencem a cada triângulo e calcula os atributos interpolados para cada fragmento.
Principais pontos
Rasterization é uma etapa do pipeline gráfico que converte primitivas geométricas (triângulos, linhas) em um conjunto de fragmentos para processamento posterior pelo Fragment Shader. Os dados de entrada são os vértices do triângulo em coordenadas de tela e seus atributos (cor, normais, UV). A saída é um conjunto de fragmentos com atributos interpolados.
Ao contrário dos shaders programáveis (Vertex Shader e Fragment Shader), a rasterização é uma etapa fixa (não programável). O desenvolvedor não pode alterar o algoritmo de rasterização, mas pode controlar seus parâmetros: modo de corte (culling), largura da linha, deslocamento de profundidade (polygon offset) e multisampling.
Praticamente todos os gráficos modernos em tempo real — jogos, UI, AR/VR — usam rasterização. É o método de renderização mais eficiente, capaz de processar milhões de triângulos por quadro a 60 FPS. Os rasterizadores de GPU são otimizados para processamento paralelo de milhares de triângulos simultaneamente através de blocos ROP (Render Output Units) especializados.
A rasterização de triângulos começa depois que o Vertex Shader transformou os vértices em coordenadas de tela. A GPU pega os três vértices de um triângulo e determina quais pixels da tela estão dentro desse triângulo.
O processo inclui três passos sequenciais: determinar o bounding box do triângulo em pixels — verificar cada pixel dentro do bounding box quanto à pertença ao triângulo (edge function) — calcular os atributos interpolados (coordenadas barycêntricas) para cada pixel coberto. A Edge function é uma equação linear que determina de que lado da aresta do triângulo um ponto está localizado.
| Etapa | Descrição | Resultado |
|---|---|---|
| Clipping | Corte de triângulos fora dos limites do viewport | Primitivas visíveis |
| Viewport transform | Transformação em coordenadas de tela | Coordenadas de pixels |
| Triangle setup | Cálculo das edge functions e bounding box | Parâmetros de rasterização |
| Fragment generation | Teste de cobertura e interpolação | Fragmentos + atributos |
Rasterization pode ser implementada por vários algoritmos, cada um com seus próprios compromissos entre desempenho e qualidade. As GPUs modernas usam uma combinação de várias abordagens.
O algoritmo clássico de rasterização desenvolvido para as primeiras GPUs. O triângulo é processado linha por linha (scanline): para cada linha da tela, os pontos de entrada e saída do triângulo são determinados, e todos os pixels entre eles são preenchidos. Scanline conversion é eficiente para triângulos grandes, mas requer lógica complexa para triângulos de formato arbitrário.
As GPUs modernas usam o método de rasterização half-space: para cada lado do triângulo, uma edge function é calculada — uma equação linear positiva de um lado e negativa do outro. Um pixel pertence ao triângulo se todas as três edge functions forem positivas. Half-space rasterization é facilmente paralelizável e adequado para arquiteturas SIMD de GPU.
GPUs móveis (Qualcomm Adreno, ARM Mali) usam Tile-Based Rendering (TBR). A tela é dividida em pequenos tiles (16x16 ou 32x32 pixels), e a rasterização é realizada para cada tile separadamente. Isso minimiza os acessos à memória armazenando o framebuffer em memória local rápida (tile memory). O TBR reduz o consumo de energia, algo crítico para dispositivos móveis.
Rasterization e ray tracing são duas abordagens fundamentalmente diferentes para renderização de gráficos 3D. A rasterização domina em aplicações em tempo real, enquanto o ray tracing é usado em renderização offline e está gradualmente entrando em tempo real (em GPUs compatíveis com RTX).
| Parâmetro | Rasterização | Ray Tracing |
|---|---|---|
| Princípio | Triângulo → fragmentos | Raio → interseção com a cena |
| Velocidade | Muito rápido (milhões de triângulos/quadro) | Lento (milhares de raios/quadro) |
| Qualidade | Requer técnicas adicionais (sombras, reflexos) | Sombras e reflexos fisicamente corretos |
| GPUs móveis | Método padrão | Suporte limitado (A17 Pro, Snapdragon Gen 3) |
| Consumo de energia | Baixo | Alto |
A rasterização introduz o problema de aliasing — bordas serrilhadas (jaggies) nos limites dos triângulos. Isso ocorre porque um pixel é discreto e não pode ser parcialmente coberto por um triângulo. Para combater o aliasing, utiliza-se multisampling (MSAA).
MSAA (Multisample Anti-Aliasing) realiza a rasterização com uma taxa de amostragem aumentada (2x, 4x, 8x). Em vez de uma amostra por pixel, várias subamostras são usadas, cada uma testada quanto à cobertura do triângulo. MSAA 4x processa 4 subamostras por pixel, proporcionando uma suavização de bordas notável sem aumentar completamente a resolução de renderização.
Ao contrário do MSAA, os métodos de anti-aliasing de pós-processamento (FXAA, SMAA, TAA) funcionam após a rasterização analisando a imagem final. FXAA (Fast Approximate Anti-Aliasing) detecta bordas da imagem e aplica desfoque para suavizar, funcionando significativamente mais rápido que o MSAA, mas com qualidade inferior.
Rasterization em GPUs modernas é realizada por blocos de hardware especializados — ROP (Render Output Units). O número de ROPs afeta diretamente a taxa de preenchimento (fill rate) — o número de pixels que a GPU pode processar por segundo.
Para GPUs móveis (Tile-Based Rendering), os fatores críticos incluem: minimizar overdraw através de early-Z rejection, usar back-face culling para remover triângulos invisíveis e occlusion culling para descartar triângulos completamente cobertos por outros objetos.
Perguntas frequentes
Rasterização é o processo de transformar triângulos em pixels na tela. A GPU pega um triângulo tridimensional, determina quais pixels da tela ele cobre e os passa para o Fragment Shader colorir.
A rasterização projeta triângulos na tela e determina a cobertura de pixels (muito rápida). Ray tracing lança raios da câmera e verifica a interseção com a geometria (fisicamente mais preciso, mas significativamente mais lento).
Durante a rasterização, um pixel pertence inteiramente a um triângulo ou não — daí as bordas serrilhadas (aliasing). O MSAA suaviza as bordas usando múltiplas subamostras por pixel, enquanto o FXAA aplica um filtro à imagem final.
Não, a rasterização é uma etapa fixa do pipeline gráfico. O desenvolvedor não pode alterar o algoritmo, mas pode controlar configurações: culling, polygon offset, modo de rasterização (pontos, linhas, triângulos) e parâmetros de MSAA.
Tile-Based Rendering (TBR) divide a tela em tiles e os processa em memória local rápida em vez de VRAM global. Isso reduz radicalmente o consumo de energia e largura de banda, algo crítico para dispositivos móveis alimentados por bateria.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também