Rendering og anvendelser

Rendering af billeder, der er større end én tekstur

Et billede kan være langt større end GPU’ens maksimale teksturdimension, hvis det aldrig tildeles som én tekstur. Flisebelagt rendering beregner håndterbare regioner og streamer de færdige pixels til en outputrepræsentation.

Mandelbrot-rendering med et synligt flisegitter til en stor eksport
Overdimensionerede billeder opdeles i håndterbare fliser og sammensættes derefter uden synlige samlinger.Billede: Björn Kindler / MandelKit · MandelKit Wissensgrafik · Eigene Darstellung · Own work

Global visning, lokale fliser

Hver flise udleder sine koordinater ud fra de fulde outputdimensioner og det synlige billedformat. Den må ikke selvstændigt tilpasse eller centrere fraktalen, da det sammensatte billede ellers vil indeholde gentagne udsnit i stedet for én sammenhængende visning.

Et stort output har ét globalt koordinatsystem. Hver flise får en præcis udskæring herfra i stedet for et separat afrundet kamera. Pixelcentrene skal fortsætte på tværs af flisegrænserne, ellers opstår der sømme. Billedformat og synligt fraktalområde defineres én gang for hele billedet, hvilket gør det muligt at eksportere i 100,000-pixel for at bevare kompositionen fra skærmvisningen.

Effekter kræver omgivelser

Antialiasing, normal maps og screen-space-filtre kan udtage prøver ud over en flisekant. Ved at rendere beskyttelsesbånd og beskære dem under sammensætningen undgår man synlige overgange. Globale metoder såsom histogramudligning kræver en separat statistikgennemgang eller er bevidst ikke tilgængelige.

Filtre med radius kræver pixels uden for flisekanterne. Render hver flise med en glorie, anvend effekten og beskær derefter til kernen. Effekter i flere trin kan kræve en større kumulativ glorie. Uden overlapning vil der opstå synlige overgange, selvom hver flise ser korrekt ud for sig selv. Den krævede radius hører til effektdefinitionen og skal være kendt af eksportplanlæggeren.

Disk erstatter peak memory

En diskbaseret koder eller et mellemliggende lager modtager rækker eller fliser, efterhånden som de færdiggøres. Dette begrænser brugen af RAM og GPU-hukommelse, samtidig med at presset flyttes over på lagerplads, kodningsbegrænsninger og jobvarighed. Statusopdateringer, annullering og atomar afslutning er en del af korrektheden ved lange eksportopgaver.

Når det fulde billede ikke kan være i RAM eller i én Metal-tekstur, skrives færdige strimler direkte til en inkrementel koder eller en midlertidig fil. Statusopdateringer skal omfatte rendering og kodning, mens afbrydelse lukker midlertidige data på en ordentlig måde. Der må aldrig kræves et enkelt endeligt CGImage – netop det sidste sammensætningstrin resulterer ellers i tomme eller ukodbare kæmpe eksportfiler.

Kilder og yderligere læsning

Denne artikel sammenfatter følgende faglige kilder i den oprindelige ordlyd. Tilgået og redaktionelt gennemgået 12 august 2026.

  1. Metal overviewApple Developer Documentation
  2. The Science of Fractal ImagesSpringer