Renderização e aplicações

Renderização fractal por GPU

A maioria dos píxeis fractais pode ser avaliada de forma independente, tornando a renderização por tempo de escape uma carga de trabalho natural da GPU Metal nos Mac e Apple Silicon. O desafio consiste em manter milhares de threads úteis quando as órbitas seguem trajetórias muito diferentes.

Fractal «Burning Ship» com ilhas vermelhas num campo turquesa
«Burning Ship» no MandelKit: o valor absoluto na iteração quebra a simetria do mapa clássico de Mandelbrot.Imagem: Björn Kindler / MandelKit · MandelKit · Eigene Darstellung · Own work

Pixéis paralelos

Um kernel de cálculo mapeia as coordenadas dos threads para coordenadas fractais e itera localmente. As constantes partilhadas descrevem a janela de visualização, a fórmula e as definições visuais; as texturas de saída transportam campos derivados da órbita para passagens posteriores de cor e iluminação.

Os píxeis fractais são, em grande parte, independentes e mapeiam-se bem para os threads da GPU. As coordenadas, os parâmetros das fórmulas e as tabelas de cores são partilhados; cada thread grava um resultado. A independência termina com efeitos de vizinhança, tais como normais, oclusão ambiente ou bloom. Estes devem ser passagens separadas com entradas explícitas, para que a alteração de um gradiente não volte a executar desnecessariamente cálculos de órbita dispendiosos.

Divergência e desequilíbrio da carga de trabalho

Os píxeis que escapam rapidamente terminam mais cedo, enquanto os píxeis de fronteira podem consumir todo o orçamento de iterações. Os threads agrupados para execução podem ficar à espera do caminho mais lento. Testes internos, agendamento adaptativo e mosaicos progressivos reduzem o desperdício de trabalho, mas aumentam a complexidade.

Perto de um limite, alguns píxeis iteram centenas de vezes, enquanto os píxeis exteriores escapam quase imediatamente. Os threads de um grupo aguardam pelo caminho mais lento. A classificação de mosaicos, os testes de interior e os píxeis ativos compactados podem reduzir a divergência, mas aumentam os custos de gestão. A análise de desempenho em várias regiões determina se a complexidade compensa; um kernel rápido apenas em áreas exteriores vazias é enganador.

Resposta rápida, revisão completa

Durante gestos ou alterações no controlo deslizante, uma passagem com resolução ou amostragem mais baixa pode preservar a capacidade de resposta. Assim que a entrada se estabilizar, o refinamento deve substituí-la por uma saída adequada à visualização. Uma política de pré-visualização torna-se um defeito se a passagem final nunca for agendada ou for continuamente invalidada.

Durante um gesto, a aplicação pode responder imediatamente a uma resolução ou profundidade de iteração mais baixa. Após a libertação, as passagens mais refinadas continuam até à resolução nativa do ecrã — não se trata de uma aplicação indiscriminada do Retina num alvo não Retina. O estado de qualidade deve estar separado do estado de entrada. Caso contrário, uma atualização do controlo deslizante pode prejudicar a passagem final e deixar a imagem numa grelha de pré-visualização quatro vezes mais grosseira do que o ecrã.

Apple Silicon e memória unificada

No Apple Silicon, o Metal comunica com uma GPU Apple com um modelo de memória unificado: a CPU e a GPU partilham a memória do sistema, embora as regras de acesso continuem a depender do modo de armazenamento de cada recurso. Isto pode reduzir algumas restrições de cópia, mas não torna a iteração de órbitas, a alta precisão ou as texturas de grande dimensão gratuitas. A aplicação para macOS do MandelKit funciona nativamente como arm64 e utiliza este caminho Metal; a velocidade real continua a depender da fórmula, da profundidade de zoom, das iterações, do tamanho da saída e dos efeitos ativos.

A memória unificada no Apple Silicon não faz com que o funcionamento da CPU e da GPU seja idêntico nem isento de sincronização. Os modos de armazenamento do Metal continuam a determinar qual o processador que pode aceder a um recurso e como este é otimizado para utilização pela GPU. Um renderizador fractal continua, portanto, a necessitar de conjuntos de trabalho delimitados, formatos de textura adequados e medições em dispositivos reais. A execução nativa do arm64 descreve a arquitetura; não garante nem uma taxa de fotogramas fixa nem o mesmo tempo de execução em todos os chips da série M.

Fontes e leituras complementares

Este artigo resume as seguintes fontes especializadas, utilizando a redação original. Acedido e revisto editorialmente em 12 de agosto 2026.

  1. Metal overviewApple Developer Documentation
  2. Choosing a resource storage mode for Apple GPUsApple Developer Documentation
  3. The Science of Fractal ImagesSpringer