DirectX Raytracing (DXR) Tier 1.1 Нови функции могат да работят само с поддръжка на драйвери без тежка хардуерна модификация

Хардуер / DirectX Raytracing (DXR) Tier 1.1 Нови функции могат да работят само с поддръжка на драйвери без тежка хардуерна модификация 3 минути четене

Xbox



Проследяването на лъчи със сигурност е функция, която геймърите, особено с графичните карти от висок клас от NVIDIA и AMD, очакват с нетърпение. Водещи производители на графични процесори, които скоро ще включват и Intel, активно изграждат своя хардуер, за да поддържат функцията, която реалистично прави светлинните и сенчести ефекти въз основа на реалните закони на физиката и носи хиперреалистични и завладяващи визуализации.

Междувременно Microsoft гарантира, че екосистемата на Windows OS е подходяща като идеална платформа за игра на игри от висок клас. Платформата DirectX на компанията, която отдавна е водещ стандарт за настолни игри, е променена, за да поддържа родната поддръжка и дори да засили „Проследяване на лъчи в реално време“. Всъщност, DirectX Raytracing (DXR) Tier 1.1 е най-новият стандарт, който поддържа набор от нови функции. Някои от вълнуващите функции, които проследяването на лъчите в реално време може да поддържа в близката функция, включват вградено проследяване на лъчи, Извиквания на DispatchRays () чрез ExecuteIndirect () , Отглеждане на държавни обекти чрез AddToStateObject () , GeometryIndex () в проследяващи лъча шейдъри , и още. Нека разгледаме някои от новите функции, които DirectX 12 за Windows 10 ще поддържа за проследяване на лъчи.



Вградено проследяване на лъчи:

Алтернативна форма на проследяване на лъчи, вградено проследяване на лъчи не използва отделни динамични шейдъри или шейдър таблици. Приложният програмен интерфейс (API) за функцията скрива достъпа до структурата на ускорението (напр. Обхождане на структурата от данни, кутия, пресичане на триъгълник). Това по същество го оставя на хардуера / драйвера. Интересното е, че целият необходим код на приложението за обработка както на изброените кандидат-посещения, така и на резултата от заявка (напр. Хит срещу пропуск) може да бъде самостоятелен в шейдъра, управляващ RayQuery .



Вграденото проследяване на лъчи предлага на разработчиците възможността да настояват за повече процеси за проследяване на лъчи, вместо да предават изцяло планирането на работата на системата. Излишно е да добавям, че тази оптимизация на процесите е доста полезна за разработчици, които се блъскат в множество сенки. Освен това разработчиците имат пълна свобода да превключват динамично към вградената форма за прости рекурсивни лъчи.



DispatchRays () повиквания чрез ExecuteIndirect ():

Тази функция позволява на шейдърите на графичния процесор да генерират списък с DispatchRays () обаждания. Те включват отделни параметри като брой нишки, настройки на таблицата на шейдърите и други настройки на коренните параметри. Най-добрият аспект на функцията е, че целият списък може да бъде изпълнен, без процесът изобщо да се нуждае от междинно връщане обратно към процесора.



Всички сценарии, които подготвят работа за проследяване на лъчи на графичния процесор и след това незабавно го произвеждат, трябва да се възползват изключително от функцията. Излишно е да добавям, че тази функция би трябвало да помогне много при няколко адаптивни сценария за проследяване на лъчи, като изваждане, сортиране, класификация и усъвършенстване на базата на шейдър.

Отглеждане на държавни обекти чрез AddToStateObject ():

Функция за оптимизация, тази нова се опитва да намали разточителните обработващи нишки. Днес доста приложения и процеси създават напълно населен тръбопровод за проследяване на лъчи, който губи много ресурси и натоварва системата. Понастоящем изпълнението на D3D12 все още анализира пълния държавен обект, създаден от строителни блокове.

Въпреки че е направено за проверка на коректността, с AddToStateObject () , може да се направи нов обект на състояние чрез добавяне на шейдъри към съществуващ обект на състояние на шейдъра. Излишно е да се добавя, че натоварването на процесора ще остане пропорционално само на добавените данни.

GeometryIndex () В проследяващи лъчи шейдъри:

Тази функция позволява на шейдърите да различават геометриите в структурите за ускорение на дънното ниво. По-рано геометриите можеха да бъдат разграничени чрез промяна на данните в записите на таблицата на шейдърите за всяка геометрия, но с новия метод приложението се освобождава от тежестта. Освен това, ако всички геометрии споделят един и същ шейдър, приложението може да избере да зададе МножителForGeometryContributionToHitGroupIndex параметър към TraceRay () 0.

Това по същество ще гарантира, че геометричният индекс вече не е фактор в изчислението на индексирането на таблицата с шейдър с фиксирана функция. И все пак, ако е необходимо или желано, шейдърите могат да използват GeometryIndex () за индексиране в собствените структури от данни на приложението.

В допълнение към гореспоменатите функции, DirectX Raytracing (DXR) Tier 1.1 също включва RAY_FLAG_SKIP_TRIANGLES и RAY_FLAG_SKIP_PROCEDURAL_PRIMITIVES знамена. Въпреки че тези флагове са достъпни за отделни извиквания за проследяване на лъчи, те също могат да бъдат декларирани в световен мащаб чрез конфигурация на конвейер за проследяване на лъчи.

Ясно е, че Microsoft се опитва да оптимизира DirectX 12 за графично интензивни игри. Освен това, тъй като проследяването на лъчи обещава да бъде една от най-важните функции за игри и геймъри от висок клас, компанията гарантира, че системата, процесорът и GPU се използват оптимално с минимални съкращения.

Етикети directx nvidia проследяване на лъчи RTX