Microsoft Details DirectX Raytracing Tier 1.1, New DirectX 12 функции



Microsoft detailed feature additions to the DirectX 12 3D graphics API, and an expansion of its DirectX Ray-tracing (DXR) API to Tier 1.1. The updated APIs will be included with the Windows 10 major update that's scheduled for the first half of 2020 - the features are accessible already for developers in Windows Insider preview builds. DXR 1.1 is the first major update to the API since its Q4-2018 launch, and adds three major features. To begin with, it brings support for extra shaders to an existing ray-tracing PSO (pipeline-state object), increasing the efficiency of dynamic PSO additions. Next up, is ExecuteIndirect for Raytracing support, described by Microsoft as 'enabling adaptive algorithms where the number of rays is decided on the GPU execution timeline.' This could be a hint what to expect from NVIDIA's next-generation GPUs that are expected for next year. Lastly, the API introduces support for Inline Raytracing, which gives developers more control over ray traversal and scheduling.

В основния API на DirectX 12, Microsoft въвежда поддръжка за Mesh Shaders, което води до системни промени в графичния тръбопровод. „Мрежовите шейдери и шейдърите за усилване са следващото поколение възможности за обработка на геометрията на графичния процесор, заместваща текущия входен асемблер, върхов шейдър, шейдър на корпуса, tessellator, домен шейдър и етапи на геометрична шейдер“, пише Microsoft в своя блог пост. DirectX Sampler Feedback допринася за управлението на паметта, като позволява на игрите да разберат по-добре кои текстурни активи са по-често достъпни и трябва да останат постоянни. Microsoft описва въздействието на DirectX Sampler Feedback върху производителността върху две ключови функции на API: поточни текстури и засенчване на текстура-пространство, както следва:

Поток на текстура
Много игри от следващия ген имат същия проблем: когато изобразявате по-големи и по-големи светове с по-високо и по-високо качество на текстурите, игрите страдат от по-дълго време за зареждане, по-високо налягане в паметта или и двете. Разработчиците на игри трябва да намалят качеството на активите си или да зареждат текстури по време на изпълнение повече от необходимото. Когато насочвате 4k резолюция, целият MIP 0 с висококачествена текстура отнема много място! Изключително е желателно да можете да зареждате само необходимите части от най-подробните MIP нива.

Едно решение на този проблем е поточната текстура, както е посочено по-долу, където Обратната обратна връзка значително подобрява точността, с която правилните данни могат да бъдат зареждани в правилните моменти.
  • Представете сцена и запишете желани текстурни плочки с помощта на образец за обратна връзка.
  • Ако текстурните плочки при желаните MIP нива все още не са налични:
    o Представете текуща рамка, като използвате по-ниско MIP ниво.
    o Изпратете заявка за диск IO, за да заредите желани текстурни плочки.
  • (Асинхронно) Насочете желаните текстурни плочки към запазени ресурси, когато се зареждат.
Текстурно-космическо засенчване
Друг интересен сценарий е Texture Space Shading, където игрите динамично изчисляват и съхраняват междинните стойности на шейдърите в текстура, намалявайки както пространственото, така и временното извеждане на излишък. Работният процес изглежда по следния начин, където отново, обратна връзка с проби значително подобрява ефективността, като избягва излишните работни изчисления на части от текстура, които всъщност не са били необходими.
  • Начертайте геометрията с прости шейдъри, които записват обратна връзка от пробите, за да определите кои части от текстурата са необходими.
  • Изпратете изчислителна работа, за да попълните необходимите текстури.
  • Начертайте геометрията отново, този път с истински шейдъри, които прилагат генерираните данни за текстурата.
Други функции
  • DRED поддръжка за PIX маркери
  • Нови API за взаимодействие със слоя за картографиране D3D9on12
  • Поддържа се формат R11G11B10_FLOAT за споделени ресурси
  • Нови флагове за разпределение на ресурсите, които позволяват създаването на D3D12 ресурси, без също така да ги правят пребиваващи в GPU паметта или без нула да ги инициализират, което може да подобри ефективността на създаване на ресурси
  • D3DConfig: Нов инструмент за управление на настройките на DirectX Control Panel
PIX поддръжка
Поддръжката на PIX за тези нови функции на DirectX 12 идва през следващите няколко месеца. Ще предоставим повече подробности при дълбоко гмуркане във всяка функция през следващите седмици.
Source: Microsoft DirectX Developer Blog