Sinds Nvidia's 2018-aankondiging van zijn 20-serie RTX grafische kaarten, is de geweldige functie "ray tracing" een populaire term in videogamekringen. Maar het kan moeilijk zijn om te begrijpen wat ray tracing is, hoe het werkt en waarom het er beter uitziet dan eerdere technieken.
Wat is raytracing en hoe werkt het?
Als je in de echte wereld iets ziet, zie je een foton van een lichtbron. Op weg naar jou kan dat foton zijn weerkaatst door een of meer oppervlakken. Elke reflectie verandert de eigenschappen van het licht dat je ogen bereikt.
De zon straalt een breed scala aan kleuren licht uit, elk oppervlak absorbeert wat licht en weerkaatst andere. Wat we zien als een groen oppervlak, zoals een blad, lijkt zo omdat het voornamelijk groen licht reflecteert. Als het licht dat van het blad weerkaatst een ander oppervlak raakt, zoals een witte muur, dan ziet dat oppervlak er iets anders uit dan wanneer er puur wit licht op schijnt. Elke reflectie beïnvloedt elk toekomstig oppervlak waarmee het licht interageert, en verandert de intensiteit en de zichtbare kleur.
Ray tracing is een grafische techniek die dezelfde principes volgt. Lichtstralen worden geprojecteerd, de eigenschappen van het gereflecteerde en gebroken licht, zoals kleur, worden berekend en de straal blijft reizen.
In de echte wereld zendt elke lichtbron, zoals een gloeilamp of de zon, fotonen uit in alle richtingen, waarvan de overgrote meerderheid nooit je ogen bereikt. Dit simuleren zou een waanzinnig intensief proces zijn dat een grotendeels verspild resultaat oplevert. Om de werklast te verminderen, werkt raytracing in omgekeerde richting, waarbij stralen van de camera worden geprojecteerd. Elke straal mag een bepaalde afstand afleggen zonder reflectie of een bepaald aantal keren reflecteren voordat de berekeningen worden uitgevoerd en de pixelwaarde wordt ingesteld.
Een straal wordt bijvoorbeeld geworpen vanuit het perspectief van de kijker, wanneer deze een witte muur raakt, genereert een algoritme recursief een gereflecteerde straal die vervolgens door een ruit van blauw glas reist, ten slotte raakt de gereflecteerde straal een witte lichtbron en wordt geabsorbeerd. Het blauwe glas absorbeert alles behalve blauw licht dat een blauw licht op de muur werpt, waardoor de pixel blauw wordt gekleurd.
Waarom ziet Ray Tracing er zoveel beter uit?
De standaardmethode om scènes in realtime weer te geven, omvat het gebruik van vooraf berekende lichtkaarten en volledige scèneverlichting. Sommige games maken gebruik van beperkte volumetrische verlichting om bewegende lichtbronnen op te nemen en dynamische schaduwen mogelijk te maken. Deze techniek wordt echter spaarzaam gebruikt omdat het behoorlijk processorintensief is.
Ray tracing kan een fotorealistisch resultaat opleveren als er wat extra werk wordt gedaan in de game-ontwerpfase. Als alle oppervlakken details bevatten zoals reflectiviteit, transparantie en hoe het licht er doorheen breekt, kan het algehele resultaat natuurlijker lijken. Hoewel deze benadering duidelijk meer werk in de game-ontwerpfase met zich meebrengt, kan het resultaat verschijnen fotorealistisch met licht dat reageert zoals het zou moeten wanneer het weerkaatst op beton, metaal, hout en glas enzovoort.
Met raytracing kunnen nauwkeurige reflecties en schaduwen worden geworpen als onderdeel van het weergaveproces. in traditionele weergavemethoden zijn beide effecten volledig optioneel en kunnen ze aanzienlijke prestatiehits veroorzaken.
Ray tracing zelf wordt geleverd met een enorme prestatiehit. Totdat Nvidia's RTX grafische kaarten werden aangekondigd met hardwareversnelling voor ray tracing, werd gedacht dat de benodigde verwerkingskracht om raytracing in realtime in software uit te voeren meer dan tien jaar was weg. Zelfs met de hardwareversnelling veroorzaakt raytracing nog steeds een aanzienlijke prestatievermindering, omdat dit nog steeds het langzaamste deel is van het renderen van een frame.