Door Daan van Monsjou

Nieuwsredacteur

Hoe staat het met realtime raytracing?

Een rendertechniek in de spotlight

17-01-2020 • 06:00

95

Multipage-opmaak

Inleiding

Herinner je je nog hoe Lightning McQueen door het stadion racete in de film Cars? Raytracing klinkt als een techniek van de toekomst, maar de kans is groot dat je al eens beelden hebt gezien die met raytracing zijn gemaakt. Zo zat het al gedeeltelijk in Cars en de Pixar-film Monsters University uit 2013 is zelfs volledig met raytracing gemaakt. Ook in de game Killzone: Shadow Fall uit datzelfde jaar werd er al een beetje gebruik van gemaakt.

Raytracing is een verzamelnaam voor verschillende rendertechnieken waarmee verlichting in 3d-omgevingen fotorealistisch kan worden gesimuleerd. Zo kan de techniek realistische reflecties en schaduwen opleveren. Raytracing stamt uit de jaren zestig en is door de jaren heen steeds vaker ingezet. Zo levert het dus al decennialang prachtige beelden op bij het maken van animatiefilms. Raytracing werd tot voor kort echter weinig toegepast in games.

Raytracing Cars
Raytracing in Cars (rechts): let op de motorkap

In 2018 kwam Nvidia met videokaarten met aparte hardware voor raytracingberekeningen. Dit moest het gebruik van raytracing in real time mogelijk maken, al dan niet in combinatie met het traditionelere rasterization. De toepassing van raytracing in real time is een flinke doorbraak, want het vergt enorm veel rekenkracht. Soms duurt het renderen van een enkele frame voor een animatiefilm meer dan een dag. In games moet dit bij voorkeur meer dan zestig keer per seconde.

Nvidia’s oplossing was het introduceren van videokaarten met aparte cores voor raytracing, wat de werklast voor de ‘gewone’ gpu doet afnemen. Zelfs dan wordt het gebruik van raytracing in veel games beperkt tot slechts enkele aspecten van verlichting, zoals reflecties in schaduwen, waarbij de rest met rasterization wordt gerenderd.

Inmiddels zijn er een stuk of twaalf games die de techniek ondersteunen, waaronder Metro Exodus en Call of Duty: Modern Warfare. Dit aantal zal dit jaar oplopen naar ruim twintig, met titels als Doom Eternal en Cyberpunk 2077 in het verschiet. Bovendien krijgen de PlayStation 5 en Xbox Series X, die beide eind dit jaar uitkomen, ondersteuning voor raytracing. Daarmee zal de installed base van apparaten die raytracing ondersteunen, aanzienlijk groeien.

In 2020 belooft raytracing dus verder te groeien en daarmee is dit een goed moment om terug en vooruit te blikken op deze rendertechniek. Wat kunnen we bijvoorbeeld voor de komende jaren verwachten van de technologie? Hoe is het momenteel gesteld met realtime raytracing? Hoe zit het nou precies met dat RTX? Maar eerst: wat is raytracing eigenlijk?

Rasterization en raytracing

Voordat we beginnen over raytracing, is het goed om te weten hoe het renderen van 3d-omgevingen en games momenteel werkt. Hiervoor wordt doorgaans gebruikgemaakt van een techniek die rasterization wordt genoemd. Rasterization wordt veel gebruikt om realtime 3d-graphics te renderen, waaronder games. Rasterization biedt een goede balans tussen prestaties en grafisch uiterlijk. Er valt best een mooie game mee te maken en het is niet te rekenintensief om in real time te worden gebruikt.

In een digitale 3d-omgeving worden objecten op een scherm gevormd met een grote hoeveelheid driehoeken, ook wel polygonen genoemd. Deze polygonen vormen samen 3d-modellen van deze objecten. In deze virtuele objecten kruisen de hoeken, of vertices, van deze driehoeken de vertices van andere driehoeken met andere vormen en groottes. Deze knooppunten worden geassocieerd met veel informatie, waaronder de positie van een object in een omgeving, maar bijvoorbeeld ook informatie over kleur en textuur.

Rasterization ScratchaPixel

Een polygoon wordt omgezet in een 2d-afbeelding op een raster. Afbeelding via ScratchaPixel

Een computer projecteert deze polygonen in de 3d-omgeving als pixels op een tweedimensionaal scherm: een raster. Hierbij komen een hoop berekeningen kijken, maar kort gezegd bepaalt rasterization welk schermgedeelte een polygoon inneemt, waarbij een polygoon die dichter bij het scherm is geplaatst, groter in beeld komt dan een die zich in de verte bevindt. Polygonen die zich achter andere polygonen bevinden, komen helemaal niet in beeld. Nadat de polygonen zijn omgezet in pixels, worden deze pixels voorzien van kleur en textuur door middel van shading, schaduwen worden toegevoegd met shadow mapping en lichteffecten worden nagebootst met technieken als ambient occlusion. Dit levert uiteindelijk een volledige ‘gerenderde’ 3d-omgeving op.

Rasterization heeft wel enkele zwakke plekken, waaronder verlichting. Rasterization kan natuurverschijnselen van verlichting, zoals reflecties in schaduwen, weliswaar redelijk nabootsen, maar er zijn grenzen aan het realisme. In complexe scènes kan verlichting er met rasterization soms wat onnatuurlijk uitzien. Met veel moeite kunnen ontwikkelaars met rasterization misschien in de buurt van fotorealisme komen, maar dit kost zoveel ontwikkelwerk dat het simpelweg de tijd, moeite en kosten niet waard is.

En toen was er raytracing

Raytracing is een verzamelnaam voor technieken waarmee 3d-omgevingen met zeer complexe verlichting kunnen worden gerenderd. Letterlijk vertaald betekent raytracing ‘straaltracering’ en dit is exact wat de techniek doet. Het probeert het pad dat licht aflegt, te simuleren terwijl het in een omgeving rondkaatst, waarna het wordt omgezet in pixels. In de praktijk maakt dit het renderen van zeer realistische omgevingen met spiegels, transparante oppervlakken en schaduwen mogelijk.

Door de aard van raytracing is het bovendien relatief gemakkelijk te implementeren. Waar met rasterization trucjes als ambient occlusion en shadow mapping nodig zijn om een mooi beeld te creëren, gaat dit met raytracing volledig via de informatie die voortkomt uit weerkaatsingen. Dit gaat na implementatie vrijwel vanzelf, waardoor het enorm veel ontwikkeltijd bespaart. Maar hoe werkt de techniek nou precies? Om dit uit te leggen, is een kort natuurkundelesje met behulp van een concreet voorbeeld noodzakelijk.

Ray-tracing in de praktijk

Met raytracing kunnen fotorealistische afbeeldingen gerenderd worden

Licht in de (versimpelde) natuur

Stel je een uitzicht vanuit een pittoresk buitenhuis in de Ardennen voor. Vanuit het raam is een grasveld zichtbaar met daarop een grote steen en een stel groene bomen. In de verte stroomt een kolkende rivier. In de lucht zit een grote, gele ster, die we de zon noemen. Iedereen weet dat de zon simpel gezegd een enorme lichtbron is die continu een ontelbare hoeveelheid fotonen op de aarde afvuurt. Deze reizen naar onze planeet, totdat ze op een object stuiten.

Stel dat enkele fotonen neerkomen op de grote steen in het grasveld. De steen interageert met de fotonen door ze te weerkaatsen. Hoe de steen dat doet, ligt onder andere aan het materiaal, de textuur en de vorm van de steen. Misschien is hij glad en reflectief, waardoor de fotonen naar een nabijgelegen boom en vervolgens verder worden weerkaatst. Deze weerkaatsingen gaan door totdat de fotonen al hun energie hebben verloren. Intussen worden alle gebieden verlicht waar de fotonen terechtkomen.

Het zal duidelijk zijn dat fotonen sommige plekken in een omgeving indirect bereiken. In het echte leven zijn plekken in de schaduw niet pikzwart, maar grotendeels zichtbaar doordat licht via weerkaatsingen er alsnog een weg naartoe heeft weten te vinden. Deze plekken zijn donkerder doordat minder fotonen hun weg naar deze plekken hebben gevonden. Dit is simpel gezegd hoe licht in de natuur werkt.

Verlichting en raytracing

De werking van raytracing is vergelijkbaar. Alle objecten in een digitale wereld zijn, net als bij rasterization, 3d-modellen die bestaan uit polygonen, die worden weergegeven op een soort raster met pixels. Dit raster kan gezien worden als het raam van het lieflijke buitenhuis in de Ardennen. Vanuit dit raam zijn hetzelfde grasveld met dezelfde steen en dezelfde bomen zichtbaar. Ook dit landschap moet worden verlicht, maar op computers werkt dit vaak net iets anders. Computers kunnen namelijk niet het pad van elke foton uitrekenen. Ze beschikken gewoonweg niet over genoeg rekenkracht om dit binnen redelijke termijn te doen. Hierdoor is het belangrijk om, met oog op efficiëntie, alleen de zichtbare 'lichtstralen' te berekenen.

Ray tracing

Raytracing maakt dan ook gebruik van een soort lichtstralen, maar anders dan in de natuur, komen ze als het ware vanuit een oogpunt, via het raam op objecten terecht. Het oogpunt, ook wel de camera, is hierbij de bewoner die uit het raam kijkt, of een gebruiker achter een computerscherm. Vanuit het raam stuiten deze stralen bijvoorbeeld vanaf de grote steen naar de groene bomen, waarna ze uiteindelijk 'terugkaatsen' naar de originele lichtbron, in dit geval de zon. Deze weerkaatsingen leveren kleur- en textuurinformatie op, die vervolgens in pixels wordt omgezet. Dit levert levensechte verlichting op, wat met rasterization dus niet gemakkelijk haalbaar is.

Het komt erop neer dat raytracing in veel gevallen de natuur omdraait. Dit kan op meerdere manieren gedaan worden. Zo kunnen bijvoorbeeld een soort fotonen vanuit het oogpunt afgevuurd worden, zodat de techniek alleen de rays die daadwerkelijk zichtbaar zijn vanuit het perspectief van de kijker berekenen. Zo wordt de rekenkracht van een computer efficiënter gebruikt. Uiteraard zijn er ook andere manieren om raytracing toe te passen. Zo worden in Shadow of the Tomb Raider bijvoorbeeld rays direct vanuit een rasterized scène afgeschoten in de richting van de lichtbronnen, om zo de hardheid van schaduwen te bepalen.

Raytracing in de praktijk

Raytracing kan worden gebruikt voor allerlei grafische doeleinden, zoals het creëren van realistische schaduwen, reflecties en refracties. Dit kan allemaal tegelijk, maar ontwikkelaars of ontwerpers kunnen er ook voor kiezen om slechts een van deze aspecten te gebruiken en de rest met rasterization te renderen. Er zijn daarnaast verschillende soorten raytracing die ontwikkelaars kunnen toepassen, ieder met iets andere eigenschappen.

Soorten raytracing

De vorm van raytracing die we op de vorige pagina hebben beschreven, staat bekend als pathtracing. Dit is de meest geavanceerde vorm van raytracing, waarin alle pixels worden gerenderd door middel van diverse weerkaatsingen, die ieder informatie over kleur en textuur van objecten verzamelen. Dergelijke informatie wordt ook wel een sample genoemd. Eén ray vergaart dus zo'n sample. Vervolgens kan elke ray vanuit het gevonden snijpunt diverse andere rays de wereld in schieten, die ieder weer eigen samples kunnen vergaren. Hoe meer samples per pixel, hoe beter de beeldkwaliteit. Pathtracing is hierom enorm schaalbaar en staat ook wel bekend als de gouden standaard van computergraphics.

In zijn meest basale vorm vuurt raytracing alleen een aantal stralen af, zonder weerkaatsingen. Dit wordt ook wel raycasting genoemd en levert vrij vlakke kleuren op doordat alle kleurinformatie wordt vergaard op basis van de textuur van objecten die door de rays worden geraakt. Schaduwen en verlichting spelen hierbij geen enkele rol. Fun fact: Wolfenstein 3D uit 1992 maakte ook gebruik van een soort raycasting.

Een soort tussenweg is recursive raytracing. Het werd in de jaren zeventig ontdekt door J. Turner Whitted van Bell Labs. Hierbij wordt iedere ray nadat hij een object raakt, afgesplitst in maximaal drie aparte stralen: een voor schaduwen, een voor reflecties en een voor refracties. Dit levert realistischere beelden op dan raycasting, maar haalt het niveau van pathtracing nog niet. Recursive raytracing werd voor het eerst getoond in de Compleat Angler, een demo van Turner Whitted uit 1978. Het renderen van deze demo duurde bijna twee weken, maar was destijds een doorbraak op het gebied van computergraphics.

Ray tracing met oudere videokaarten

Voorbeelden van implementaties van raytracing uit de whitepaper van Nvidia RTX

Gedeeltelijke implementaties

Raytracing kan ook gedeeltelijk worden ingezet, bijvoorbeeld voor het simuleren van schaduwen, reflecties, global illumination en ambient occlusion. Global illumination is een relatief geavanceerde implementatie van raytracing. Dit is een groep renderalgoritmes die niet alleen rekening houden met directe verlichting vanuit lichtbronnen, maar ook indirecte lichtstralen berekenen, wat bij pathtracing eveneens gebeurt. Dergelijke lichtstralen komen bijvoorbeeld voort uit weerkaatsingen van licht op omgevingsobjecten. Colour bleeding wordt ook meeberekend door global illumination.

Global illumination
Global illumination in volle glorie

Hierboven staat een voorbeeld van dergelijke kleurweerkaatsingen door global illumination. De kleuren van de rode en groene muren worden weerkaatst op andere oppervlakken in de omgeving. Dit is geen resultaat van directe verlichting. Een wit licht wordt op de groene en rode muren gecast, waarna deze kleuren door de overige oppervlakken worden gereflecteerd. Dergelijke weerkaatsingen zijn broodnodig voor het creëren van een realistische omgeving. Global illumination speelt dan ook een grote rol in het simuleren van fotorealistische 3d-omgevingen.

Global illumination

De werking van global illumination

Ambient occlusion maakt op zijn beurt het realistisch renderen van ambient verlichting mogelijk door uit te rekenen hoe helder bepaalde delen van het scherm moeten zijn die niet direct door lichtstralen worden geraakt. Hieronder vallen bijvoorbeeld holtes en zelfs huidrimpels. De techniek doet dit op basis van geometrische data.

Ambient occlusion wordt al zonder raytracing gebruikt, in de vorm van onder andere screen space ambient occlusion (ssao), high-definition ambient occlusion (hdao) en horizon-based ambient occlusion (hbao). Deze toepassingen hebben echter enkele nadelen waardoor de technologie geen optimaal realisme oplevert. Dit wordt (deels) opgelost met raytraced ambient occlusion. Het traceren van lichtstralen om de geometrie van een scène correct weer te geven, levert realistischere beelden op dan ssao, hdao en hbao.

SSAO vs. RTAOSSAO vs. RTAO

Een gedramatiseerd voorbeeld van screen space ambient occlusion (links) tegenover ambient occlusion met raytracing. Afbeeldingen via Nvidia

Nvidia RTX vs. Microsoft DXR

Veel gamers zullen voor het eerst gehoord hebben van realtime raytracing door Nvidia’s RTX-videokaarten. Deze videokaarten zijn de eerste gpu's die aparte rt-cores voor raytracing bevatten, en ondersteunen onder andere Microsofts DXR, een raytracingextensie voor de DirectX 12-api.

Nvidia bracht de eerste RTX-videokaart, de RTX 2080, uit op 20 september 2018. Kort daarna kwam het bedrijf met de RTX 2080 Ti en de RTX 2070, om vervolgens in januari de RTX 2060 als instapmodel te introduceren. Daarna bleef het enige tijd stil, hoewel Nvidia in juli met RTX Super-gpu's kwam. Deze waren wat architectuur betreft gelijk aan hun voorgangers, maar boden verbeterde prestaties en verlaagde prijzen, hoewel ze nog steeds aan de dure kant zijn. Het betaalbaarste model, de RTX 2060, kost op het moment van schrijven rond de 325 euro voor de Founder's Edition. De Founder's Edition van de RTX 2060 Super, die betere prestaties biedt, heeft een adviesprijs van 430 euro.

DXR is niet RTX

Een relatief veelvoorkomend misverstand is dat de implementatie van realtime raytracing in games alleen met Nvidia-hardware mogelijk is. Nvidia gebruikt voor toepassingen van raytracing in games enkele api's, zoals zijn eigen VKRay in Vulkan en voornamelijk DirectX Raytracing, beter bekend als DXR. Dit is een raytracingextensie voor Microsofts DirectX 12-api.

Microsoft introduceerde DXR in 2018 als een toevoeging aan zijn api. DXR is wat alle raytracingeffecten in de DirectX 12-api mogelijk maakt en wordt gebruikt in combinatie met rasterization. Zo kunnen ontwikkelaars er dus voor kiezen om alleen schaduwen of reflecties te renderen met raytracing en de rest met rasterization. Microsoft stelt hierbij dat DXR ook kan worden gebruikt om rasterization volledig te vervangen.

DXR is geen losse technologie, maar is in plaats daarvan volledig compatibel met DirectX 12, waardoor het in theorie werkt op alle videokaarten die de api ondersteunen. Hardware-acceleration is wel in DXR geïntegreerd, waardoor videokaartfabrikanten hun eigen raytracinghardware voor DXR kunnen ontwikkelen, zoals Nvidia deed met zijn RTX-videokaarten en hun aparte rt-cores.

DXR is dus niet exclusief voor Nvidia, maar kan eventueel ook worden gebruikt door andere bedrijven, zoals AMD. DXR is momenteel in verschillende game-engines geïntegreerd, zoals Unreal Engine, Unity en Frostbite. Op het moment van schrijven ondersteunen alleen RTX-gpu’s en bepaalde Nvidia GTX-videokaarten DXR, maar dat wil niet zeggen dat DXR altijd exclusief met producten van Nvidia zal werken.

Sterker nog: zelfs games die met het RTX-merk adverteren, zoals Control en Metro: Exodus, kunnen in theorie op elke videokaart werken. Komende games als Cyberpunk 2077 zullen in theorie ook op andere hardware werken, mits DXR in de drivers is ingeschakeld. “De functies die Nvidia gebruikt voor raytracing, zijn niet proprietary”, vertelt Nvidia aan Tweakers. “Iedere gpu-fabrikant kan ondersteuning voor DXR inschakelen in zijn drivers, waarna zijn gpu’s ondersteuning voor raytracing bieden in games als Battlefield V of Metro: Exodus. Niet één game die momenteel beschikbaar is, heeft exclusieve raytracingfuncties; ze worden allemaal ingeschakeld via DXR of VKRay.”

DXR op AMD

Zo zou AMD zijn drivers bijvoorbeeld van DXR-ondersteuning kunnen voorzien en zo gebruikmaken van raytracingfuncties in games als Control en Call of Duty: Modern Warfare, maar naar verwachting zou dit niet goed werken doordat de huidige gpu’s van AMD nog geen aparte raytracinghardware hebben. DXR wordt al wel ondersteund op enkele GTX-kaarten van Nvidia, maar de impact op de prestaties met deze gpu’s is erg groot door een gebrek aan cores voor raytracing.

Er doen al langere tijd geruchten de ronde over AMD-hardware met raytracing, dus vermoedelijk zien we in de toekomst wel degelijk raytracing op AMD-gpu's. Ceo Lisa Su bevestigde tijdens de CES zelfs dat de Radeon-gpu's van AMD in 2020 ondersteuning voor raytracing zullen krijgen, hoewel ze benadrukte dat de ontwikkeling van raytracing zich volgens haar nog in een vroeg stadium bevindt. De komende nextgen-PS5 en Xbox-consoles krijgen daarnaast ondersteuning voor raytracing, waarvan in ieder geval de Xbox Series X hiervoor hardware van AMD zou gebruiken. Tweakers heeft contact opgenomen met AMD over zijn plannen met raytracing, maar nog geen reactie ontvangen.

Raytracing is dus op zichzelf niet exclusief voor Nvidia; RTX is slechts een merknaam voor Nvidia’s videokaarten met hardware-accelerated raytracing. Wel heeft Nvidia met RTX een grote stap gezet naar het gebruik van realtime raytracing, hoewel dat zelfs nu nog enorm lastig of zelfs vrijwel onmogelijk is.

Hardwarematige raytracing in games

Bij de release van de RTX-videokaarten waren er vrij weinig games die ondersteuning boden voor realtime raytracing met hardware-acceleration. In oktober, vlak na de release van de eerste RTX-gpu's, kwam DICE met Battlefield V. Die game maakte gebruik van raytracing voor reflecties en was voor een periode de enige game met ondersteuning voor de techniek. Raytracing met RTX-gpu's leverde in die game in eerste instantie alsnog een flinke vermindering van de framerate op, zelfs met aparte rt- en tensorcores. Dit werd later overigens met een patch verbeterd.

Metro: Exodus volgde in februari met ondersteuning voor global illumination. Dit werd vervolgens opgevolgd door Shadow of the Tomb Raider, dat in maart een patch kreeg die raytracing toevoegde aan de game, zes maanden nadat die uitkwam. Het spel maakte, zoals de naam toevallig doet vermoeden, gebruik van raytracing voor het renderen van realistische schaduwen.

Inmiddels is het aantal games met ondersteuning voor hardware-acceleration opgelopen naar ongeveer twaalf en zijn er enkele games uit die raytracing bieden via VKRay, een extensie die raytracingeffecten toevoegt aan de Vulkan-api. Control en Call of Duty: Modern Warfare zijn recentere voorbeelden van games met DXR-ondersteuning. Modern Warfare gebruikte raytraced ambient occlusion, terwijl Control diverse raytracingopties bood aan gebruikers, van reflecties en schaduwen tot indirecte verlichting.

Een wetenschapper die bij Nvidia werkt aan raytracing, voorspelde in 2019 dat de eerste triple-A-game die een raytracing-gpu nodig heeft, in 2023 zou uitkomen. In juni kwam indie-ontwikkelaar Sunside Games met Stay in the Light, een first-personhorrorgame die verlichting gebruikt voor de core-gameplay en alleen gespeeld kan worden met een gpu met DXR-ondersteuning. Het is nog geen triple-A-game, maar de eerste game die een rt-gpu behoeft, is op het moment van schrijven dus al enkele maanden uit.

Stay in the Light is een indiegame die alleen werkt op gpu's met DXR-ondersteuning

Quake II RTX is een gratis game die gebruikmaakt van de Vulkan-api en VKRay, en die een 'volwaardige' pathtracer gebruikt. Volgens de ontwikkelaar cast Quake II RTX 'minimaal' vier rays per pixel, wat in full hd gelijkstaat aan ruim 8,29 miljoen rays. Dat klinkt als een behoorlijke hoeveelheid, maar dit levert alsnog een vrij korrelig beeld op. Hierom maakt Nvidia gebruik van een denoiser, die de ruis in het beeld verwijdert in real time, tientallen keren per seconde. Dit levert uiteindelijk vrij nette en relatief goede beelden op.

Dit alles kost echter veel aan prestaties. Quake II, dat in 1999 uitkwam, draait op moderne pc's met een framerate van honderden beelden per seconde. Het gebruik van raytracing verlaagt dit in veel gevallen naar minder dan 60fps, afhankelijk van videokaart en resolutie. Pathtracing is dan ook nog niet klaar voor gebruik in triple-A-games, zo weet Nvidia zelf. "Pathtracing vergt aanzienlijk meer rekenkracht en dat is waarom het moeilijk is om het toe te passen in moderne games", vertelt Nvidia. "Maar in de toekomst zal dit zeker mogelijk zijn."

Ook Wolfenstein Youngblood is een Vulkan-game die zeer recent via een update ondersteuning voor raytracing kreeg. Hiermee is het de derde game met Vulkan-raytracing, naast Quake II RTX en mmorpg JX3.

Quake II RTX verschillenQuake II RTX verschillen

Quake II met raytracing (links) en zonder raytracing

Komende games met raytracing

In 2020 zal het aantal games met ondersteuning voor raytracing met hardware-acceleration in ieder geval oplopen naar 21, waaronder enkele triple-A-games. Zo krijgt Cyberpunk 2077, dat op 17 september uitkomt, ondersteuning voor raytracing via DXR. Binnenkort kunnen we bovendien een RTX-update voor Minecraft verwachten. Minecraft RTX krijgt een volledige pathtracer en wordt dus vrijwel volledig gerenderd met raytracing via DXR. Het moet echter nog blijken hoe soepel deze game zal draaien op de huidige hardware.

Nvidia laat daarnaast aan Tweakers weten dat het, samen met de Khronos Group en andere bedrijven, werkt aan een cross-vendor open raytracingstandaard voor Vulkan. Deze standaard bouwt gedeeltelijk verder op Nvidia's huidige VKRay-extensie, maar zal dus hardware-agnostisch functioneren. Tijdens een presentatie laat Nuno Subtil van Nvidia weten dat de huidige versie van de cross-vendorextensie grotendeels compatibel is met Nvidia's VKRay en dus kunnen huidige implementaties van VKRay, zoals in Quake II RTX en Wolfenstein Youngblood, vermoedelijk werken met videokaarten van AMD. Wel stelde Subtil dat er nog veel wordt gewerkt aan de standaard, dus dit kan eventueel veranderen.

"Zodra deze standaard deel uitmaakt van de Vulkan-api, kan elke hardwarefabrikant deze raytracingextensie kosteloos implementeren en leveren in zijn gpu’s", vertelt Nvidia aan Tweakers. Volgens Nvidia komt de standaard 'binnenkort' uit, wat in ieder geval doet vermoeden dat we dit jaar een eerste superset van de standaard kunnen verwachten. Khronos laat op zijn beurt weten dat de ontwikkeling van de standaard gestaag doorgaat, maar dat het bedrijf momenteel nog niets kan meedelen. Wel stelt Khronos dat het in 2020 meer informatie zal delen.

De Khronos Group werkt, samen met hardwarevendors, aan een open raytracingstandaard voor de Vulkan-api

Softwarematige raytracing in games

Er zijn enkele games die geen gebruikmaken van aparte cores voor raytracing, maar die puur op basis van software en 'normale' shadercores draaien. Deze implementaties profiteren dus niet van de prestatievoordelen die aparte raytracingcores bieden, maar werken daardoor in theorie wel op meer hardware. In 2019 waren hiervan enkele voorbeelden te zien.

Zo toonde Crytek in maart 2019 een Neon Noir-demo met een vorm van raytracing voor reflecties, door het bedrijf Total Illumination genoemd. Deze demo werd volledig in real time gerenderd met een enkele Vega 56-gpu van AMD. Crytek deed dit op een resolutie van 1920x1080 pixels met een framerate van 30fps. De prestaties zijn dus niet heel bijzonder, maar het feit dat dit mogelijk was met een Vega 56 zonder losse cores voor raytracing, maakte de demo wel degelijk interessant. Bovendien stelden de ontwikkelaars dat de demo niet bedoeld was als 'showcase', maar juist een realistisch in-game scenario moest schetsen.

Crytek behaalde deze resultaten met een soort truc; niet elke reflectie werd volledig met raytracing gerenderd. In plaats daarvan gebruikt het bedrijf voxel cone tracing voor bepaalde oppervlakken, die als het ware kegelvormige stralen afvuurt in plaats van verschillende kleine rays. Dit kost aanzienlijk minder prestaties, maar levert in veel gevallen vergelijkbare resultaten op. Alleen voor zeer reflectieve oppervlakken zoals glas wordt volwaardige raytracing gebruikt, aangezien dergelijke reflecties niet met voxel cone tracing zijn na te bootsen.

In oktober maakte Crytek de Neon Noir-demo voor iedereen openbaar in de vorm van een benchmark. Gebruikers kunnen Total Illumination op die manier testen op hun eigen hardware via DirectX 11. Vooralsnog is de technologie niet in de daadwerkelijke CryEngine verwerkt, maar naar verwachting doet het bedrijf dat begin 2020 alsnog, waarna ze aan games kan worden toegevoegd. Tegen die tijd zal Crytek ook ondersteuning toevoegen voor Vulkan en DirectX 12, waarmee het naar eigen zeggen kan profiteren van hardware-acceleration voor raytracing.

Neon Noir is een demo met een soort realtime raytracing die draait op een enkele Vega 56-gpu

Raytracing in World of Tanks

Wargaming voegde daarnaast raytracing voor schaduwen toe aan World of Tanks en zijn Core-engine. Hiervoor maakt de ontwikkelaar gebruik van bounding volume hierarchies, ook wel bvh. Iets soortgelijks wordt gebruikt door Nvidia. Een gemiddelde tank bevat volgens Wargaming zo'n 50.000 polygonen. Bij gebruik van raytracing voor de schaduwen moet het nagaan welke van deze polygonen wordt geraakt door een lichtstraal, wat enorm veel tijd en rekenkracht kost. Hierom wordt de tank met bvh omgezet in een soort dozen waarin verschillende polygonen zijn verwerkt. Diezelfde dozen kunnen vervolgens weer in een andere doos worden geplaatst; dit herhaalt zich totdat de tank uit slechts enkele dozen bestaat.

Op deze manier gaat de videokaart eerst na welke doos door een lichtstraal wordt geraakt om vervolgens te berekenen welke polygoon in die specifieke doos wordt geraakt. Dit verlaagt volgens de ontwikkelaars het aantal berekeningen per lichtstraal van zo'n 50.000 naar ongeveer 25. Voor iedere pixel wordt een lichtstraal afgevuurd, wat in full hd neerkomt op ongeveer 2,1 miljoen pixels en dus 52,5 miljoen berekeningen. Hierbij worden de voorbereidingen voor gebruik van bvh, dus het 'bouwen' van de dozen, uitgevoerd door verschillende cpu-threads, terwijl de gpu de daadwerkelijke raytracing berekent.

In theorie werkt dit op iedere DirectX 11-gpu, hoewel de technologie natuurlijk de nodige prestaties kost vergeleken met voorgerenderde schaduwen. Ook wordt gesteld dat bvh in de Core-engine eventueel voor andere implementaties van raytracing kan worden gebruikt, maar Wargaming vertelt aan Tweakers dat het hierover nog geen plannen kan delen. "Voor een buitendeurse game als World of Tanks zijn schaduwen het merkbaarst voor de speler", vertelt Denis Ishmukhametov, renderontwikkelaar voor World of Tanks. "Andere effecten als reflecties of ambient occlusion zullen misschien ook merkbaar zijn, maar hebben dan ook een aanzienlijke impact op de prestaties."

Hij stelt hierbij dat Wargaming van plan is om bij DirectX 11 te blijven, omdat de hardware van veel van zijn spelers hiertoe beperkt is. Het bedrijf is hierom voorlopig aangewezen op softwarematige raytracing, wat het toepassen van andere vormen van raytracing lastig maakt wegens de prestatiekosten.

Raytracing in World of Tanks werkt in theorie op elke DirectX 11-gpu

Raytracing in nextgen-consoles

De ontwikkelingen omtrent raytracing blijven dit jaar niet stilstaan. De volgende generatie consoles van Sony en Microsoft krijgt namelijk ondersteuning voor de technologie. Zo krijgt de Xbox Series X naar verwachting een tweede generatie RDNA-gpu van AMD, die aparte hardware voor raytracing zal bevatten. De PlayStation 5 krijgt ook RDNA-hardware, maar het is onduidelijk of dit een tweedegeneratie-gpu zal zijn. Sony stelt wel dat zijn console raytracinghardware bevat, maar het is onduidelijk hoe dit wordt toegepast.

Helaas zijn er over al het bovenstaande weinig concrete details bekend, los van de bevestiging dat de consoles ondersteuning voor raytracing krijgen. Het is dan ook erg lastig om feitelijk vooruit te blikken op raytracing in de PlayStation 5 en Xbox Series X, maar uiteraard kunnen we wel alle huidige feiten en verwachtingen op een rij zetten.

Xbox Series X

Microsoft heeft inmiddels bevestigd dat de komende Xbox Series X een RDNA2-gpu van AMD krijgt met ondersteuning voor hardware-accelerated raytracing. Er zijn verder weinig technische details bekend over de Series X, maar de kans bestaat dat Microsoft de DXR-extensie zal gebruiken voor raytracing op zijn nextgen-consoles, aangezien de merknaam Xbox is afgeleid van DirectX Box. Vermoedelijk zou de console dan ook gebruikmaken van DirectX Raytracing, dus DXR. Tweakers heeft hierover vragen gesteld aan Microsoft, maar het bedrijf zegt hierover nog niets te kunnen bevestigen.

Xbox Series X

De nextgen-Xbox Series X krijgt een RDNA-gpu van AMD met hardware-accelerated raytracing

Als Microsoft inderdaad gebruikmaakt van DXR voor de Series X, betekent dit enkele dingen. Ontwikkelaars kunnen vermoedelijk bijvoorbeeld bestaande DXR-games als Metro: Exodus of het komende Cyberpunk 2077 naar de Series X porten met behoud van ondersteuning voor raytracing, als ze dat willen. We weten dat Ubisoft enkele van zijn games die het bedrijf in 2020 voor de huidige consoles uitbrengt, ook naar nextgen-consoles zal brengen. In deze periode brengt Ubisoft onder andere Watch Dogs Legion uit, een game die ondersteuning voor raytracing krijgt door middel van DXR. In theorie kan deze game dus op de Series X ook raytracing ondersteunen.

Games die voor de komende Xbox worden ontwikkeld, kunnen daarnaast in theorie naar de pc worden gebracht met dezelfde implementatie van raytracing, ongeacht de gebruikte hardware. We weten in ieder geval dat veel games die 'exclusief' voor de Xbox worden ontwikkeld, ook voor Windows zullen uitkomen. Dit kan ook het geval zijn voor Xbox-games met raytracing. Het maakt dan niet uit of je een AMD- of Nvidia-gpu hebt, je kunt met die game uit de voeten zolang DXR voor je videokaart beschikbaar is, wat momenteel niet het geval is voor AMD-videokaarten. Het gebruik van DXR is immers redelijk hardware-agnostisch, zoals Nvidia eerder heeft bevestigd. Uiteraard blijft de impact op prestaties wel een probleem; het is onwaarschijnlijk dat de nextgen-consoles dit al oplossen. Verwacht dus nog geen moderne triple-A-games met volwaardige pathtracing met tientallen rays per pixel op de nieuwe Xbox.

De eerste game die voor de Xbox Series X en Windows is aangekondigd, is Senua's Saga: Hellblade II. De trailer van deze game is volgens de ontwikkelaar volledig in-engine opgenomen, hoewel dat natuurlijk niet altijd overeenkomt met gameplaybeelden. Bovendien worden in de trailer door gebruik van letterboxes minder pixels gerenderd. Door de zwarte balken is de daadwerkelijke resolutie van de trailer 3840x1608 pixels, schrijft Digital Foundry. Dat is een ruim kwart minder pixels dan 'volwaardig' 4k, wat neerkomt op 3840x2160 pixels. De trailer is bovendien gerenderd op een framerate van 24fps, terwijl voor de Series X wordt geadverteerd met framerates tot 60fps op een 4k-resolutie.

Dat gezegd hebbende: de trailer toont enkele kleine details die op de aanwezigheid van raytracing kunnen wijzen. Kijk bijvoorbeeld naar de rookwolk die door een vulkaan wordt uitgestoten; de schaduwen van deze rookwolk lijken in real time te worden berekend. Aangezien dit een trailer is, kan dit effect ook zijn nagemaakt met 'voorgebakken' schaduwen of gebruikmaken van enkele trucs, zoals het afspelen van voorgerenderde beelden op de achtergrond van een realtime 3d-scène.

PlayStation 5

Los van het feit dat de console, net als de Xbox Series X, ondersteuning voor raytracing krijgt, is de PlayStation 5 nog een redelijk enigma. Onlangs deden op Twitter enkele geruchten de ronde dat Sony geen gebruikmaakt van AMD-hardware voor raytracing. Dit werd onderschreven door enkele erkende leakers, waaronder Komachi_Ensaka. Tegelijk stelde Sony bij de aankondiging van de PS5 dat de console wel hardwarematige raytracing krijgt, maar het bedrijf gaf hierover weinig concrete details. Ook tijdens de CES werd dit herhaald door middel van een slide. Het is dus nog onduidelijk hoe dit uiteindelijk in de spelcomputer wordt toegepast.

Sony PS5 CES-slide
Tijdens de CES bevestigde Sony opnieuw dat de PS5 ondersteuning voor raytracing krijgt

De eerste PS5-game is overigens al wel aangekondigd; Godfall wordt ontwikkeld door Counterplay en uitgegeven door Borderlands-maker Gearbox. De game komt ook uit op de pc via de Epic Games Store, maar vooralsnog wordt Godfall vooral 'gemarket' als een PS5-game.

Het is niet officieel bekend of Godfall gebruikmaakt van raytracing, maar de eerste uitgelekte gameplaybeelden tonen wel wat aanwijzingen in die richting. In de onderstaande gif zijn duidelijk realistische reflecties te zien, wat wellicht wijst op een vorm van raytracing. De game wordt namelijk ontwikkeld met Unreal Engine van Epic. Deze engine bevat veel ingebouwde opties voor raytracing. Bovendien staat op de site van Counterplay momenteel een vacature voor een lead lighting artist, met als pre het 'begrijpen van de verschillende implementaties van raytracing en hun impact op prestaties'. Tweakers heeft Counterplay hierover benaderd, maar ontving als antwoord van uitgever Gearbox dat 'in de lente' meer details over Godfall worden bekendgemaakt. Neem dit alles dus met een korrel zout.

Realtime raytracing buiten games

Realtime raytracing is ook interessant voor andere workloads dan gebruik in games. Zo ondersteunen professionele applicaties als Blender, SolidWorks, VRay en Arnold raytracingberekeningen, al dan niet via Nvidia's OptiX-engine of AMD ProRender. Dit wordt bijvoorbeeld gebruikt door grafisch ontwerpers en architecten. Zo kunnen zij een realistisch model van een huis maken nog voordat het gebouwd is, waardoor potentiële kopers alvast een kijkje kunnen nemen.

Realtime raytracing kan bijvoorbeeld ook worden gebruikt in digitale, realtime cinematografie. Zo werd in 2018 een Star Wars-demo met realtime raytracing in de Unreal Engine getoond, reflections genaamd. Zoals de naam al doet vermoeden, wordt raytracing in realtime gebruikt voor reflectieve oppervlakken, terwijl de rest met rasterization wordt gerenderd. Voor deze specifieke demo werd gebruikgemaakt van vier Tesla V100-gpu’s, die ieder ruim 10.000 euro kosten. Deze gpu’s hebben geen rt-cores. Vijf maanden later werd een nieuwe demo getoond, die in realtime werd gerenderd met een enkele Quadro RTX 6000-gpu. Deze gpu kost weliswaar nog steeds 4500 euro, maar vergeleken met de kosten van vier Tesla-gpu’s is dit vrij kostenefficiënt te noemen. Uiteraard waren de RTX-gpu’s met rt-cores rond die tijd al jaren in ontwikkeling, maar het geeft wel aan dat aparte raytracinghardware een enorm verschil kan maken.

In maart 2019 werd een korte film gedeeld: Troll. Deze is gedeeltelijk met raytracing gerenderd in de Unreal Engine met een cinematische framerate van 24fps op een enkele RTX 2080 Ti. Dit alles in real time. Ook dit is allerminst een goedkope videokaart, maar vergeleken met een RTX 6000-gpu valt de prijs van gemiddeld 1200 euro mee. Omdat het hier een korte film betreft, is Troll bovendien weinig interessant voor gamers. Het renderen van een korte film is compleet anders dan van een dynamische game met veel willekeurige en onvoorspelbare acties, maar voor creatievelingen geeft dit aan dat ze met raytracing uit de voeten kunnen met een enkele gpu die voor consumenten te koop is.

Troll is een korte film met realtime raytracing op een enkele RTX 2080 Ti

Ook AMD is al bezig met raytracing op dit gebied, maar dan zonder gebruik van hardware-acceleration. Tijdens Siggraph in 2017 toonde het bedrijf enkele demo's van de Radeon Pro WX9100: een Vega-gpu voor professionals. Deze gpu maakt gebruik van 16GB hbm2-geheugen en heeft een high-bandwidth cache controller. Volgens AMD maakt deze hbcc de inzet mogelijk van algoritmes die gebruikmaken van enorme datasets zonder dat hiervoor geheugenmanagement moet worden geprogrammeerd. In theorie maakt dat het laden van enorme datasets op relatief weinig geheugen mogelijk.

Bij de onthulling van de WX9100, ruim twee jaar geleden, toonde het bedrijf onder andere een demo waarin een dataset van 250 miljard polygonen in real time wordt gerenderd met pathtracing. Volgens AMD had de filmstudio die de dataset heeft gemaakt, deze toentertijd nog nooit in real time gerenderd gezien op een enkele pc, maar met de WX9100 lukte dit wel.

Destijds probeerde AMD diezelfde dataset te laden op een workstation met 'de duurste Nvidia-hardware van zevenduizend dollar', maar uiteindelijk gaf deze een 'out of video memory'-foutmelding. Dit was weliswaar geen RTX-gpu - die waren nog niet uit in 2017 - maar desalniettemin toont dit aan dat pathtracing van complexe scènes goed mogelijk is met enkele normale shadercores. 250 miljard polygonen renderen met pathtracing is, zelfs na de release van gpu's met raytracinghardware, nog steeds indrukwekkend.

Daarnaast heeft AMD in 2018 raytracing toegevoegd aan zijn ProRender-engine, die inmiddels wordt ondersteund in renderapplicaties als Blender. De techniek combineert rasterization voor basale structuren en gebruikt raytracing voor geavanceerdere en complexere oppervlakken, bijvoorbeeld reflectieve materialen als chroom, wat dus vergelijkbaar is met Nvidia's huidige implementatie. Ook kunnen transparante oppervlakken en schaduwen met raytracing in ProRender worden gerenderd. AMD is dus in ieder geval al actief met de technologie bezig.

AMD toont de Radeon Pro WX9100 met een pathtracing workload van 250 miljard polygonen

Tot slot

Realtime raytracing in games is nu nog een redelijk eenzijdige affaire, met vooral Nvidia als grote speler, en enkele ontwikkelaars als Crytek en Wargaming die de technologie op hun eigen manier implementeren. Hierin komt in de komende jaren waarschijnlijk verandering. Zo zal de installed base van apparaten met ondersteuning voor hardware-accelerated raytracing in 2020 en de jaren daarop flink stijgen dankzij de komst van nextgen-consoles. Een grotere installed base kan het interessanter maken voor ontwikkelaars om de technologie te proberen, vooral als ontwikkelaars in één klap van zowel de consolemarkt als de pc-markt kunnen profiteren door het gebruik van standaarden als DXR.

Het is natuurlijk nog afwachten hoeveel ontwikkelaars daadwerkelijk gebruik gaan maken van de raytracinghardware in consoles, maar onze verwachting is dat ze in ieder geval zullen experimenteren met de rendertechniek. Ontwikkelaars delen dat sentiment; TJ Wagner van de World of Tanks Console-group vertelt: "We verwachten dat de beschikbaarheid van raytracing in nextgen-consoles ontwikkelaars zeker zal aanmoedigen om de technologie te onderzoeken en ermee te experimenteren." Tegelijk stelt hij dat de krachtigere hardware ook kan worden gebruikt om traditionelere rendertechnieken te verbeteren. "Elke ontwikkelaar krijgt de flexibiliteit om zelf uit te zoeken hoe hij de hardware het best kan gebruiken in zijn eigen games."

Natuurlijk blijft de impact op prestaties een probleempunt. Zelfs huidige implementaties van raytracing, die voornamelijk gebruikmaken van raytracing voor een enkel spelelement en de rest van de game alsnog met rasterization renderen, leiden nog tot flink prestatieverlies in games. De huidige RTX-gpu's bieden op dit gebied verbeteringen, maar nog geen oplossing. Ampere, de PS5, de Xbox Series X en wat AMD in de planning heeft, zullen hierin waarschijnlijk nog geen verandering brengen. Pathtracing in triple-A-games zal dan ook nog enkele jaren op zich laten wachten.

Toch hebben ontwikkelaars enorme stappen gezet in 2019. In maart liet cloudgraphics-bedrijf Otoy weten dat het een scène met pathtracing kan renderen op één frame per seconde met zijn Octane-engine. Hiervoor worden vijftig samples per pixel vergaard. Tegelijkertijd neemt Quake II RTX op een hogere framerate minimaal vier samples per pixel. Enkele jaren geleden zou alleen het denoisen van de scène al minutenlang duren. Nieuwe gpu-architecturen en verdere optimalisaties zullen gaandeweg steeds meer mogelijk maken, dus games met volledige pathtracing zijn in de toekomst in ieder geval niet ondenkbaar.

Lees meer

Reacties (95)

95
95
41
8
0
50
Wijzig sortering
Fun fact: Wolfenstein 3D van iD Software maakte in 1992 al gebruik van raycasting in real time.
Het gaat hier over twee verschillende technieken, die allebei ray-casting heten. Eentje schiet alleen primary rays in echte 3d space, dus van oog door pixel tot aan object, en is wat in de tekst wordt beschreven. Wat wolfenstein deed is op een 2d map een intersectie berekenen en die dan als fake 3d tekenen. Daarom kon je in wolfenstein (en ook Doom) bijvoorbeeld nooit onder een brug doorlopen.
Daarom kon je in wolfenstein (en ook Doom) bijvoorbeeld nooit onder een brug doorlopen.
Ook in Duke Nukem 3D werkte de rendering net als in Doom, maar door middel van een slimme truc kon je wel in verschillende ruimten komen die boven elkaar lagen. Zo kwam je in de bioscoop vanuit de lobby via een wenteltrap naar de bovenliggende projectorruimte. De truc was dat er verschillende "maps" waren die overeenkwamen met verdiepingen. Klom je de wenteltrap op, dan kwam je zonder het te merken van de ene in de andere plattegrond terecht. Maar binnen zo'n plattegrond had alles weer 1 bodem en 1 plafond; nergens krijg je in dat spel twee ruimten boven elkaar te zien.
Ook in Duke Nukem 3D werkte de rendering net als in Doom
Nee hoor, de technieken van Wolf3D, Doom en Duke3D zijn in feite allemaal verschillend, al lijken die van Doom en Duke3D wel wat meer op elkaar. Maar goed, Duke3D was ook meer een doorontwikkeling - die kwam in hetzelfde jaar uit als Quake, die al helemaal was overgestapt op triangle rasterization.

Duke3D gebruikt geen BSP tree zoals Doom dat wel doet, waardoor er geen kostbare preprocessingstap nodig was en de leveldata at runtime kon veranderen. Maar dit betekent wel dat het render-algoritme essentieel anders is, daar Doom de BSP tree gebruikt om de ruimtes van voor naar achter te kunnen tekenen. Bovendien ondersteunde Duke3D extra features zoals gekantelde vloeren en plafonds, waar die bij Doom alleen maar strak horizontaal konden zijn. Een andere bijkomstigheid van de sectors+portals ipv BSP in Duke3D is dat je technisch gezien surrealistische ruimtes kon creëren die in de echte wereld zouden overlappen, zoals een huis dat van de binnenkant veel groter is dan van de buitenkant, of een daadwerkelijke wenteltrap waarbij je dus wel een room-above-room kan hebben. De restrictie was wel dat je die verschillende overlappende gebieden niet tegelijkertijd mag kunnen zien, omdat de rendering anders gewoon compleet de soep in loopt. Overigens werden dit soort dingen in de praktijk nauwelijks gebruikt (is ook lastig te authoren in een 2d map editor) en greep men over het algemeen gewoon naar de teleport truc.

Wolf3D was daarentegen echt gewoon raycasting, wat ook heel goedkoop te doen is met een grid-based plattegrond zonder hoogteverschillen.

[Reactie gewijzigd door .oisyn op 25 juli 2024 18:19]

[...]
Nee hoor, de technieken van Wolf3D, Doom en Duke3D zijn in feite allemaal verschillend
Het ging mij niet om de precieze implementatie, maar om de beperking dat je geen ruimten boven elkaar kunt zien, dus dat je net als in Doom op ieder punt 1 plafond en 1 vloer hebt, die wel in hoogte kan variëren.

Wolfenstein 3D is veel simpeler dan die twee: alle muren hebben dezelfde hoogte en staan uitsluitend haaks op elkaar, en vloer en plafond worden slechts gesuggereerd (die zijn simpelweg een egaal gekleurde achtergrond).
Leg dan eens de brug uit waar je over loopt voordat je het einde van level 1 bereikt? De brug waaronder de achter ingang is van de bioscoop.
Alweer zo'n 20 jaar geleden dat ik iets met de Build editor heb gedaan, maar zo uit mijn hoofd waren dat sprites en maakten dus geen deel uit van de daadwerkelijke geometrie van de map. Dat was een mooie oplossing om rond dat soort beperkingen heen te werken.
Aah idd sprites met collision dus..
Klopt waren inderdaad sprites. Veel voertuigen in maps werden ook met sprites gebouwd: meen me nog een brandweerwagen te herinneren. Het effect van belichting werd veelal bereikt met palettes ION Maiden anyone?
Het ging mij niet om de precieze implementatie, maar om de beperking dat je geen ruimten boven elkaar kunt zien
Ja het kernpunt dat ik wilde maken is een beetje verstopt geraakt in mijn post, maar het gaat er dus om dat het in Doom zowel visueel als geometrisch niet mogelijk is, terwijl het in Duke3D visueel niet kan maar geometrisch wel. Maar goed, je zou je af kunnen vragen wat de toegevoegde waarde is van de geometrische mogelijkheid als je visueel nog steeds een probleem hebt, terwijl de geometrische beperking ook prima is op te lossen met teleports (wat ze in Duke3D ook vaak genoeg doen). Het ziet er alleen een beetje raar uit op de in-game map.
Hoe werkt dat met de bioscoopzaal? Vanuit de projectieruimte kon je door het raam de lager gelegen zaal zien en naar beneden springen. Was dat dan een andere map die geladen werd tijdens het omlaag vallen?

Volgens mij weleens iets gelezen over dat er ook een kromme gang was waarbij je meer dan 360 rond liep. Geen idee hoe dat zat. Leuke dingen om over te lezen.
Hoe werkt dat met de bioscoopzaal? Vanuit de projectieruimte kon je door het raam de lager gelegen zaal zien en naar beneden springen. Was dat dan een andere map die geladen werd tijdens het omlaag vallen?
Nee, dan blijf je in dezelfde plattegrond. Binnen een plattegrond kunnen verschillende hoogten van de vloer en het plafond bestaan, net als in Doom, daar kun je ook van een platform afspringen.

En die wenteltrap naar de projectieruimte is zo'n gang waarbij je meer dan 360 graden rond loopt, maar dan ga je in iedere deelplattegrond dus ook naar boven. Zoiets zou ook gelijkvloers kunnen, dan heb je dus iets dat in de echte wereld helemaal niet kan bestaan :)
Janoz Moderator PRG/SEA @Brousant17 januari 2020 13:35
De truc was dat er verschillende "maps" waren die overeenkwamen met verdiepingen.
Dit is niet (helemaal) juist. De maps konden gewoon boven elkaar liggen, alleen moest de level ontwerper er voor zorgen dat je nooit tegelijk de boven elkaar liggende sectoren kon zien. Je kon dus nooit twee ramen boven elkaar hebben, maar als de ramen ver genoeg uit elkaar zaten kon je wel op 2 verdiepingen tegelijk kijken.

Waar jij het over hebt, het teleporteren, werd gebruikt voor liften waarbij je aan dezelfde kant in en uit kon stappen (wat effectief 2 'ramen' boven elkaar zou zijn) en wanneer je van boven naar onder water ging (en vice versa) waardoor het bijvoorbeeld mogelijk was dat je over de duikboot kon lopen, in het water kon srpingen, en vervolgens onder de duikboot door kon zwemmen.
Dit is niet (helemaal) juist. De maps konden gewoon boven elkaar liggen, alleen moest de level ontwerper er voor zorgen dat je nooit tegelijk de boven elkaar liggende sectoren kon zien. Je kon dus nooit twee ramen boven elkaar hebben, maar als de ramen ver genoeg uit elkaar zaten kon je wel op 2 verdiepingen tegelijk kijken.
Ik denk dat je het niet helemaal hebt begrepen. Als je in Duke Nukem 3D twee ramen "op verschillende verdiepingen" ziet, zoals de doorgang naar de lobby en het raam van de projectieruimte, (zie https://www.mobygames.com...nshots/gameShotId,700150/ )
dan is er gewoon sprake van 1 plattegrond, net zoals in Doom; de projectieruimte is daar geen verdieping boven een andere, maar is gewoon een deel van de plattegrond met een verhoogde vloer en een verlaagd plafond.

[Reactie gewijzigd door Brousant op 25 juli 2024 18:19]

Janoz Moderator PRG/SEA @Brousant17 januari 2020 14:43
Ik denk dat jij het niet begrepen hebt ;)

Misschien verward het praten over een hypothetisch level een beetje. Mijn punt is dat het helemaal niks met teleporteren te maken heeft. Een map in DukeNukem kan, in tegenstelling tot Doom, gewoon overlappen. Er kunnen 2 sectoren op dezelfde plek liggen. Randvoorwaarde is echter dat je de 2 sectoren nooit tegelijk kan zien. Dan gaat alles lopen glitchen.
Wat wolfenstein deed is op een 2d map een intersectie berekenen en die dan als fake 3d tekenen.
Klopt. Dit is een tof artikel waarin de techniek die Wolfenstein gebruikt wordt toegepast op een raycasting demo van slechts 265 regels JavaScript: http://www.playfuljs.com/a-first-person-engine-in-265-lines/
Ik heb hier het eerste level van Wolf3D in Javascript, inclusief alle deuren en secrets (maar zonder entities, en slechts een zeer beperkt aantal muurtextures): https://oisyn.nl/wolfjs. Was ook meer een proof of concept dat dat kon in HTML4, want het gebruikt verticale stroken van <img> elementen die geresized worden aan de hand van de diepte van de muur op die plek :).

Het grappige is, ik heb de code from scratch ingetypt, maar de implementatie van de deuren en de bewegende muren bij de secrets krijgen exact dezelfde artifacts bij de originele Wolf3D als je je niet aan de restricties houdt, zoals een duur die niet tussen twee muren inzit en je dus van de zijkant kan bekijken terwijl hij open/dicht gaat, of een bewegende secret wall waar je omheen kunt lopen en dus van de zijkant kan bekijken ipv alleen van je af ziet bewegen.

[Reactie gewijzigd door .oisyn op 25 juli 2024 18:19]

AuteurAverageNL Nieuwsredacteur @Zoijar17 januari 2020 09:20
Scherp van je! Ik sloop de verwijzing naar Wolfenstein uit de tekst.

EDIT: Ik heb de verwijzing teruggezet, maar met nuance ('soort van raycasting') en een link met uitleg over de implementatie

[Reactie gewijzigd door AverageNL op 25 juli 2024 18:19]

Aan het einde van level 1 loop je toch over een brug?
Om eerlijk te zijn viel de reflectie me op het eerste oog niet eens op omdat ik zo gewend ben aan het zien van realtime computer graphics met alleen screen space reflrections... Realtime raytracing (of AI ondersteund ray-casting en filtering tot de uiteindelijke render dankzij machine learning) voegt niet zo heel veel toe; voor mij iig te weinig om weer een investering van 700+ euro te verantwoorden.
Het geniepige is ook dat Nvidia altijd de vergelijking zoekt met oude technieken.

Ze vergelijken niet HBAO+ versus Raytracing, nee, ze pakken SSAO.
Ze maken geen vergelijking tussen Raytracing en het momenteel beschikbare, maar tussen Raytracing en een scène zonder enige moderne techniek.

Dat is alsof je een iPhone tegen een Nokia uit 1990 benchmarkt, en jezelf dan op de borst klopt.
Allemaal hartstikke leuk hoor, dat ray tracing. Het zal in de toekomst zeker niet meer weg te denken zijn: het wordt er allemaal mooier op. En technisch gezien natuurlijk gewoon een knap staaltje vooruitgang. Ook begrijp ik dat ze ergens een start moeten maken om het op de consumentenmarkt te brengen en de mensen enthousiast moeten krijgen voor deze techniek, maar laten we eerlijk zijn: op dit moment is het (voor de gemiddelde gamer/consument) gewoonweg totaal niet interessant.

Op dit moment zijn er slechts een handvol games die wat leuke 'verbeteringen' in graphics laten zien op je beeldscherm op basis van ray tracing. Tegen een reductie in prestaties van heb ik jou daar, dat dan weer wel. Ik weet dat er meer games aankomen (en ja, de PS5 en Xbox Series X krijgen ook ray tracing mogelijkheden), maar vergeet niet dat de RTX serie inmiddels alweer 15 maanden op de markt is. Tot nu toe ben ik totaal niet onder de indruk van het aanbod aan games of andere toepassingen voor ray tracing.

Ieder zijn mening natuurlijk, maar als ik voor mijzelf spreek: ik had liever wat meer prestatie upgrades gezien van de nieuwste videokaarten in plaats van de (overig kunstmatig gefabriceerde) 'hype' rondom ray tracing (wat trouwens netjes de aandacht heeft afgeleid van het gebrek aan prestatie upgrades die verwacht werden na een R&D periode van meer dan 3 (!) jaar).

Ik vermoed dat de RTX 2000 line-up van NVidia snel achterhaald zal zijn: ray tracing is nog volop in ontwikkeling, en binnen afzienbare tijd is waarschijnlijk veel meer mogelijk met deze techniek dan wat er nu kan (ik reken op een exponentiële groei). Dat zal de huidige generatie RTX kaarten simpelweg niet gaan trekken.

Ik zet mijn geld op de RTX 4000 series, voorlopig blijf ik persoonlijk liever bij een GTX modelletje :)
Computers kunnen namelijk niet het pad van elke foton uitrekenen. Ze beschikken gewoonweg niet over genoeg rekenkracht om dit binnen redelijke termijn te doen.
Voor de grap even ge-googled. Per oog (edit: absorberen we) 10^16 fotonen per seconde oftewel 20 000 000 000 000 000. Vergeleken met de later in het artikel genoemde ~8,3 miljoen rays (ik neem aan per frame?) dus 498 000 000 rays per seconde. Dus 0,0000025% van de vereiste berekeningen voor 1 ray = 1 foton?

Heb altijd een hekel aan die tech/bio vergelijkingen maar je moet wat om 7 uur.

Overigens begrijp ik dat Octane verhaal aan het einde niet? Ik dacht dat Octane een CUDA renderer was en een NVIDIA gpu een vereiste is?

[Reactie gewijzigd door d.jvan op 25 juli 2024 18:19]

AuteurAverageNL Nieuwsredacteur @d.jvan17 januari 2020 08:00
Zoals @Gé Brander aangeeft gaat het inderdaad om het aantal pixels op je computer. De vergelijking met fotonen was puur ter illustratie. Het stuk dat je quote ging eigenlijk alleen over de ontelbare rays/fotonen die niet daadwerkelijk je oog bereiken, maar in plaats daarvan een volledig andere kant op schieten. Het zou zonde zijn om die ook mee te berekenen, aangezien je daar niets van merkt. Dat wordt in de zinnen daarna ook uitgelegd.

Om het stukje over rays per seconde wat aan te duiden: de 8,3 miljoen rays in het artikel ging specifiek over Quake II RTX, zoals ook staat beschreven. Die game schiet minimaal vier rays per pixel af. Op full-hd is dat (1920*1080)*4 = ongeveer 8,29 miljoen rays voor het volledige beeld. Als je de game in 4K speelt is dat (3840*2160)*4 = ruim 33 miljoen rays.

Het aantal rays per seconde hangt af van de framerate. Met een RTX 2080 Super op 4k haalde ik op de redactie ongeveer 20fps, wat zou neerkomen op ongeveer 660 miljoen rays per seconde.

Voor Octane is inderdaad een Nvidia-gpu vereist. Dat gedeelte van de tekst was puur om aan te tonen dat raytracing in de laatste jaren een stuk bruikbaarder is geworden. Ik snap overigens dat de vergelijking met de Turing-architectuur verwarrend is. Ik scherp dat iets aan zodra ik op de redactie ben!

EDIT: wijziging mbt Octane is doorgevoerd!

[Reactie gewijzigd door AverageNL op 25 juli 2024 18:19]

Ja sorry mijn quote en reactie waren erg slecht verwoord, en de vergelijking sloeg toch nergens op. 10^16 fotonen is hoeveel we er absorberen per seconde als we de lucht in kijken en ik vergeleek dat direct met hoeveel rays we de scene in sturen. Leek logisch maar klinkt stom nu ik terugkijk.

[Reactie gewijzigd door d.jvan op 25 juli 2024 18:19]

Gaat het niet om pixels op je computer? Je scherm geeft een beperkt aantal pixels weer. Dus hoeveel fotonen is dan toch niet zo heel erg belangrijk?
Ook wel enigszins belangrijk. Want als je maar 1 sample per pixel hebt dan ga je heel veel noise krijgen.

Of je namelijk net op de rand van een object kijkt of er net naast maakt bij eenvoudige rendering al veel uit (denk aan hoe een draadgaashek er in oude games uit ziet in beweging, en/of moire patronen) en daar is er in weze maar ray die uit de camera de wereld in geschoten wordt op een object. Bij modernere rendering met o.a. raytracing maar ook al met sphere/cubemapped reflecties, zijn er meer rays/bounces en dus meer onvoorspelbaarheid.

Zie het als een slingerende pendule. 1 slinger valt goed te voorspellen met antialiasing of mipmaps, maar als je 3 slingers aan elkaar hangt maakt een klein verschil in de beginsituatie heel veel uit voor het eindresultaat van de laatste ray of slinger. Dus is het belangrijker om meerdere rays in de wereld in te schieten en daar het gemiddelde van te nemen.
Het gaat niet zozeer om het aantal fotonen dat je oog raakt, maar het pad dat zo'n foton aflegt en wat het raakt (hoeveelheid bounces). In het echt gaat licht namelijk van de bron naar je oog, maar in ray tracing begint men in principe bij het oog en rekent dan terug. (bovendien gedraagt licht zich onder bepaalde omstandigheden weer als golf, dus moet het sowieso benaderd worden).

[Reactie gewijzigd door Zoijar op 25 juli 2024 18:19]

Sowieso is licht dat op je netvlies land zelden 1 foton, het licht dat je detecteert met je ogen (of met en camera) bestaat uit vele fotonen zoals hierboven genoemd. Elke foton legt een (iets) ander pad af, daarom is 1 foton simuleren nooit voldoende. Neem het simpele voorbeeld van glas enkele fotonen worden gerefelcteerd terwijl andere worden afgebogen maar wel door het glas komen. En dit is inderdaad allemaal nog los van het golfkarakter van licht, dat laaste wordt bij raytracing niet eens meegenomen.
Inderdaad. Dan kom je ook al snel op sampling. Een van de lastigste dingen in ray tracing is eigenlijk anti-aliasing/sampling. Als je detailed geometry in de verte ziet, dat bv 10x10 pixels is, zou je met 100 rays een grote shimmering mess krijgen omdat je eigenlijk gewoon random dingen raakt. (bv cone tracing)

[Reactie gewijzigd door Zoijar op 25 juli 2024 18:19]

Stel dat enkele fotonen neerkomen op de grote steen in het grasveld. De steen interacteert met de fotonen door ze te weerkaatsen. Hoe de steen dat doet, ligt onder andere aan het materiaal, de textuur en de vorm van de steen. Misschien is hij glad en reflectief, waardoor de fotonen naar een nabijgelegen boom en vervolgens verder worden weerkaatst. Deze weerkaatsingen gaan door totdat de fotonen al hun energie hebben verloren. Intussen worden alle gebieden verlicht waar de fotonen terechtkomen.

Het zal duidelijk zijn dat fotonen sommige plekken in een omgeving indirect bereiken. In het echte leven zijn plekken in de schaduw niet pikzwart, maar grotendeels zichtbaar doordat licht via weerkaatsingen er alsnog een weg naartoe heeft weten te vinden. Deze plekken zijn donkerder doordat de fotonen tijdens hun pad wat van hun energie hebben verloren. Dit is simpel gezegd hoe licht in de natuur werkt.
Jammer dat de auteur weinig snapt van hetgeen hij probeert uit te leggen, want dit is absoluut niet hoe licht in de natuur werkt. Fotonen met minder energie "geven niet minder licht", als een foton minder energie heeft dan schuift de kleur op naar rood (en daarna richting infra-rood etc, tot buiten het visuele spectrum). Plekken die donker zijn worden of nauwelijks bereikt door fotonen waardoor er weinig fotonen weerkaatst worden richting de kijker, of ze absorberen gewoon heel veel fotonen (ook wel bekend als "zwart").
AuteurAverageNL Nieuwsredacteur @Hielko17 januari 2020 09:49
Zoals er ook staat boven die alinea: deze uitleg is 'versimpeld' om de leesbaarheid van de tekst te vergroten. Bovendien staat nergens in de geciteerde tekst dat fotonen met minder energie minder licht geven, alleen dat ze tijdens hun pad energie verliezen, wat ook zo is:
Deze plekken zijn donkerder doordat de fotonen tijdens hun pad wat van hun energie hebben verloren.
Maar die quote is precies wat fout is. Een plek is donkerder omdat er of *minder* fotonen op terecht komen (schaduw) of omdat er veel fotonen worden geabsorbeerd (zwart) of beiden.
Het enige effect van het verliezen van energie is dat de golflengte (kleur) veranderd,
AuteurAverageNL Nieuwsredacteur @MarcelG19 januari 2020 13:49
Daar heb je inderdaad gelijk in! Ik zal die zin direct aanpassen. Volgens mij is het dan verder opgelost :)

Dank!
Ik mis de nadruk op denoisen en de tensor cores, die eigenlijk helpen om met neurale netwerken het beeld sneller te denoisen. Dat is Nvidia haar oplossing geweest om nu al real-time raytracing te verkopen.
Begin jaren ‘90 was ik aan het hobby’en met POVRay en een eigen simpele raytracer (met TI coprocessor naast m’n 386SX :P). Toen dacht ik dat we binnen 20 jaar fotorealistische games met real-time raytracing zouden hebben. Little did I know... Games zijn onvoorstelbaar veel mooier geworden, maar het zal nu ook nog zeker wel 10 jaar duren voordat raytracing de norm is en realitische belichting, reflecties en schaduwen vrijwel ‘gratis’ zijn. Ben benieuwd.
En dan gaan we straks weer een stap terug omdat we overgaan op VR waarbij alles twee keer berekend moet worden, beide ogen vangen het licht namelijk onder een andere hoek :-)
Dat het 2x gterenderd moet worden is denk ik niet zo'n punt.
Je verliest wel wat aan 'set-up' van de twee kijkpunten, maar het renderen zelf is redelijk lineair. Je kunt dan denk ik beter kijken naar de totale hoeveelheid pixels en niet zozeer naar het feit dat het twee losse plaatjes zijn.
Wat VR zo lelijk maakt is denk ik de totale resolutie (beide ogen samen) x lage latency x hoge framerate.
Waar, maar er is ook een andere oplossing. Als we werkelijk een goede head tracking hebben plus een goede eye tracking en we de beelden vlak bij of in het oog kunnen projecteren, dan hoeven we helemaal niet zoveel pixels meer te renderen. Het oog ziet namelijk alleen maar in een heel klein stukje van het netvlies scherp.

Head tracking werkt al aardig, de truuk zit hem dus in een goede real time eye tracking. Als dat werkt dan hoef je maar een heel klein deel van het beeld van beide ogen met hoge resolutie te renderen. Hier wordt door diverse bedrijven aan gewerkt.

Google maar op Foveated Rendering.
Ook leuke herinneringen aan POVRay. De universiteits-servers overuren doen draaien met dat ding :P
Ik herinner me vooral een Rolls-Royce (dacht ik) die ik verschillende keren getraced heb met veranderende oog- en lichtpunten. Die heb ik nog een hele tijd als achtergrond op mijn desktop gehad.

Daarna werd het stil rond raytracing en om eerlijk te zijn dacht ik dat die techniek al lang gewoon standaard in grafische kaarten zat en er daarom niet meer over gesproken werd. Blijkbaar dus niet. Leuke ontwikkeling.
Ik moest idd ook gelijk aan POV denken... Maar dan de versie die ooit stond op de diskette van een Atari ST tijdschrift (ST Format of ST User?) met wat simpele voorbeelden. De arme 8mhz 68000 zonder FPU was zo een etmaal bezig met de simpelste modellen te bereken in een 320x200 resolutie met 24 bit kleuren. Het resultaat was dan te bewonderen in een speciale viewer die met wat truukjes het in 512 (RGB) kleuren (ipv 16) te voorschijn toverde. Maar dan hebt je het ook inmiddels over 25 jaar geleden :D
Klopt, een beetje plaatje kostte al gauw een etmaal om te renderen. En voor het viewen en converteren van plaatjes gebruikte ik toen Graphics Workshop: https://archive.org/details/msdos_GRFWK61V_shareware. Dat was ook super om hoge kwaliteit dithering toe te passen als je iets graphics op een printer wilde afdrukken. Overigens was die 24-bit RGB naar 8-bit palette conversie ook vrij intensief, dus na het geduldig wachten op de raytracer was je er nog niet :P

Overigens, kijkend naar je nickname: mijn eerste computer was een Atari 600XL in 1985 :)

[Reactie gewijzigd door Exirion op 25 juli 2024 18:19]

Met een 320x200x16 resolutie ziet dithering in kleuren er niet geweldig uit... Later heb ik het nog wel eens voor JPG conversie gebruikt... het converteren kostte dan al gauw een uurtje op de ST. Handiger was het dan om het dan bv naar grayscale te converteren. Als ik het me goed herinner was de output van POV mogelijk in een RAW 24 bit formaat... Wat met een eigen gemaakt tooltje in GFA Basic dus heel makkelijk en snel te converteren was. (Eventueel met simpel dithering om van 8 grijswaarden naar bv 15 te gaan)

Overigens : 1e eigen computer tweedehands ZX81 die direct stuk was... daarna Atari 800XL , MSX en toen dus een tweedehands Atari 520ST die eerst weer terug moest voor reparatie, maar het daarna lang gedaan heeft en die uiteindelijk nog ingewisseld is voor een 1040STfm met 60Mb HD (waarmee pas het volle potentieel te benutten was) Daarvoor had ik op school toegang tot de toen al antiek wordende TRS80 (model 3 en 4) en de good old Acorn BBC. Beide uit een tijdperk dat computers echt nog bijna onbetaalbaar waren. Een oom had een paar jaar ervoor al een zelfbouw Acorn Atom... waar mee mijn interesse in computers onstond.
De naam was dus een beetje eentje met een knipoog... zo van in mijn tijd hadden we ook al flame wars over wat de beste computer was... way back in the 80s (Fun fact : Je kunt de Atari ST als opvolger van de C64 beschouwen en de Amiga van de Atari 8 bit)
Ik zette een render in gang op een 386sx voor ik ging werken, bij thuiskomst was het plaatje dan klaar :)
Heb je toen overwogen om een floating point unit er bij te zetten? Of had je die al ? Ik heb geen flauw idee wat dat toen kostte... een 386sx was veel te prijzig voor mij... De Atari ST heb ik ooit een hele zomer vakantie gewerkt in 1989 toen deze ongeveer de helft kostte tov een heel erg basic PC XT.
Ja ik heb hem later vervangen door een dx2-66 met fpu maar toen kwam eerst doom en daarna quake 1 uit en ben ik povray glad vergeten :)

[Reactie gewijzigd door StGermain op 25 juli 2024 18:19]

O ja dat was natuurlijk een stuk handiger.. De 386 vervangen door een 486.
Zolang ze de 'alles is een spiegel' mentaliteit houden bij het design zal het nooit realistisch worden.
Ik denk dat ze maar even bij de film industrie op bezoek moeten ;) Maar ik verwacht dat mensen uit die markt nog meer in de games gaan werken.
Precies, die zijn net zo erg zo niet erger. Vooral met zaken als massa, zwaartekracht, momentum en overacteren met motion capture. Lijkt soms wel of ze het er om doen. Die brug spring scene in 1917 zakt mijn anno 2020 broek gewoon van af. Of de stormtroopers op de gliders die een gesprekje houden in Mandalorian.
(Zeg maar de power ranger acteer stijl. Want als je een gezicht niet kan zien gaan mensen opeens allerlei extreme gebaren en bewegingen maken.) Half Hollywood heeft zijn kamp diep in de uncanny valley opgezet.
Om over sound engineers maar te zwijgen.. </rant medicijn="maxDosis">
Dat, hoe vaak zie je in het echte leven een auto die zo goed gepoetst is?
Ik minimaal 2 keer per jaar, ik wax ze dan met de hand met Turtle wax uit blijk :o
En na een dag glimt die ook niet meer zo als de auto uit het plaatje in het artikel ;)
ik denk idd dat raytracing de toekomst heeft ,net zoals je zegt alles is realistischer en beter.
ik heb vroeger ook met povray iets gemaakt samen met mijn vrienden,en het zag er toen al veelbelovend uit.
En omdat videokaarten nu al realtime dit kunnen weergeven vind ik prachtig.
We waren meer dan 8 uur aan het wachten voordat een voorstelling klaar was.Voordat alles gerenderd was.
Ik zie in veel situaties dat realtime raytracing het net wat mooier maakt, maar valt me wel op dat het meteen vaak overdone is. Water partijen zijn standaard spiegels, alles lijkt ineens op een spiegelend oppervlak. Ik weet niet hoe het met de rest zit, maar mijn echte wereld spiegelt toch aanzienlijk minder :D
Dat vind ik dus ook. Vooral bij schaduws kan ik mij daar aan ergeren: Ze zeggen dat de schaduw van bijvoorbeeld een boom met raytracing nu heel scherp is en dat klopt ook, het is gewoon een grijze/zwarte kopie van de boom. Gaat de raytracing uit is de schaduw wat vager en niet zo scherp. Nu woon ik niet in de woestijn en kom ik regelmatig bomen tegen en die schaduw is toch echt niet zo scherp als ze ons willen laten geloven via raytracing
Schaduwen zouden met raytracing toch juist minder scherp moeten zijn? Dat is namelijk lastig te realiseren bij rasterization.

https://news.developer.nv...nd-denoising-712-minutes/

[Reactie gewijzigd door DohnJoe op 25 juli 2024 18:19]

Precies mijn punt. Kan het betreffende filmpje niet meer vinden helaas maar vond wel veel vergelijkings filmpjes waarin RT aan een betere/mooiere schaduw geeft dan wanneer RT uit staat. Filmpje waar ik op doelde was kort na de BF:V release. Misschien hebben ze bij het editen de beelden verwisseld/door elkaar gehaald. Ik volg heel het RT verhaal niet echt dus ik zal ook vast wel wat achterlopen. 8)7
Apple is ook bezig met de ontwikkeling van raytracing in Metal.

https://developer.apple.com/videos/play/wwdc2019/613/
Wat ik alleen nog mis in dit artikel is munnen we nu ook gebruik maken van rtx voor hit detectie en dit offloaden naar een rtx core. Vilgensmij kan dit geziet dat ook gewoon een path trace of box trace is. Momenteel zijn we als game maker daar zuinig mee omdat het je performance kost maar met aparte rtx hardware zou je dus ook veel betere detecties kunnen doen omdat je niet meer zuinig hoeft te zijn met je traces.
"Raytracing maakt dan ook gebruik van een soort lichtstralen, maar anders dan in de natuur, komen ze als het ware vanuit een oogpunt (...) op objecten terecht"
Dat doet denken aan hoe rond 400 voor Christus de Griekse filosoof Plato veronderstelde dat het oog werkt, met een soort stralen die vanuit het oog op objecten vallen. Die theorie werkt nog steeds door in de taal, zo kun je "je oog op iets laten vallen".
Zie https://en.wikipedia.org/wiki/Emission_theory_(vision)

Op dit item kan niet meer gereageerd worden.