VXAO transformeert objecten in de wereldruimte in voxels, transformeert de en gebruikt die om schaduwen te berekenen. Omgevingsocclusie is een grafische optie die voor veel videogames beschikbaar is in het instellingenmenu. Hoewel sommige games zullen uitleggen dat ambient occlusie schaduwen verbetert, legt bijna geen enkele game uit wat het in detail doet.
Wat is ambient occlusie?
Ambient occlusie is een schaduwtechniek die simuleert hoe objecten omgevingslicht afsluiten. Het is ontworpen als een hulpmiddel om schaduwen zo realistisch mogelijk te laten lijken, met binnenranden en oppervlakken onder objecten met donkere schaduwen.
Tip: Occlusie is een ander woord voor obstructie of blokkering, dus ambient occlusie simuleert hoe licht wordt geblokkeerd door objecten in een poging realistische schaduwen te werpen.
In zijn meest simplistische vorm berekent ambient occlusie alleen schaduwen die zouden worden geworpen door een diffuse lichtbron in de lucht. Meer geavanceerde implementaties houden ook rekening met andere lichtbronnen zoals lampen, fakkels en mondingsflitsen.
De eerste game met ambient occlusion was de game Crysis uit 2007.
Welke soorten omgevingsocclusie zijn er?
SSAO, of Screen-Space Ambient Occlusion, is een bijzonder lichtgewicht implementatie van ambient occlusie. "Schermruimte" is een term die betekent dat SSAO alleen rekening houdt met objecten die actief worden weergegeven. Dit betekent dat voor objecten die momenteel niet zichtbaar zijn, geen berekeningen worden uitgevoerd.
Als er bijvoorbeeld een toren is die een schaduw over een straat werpt en je de camera zo draait dat die toren niet meer op het scherm wordt weergegeven, zal de schaduw die hij werpt verdwijnen. Evenzo zal een object in de verte dat aan het zicht wordt onttrokken door een object dichterbij, geen schaduw werpen, zelfs niet als er een zichtbaar zou moeten zijn, zoals een boom die wordt geblokkeerd door een vrachtwagen. In sommige gevallen kan dit betekenen dat een schaduw die onder een object zoals een tank zou moeten verschijnen, niet verschijnt, omdat de achterkant, bovenkant en onderkant van de tank niet worden weergegeven en dus het licht niet blokkeren.
SSAO heeft ook problemen met het werpen van schaduwen waar die er niet zouden moeten zijn, vooral wanneer deze betrekking hebben op twee objecten op verschillende afstanden van elkaar.
HBAO, of Horizon Based Ambient Occlusion, is een meer geavanceerde ambient occlusie-implementatie van Nvidia. AMD heeft een vergelijkbare implementatie die ze HDAO of High Definition Ambient Occlusion noemen. Met HBAO worden schaduwen nauwkeuriger op oppervlakken aangebracht, waardoor wordt voorkomen dat er zoveel valse schaduwen ontstaan. Helaas is de impact op de prestaties aanzienlijk, dus het effect wordt alleen op halve schaal weergegeven, wat betekent dat het schaduweffect een lagere resolutie heeft.
HBAO+ is een verbeterde versie van HBAO die een aantal prestatieproblemen aanpakt en ervoor zorgt dat de schaduwen op volledige schaal worden weergegeven, zonder al te veel invloed op de prestaties. Deze verhoogde resolutie zorgt voor zachtere en vloeiendere schaduwen. Betere schaduwvervagingseffecten zijn vooral belangrijk voor buitenscènes waar objecten zoals hoogspanningskabels zachte in plaats van harde schaduwen moeten werpen. HBAO+ lost ook problemen op die HBAO kan hebben met flikkeren door bewegende objecten of camerabewegingen.
VXAO, of Voxel Accelerated Ambient Occlusion, is een nieuwere technologie van Nvidia. In plaats van een algoritme voor schermruimte te gebruiken, gebruikt het een algoritme voor omgevingsocclusie in de wereldruimte. Dit betekent dat objecten die zich buiten het scherm bevinden nog steeds schaduwen kunnen werpen, waardoor schaduwen van achter de camera en onder objecten kunnen worden geworpen, wat een veel realistischer uiterlijk geeft. VXAO transformeert objecten in de wereldruimte in voxels en gebruikt die om schaduwen te berekenen.
Tip: Voxels zijn modellen met een lagere resolutie dan het oorspronkelijke aantal polygonen van objecten. Het weergeven van de texturen op voxels zou er slecht uitzien, omdat de vorm van objecten een veel lagere resolutie zou hebben. Voor het genereren van schaduwen biedt dit verminderde objectdetail echter een aanzienlijke prestatieverbetering terwijl de kwaliteit verwaarloosbaar is.
In tegenstelling tot eerdere implementaties van ambient occlusie, betekent het feit dat VXAO wereldruimte is, dat het zich bewust is van de afstand tussen objecten, waardoor schaduwen nauwkeuriger kunnen worden berekend voor objecten verder van de schaduw. Het voorkomt ook een halo-effect dat soms te zien is rond personages die voor oppervlakken zoals muren lopen. VXAO is processorintensiever dan eerdere iteraties van ambient occlusie, maar biedt wel de beste schaduwkwaliteit.