Приветствую Вас, Гость! Регистрация RSS
Суббота, 24 Августа 2019

Главная » 2010 » Октябрь » 29 » DirectX 10 - Информация

17:52:20
DirectX 10 - Информация


В этой статье я хочу затронуть такую тему, как новый API, разработанный компанией Microsoft. Мы пройдемся по особенностям DirectX 10, новым функциям, железу для его поддержки и конечно его значимости.

Особенности DirectX 10
По словам разработчиков, DirectX10 нельзя оценивать как всего лишь следующую версию DirectX. В отличие от версии DirectX 9, которая являет собой эволюционное развитие DirectX 8, DirectX 10 была полностью переработана, изменив процесс взаимодействия приложений и "железа", распределение нагрузки между центральным и графическим процессорами. На практике это означает, что графический процессор видеокарты с поддержкой DX10 становится мощнее не только в смысле способности более оперативного обсчёта ещё большего количества пикселей за то же время, но также позволяет работать с неведомыми ранее текстурами, объектами и явлениями. В то же время "избавленный" от необходимости обсчёта графических эффектов, центральный процессор может теперь посвятить свою мощь более быстрому обсчёту других задач, например физики.


Стоит сказать, что DirectX10 будет работать только на Windows Vista и Windows 7. Все причина в новой модели драйвера WDDM (Windows Display Driver Model). Подробнее читайте ниже.

Ключевые нововведения реализованные в DirectX10:
  • Более реалистичная анимация шерсти меха и растений
  • Более мягкие и более чёткие тени
  • Более насыщенные ландшафты с более сложной окружающей обстановкой
  • Значительно более тщательно прорисованный лес, более масштабные и детальные сцены баталий
  • Более динамичные и чаще меняющиеся по ходу событий сценарии игр
  • Больший реализм и уменьшение смазывания движущихся объектов
  • Объёмные эффекты
  • Уточнённый, более реалистичный дым и облака
  • Более реалистичные отражения и преломления на отражающих поверхностях – воде, автомобилях, стекле и др.
  • Снижение загрузки CPU, перераспределение обсчёта ряда процессов на GPU, снижение вероятности подтормаживания и зависания системы при сложном геймплее

DirectX 10 только в Windows Vista и Windows 7
Действительно, Microsoft не хочет обеспечивать совместимость нового API с предыдущими версиями своей ОС. Причем в официальном заявлении компании отказ от поддержки DirectХ 10 в Windows XP звучит как невозможность обеспечения полноценной функциональности из-за устаревшего подхода к использованию драйверов и управлению аппаратными ресурсами графической подсистемы, что собственно является скорее отмазкой. Так как переделывать пришлось бы действительно много.

Как бы там ни было, в новой ОС управление всеми аппаратными ресурсами действительно более виртуализировано, в том числе драйверная часть разделена на две составляющие – низкий (поддержка аппаратных ресурсов на уровне ядра ОС) и пользовательский уровень (по сути, интерфейс для конфигурации). Плюсы в том, что ошибка в работе видеодрайвера не приведет к краху системы, как было раньше.


Необходимые нововведения
Графический чип с поддержкой нового API в обязательном порядке должен быть мультизадачным, а графическая память соответственно виртуализированной. Так, обращение любого приложения к аппаратным ресурсам графической карты теперь выполняется в четыре стадии – в отличие от трех в предыдущей версии ОС. Теперь любое обращение формируется через интерфейс Direct3D, затем на более низком уровне ядра проходит через виртуальный планировщик работы GPU и менеджер видеопамяти, а далее через низкоуровневый Kernel-Mode Driver (KMD) происходит общение уже с аппаратной частью.


Разделения на Direct3D 9 и Direct3D 10
Опять же в отличие от Windows XP в Vista будут применяться три графических конвейера. Старый DirectХ-конвейер, оставленный для сохранения совместимости с ПО, разработанным для предыдущей версии ОС, будет выполнять следующий набор действий: аппаратное ускорение видеоконтента вплоть до HDTV (разумеется, с поддержкой HDCP), обработку графики Direct3D 9 (через старую часть драйвера, написанную для XP) и трансформацию вызовов более старых версий Direct3D (5, 6, 7, 8) в код Direct3D 9 с соответствующей заменой стандартных (фиксированных) функций формирования и обработки 3D-объектов шейдером из набора SM 3.0.

Второй конвейер также стандартный – это ICD для обеспечения работоспособности OpenGL-приложений. И наконец, третий – тот самый Direct3D 10, который сможет работать только под Windows Vista и не имеет обратной совместимости с предыдущими API DirectX. На нем стоит остановиться подробнее.


Новый конвейер Direct3D 10
Пожалуй, главное новшество, положенное в основу Direct3D 10, – максимальное недопущение «вольностей» со стороны производителей GPU из-за специфики структуры нового набора шейдеров SM 4.0. В результате многочисленные надстройки, придуманные производителями, теперь уйдут в прошлое. Вспомните чехарду с Direct3D 9, когда для соответствия спецификациям требовалась лишь поддержка SM 2.0, а уже сами разработчики за три года «додумали» столько, что версии 9.0с и 9.0а отличались такими «мелочами», как SM 3.0, HDR, новые типы фильтрации, использование геометрических шаблонов и т. д. И все это кардинальным образом смогло изменить реализм трехмерной графики. Однако отсутствие жесткой стандартизации на уровне API привело к тому, что многие возможности пришлось снова поддерживать на уровне приложений (читай – игр), а это вылилось в проблемы с совместимостью, потери производительности и др. Теперь только 100%-ное соответствие требованиям нового API позволит карте называться DirectX 10-совместимой, а выход за эти рамки станет бессмысленным. В результате получается, что по 3D-возможностям все видеокарты от ATI/AMD и NVIDIA, рассчитанные на Direct3D 10, архитектурно идентичные, разница лишь в быстродействии.


Полное избавление от фиксированных 3D-функций
Все принципы работы, заложенные в DirectX с версии 6 до 8,1, а именно: использование определенных (заранее обозначенных) функций формирования 3D-объектов, теперь уходят в прошлое. Так, начиная с DirectX 10 всем будут заведовать шейдеры.


Унификация типов шейдеров
Предусматривается использование полностью программируемых универсальных шейдеров при отсутствии разделения на вершинные и пиксельные, как это было раньше. Также добавлен новый тип шейдеров – геометрический, промежуточный между вершинным и пиксельным. Он дает возможность производить манипуляции над уже определившимся массивом треугольников после окончания работы вершинного шейдера и, самое главное, допускает произвольное изменение их геометрии.


Потоковый вывод
Следом за геометрическим шейдером идет новая процедура конвейера Direct3D10, названная потоковым выводом. Пожалуй, именно это нововведение позволит сделать еще один существенный шаг в сторону полноценной виртуальной реальности. Теперь данные, прошедшие обработку в вершинных и геометрических шейдерах, записываются в выделенные буфера видеопамяти без обязательной отрисовки в пиксельной части конвейера. В результате несколькими возвратами к вершинной части конвейера и определенными алгоритмами в геометрической части можно, к примеру, создавать неоднотипные детализированные ландшафты без потери производительности.


Унификация типов ресурсов
Подобно шейдреам четкое разграничение по типам ресурсов, используемых для подготовки объектов к визуализации, – также уже пережиток прошлого. Так, текстуры в DirectX 10 перестали быть объектом, доступным исключительно на стадии пиксельного шейдера, то есть данными, необходимыми только для визуализации. Теперь равнозначный доступ к текстурам можно осуществлять на любой стадии конвейера – от вершинного до пиксельного. Плюс ко всему как текстуры могут быть трактованы массивы вершин или другие типы данных, хранящихся в буферах. Таким образом, подобная неразбериха привела к появлению нового типа данных – текстурному массиву с динамической индексацией в шейдере. Соответственно одни и те же данные, определенные шейдером как текстуры, нормали или набор вершин, дадут на выходе абсолютно разную картину.


HLSL 10 (high level shader language)
Бурное развитие языка программирования шейдеров высокого уровня за последние два с половиной года для Direct3D и OpenGL 2.0 привело к практически полному отказу от использования ассемблера в описании шейдера. Рассказывать о преимуществах языка высокого уровня я не стану. Самое главное, что HLSL не требует серьезных знаний в области машинного программирования, в то же время ПО, написанное на этом языке, гораздо легче поддается модернизации.


FX 10
Новая система создания 3D-эффектов, использующая синтаксис Direct3D 10. Основная задача, которую должен выполнять данный sub-API, – просчет сложных эффектов в реальном времени в 3D-сценах, для создания которых ранее применялась исключительно предварительная визуализация.


SM 4.0 (Shader Model)
С использованием унифицированной модели шейдеров вдвое возрастает эффективность имеющихся в распоряжении ресурсов, так как больше нет разделения на вершинные и пиксельные типы данных. Но не стоит сбрасывать со счетов и количественные показатели, рост которых не может не впечатлять. Вряд ли будет преувеличением сказать, что возможности, доступные четвертому поколению шейдеров, на порядок превосходят заявленные в SM 3.0.


Заключение
Вот мы и подошли к завершению. Из этой короткой статьи многим станет понятно, насколько значительно изменилось устройство нового API. Что это может дать в играх, вы думаю знаете. Тот же Крайзис и СТАЛКЕР показали новые эффекты во всей красе. Единственный минус это новые видеокарты, хотя сейчас бюджетный сегмент ими переполнен, поэтому вопрос покупки DirectX10 совместимой видеокарты не стоит.
Что же касательно DirectX для Windows XP, то скорее всего его никогда официально не будет, это маркетинго не выгодно. К тому же сейчас идет экспансия Windows 7, с ее DirectX11 и если подумать, то через год после выхода SP1 для 7ки, Windows XP будет многим уже не нужен...


Zlocorp
Категория: Технологии | Просмотров: 7853 | Добавил: Zlocorp | Рейтинг:
3.9 из 5, 8 голосов
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]