DirectX Raytracing (DXR) Tier 1.1 Nowe funkcje mogą działać z obsługą tylko sterownika bez konieczności wprowadzania ciężkich modyfikacji sprzętu

Sprzęt komputerowy / DirectX Raytracing (DXR) Tier 1.1 Nowe funkcje mogą działać z obsługą tylko sterownika bez konieczności wprowadzania ciężkich modyfikacji sprzętu 3 minuty czytania

Xbox



Ray Tracing to z pewnością funkcja, na którą gracze, zwłaszcza z zaawansowanymi kartami graficznymi NVIDIA i AMD, niecierpliwie czekają. Czołowi producenci procesorów graficznych, do których wkrótce dołączy również Intel, aktywnie budują swój sprzęt obsługujący funkcję, która realistycznie odwzorowuje efekty światła i cienia w oparciu o rzeczywiste prawa fizyki oraz zapewnia hiperrealistyczne i wciągające efekty wizualne.

W międzyczasie Microsoft zapewnia, że ​​ekosystem systemu operacyjnego Windows doskonale nadaje się jako idealna platforma do grania w zaawansowane gry. Platforma DirectX firmy, która od dawna jest wiodącym standardem w grach komputerowych, jest dostosowywana, aby natywnie obsługiwać, a nawet usprawniać „śledzenie promieni w czasie rzeczywistym”. W rzeczywistości DirectX Raytracing (DXR) Tier 1.1 to najnowszy standard obsługujący zestaw nowych funkcji. Niektóre z ekscytujących funkcji, które może obsługiwać ray tracing w czasie rzeczywistym w funkcji bliskiej, obejmują wbudowane śledzenie promieni, Wywołania DispatchRays () za pośrednictwem ExecuteIndirect () , Rosnące obiekty stanu za pomocą AddToStateObject () , GeometryIndex () w modułach cieniujących śledzenia promieni , i więcej. Przyjrzyjmy się niektórym nowym funkcjom, które DirectX 12 dla systemu Windows 10 będzie obsługiwać w przypadku ray tracingu.



Wbudowane śledzenie promieni:

Inline ray tracing, będący alternatywną formą ray tracingu, nie wykorzystuje oddzielnych dynamicznych shaderów ani tabel shaderów. API dla funkcji ukrywa dostęp do struktury akceleracji (np. Przechodzenie struktury danych, skrzynka, przecięcie trójkątów). Zasadniczo pozostawia to sprzętowi / sterownikowi. Co ciekawe, cały kod aplikacji niezbędny do obsługi zarówno wyliczonych trafień kandydatów, jak i wyniku zapytania (np. Trafienie vs chybienie) może być samodzielny w module cieniującym sterującym RayQuery .



Inline ray tracing oferuje programistom możliwość naciskania na większą liczbę procesów śledzenia promieni, w przeciwieństwie do przekazywania harmonogramu pracy wyłącznie systemowi. Nie trzeba dodawać, że ta optymalizacja procesów jest bardzo przydatna dla programistów, którzy przepychają się wieloma cieniami. Co więcej, programiści mają pełną swobodę dynamicznego przełączania się na formę liniową dla prostych promieni rekurencyjnych.



Wywołania DispatchRays () przez ExecuteIndirect ():

Ta funkcja umożliwia modułom cieniującym na GPU generowanie listy plików DispatchRays () wezwania. Obejmują one poszczególne parametry, takie jak liczba wątków, ustawienia tabeli modułu cieniującego i inne ustawienia parametrów głównych. Najlepszym aspektem tej funkcji jest to, że cała lista może zostać wykonana bez konieczności wykonywania przez proces pośredniej podróży powrotnej do procesora.



Wszystkie scenariusze, które przygotowują śledzenie promieni na GPU, a następnie natychmiast go uruchamiają, powinny ogromnie skorzystać z tej funkcji. Nie trzeba dodawać, że ta funkcja powinna bardzo pomóc w kilku scenariuszach adaptacyjnego śledzenia promieni, takich jak eliminowanie, sortowanie, klasyfikacja i udoskonalanie oparte na modułach cieniujących.

Growing State Objects via AddToStateObject ():

Funkcja optymalizacji, ta nowa próbuje zmniejszyć marnotrawstwo wątków przetwarzania. Wiele aplikacji i procesów tworzy obecnie w pełni wypełniony potok ray tracingu, który marnuje wiele zasobów i obciąża system. Obecnie środowisko wykonawcze D3D12 nadal analizuje cały obiekt stanu, który jest tworzony z bloków konstrukcyjnych.

Mimo że robi się to w celu zweryfikowania poprawności, za pomocą AddToStateObject () , można utworzyć nowy obiekt stanu, dodając moduły cieniujące do istniejącego obiektu stanu modułu cieniującego. Nie trzeba dodawać, że obciążenie procesora pozostanie proporcjonalne tylko do dodawanych danych.

GeometryIndex () w modułach cieniujących śledzenia promieni:

Ta funkcja umożliwia modułom cieniującym rozróżnianie geometrii w strukturach przyspieszenia dolnego poziomu. Wcześniej geometrie można było rozróżniać, zmieniając dane w rekordach tabeli modułów cieniujących dla każdej geometrii, ale dzięki nowej metodzie aplikacja została uwolniona od obciążenia. Ponadto, jeśli wszystkie geometrie współużytkują ten sam moduł cieniujący, aplikacja może ustawić opcję MultiplierForGeometryContributionToHitGroupIndex parametr do TraceRay () 0.

Zasadniczo zapewni to, że indeks geometrii nie będzie już uwzględniał obliczeń indeksowania tabeli modułu cieniującego o ustalonej funkcji. Mimo to, jeśli jest to potrzebne lub pożądane, shadery mogą używać GeometryIndex () indeksować do własnych struktur danych aplikacji.

Oprócz wyżej wymienionych funkcji, DirectX Raytracing (DXR) Tier 1.1 obejmuje również RAY_FLAG_SKIP_TRIANGLES i RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES flagi. Chociaż te flagi są dostępne dla poszczególnych wywołań śledzenia promieni, można je również zadeklarować globalnie za pomocą konfiguracji potoku śledzenia promieni.

Jest całkiem jasne, że Microsoft próbuje zoptymalizować DirectX 12 pod kątem gier wymagających dużej grafiki. Co więcej, ponieważ ray tracing może być jedną z najważniejszych funkcji dla zaawansowanych gier i graczy, firma zapewnia, że ​​system, procesor i GPU są optymalnie wykorzystywane z minimalnymi zwolnieniami.

Tagi directx nvidia raytracing RTX