DirectX Raytracing (DXR) Tier 1.1 nieuwe functies kunnen werken met alleen driverondersteuning zonder zware hardwaremodificatie
Ray Tracing is zeker een functie waar gamers, vooral met high-end grafische kaarten van NVIDIA en AMD, reikhalzend naar uitkijken. Toonaangevende makers van GPU's, waaronder binnenkort ook Intel, zijn actief bezig met het bouwen van hun hardware om de functie te ondersteunen die de licht- en schaduweffecten realistisch weergeeft op basis van de echte natuurwetten en hyperrealistische en meeslepende beelden oplevert.
Ondertussen zorgt Microsoft ervoor dat het Windows OS-ecosysteem zeer geschikt is als een ideaal platform om hoogwaardige games te spelen. Het DirectX-platform van het bedrijf, dat lange tijd een toonaangevende standaard is voor desktop-gaming, wordt aangepast om native ondersteuning te bieden en zelfs een boost te geven aan de ‘Real-time Ray Tracing’. In feite is de DirectX Raytracing (DXR) Tier 1.1 de nieuwste standaard die een reeks nieuwe functies ondersteunt. Enkele van de opwindende functies die real-time ray-tracing zou kunnen ondersteunen in de nabije functie zijn onder meer inline ray tracing, DispatchRays () -oproepen via ExecuteIndirect (), Groeiende statusobjecten via AddToStateObject (), GeometryIndex () in raytracing-shaders, en meer. Laten we eens kijken naar enkele van de nieuwe functies die DirectX 12 voor Windows 10 ondersteunt voor ray tracing.
Inline Ray Tracing:
Een alternatieve vorm van ray tracing, inline ray tracing, maakt geen gebruik van afzonderlijke dynamische shaders of shader-tabellen. De API voor de functie verbergt de toegang tot de versnellingsstructuur (bijv. datastructuurtraversal, box, driehoekskruising). Dit laat het in wezen over aan de hardware / driver. Interessant is dat alle benodigde app-code voor het verwerken van zowel opgesomde kandidaat-treffers als het resultaat van een zoekopdracht (bijv. Hit versus miss) op zichzelf kan staan in de arcering die de RayQuery.
Inline ray tracing biedt ontwikkelaars de mogelijkheid om te streven naar meer ray tracing-processen, in plaats van de werkplanning volledig aan het systeem over te dragen. Onnodig toe te voegen, deze optimalisatie van processen is best handig voor ontwikkelaars die worstelen met meerdere schaduwen. Bovendien hebben de ontwikkelaars de volledige vrijheid om dynamisch over te schakelen naar de inline-vorm voor eenvoudige recursieve stralen.
DispatchRays() Oproepen via ExecuteIndirect():
Met deze functie kunnen shaders op de GPU een lijst met VerzendingStralen() oproepen. Deze omvatten individuele parameters zoals thread counts, shader table instellingen en andere root parameter instellingen. Het beste aspect van de functie is dat de hele lijst kan worden uitgevoerd zonder dat het proces ooit een tussenliggende retour naar de CPU nodig heeft.
Alle scenario's die raytracing voorbereiden, werken op de GPU en vervolgens onmiddellijk spawnen, zouden enorm moeten profiteren van de functie. Onnodig toe te voegen, deze functie zou veel moeten helpen met verschillende adaptieve raytracing-scenario's, zoals op shader gebaseerde selectie, sortering, classificatie en verfijning.
Groeiende statusobjecten via AddToStateObject ():
Een optimalisatiefunctie, deze nieuwe probeert verspillende verwerkingsdraden te verminderen. Heel wat apps en processen creëren tegenwoordig een volledig gevulde pijplijn voor ray tracing, die veel middelen verspilt en het systeem belast. Momenteel parseert de D3D12-runtime nog steeds het volledige statusobject dat wordt gemaakt uit bouwstenen.
Ook al wordt het gedaan om de juistheid te verifiëren, met AddToStateObject ()kan een nieuw state-object worden gemaakt door shaders toe te voegen aan een bestaand arceringstatusobject. Onnodig toe te voegen, de CPU-overhead blijft alleen evenredig met de gegevens die worden toegevoegd.
GeometryIndex () In Ray Tracing Shaders:
Met deze functie kunnen shaders geometrieën onderscheiden binnen versnellingsstructuren op het onderste niveau. Eerder konden geometrieën worden onderscheiden door gegevens in arceringstabelrecords voor elke geometrie te variëren, maar met de nieuwe methode is de app verlost van de last. Bovendien, als alle geometrieën dezelfde arcering delen, kan de app ervoor kiezen om de MultiplierForGeometryContributionToHitGroupIndex parameter naar TraceRay () 0.
Dit zal er in wezen voor zorgen dat de geometrie-index niet langer meetelt in de berekening van de indexering van de arceringstabel met vaste functie. Toch kunnen de shaders, indien nodig of gewenst, gebruiken GeometryIndex () om te indexeren in de eigen datastructuren van de app.
Naast de bovengenoemde functies bevat de DirectX Raytracing (DXR) Tier 1.1 ook RAY_FLAG_SKIP_TRIANGLES en RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES vlaggen. Hoewel deze vlaggen beschikbaar zijn voor individuele raytracing-aanroepen, kunnen ze ook globaal worden gedeclareerd via raytracing-pijplijnconfiguratie.
Het is duidelijk dat Microsoft probeert DirectX 12 te optimaliseren voor grafisch intensieve games. Bovendien, aangezien ray tracing een van de belangrijkste functies voor high-end games en gamers belooft te worden, zorgt het bedrijf ervoor dat het systeem, de CPU en de GPU optimaal worden gebruikt met minimale redundanties.