Разбираем подробно DirectX Raytracing (DXR), шейдинг с переменной скоростью (VRS), сетчатые шейдеры и обратная связь сэмплера. Насколько возможно на данный момент.
Обратите внимание, текста много, но он важный и интересный! В самом низу в отдельном блоке будет короткое изъяснение!
Со слов AMD
AMD долгое время активно поддерживала технологии API, также графического API следующего поколения, такие как Microsoft DirectX 12, которые помогают вывести игры на совершенно новый уровень. Поэтому мы рады сообщить, что в партнерстве с Microsoft мы обеспечим полную поддержку DirectX 12 Ultimate в нашей новой игровой архитектуре AMD RDNA 2.
В принципе, так оно и было, ведь вспомним кто первый использовал GDDR4 и GDDR5, HBM и помогал в их разработке.
Со слов Microsoft
От команды, которая принесла ПК и консольным геймерам последние графические инновации в течение почти 25 лет, мы рады принести геймерам DirectX 12 Ultimate, кульминацию лучшей графической технологии, которую мы когда-либо представляли в беспрецедентном выравнивании между ПК и Xbox Series X.
Когда геймеры приобретают графическое оборудование для ПК с логотипом DX12 Ultimate или Xbox Series X, они могут сделать это с уверенностью, что их оборудование гарантированно поддерживает все функции графического оборудования следующего поколения, включая DirectX Raytracing, затенение переменной скоростью, шейдеры сетки и обратную связь Сэмплера . Этот знак качества обеспечивает звездную поддержку функций "future-proof" для игр следующего поколения!
Теперь разжуем подробнее и зафиксируем главное
- Пожалуй главное для разработчиков игр. - Microsoft открыла исходный код - Ведущий в отрасли инструмент оптимизации графики PIX и компилятор HLSL с открытым исходным кодом предоставят разработчикам игр возможность выжать каждую последнюю каплю производительности из всей экосистемы оборудования DX12 Ultimate.
- DirectX12 Ultimate - это принципиально дополнительная инициатива, которая обеспечивает геймерам уверенность в том, что их аппаратное обеспечение соответствует самой высокой планке поддержки функций в играх следующего поколения. Очень важно отметить, что DX12 Ultimate не повлияет на совместимость игры с существующим оборудованием, которое не поддерживает всех функций DX12 Ultimate. Фактически, игры следующего поколения, которые используют функции DX12 Ultimate, будут продолжать работать на оборудовании, которое не поддерживает DX12 Ultimate.
- Также планируется объединение графической платформы между ПК и Xbox Series X, в которой DX12 Ultimate служит в качестве мультипликатора силы для всей игровой экосистемы.
- Объединение Циклов. Циклы больше не работают независимо друг от друга! Вместо этого они теперь объединяются синергетически: когда Xbox Series X выпустит, в мире уже будет много миллионов видеокарт DX12 Ultimate PC с одним и тем же набором функций, катализируя быстрое принятие новых функций/решений. Выиграют и консоли и ПК.
- Также Microsoft похвалила AMD за новые драйвера Адреналин, с полностью переработанным дизайном и функционалом. (Да, в них есть косяки, но пользоваться стало приятно и действительно по-новому. "Черный и зеленый экран, тоже новаторство=)").
DirectX Raytracing 1.1
DirectX Raytracing (DXR) привносит новый уровень графического реализма в видеоигры, ранее достижимый только в киноиндустрии. Эффекты, достижимые с помощью DXR, кажутся более реальными, потому что в некотором смысле они более реальны: DXR отслеживает траектории света с помощью истинных физических расчетов, что является гораздо более точным моделированием, чем расчеты на основе эвристики, используемые ранее.
DXR 1.1 - это инкрементное добавление поверх DXR 1.0, добавляющее три основные новые возможности:
- Создание работы GPU теперь позволяет Raytracing . Это позволяет шейдерам на графическом процессоре (ГП) вызывать трассировку лучей без промежуточного обратного хода к ЦП. Эта возможность полезна для адаптивных сценариев трассировки лучей, таких как отбраковка / сортировка / классификация / уточнение на основе шейдера. В основном, сценарии, которые готовят raytracing работают на GPU, а затем сразу же порождают его.
- Потоковые движки могут более эффективно загружать новые шейдеры трассировки лучей по мере необходимости, когда игрок перемещается по всему миру и новые объекты становятся видимыми.
- Inline raytracing - это альтернативная форма трассировки лучей, которая дает разработчикам возможность управлять большей частью процесса трассировки лучей, в отличие от обработки планирования работы полностью в системе (динамическое затенение). Он доступен на любом этапе шейдера, включая вычислительные шейдеры, пиксельные шейдеры и т. д. Как динамические затенения, так и встроенные формы трассировки лучей используют одни и те же непрозрачные структуры ускорения.
Затенение Переменной Скорости
Переменная скорость затенения (VRS) позволяет разработчикам выборочно изменять скорость затенения игры. Это позволяет им "набирать" мощность GPU в более важных частях игры для улучшения визуальных эффектов и "набирать" мощность GPU в менее важных областях игры для лучшей скорости. Затенение переменной скорости также имеет преимущество - быть относительно низкой по цене для того чтобы снабдить ею разработчиков и игры.
Шейдеры Сетки
Шейдеры сетки обеспечивают разработчикам большую программируемость, чем когда-либо прежде. Используя всю мощь generalized GPU compute для конвейера геометрии, шейдеры сетки позволяют разработчикам создавать более детальные и динамические миры, чем когда-либо прежде.
До появления шейдера mesh конвейер геометрии GPU скрывал параллельный характер аппаратного исполнения GPU за упрощенной абстракцией программирования, которая только давала разработчикам доступ к кажущимся линейным функциям шейдера. Например, разработчик пишет функцию шейдера вершин, которая вызывается один раз для каждой вершины в модели, что подразумевает последовательное выполнение. Однако за кулисами аппаратное обеспечение пакует соседние вершины для заполнения волны SIMD, а затем выполняет 32 или 64 функции шейдера вершин параллельно на одном ядре шейдера. Эта модель работала очень хорошо в течение многих лет, но она оставляет производительность и гибкость на столе, скрывая детали того, что оборудование действительно делает от разработчиков.
Шейдеры сетки изменяют это, делая обработку геометрии более похожей на вычислительные шейдеры. Вместо одной функции, которая затеняет одну вершину или один примитив, шейдеры сетки работают через всю группу вычислительных потоков, имея доступ к общей памяти группы и расширенные вычислительные функции, такие как встроенные функции cross-lane wave, которые обеспечивают еще более точный контроль над фактическим выполнением оборудования. Все эти потоки работают вместе, чтобы затенить небольшой индексированный список треугольников, называемый "мешлет". Как правило, существует фаза шейдера сетки, на которой каждый поток работает над отдельной вершиной, затем другая фаза, на которой каждый поток работает над отдельным примитивом, но эта модель полностью гибка, позволяя обмениваться данными между потоками, новыми вершинами или примитивами, созданными по мере необходимости, существующими примитивами, обрезанными или отбракованными и т. д.
Наряду с этой новой гибкостью распределения потоков появляется гибкость форматов входных данных. Шейдер сетки больше не использует входной блок ассемблера, который ранее отвечал за извлечение индексных и вершинных данных из памяти. Вместо этого шейдерный код может свободно считывать любые необходимые данные из любого формата, который ему нравится. Это позволяет использовать новые методы, такие как сжатие буфера индекса или использование нескольких различных буферов индекса для различных каналов данных вершин. Такие подходы могут уменьшить использование памяти, а также уменьшить пропускную способность памяти, используемую во время визуализации, что повышает производительность.
Обратная Связь Пробоотборника
Обратная связь сэмплера обеспечивает лучшее визуальное качество, более короткое время загрузки и меньше заикания, предоставляя подробную информацию, позволяющую разработчикам загружать только текстуры, когда это необходимо.
Предположим, вы являетесь разработчиком игры, затеняющий сложную 3D-сцену. Камера быстро перемещается по всей сцене, в результате чего некоторые объекты перемещаются на разные уровни детализации. Поскольку требуется агрессивная оптимизация для памяти, вы связываете ресурсы, чтобы справиться со спросом на различные LOD. Возможно, вы используете потоковую систему текстур; возможно, она использует плиточные ресурсы, чтобы сохранить эти гигантские 4K mip 0s нерезидентами, если они вам не нужны. В любом случае, у вас есть шейдер, который сэмплирует текстуру mipped, используя очень сложный образец выборки. Выбери свой любимый, скажем, анизотропный.
Выборка в этом шейдере заставляет вас задавать некоторые вопросы.
Какой уровень mip он в конечном итоге отобрал? Кажется, это очень простой вопрос. В мире до обратной связи Сэмплера нет простого способа узнать. Вы могли бы сколотить эвристику. Вы можете подумать о шаблоне выборки и сделать некоторые обоснованные предположения. Но 1) у вас нет времени для этого, и 2) нет никакого способа, чтобы это было 100% надежным.
Где именно на ресурсе он делал выборку? Более конкретно, что вам действительно нужно знать— какие плитки? Может быть в верхнем левом углу, или прямо в середине текстуры. Ваша потоковая система действительно выиграет от этого, чтобы вы знали, какие mips загружать дальше.
Обратная связь с сэмплером решает эту проблему, позволяя шейдеру эффективно запрашивать, какая часть текстуры была бы необходима для удовлетворения запроса на выборку, без фактического выполнения операции выборки. Затем эта информация может быть возвращена в систему потоковой передачи ресурсов игры, что позволит ей принимать более разумные и точные решения о том, какие данные будут передаваться дальше. В сочетании с функцией плиточных ресурсов D3D12 это позволяет играм отображать более крупные и детализированные текстуры, используя при этом меньше видеопамяти.
Обратная связь сэмплера также включает текстурно-пространственное затенение (TSS), метод визуализации, который разделяет затенение объекта в мировом пространстве от растеризации формы этого объекта до конечной цели.
TSS - это метод, который позволяет разработчикам игр делать дорогостоящие вычисления освещения в пространстве объекта и записывать их в текстуру — например, что-то, что выглядит как UVW - разворачивание объекта. Поскольку растеризация не выполняется, затенение может быть выполнено с помощью вычислений, а не с помощью графического конвейера. Затем, на отдельном шаге, свяжите текстуру и растеризуйте в пространстве экрана, выполняя мертвый простой образец. Этот подход уменьшает сглаживание и позволяет вычислять освещение реже, чем растеризация. Развязка этих двух скоростей позволяет использовать более сложные методы освещения на более высоких частотах кадров.
Надеюсь все понятно, но не переживайте, все ссылки где это разбирается максимально подробно я оставлю внизу, во вкладке "Источники".
А теперь обещанная сокращенная информация обо всем. Не пропусти!)
- Пожалуй главное для разработчиков игр. - Microsoft открыла исходный код. Ведущий в отрасли инструмент оптимизации графики PIX и компилятор HLSL теперь открыт.
- DirectX12 Ultimate - Дополнительная инициатива Microsoft, работа которой не скажется на старом железе, но и работать полноценно (а возможно и частично) не будет.
- Объединение графической платформы между ПК и Xbox Series X; Объединение Циклов.
- Четыре ключевые графические функции DirectX 12 Ultimate:
- DirectX Raytracing (DXR) - Трассировка лучей без промежуточного обратного хода к ЦП.
- Шейдинг с переменной скоростью (VRS) - позволяет разработчикам выборочно изменять скорость затенения игры. Это позволяет им "набирать" мощность GPU в более важных частях игры для улучшения визуальных эффектов и "набирать" мощность GPU в менее важных областях игры для лучшей скорости.
- Сетчатые шейдеры - Обеспечивают разработчикам большую программируемость, чем когда-либо прежде. Используя всю мощь generalized GPU compute для конвейера геометрии, шейдеры сетки позволяют разработчикам создавать более детальные и динамические миры, чем когда-либо прежде.
- Обратная связь сэмплера - Обеспечивает лучшее визуальное качество, более короткое время загрузки и меньше заикания, предоставляя подробную информацию, позволяющую разработчикам загружать только текстуры, когда это необходимо.
- DXR добавляет новый уровень графического реализма в видеоигры, ранее доступный только в фильмах.
- Также данные функции должны быть доступны и у Nvidia, и, скорее всего у Sony PlayStation.
И на этом закончим, но с одним упоминанием.
«Microsoft и AMD тесно сотрудничали в разработке набора функций DirectX 12 Ultimate, чтобы обеспечить отличное взаимодействие с архитектурой AMD RDNA 2»
- Брайан Лэнгли, руководитель программы Graphics Group, Microsoft
А благодаря этому, есть надежда на то, что у AMD будет хорошая оптимизация и софтовая часть в этой "стези" и у нас не повторятся черный экран и подобные проблемы.
Прикрепляю видео.
Источники: