Rendu fractal par GPU
La plupart des pixels fractals peuvent être évalués indépendamment, ce qui fait du rendu par temps d'échappement une charge de travail GPU naturelle Metal sur Mac et Apple Silicon. Le défi consiste à maintenir l'utilité de milliers de threads lorsque les orbites suivent des trajectoires très différentes.

Pixels parallèles
Un noyau de calcul mappe les coordonnées des threads aux coordonnées fractales et effectue des itérations localement. Des constantes partagées décrivent la fenêtre d’affichage, la formule et les paramètres visuels ; les textures de sortie transmettent les champs dérivés des orbites aux passes de couleur et d’éclairage ultérieures.
Les pixels fractals sont largement indépendants et s’adaptent bien aux threads du GPU. Les coordonnées, les paramètres des formules et les tables de couleurs sont partagés ; chaque thread écrit un résultat. Cette indépendance prend fin avec les effets de voisinage tels que les normales, l’occlusion ambiante ou le bloom. Ceux-ci doivent faire l’objet de passes distinctes avec des entrées explicites, afin que la modification d’un dégradé ne déclenche pas inutilement un nouveau calcul coûteux de l’orbite.
Divergence et déséquilibre de la charge de travail
Les pixels qui s'échappent rapidement terminent tôt, tandis que les pixels de bordure peuvent épuiser l'intégralité du budget d'itération. Les threads regroupés pour l'exécution peuvent attendre le chemin le plus lent. Les tests intérieurs, l'ordonnancement adaptatif et les tuiles progressives réduisent le travail inutile mais ajoutent de la complexité.
Près d’une frontière, certains pixels sont itérés des centaines de fois tandis que les pixels extérieurs sont écartés presque immédiatement. Les threads d’un même groupe attendent le chemin le plus lent. La classification des tuiles, les tests d’intérieur et les pixels actifs compactés peuvent réduire la divergence mais augmentent le coût de gestion. L’analyse de performance sur plusieurs régions permet de déterminer si la complexité en vaut la peine ; un noyau rapide uniquement sur l’extérieur vide est trompeur.
Réponse rapide, travail complet
Lors de gestes ou de modifications du curseur, un passage à plus faible résolution ou avec un échantillonnage réduit peut préserver la réactivité. Une fois la saisie stabilisée, un affinage doit le remplacer par un résultat adapté à l'affichage. Une politique d'aperçu devient un défaut si le passage final n'est jamais programmé ou est continuellement invalidé.
Lors d’un geste, l’application peut réagir immédiatement à une résolution ou une profondeur d’itération inférieure. Une fois le geste terminé, les passes plus fines se poursuivent jusqu’à la résolution d’affichage native — sans passer aveuglément en Retina sur une cible non Retina. L’état de qualité doit être distinct de l’état de saisie. Sinon, une mise à jour du curseur risque de priver la passe finale de ressources et de laisser l’image sur une grille de prévisualisation quatre fois plus grossière que l’écran.
Apple Silicon et mémoire unifiée
Sur Apple Silicon, Metal s’adresse à un GPU Apple doté d’un modèle de mémoire unifié : le CPU et le GPU partagent la mémoire système, bien que les règles d’accès dépendent toujours du mode de stockage de chaque ressource. Cela permet de réduire certaines limites de copie, mais ne rend pas pour autant gratuites les itérations d’orbite, la haute précision ou les textures volumineuses. L’application macOS de MandelKit s’exécute en mode natif comme arm64 et utilise ce chemin Metal ; la vitesse réelle dépend toujours de la formule, de la profondeur de zoom, du nombre d’itérations, de la taille de sortie et des effets actifs.
La mémoire unifiée sur Apple Silicon ne rend pas le fonctionnement du CPU et du GPU identique ni ne garantit l’absence de synchronisation. Les modes de stockage de Metal déterminent toujours quel processeur peut accéder à une ressource et comment celle-ci est optimisée pour une utilisation GPU. Un moteur de rendu fractal a donc toujours besoin d’ensembles de travail bornés, de formats de texture adaptés et de mesures effectuées sur des appareils réels. L’exécution native de arm64 décrit l’architecture ; elle ne garantit ni une fréquence d’images fixe, ni le même temps d’exécution sur toutes les puces de la série M.
Sources et lectures complémentaires
Cet article résume les sources spécialisées suivantes en reprenant leur formulation d'origine. Consultées et révisées par la rédaction 12 août 2026.
- Metal overviewApple Developer Documentation
- Choosing a resource storage mode for Apple GPUsApple Developer Documentation
- The Science of Fractal ImagesSpringer

