- Шейдерная модель версии 5.0
В Shader Model 5 предложен новый набор инструкций, с более гибким доступом к данным и большим удобством для разработчика. Набор команд унифицированный, один для шейдеров всех типов: Vertex, Hull, Domain, Geometry, Pixel и Compute. Применена объектно-ориентированная программная модель, функции и подпрограммы в шейдерном коде облегчают разработку графических приложений.
Перечислим некоторые из новых инструкций Shader Model 5.0:
SV_Coverage — даёт информацию о sample coverage для пиксельных шейдеров, применяется при определении краев полигонов в специфических алгоритмах сглаживания.
Gather — выборка сразу четырех значений одной инструкцией, применяется в алгоритмах фильтрации теней и ambient occlusion (глобальная модель затенения).
Инструкции для преобразования типов данных, которые конвертируют значения между 32-битными и 16-битными форматами с плавающей точкой, что упрощает программирование в некоторых случаях.
Битовые операции, помогающие ускорить сжатие и распаковку данных.
Перечислим некоторые из новых инструкций Shader Model 5.0:
SV_Coverage — даёт информацию о sample coverage для пиксельных шейдеров, применяется при определении краев полигонов в специфических алгоритмах сглаживания.
Gather — выборка сразу четырех значений одной инструкцией, применяется в алгоритмах фильтрации теней и ambient occlusion (глобальная модель затенения).
Инструкции для преобразования типов данных, которые конвертируют значения между 32-битными и 16-битными форматами с плавающей точкой, что упрощает программирование в некоторых случаях.
Битовые операции, помогающие ускорить сжатие и распаковку данных.
- DirectCompute
Одной из важнейших особенностей нового графического API является DirectCompute, которая предоставляет доступ к технологии вычислений общего назначения на GPU (ATI Stream Technology для AMD). Эта возможность особенно важна потому, что DirectX API является индустриальным стандартом, который будет использоваться в любом случае.
Поддерживаются несколько уровней аппаратной поддержки: DirectCompute10 — для DirectX 10.0 видеочипов, DirectCompute10.1 и DirectCompute11, соответственно. Игровые применения DirectCompute может найти в обработке и фильтрации изображений, рендеринге полупрозрачных поверхностей без предварительной сортировки (Order Independent Transparency), рендеринге теней, физических эффектах, алгоритмах искусственного интеллекта, трассировке лучей.
Версия DirectCompute11, которая поддерживается Cypress, даёт несколько больше возможностей, по сравнению с DirectCompute10, вот некоторые из них:
3D Thread Dispatch — возможность заменить несколько двумерных массивов потоков одним трёхмерным;
максимальное количество потоков в DirectCompute11 увеличено с 768 до 1024, это даёт возможность исполнять одновременно на 33% потоков больше;
объём памяти на группу потоков увеличен с 16 Кб до 32 Кб, данная память используется для передачи данных между потоками;
доступ к общей памяти улучшен, вместо возможности записи в 256 байтную область возможны полноценные чтение и запись в область 32 Кб данных;
атомарные операции, позволяющие каждому потоку использовать защищенные области памяти, что значительно упрощает перенос алгоритмов с CPU на GPU;
вычисления с двойной точностью, необходимые для некоторых алгоритмов вычислений общего назначения;
Gather4 — выборка из видеопамяти со скоростью до четырёх раз большей (при определённых условиях);
и др.
Поддерживаются несколько уровней аппаратной поддержки: DirectCompute10 — для DirectX 10.0 видеочипов, DirectCompute10.1 и DirectCompute11, соответственно. Игровые применения DirectCompute может найти в обработке и фильтрации изображений, рендеринге полупрозрачных поверхностей без предварительной сортировки (Order Independent Transparency), рендеринге теней, физических эффектах, алгоритмах искусственного интеллекта, трассировке лучей.
Версия DirectCompute11, которая поддерживается Cypress, даёт несколько больше возможностей, по сравнению с DirectCompute10, вот некоторые из них:
3D Thread Dispatch — возможность заменить несколько двумерных массивов потоков одним трёхмерным;
максимальное количество потоков в DirectCompute11 увеличено с 768 до 1024, это даёт возможность исполнять одновременно на 33% потоков больше;
объём памяти на группу потоков увеличен с 16 Кб до 32 Кб, данная память используется для передачи данных между потоками;
доступ к общей памяти улучшен, вместо возможности записи в 256 байтную область возможны полноценные чтение и запись в область 32 Кб данных;
атомарные операции, позволяющие каждому потоку использовать защищенные области памяти, что значительно упрощает перенос алгоритмов с CPU на GPU;
вычисления с двойной точностью, необходимые для некоторых алгоритмов вычислений общего назначения;
Gather4 — выборка из видеопамяти со скоростью до четырёх раз большей (при определённых условиях);
и др.
- Тесселяция в DirectX 11
Для более удобного применения тесселяции в DirectX 11 были введены новые типы шейдеров: Hull и Domain Shaders. Аппаратно ускоренная тесселяция в DX11 позволяет использовать широкий набор алгоритмов и методов: Catmull-Clark Subdivison, патчи Bezier и N-патчи, Displacement Mapping, адаптивная тесселяция (динамически изменяемый уровень детализации — Level of Detail).
На теме тесселяции мы уже останавливались неоднократно. Вкратце — она даёт возможность получить более детализированные модели при небольших затратах производительности. В основном, тесселяция (разбиение модели на большее количество треугольников, если совсем грубо) применяется для поверхностей земли, воды, но иногда и для персонажей.
На теме тесселяции мы уже останавливались неоднократно. Вкратце — она даёт возможность получить более детализированные модели при небольших затратах производительности. В основном, тесселяция (разбиение модели на большее количество треугольников, если совсем грубо) применяется для поверхностей земли, воды, но иногда и для персонажей.
- Order Independent Transparency (OIT)
Это возможность отрисовки полупрозрачных полигонов без их предварительной сортировки, которая делает рендеринг перекрывающихся полупрозрачных объектов: дыма, огня, воды, стекла и т.п. более эффективным
Нельзя сказать, чтобы это была совсем уж новая возможность. Рендеринг полупрозрачных поверхностей требует предварительной сортировки, чтобы они корректно отображались, ведь их смешивание (blending) требует определённого порядка отрисовки. Возможности DirectCompute11 лишь упрощают такой рендеринг при помощи сортировки пикселей, позволяя сделать это всего лишь за один проход. При этом используются атомарные операции и append buffers
Нельзя сказать, чтобы это была совсем уж новая возможность. Рендеринг полупрозрачных поверхностей требует предварительной сортировки, чтобы они корректно отображались, ведь их смешивание (blending) требует определённого порядка отрисовки. Возможности DirectCompute11 лишь упрощают такой рендеринг при помощи сортировки пикселей, позволяя сделать это всего лишь за один проход. При этом используются атомарные операции и append buffers
- Постобработка
При помощи DirectCompute может быть ускорена и усложнена постобработка изображения. Видов постфильтрации очень много: имитация глубины резкости (depth of field), размытие в движении (motion blur), поиск краёв полигонов (edge detection), сглаживание, повышение резкости (sharpening) и т.д.
Для постобработки требуются данные о соседних с обрабатываемым пикселем. Возможности DirectCompute значительно упрощают применение сложных постфильтров, увеличивая производительность и улучшая качество изображения. Например, фильтр constant time filter spreading, который имитирует эффект оптики — глубины резкости, эта новая техника была разработана компанией AMD совместно с Калифорнийским университетом в Беркли. В ней не требуется использование альфа буфера, а в коде используются возможности доступа к общей памяти. В итоге получается меньше артефактов вроде видимых гало и резких силуэтов, а также повышенная скорость обработки, по сравнению с обычными методами с применением пиксельного шейдера. Постобработка при помощи DirectCompute способна улучшить и алгоритмы отрисовки теней, включая ambient occlusion (AMD называет свой метод HDAO — High Definition Ambient Occlusion). Об этом алгоритме мы уже писали, это модель глобального освещения (затенения), используемая в 3D графике, которая увеличивает реалистичность изображения, вычисляя интенсивность света, доходящего до поверхности.
DirectCompute11 даёт дополнительные возможности получения более реалистичных теней, когда тень становится более размытой по краям по мере удаления (то есть, полутень более реалистична).
Для постобработки требуются данные о соседних с обрабатываемым пикселем. Возможности DirectCompute значительно упрощают применение сложных постфильтров, увеличивая производительность и улучшая качество изображения. Например, фильтр constant time filter spreading, который имитирует эффект оптики — глубины резкости, эта новая техника была разработана компанией AMD совместно с Калифорнийским университетом в Беркли. В ней не требуется использование альфа буфера, а в коде используются возможности доступа к общей памяти. В итоге получается меньше артефактов вроде видимых гало и резких силуэтов, а также повышенная скорость обработки, по сравнению с обычными методами с применением пиксельного шейдера. Постобработка при помощи DirectCompute способна улучшить и алгоритмы отрисовки теней, включая ambient occlusion (AMD называет свой метод HDAO — High Definition Ambient Occlusion). Об этом алгоритме мы уже писали, это модель глобального освещения (затенения), используемая в 3D графике, которая увеличивает реалистичность изображения, вычисляя интенсивность света, доходящего до поверхности.
DirectCompute11 даёт дополнительные возможности получения более реалистичных теней, когда тень становится более размытой по краям по мере удаления (то есть, полутень более реалистична).
- Улучшения и дополнительные форматы текстурного сжатия
В DirectX 11 появилась возможность сжатия 16-битных HDR текстур, степень сжатия которых достигает 6:1. Это будет весьма кстати в условиях частого применения таких форматов в современных игровых приложениях. Также в этой версии графического API было улучшено качество текстурного сжатия (что подтверждается лучшим параметром SNR — signal-to-noise), и снижены артефакты блочности текстур
- Многопоточный рендеринг
Это одно из долгожданных улучшений в DirectX API, на игровых консолях доступное довольно давно. Теперь не только приложение, DirectX рантайм-код, и драйвер исполняются каждый в своём отдельном потоке, но и такие задачи, как загрузка текстур или компиляция шейдера могут быть запущены в параллельном основному коду потоке.
Данное нововведение поможет исключить упор в производительность CPU в условиях большого количества вызовов функций отрисовки — их часть наконец-то можно будет переложить в другой поток, который будет исполняться на другом ядре центрального процессора, отличном от того, которое исполняет основной поток рендеринга. Не путать с многопоточностью игрового кода!
Данное нововведение поможет исключить упор в производительность CPU в условиях большого количества вызовов функций отрисовки — их часть наконец-то можно будет переложить в другой поток, который будет исполняться на другом ядре центрального процессора, отличном от того, которое исполняет основной поток рендеринга. Не путать с многопоточностью игрового кода!
Игры и движки с поддержкой DirectX 11
It
Видео с демонстрацией DirectX 11
Чужой
https://www.youtube.com/watch?v=jy5WpqETl7o
Дирт 2
https://www.youtube.com/watch?v=rvYiDH7HOGE
Nvidia демонстрирует трасировку лучей
https://www.youtube.com/watch?v=BAZQlQ86IB4
Первый DirectX 11 benchmark
Video
https://www.youtube.com/watch?v=bkKtY2G3FbU...player_embedded
https://www.youtube.com/watch?v=9F6zSgtRnkE...player_embedded
Страница информации, загрузки полноценного файла и самой программы
http://unigine.com/download/#heaven
Видеокарты с поддержкой DX11
ATI -
Cypress: HD5850, HD5870 - уже есть версии от аsus и msi
Juniper: HD5770, HD5750 - есть от msi, первые DirectX 11 видеокарты для массового рынка
Hemlock: HD5950, HD5970 - будут в декабре
Сedr: - информации о них еще нет
Nvidia
Fermi: GT300 - обещают показать в конце этого года