Rendering & toepassingen

Afbeeldingen renderen die groter zijn dan één textuur

Een afbeelding kan veel groter zijn dan de maximale textuurafmeting van de GPU als deze nooit als één textuur wordt toegewezen. Bij tegelsgewijze weergave worden beheersbare regio’s verwerkt en worden de voltooide pixels naar een uitvoerweergave gestreamd.

Mandelbrot-weergave met een zichtbaar tegelraster voor een grote export
Te grote afbeeldingen worden opgedeeld in hanteerbare tegels en vervolgens samengevoegd zonder zichtbare naden.Afbeelding: Björn Kindler / MandelKit · MandelKit Wissensgrafik · Eigene Darstellung · Own work

Globaal overzicht, lokale tegels

Elke tegel ontleent zijn coördinaten aan de volledige uitvoerafmetingen en de zichtbare beeldverhouding. De fractal mag niet onafhankelijk worden aangepast of gecentreerd, anders zal de samengestelde afbeelding herhaalde uitsneden bevatten in plaats van één doorlopend beeld.

Een enorme uitvoer heeft één globaal coördinatensysteem. Elke tegel krijgt daaruit een exacte uitsnede in plaats van een afzonderlijk afgeronde camera. Pixelcentra moeten over tegelgrenzen heen doorlopen, anders ontstaan er naden. De beeldverhouding en het zichtbare fractalgebied worden eenmalig voor de gehele afbeelding gedefinieerd, waardoor bij een export van 100,000 pixels de compositie van het schermbeeld behouden blijft.

Effecten hebben 'neighborhoods' nodig

Antialiasing, normal maps en screen-space-filters kunnen buiten de rand van een tegel samplen. Door guard bands te renderen en deze tijdens de samenvoeging bij te snijden, worden naden voorkomen. Globale methoden zoals histogram-egalisatie vereisen een aparte statistische bewerking of zijn opzettelijk niet beschikbaar.

Filters met een straal vereisen pixels buiten de randen van de tegels. Render elke tegel met een halo, pas het effect toe en snijd vervolgens bij tot de kern. Effecten met meerdere fasen vereisen mogelijk een grotere cumulatieve halo. Zonder overlapping ontstaan er naden, ook al ziet elke tegel afzonderlijk er correct uit. De vereiste straal hoort bij de effectdefinitie en moet bekend zijn bij de exportplanner.

‘Disk’ vervangt ‘peak memory’

Een op schijf gebaseerde encoder of tussenopslag accepteert rijen of tegels zodra deze voltooid zijn. Dit beperkt het gebruik van RAM- en GPU-geheugen, terwijl de druk wordt verlegd naar opslagruimte, coderingslimieten en de duur van de taak. Voortgang, annulering en atomaire afronding maken deel uit van de correctheid bij langdurige exporten.

Wanneer de volledige afbeelding niet in het RAM-geheugen of in één Metal-textuur past, worden voltooide stroken rechtstreeks naar een incrementele encoder of een tijdelijk bestand geschreven. De voortgang moet zowel het renderen als het coderen omvatten, terwijl het annuleren de tijdelijke gegevens netjes afsluit. Er mag nooit één enkele definitieve CGImage vereist zijn – juist die laatste samenstellingsstap leidt anders tot lege of niet-codeerbare gigantische exportbestanden.

Bronnen en verdere literatuur

Dit artikel vat de volgende gespecialiseerde bronnen samen in de oorspronkelijke bewoordingen. Geraadpleegd en redactioneel beoordeeld 12 augustus 2026.

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