Betegelde weergave - Tiled rendering

Tegelweergave is het proces van het onderverdelen van een computergrafisch beeld door een regelmatig raster in de optische ruimte en het afzonderlijk weergeven van elk deel van het raster, of tegel . Het voordeel van dit ontwerp is dat de hoeveelheid geheugen en bandbreedte wordt verminderd in vergelijking met weergavesystemen met directe modus die het hele frame in één keer tekenen. Dit heeft ertoe geleid dat tegelrenderingsystemen met name gebruikelijk zijn voor het gebruik van draagbare apparaten met een laag vermogen . Betegelde weergave is soms bekend als een "sort middle"-architectuur, omdat het de geometrie in het midden van de grafische pijplijn sorteert in plaats van aan het einde.

Basis concept

Het maken van een 3D-beeld voor weergave bestaat uit een reeks stappen. Eerst worden de weer te geven objecten vanuit individuele modellen in het geheugen geladen . Het systeem past vervolgens wiskundige functies toe om de modellen om te zetten in een gemeenschappelijk coördinatensysteem, het wereldbeeld . Vanuit dit wereldbeeld wordt een reeks polygonen (meestal driehoeken) gecreëerd die de originele modellen benaderen vanuit een bepaald gezichtspunt, de camera . Vervolgens produceert een compositiesysteem een ​​afbeelding door de driehoeken weer te geven en texturen aan de buitenkant aan te brengen. Texturen zijn kleine afbeeldingen die op de driehoeken zijn geschilderd om realisme te produceren. Het resulterende beeld wordt vervolgens gecombineerd met verschillende speciale effecten en verplaatst naar een framebuffer , die vervolgens door videohardware wordt gescand om het weergegeven beeld te produceren. Deze conceptuele basislay-out staat bekend als de weergavepijplijn .

Elk van deze stappen vergroot de hoeveelheid geheugen die nodig is om de resulterende afbeelding te bewaren. Tegen de tijd dat het het einde van de pijplijn bereikt, zijn de afbeeldingen zo groot dat typische grafische kaartontwerpen vaak gespecialiseerd snel geheugen en een zeer snelle computerbus gebruiken om de vereiste bandbreedte te bieden om het beeld in en uit de verschillende sub- onderdelen van de pijpleiding. Dit soort ondersteuning is mogelijk op speciale grafische kaarten, maar naarmate het stroom- en groottebudget beperkter wordt, wordt het bieden van voldoende bandbreedte duur in ontwerptermen.

Betegelde renderers pakken dit probleem aan door de afbeelding op te splitsen in secties die bekend staan ​​als tegels, en elk afzonderlijk weer te geven. Dit vermindert de hoeveelheid geheugen die nodig is tijdens de tussenstappen en de hoeveelheid gegevens die op een bepaald moment wordt verplaatst. Om dit te doen, sorteert het systeem de driehoeken waaruit de geometrie bestaat op locatie, zodat snel kan worden gevonden welke driehoeken de tegelgrenzen overlappen. Vervolgens laadt het alleen die driehoeken in de renderingpijplijn, voert het de verschillende renderingbewerkingen uit in de GPU en stuurt het resultaat naar de framebuffer . Zeer kleine tegels kunnen worden gebruikt, 16×16 en 32×32 pixels zijn populaire tegelformaten, waardoor de hoeveelheid geheugen en bandbreedte die nodig is in de interne fasen ook klein is. En omdat elke tegel onafhankelijk is, leent hij zich natuurlijk voor eenvoudige parallellisatie.

In een typische betegelde renderer moet de geometrie eerst worden omgezet in schermruimte en toegewezen aan schermruimtetegels. Dit vereist enige opslag voor de lijsten met geometrie voor elke tegel. In vroege tegelsystemen werd dit uitgevoerd door de CPU , maar alle moderne hardware bevat hardware om deze stap te versnellen. De lijst met geometrieën kan ook van voor naar achter worden gesorteerd, waardoor de GPU verborgen oppervlakteverwijdering kan gebruiken om te voorkomen dat pixels worden verwerkt die achter andere zijn verborgen, waardoor geheugenbandbreedte wordt bespaard voor onnodige textuurzoekopdrachten.

Er zijn twee belangrijke nadelen van de betegelde aanpak. Een daarvan is dat sommige driehoeken meerdere keren getekend kunnen worden als ze meerdere tegels overlappen. Dit betekent dat de totale weergavetijd hoger zou zijn dan bij een weergavesysteem in directe modus. Er zijn ook mogelijke problemen wanneer de tegels aan elkaar moeten worden genaaid om een ​​compleet beeld te krijgen, maar dit probleem is al lang geleden opgelost. Moeilijker op te lossen is dat sommige beeldtechnieken worden toegepast op het frame als geheel, en deze zijn moeilijk te implementeren in een betegelde render waarbij het idee is om niet met het hele frame te hoeven werken. Deze afwegingen zijn algemeen bekend en van ondergeschikt belang voor systemen waar de voordelen nuttig zijn; betegelde weergavesystemen worden veel aangetroffen in draagbare computerapparatuur.

Tegelweergave moet niet worden verward met tegel/niet-lineaire framebuffer- adresseringsschema's, waardoor aangrenzende pixels ook aangrenzend zijn in het geheugen. Deze adresseringsschema's worden gebruikt door een grote verscheidenheid aan architecturen, niet alleen door tegel renderers.

Vroeg werk

Veel van het vroege werk aan het renderen van tegels werd gedaan als onderdeel van de Pixel Planes 5-architectuur (1989).

Het Pixel Planes 5-project valideerde de tegelbenadering en vond een groot aantal van de technieken uit die nu als standaard worden beschouwd voor betegelde renderers. Het is het werk dat het meest wordt geciteerd door andere kranten in het veld.

De betegelde benadering was ook al vroeg in de geschiedenis van softwarerendering bekend. Implementaties van Reyes-rendering verdelen de afbeelding vaak in "tegelemmers".

Commerciële producten – Desktop en console

In het begin van de ontwikkeling van desktop-GPU's ontwikkelden verschillende bedrijven tegelarchitecturen. Na verloop van tijd werden deze grotendeels verdrongen door GPU's in directe modus met snelle aangepaste externe geheugensystemen.

Belangrijke voorbeelden hiervan zijn:

Voorbeelden van niet-getegelde architecturen die grote on-chip buffers gebruiken zijn:

  • Xbox 360 (2005): de GPU bevat een ingebouwde 10  MB eDRAM ; dit is niet voldoende om het raster vast te houden voor een volledige afbeelding van 1280×720 met 4× multisample anti-aliasing , dus een tegeloplossing wordt gesuperponeerd bij gebruik in HD-resoluties en 4× MSAA is ingeschakeld.
  • Xbox One (2013): de GPU bevat een ingebouwde 32  MB eSRAM , die kan worden gebruikt om een ​​afbeelding geheel of gedeeltelijk te bewaren. Het is geen tegelarchitectuur, maar is flexibel genoeg zodat softwareontwikkelaars tegelweergave kunnen emuleren.

Commerciële producten – Embedded

Vanwege de relatief lage externe geheugenbandbreedte en de bescheiden hoeveelheid on-chip geheugen die nodig is, is tiled rendering een populaire technologie voor embedded GPU's. Huidige voorbeelden zijn onder meer:

Op tegels gebaseerde weergave in directe modus (TBIM):

  • ARM Mali- serie.
  • Qualcomm Adreno (serie 300 en nieuwer kunnen ook dynamisch overschakelen naar weergave in directe/directe modus via FlexRender).

Op tegels gebaseerde uitgestelde weergave (TBDR):

Vivante produceert mobiele GPU's die een strak gekoppeld framebuffergeheugen hebben (vergelijkbaar met de hierboven beschreven Xbox 360 GPU). Hoewel dit kan worden gebruikt om delen van het scherm weer te geven, betekent de grote omvang van de weergegeven gebieden dat ze gewoonlijk niet worden beschreven als een op tegels gebaseerde architectuur.

Zie ook

Referenties