Что собой представляет directx 10
21 января компания Microsoft официально объявила о том, что осенью 2015 года состоится релиз новой операционной системы Windows 10. А вместе с ней и запуск 12-го поколения DirectX. С момента появления этого API прошло уже почти двадцать лет, поэтому в этот раз мы решили оглянуться назад и вспомнить, как создавалась и развивалась программная оболочка для компьютерной графики на протяжении этого длинного отрезка.
Сегодня DirectX, разрабатываемый компанией Microsoft, уже воспринимается как должное. Все привыкли, что этот API является неотъемлемой частью Windows. Новая итерация «оси» под номером 10 не стала исключением. Еще осенью прошлого года Microsoft анонсировала двенадцатое поколение DirectX. Этому событию предшествовало пять лет почти полной тишины из стана Microsoft. Компания ограничивалась лишь плановыми обновлениями API, и никакой определенности насчет будущего DirectX не было. Масла в огонь подливало и то, что многие компании-разработчики в открытую поддерживали конкурирующую технологию OpenGL. В их число входила, например, компания Valve. Вдобавок ко всему, компания AMD представила свой низкоуровневый программный интерфейс Mantle, который должен был составить конкуренцию как OpenGL, так и DirectX. К счастью, Microsoft не вышла из игры, и все это время разработчики компании упорно трудились над созданием DirectX 12, который станет частью анонсированной в январе операционной системы Windows 10. Релиз «десятки» запланирован на ближайшую осень, а это значит, что уже в конце 2015 (либо в начале 2016) мы увидим первые игры, поддерживающие новый API.
Даже спустя столько лет первый Crysis по-прежнему хорош. А ведь это всего лишь DirectX 10
Чтобы немного скрасить время ожидания, мы предлагаем вам вспомнить, как создавался и развивался DirectX на протяжении последних 20 лет.
В роли догоняющего. DirectX 2.0 и далее
Следующее поколение API DirectX было представлено в середине 1996 года. Наконец-то в состав программного интерфейса были включены пакеты Direct3D и DirectPlay. С тех пор API состоял из следующих компонентов:
- DirectDraw. Использовался для отрисовки двухмерной графики.
- Direct3D (D3D). Использовался для отрисовки трехмерной картинки.
- DirectPlay. Представлял собой сетевой программный интерфейс.
- DirectInput. Использовался для обработки данных, поступающих с различных манипуляторов.
- DirectX Media. Представлял собой набор API для работы с мультимедиа.
- DirectMusic. Использовался для проигрывания музыки.
- DirectSound. Использовался для записи и воспроизведения звука.
- DirectSound3D. Предназначен для работы с пространственным звуком.
- DirectX Media Objects. Потоковые объекты, такие как энкодеры, декодеры и эффекты.
- DirectSetup. Отвечал за установку всех компонентов DirectX.
DirectX 2.0 предназначался для операционных систем Windows 95 и Windows NT 4.0. С момента выпуска первой ОС прошло совсем мало времени, поэтому для этой версии было выпущено очень мало игр. Microsoft воспользовалась моментом и начала активно продвигать API среди разработчиков. Ради этого во время конференции GDC в 1996 году Microsoft даже устроила специальное мероприятие, где представила некоторые новые возможности DirectX.
Вскоре после появления второго поколения API свет увидел и DirectX 3.0. Это случилось в сентябре 1996 года. Ближе к концу года были представлены дополнения в виде версий 3.0a и 3.0b. В сравнении со второй итерацией API третье поколения получило лишь незначительные изменения, которые так и не смогли повлиять на положение DirectX среди девелоперов.
Так выглядела картинка с применением DirectX 3.0
Главным достоинством пятой итерации DirectX стал намного упрощенный код. Писать программы с помощью API стало легче, и DirectX уже не вызывал у девелоперов такой неприязни, как поначалу. Главным же недостатком пятой «директрисы» было отсутствие поддержки технологии мультитекстурирования (multitexturing). Суть этой технологии заключается в наложении на грань сразу нескольких текстур за один проход. Но тут Microsoft улыбнулась удача. В то время алгоритмы мультитекстурирования были не столь эффективны, а железо — недостаточно производительным для того, чтобы применять технологию без ущерба для производительности. Чаще всего вместо нее разработчики использовали обычные многократные проходы, во время каждого из которых на грань накладывалась только одна текстура. Для девелоперов было важно, чтобы новые игры запускались и на старых машинах, поэтому в большинстве приложений мультитекстурирование не использовалось. Microsoft от этого лишь выиграла.
Microsoft Windows Vista DX10
Классическое определение представляет DirectX как совокупность интерфейсов прикладного программирования - Application Programming Interface, API, для удобного программирования приложений под операционные системы Microsoft Windows, главным образом, для программирования игр. Говоря проще, разнообразные библиотеки–API из комплекта DirectX, представляют собой готовые наборы функций для облегчения труда программистов. Теперь им не нужно каждый раз создавать ряд типичных процессов для работы со звуком, видео и т.п., для этого в комплекте DirectX имеется ряд стандартных "кубиков" и инструментов для создания мультимедийных приложений и игрушек под Windows.
Между прочим, до появления DirectX так всё и было: разработчики новых программ и игр каждый раз были вынуждены учитывать в своём коде неисчислимое количество разнообразных видеокарт, звуковых плат, устройств ввода. Ситуация облегчилась после того как в 1995 году появилась первая версия Microsoft DirectX, представляющего собой набор мультимедийных API для работы с 2D и 3D графикой, аудио, устройствами ввода, и программисты получили возможность использовать все возможности новых "железяк" без непосредственного программирования под каждую. Надо ли говорить, насколько это ускорило процесс выпуска новых игр и приложений.
На самом деле историю появления DirectX стоит начинать с 1992 года, когда, согласно историческим справкам, компания RenderMorphics начала разработку 3D графического API под названием Reality Lab для медицинского оборудования и приложений CAD. Компания RenderMorphics была куплена Microsoft в феврале 1995 года, уже после появления двух успешных версий API, в результате чего первая версия 3D графического API - Direct3D, была представлена в пакетах DirectX 2.0 и DirectX 3.0 под Windows 95. Хронология DirectX в общих чертах представлена таблицей ниже.
На практике не всё пошло так гладко, как хотелось бы – первые версии DirectX были порой нестабильны, к тому же на первых порах Microsoft продвигала Direct3D конкурируя как с OpenGL, так и с API вроде 3Dfx Glide. Где-то с версии DirectX 7.0, которая впервые позволила перенести значимую часть обработки 3D процессов с центрального процессора на графический чип, разработчики игр стали охотно отдавать предпочтение DirectX.
Начиная с версий DirectX 8.0/8.0a, где впервые дебютировали программируемые пиксельные и вертексные шейдеры (Shader Model 1.0 и 1.1), DirectX окончательно стал индустриальным стандартом и даже поддерживался в игровой приставке Microsoft Xbox.
Появление DirectX 9.0 ознаменовало начало поддержки Shader Model 2.0 и DirectPlay, затем – и Shader Model 3.0. Ныне свежую обновлённую версию DirectX можно в любое время скачать с сайта Microsoft, а комплект разработчика - DirectX SDK, распространяется Microsoft на бесплатной основе.
Особенности DirectX 10
По словам разработчиков, DirectX10, или как его ещё частенько называют Direct3D 10 (D3D10) – по названию 3D API, нельзя оценивать как всего лишь следующую версию DirectX. В отличие от версии DirectX 9, которая являет собой эволюционное развитие, DX10 была полностью переработана, изменив процесс взаимодействия приложений и "железа", распределение нагрузки между центральным и графическим процессорами. На практике это означает, что графический процессор видеокарты с поддержкой DX10 становится мощнее не только в смысле способности более оперативного обсчёта ещё большего количества пикселей за то же время, но также позволяет работать с неведомыми ранее текстурами, объектами и явлениями. В то же время "избавленный" от необходимости обсчёта графических эффектов, центральный процессор может теперь посвятить свою мощь более быстрому обсчёту других задач.
Ещё раз подчеркну, что DirectX10 - явление, актуальное исключительно для платформы Windows Vista и не будет использоваться ни на какой другой платформе. На самом деле, такой "эксклюзив" – не прихоть разработчиков, а следствие того, что для Windows Vista реализована совершенно новая модель графического (дисплейного) драйвера - Windows Display Driver Model (WDDM), не менявшаяся до появления DirectX10 со времён Windows NT4, с этим связаны виртаулизационные и архитектурные нововведения WDDM, реализованные в API и основополагающей инфраструктуре DirectX10. Новая модель драйвера также отражает дальнейшую эволюцию видеокарт – от обработки 2D растровых операций и GDI приложений, 3D игр на графических картах с фиксированными функциями, к современным программируемым модулям обработки графики с широкой поддержкой графических приложений.
Среди ключевых нововведений, реализованных в DirectX10, любители новых игр по достоинству оценят следующие:
Более реалистичная анимация шерсти меха и растений
Более мягкие и более чёткие тени
Более насыщенные ландшафты с более сложной окружающей обстановкой
Значительно более тщательно прорисованный лес, более масштабные и детальные сцены баталий
Более динамичные и чаще меняющиеся по ходу событий сценарии игр
Больший реализм и уменьшение смазывания движущихся объектов
Объёмные эффекты
Уточнённый, более реалистичный дым и облака
Более реалистичные отражения и преломления на отражающих поверхностях – воде, автомобилях, стекле и др.
Снижение загрузки CPU, перераспределение обсчёта ряда процессов на GPU, снижение вероятности подтормаживания и зависания системы при сложном геймплее
"Живой" мех
В качестве иллюстраций выше приведённых преимуществ можно привести сравнительные скриншоты DirectX9 и DirectX10.
Детализация
DirectX9.0b - Halo: Combat Evolved
DirectX10 - Crysis
Детализация
DirectX9
DirectX10
Детализация и реалистичность теней
DirectX10
Более насыщенные ландшафты с более сложной окружающей обстановкой
Заставка Windows Vista, DirectX9 рендеринг
Заставка Windows Vista, DirectX10 рендеринг
Больший реализм и уменьшение смазывания движущихся объектов
С самого начала типичным API, применявшимся для программирования графики, являлся Graphical Device Interface (GDI). Позднее были представлены DirectDraw и Direct3D как альтернативные API с поддержкой полноэкранных игр и 3D рендеринга с помощью существовавших на то время аппаратных решений, что добавило сложности совместной обработке элементов GDI и Direct3D. Версия модели видео драйвера (Windows Driver Model, WDM) для Windows XP - XPDM, чётко отражает последовательную природу обработки GDI и Direct3D.
Графические API под Windows XP
Новая модель драйвера - Windows Vista Display Driver Model (WDDM), меняет приоритеты и выводит на первый план графический процессор и Direct3D, придавая совершенно другой смысл 3D рендерингу картинки экрана за счёт программируемого GPU. Благодаря использованию WDDM всё графическое "железо" теперь управляется исключительно посредством Direct3D, и все остальные графические интерфейсы взаимодействуют с видеокартой только посредством Direct3D драйвера.
Графические API под Windows Vista
Версия DirectX 9, впервые представленная под Windows в 2002 году и далее неоднократно обновлявшаяся в 2003 – 2005 годах, представила более мощные по сравнению с предшественниками модели шейдерного программирования Direct3D. Версия Direct3D 9 является первичным графическим интерфейсом и для Windows Vista, оставаясь безупречным API для написания 3D игр и приложений, совместимых с многими поколениями видеокарт и выпусков Windows. Более того, для сохранения полной совместимости со старыми версиями Windows некоторые особенности старых моделей драйвера эмулируются даже новой моделью драйвера Windows Vista. Поэтому, несмотря на поддержку новых драйверов WDDM для ряда видеокарт, Windows Vista продолжает поддерживать возможность использования старых драйверов XPDM для апгрейдов и корпоративных версий. В системах со старыми драйверами поддерживается Direct3D 9 и более старые версии интерфейсов, при этом принцип их работы будет схож с работой под Windows XP. Для работы драйвера WDDM требуется Direct3D 9Ex, Direct3D 10 или последующие версии.
Что касается так называемого Direct3D 9Ex интерфейса, который является несколько усовершенствованной версией Direct3D 9 API, в нём имеется возможность виртуализации ресурсов и ряда других возможностей для работы под Windows Vista. Этот API работает только под Windows Vista и требует драйверов WDDM.
Таким образом, выбирая API для графического приложения, следует помнить, что:
Использование Direct3D 9 подразумевает поддержку Windows XP или более ранних версий Windows
Использование Direct3D 9 с XPDM драйверами подразумевает поддержку Windows Vista для систем на базе "железа" без поддержки Direct3D 10
Использование Direct3D 10 позволит оценить все прелести нового поколения видеокарт под Windows Vista
Новый Direct3D 10 полностью устраняет все узкие места прежних Direct3D API и позволяет значительным образом упростить программирование GPU и разгрузить ресурсы CPU. Теперь программируемая шейдерная модель унифицирована как для вертексных, так и для пиксельных шейдеров, с более чёткой вычислительной моделью и набором действий. Для обработки примитивов после стадии вертексных шейдеров добавлен новая стадия обработки геометрических шейдеров. В результате поток вертексной и геометрической стадий работы конвейера может быть выведен в видеопамять для повторного использования, позволяя организовать комплексные многопроходные операции GPU с минимальной загрузкой CPU, рассчитывая анимацию один раз, а отрисовывая по этим данным много раз, позволяя реализовать замещающее текстурирование (Displacement Mapping) и предоставляя интересные возможности по альтернативной интерпретации данных. Более того, такая "разгрузка" GPU позволяет использовать совершенно новые, более сложные и точные методы имитации кожи, ускорение морфинга, генерирование теней и экструзии, мельчайших деталей, физических и других эффектов.
Замещающее текстурирование (Displacement Mapping)
Вот в этом, в сущности, и заключается основной "разлом" между нынешними поколениями графики и "железом" под Direct3D 10: в то время как Direct3D 9 может работать с картами эпохи DirectX7, Direct3D 10 работает только с новыми поколениями графических акселераторов, начиная с GeForce 8800.
Относительно поддержки OpenGL. Стоит отметить, что Windows Vista предоставляет ту же поддержку OpenGL, что и Windows XP, для этого потребуется инсталлируемый драйвер-клиент (Installable Client Driver, ICD) под OpenGL от производителя видеокарты. В большинстве случаев отсутствие новой версии ICD под Windows Vista обеспечит поддержку лишь уровня OpenGL v1.1.
Со времён DirectX 8.0 в состав DirectX входили такие API как:
DirectDraw - 2D растровая графика
Direct3D - D3D, 3D графика
DirectInput - обработка данных клавиатуры, мышки, джойстика и других игровых контроллеров
DirectPlay - сетевые коммуникации в играх
DirectSound - запись и воспроизведение звука
DirectSound3D - DS3D, 3D звук
DirectMusic - воспроизведение саундтреков из DirectMusic Producer
DirectSetup - инсталляция компонентов, не реализованных в API DirectX
DirectX Media - сочетание DirectAnimation, DirectShow, DirectX Video Acceleration, Direct3D Retained Mode и DirectX Transform, соответственно, для анимации, воспроизведения мультимедиа и потоковых приложений, 3D и интерактива
DirectX Media Objects - поддержка объектов потоковой обработки - кодировщиков, декодеров, эффектов
В Windows Vista реализована поддержка тех же интерфейсов Direct3D и DirectDraw, как в Windows XP, начиная с DirectX 3, за исключением режима Retained Mode в Direct3D. Разве что можно отметить ограничение для полноценных 64-битных приложений Windows XP Professional x64 Edition, поддержка функций которых под Windows Vista ограничена Direct3D9, DirectDraw7 и более новыми версиями интерфейсов.
Таким образом, сегодня мы в общих чертах определились с терминологией, чуток "копнули" предысторию появления DirectX 10, ранее называвшегося Windows Graphics Foundation 2.0 и DirectX Next, а ныне через раз именуемого просто Direct3D 10; в самых общих чертах ознакомились с его возможностями. Полагаю, для первого раза достаточно.
Революционные нововведения или коротко о DirectX 10
C анонсом новой операционной системы от Microsoft Windows Vista, обычным пользователям стали доступны возможности нового набора библиотек API - DirectX 10. К сожалению, пока всеми прелестями DirectX 10 мы насладиться не сможем. Объясню почему. Этому «препятствуют» две причины:
Первая – это доступность видеоплат с поддержкой DirectX 10. На данный момент всё больше появляется видеоплат с DX10, но не все из них способны обеспечить достойную производительность в DX10 приложениях. Так карты Low-end класса с поддержкой DX10 «неплохо» чувствуют себя в DX9 приложениях, но в DX10 – наблюдается существенное падение производительности, и у челов.
Революционные нововведения или коротко о DirectX 10
C анонсом новой операционной системы от Microsoft Windows Vista, обычным пользователям стали доступны возможности нового набора библиотек API - DirectX 10. К сожалению, пока всеми прелестями DirectX 10 мы насладиться не сможем. Объясню почему. Этому «препятствуют» две причины:
Первая – это доступность видеоплат с поддержкой DirectX 10. На данный момент всё больше появляется видеоплат с DX10, но не все из них способны обеспечить достойную производительность в DX10 приложениях. Так карты Low-end класса с поддержкой DX10 «неплохо» чувствуют себя в DX9 приложениях, но в DX10 – наблюдается существенное падение производительности, и у человека сразу же теряется желание играть в современные игры с такой видеоплатой. А ведь большинство этих продуктов и покупается для того, чтобы насладиться графикой нового поколения. Но будем думать, что новые оптимизации в драйверах смогут каким-то образом улучшить ситуацию в пользу видеоплат с поддержкой DirectX 10.
Далее представлены фото видеокарт с поддержкой DirectX 10:
(кликните по картинке для увеличения)
HD2900 XT (640x480)
(кликните по картинке для увеличения)
Leadtek 8800GTX
(кликните по картинке для увеличения)
XFX 8600 GT Fatal1ty
(кликните по картинке для увеличения)
HD2600 XT
(кликните по картинке для увеличения)
HD2900 XT с модулем Пелетье
(кликните по картинке для увеличения)
Leadtek 8800GTS
Вторая – это практически полное отсутствие DX10 приложений. Купив видеокарты с поддержкой DX10, пользователь ещё должен ждать какое-то время, когда появятся игры, поддерживающие DirectX 10. Из ныне существующих игр, можно по пальцам пересчитать те игры, которые поддерживают DX10. Это Lost Planet, Company of Heroes(патч), С all of Juarez (бенчмарк), больше даже ничего не приходит в голову. Ну и, конечно же, нельзя не вспомнить Crysis с его великолепными скриншотами, который игровая общественность ждёт уже больше года. Ну будем надеяться, что время расставит всё по местам.
Теперь перейдём к более тщательному изучению возможностей DX10. DirectX 10 кардинально отличается от своих предшественников. В нём либо реализованы совершенно новым образом, либо кардинально улучшены практически все составляющие.
В результате:
- Значительно снижена загрузка центрального процессора: если раньше все объекты проходили так назыаваемую стадию проверки в игровом цикле каждый раз при использовании объекта (миллионы раз), то теперь – только при создании объекта.
- Результат вывода может быть вновь отправлен в обработку на конвейер. Таким образом, результаты вычислений графического процессора могут использоваться им же многократно – опять-таки без привлечения ресурсов центрального процессора.
- Последовательность проверки на перекрытие объектов друг другом теперь также рассчитывается без участия центрального процессора.
- Добавлена возможность поточного вывода: передача результатов исполнения геометрического или вершинного шейдера напрямую в графическую память. В предыдущей версии DirectX результаты работы вершинного шейдера, прежде чем покинуть конвейер, должны были пройти через блок пиксельных шейдеров. Общая экономия вычислительных ресурсов по различным задачам составляет от полутора до десяти раз и более.
Некоторые спецификации нового стандарта в сравнении с предыдущими приведены в таблице:
- Добавился новый тип шейдеров – геометрический. Так же как и вершинные шейдеры, геометрические отвечают за просчёт геометрии трёхмерной сцены до того, как пиксельные шейдеры вступят в работу. Но в отличие от вершинных шейдеров, геометрические оперируют целостными объектами – треугольниками, которые, как известно, являются основой каркасной модели многих тел в трёхмерном мире.
Все шейдеры стали унифицированными – для всех теперь существует единый набор инструкций и общих ресурсов.
Одно из возможных применений нововведений шейдерной модели – создание систем частиц силами графического процессора. Геометрический шейдер создаёт систему частиц и выводит полученные данные в память, из которой они поступают в вершинный шейдер, отвечающий за анимацию.
- Строгая аппаратная спецификация. Ранее наблюдалась некоторая несогласованность между создателями видеоплат и игр из-за некоторых вольностей, позволенных в DX9. Все DirectX 10-совместимые ускорители должны уметь то, что входит в спецификацию – не больше, но и не меньше.
- Использование новых форматов HDR – R11G11B10 – позволить реализовать HDR без существенного увеличения объёма данных и снизит нагрузку на шины по сравнению с форматом FP16, использующим по 16 бит на каждую цветовую компоненту. Кроме того, в Direct X 10 появился формат для сверхточных вычислений, использующий по 32 бита на каждую цветовую экспоненту.
В данной статье мы кратко познакомились с особенностями DirectX 10. Ну что ж, ждём хороших видеоплат с поддержкой DX10 и игр с кинематографической графикой.
Обсуждаем статью здесь
С уважением, slamms …
Подпишитесь на наш канал в Яндекс.Дзен или telegram-канал @overclockers_news - это удобные способы следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Сегодня придётся обойтись без текущих новостей и различного рода отступлений, поскольку поднимаемая тема очень важна и отвлекаться не будем. До сегодняшнего дня в цикле публикаций о Windows Vista мы фактически обходили стороной ключевые программно-аппаратные изменения новой платформы, который действительно очень важны в 3D играх и которые действительно недоступны на платформах с предыдущими версиями Windows. Действительно, минимальные требования Windows Vista, предъявляемые к аппаратной части ПК для запуска Aero, включают в себя определённый объём памяти, процессор, и среди прочего – видеокарту с поддержкой DirectX 9.0. Разумеется, Windows Vista будет работать и с видеосистемой без поддержки DirectX 9.0 в привычном 2D режиме, но всё это, так сказать, бюджетные варианты, и сегодня речь не об этом. Фактически, сегодня мы попытаемся выяснить, что же необходимо для создания действительно производительного ПК, способного реализовать всё заложенное в современном "железе" и в Windows Vista, и как это будет работать. На деле же, для реализации максимума возможностей игрового плана системами под управлением Windows Vista потребуется как минимум, три основных компонента: видеокарты совершенно нового типа – вроде NVIDIA GeForce 8000, операционная система Windows Vista, плюс совершенно новые игры. Только когда станут доступны все три эти слагаемых с поддержкой DirectX 10, мы сможем на практике оценить производительность, графические эффекты и прочие игровые достоинства платформ нового поколения.
Определение DirectX 10 и краткая предыстория его появления
С чего все начиналось. DirectX 1.0
История появления DirectX берет свое начало в первой половине 1990-х годов, когда компания Microsoft занималась разработкой операционной системы Windows 95, которая должна была прийти на смену MS-DOS. Главным преимуществом MS-DOS было то, что она пользовалась популярностью у разработчиков игр. По мнению трех программистов Microsoft — Крэйга Эйслера (Craig Eisler), Алекса Сен-Джона (Alex St. John) и Эрика Энгстрома (Erik Engstrom) — даже после выхода Windows 95 многие разработчики могли отдать предпочтение MS-DOS как более подходящей для создания игр платформе. Чем же «дос» так нравился программистам? Все дело в том, что, программируя под MS-DOS, разработчики обращались напрямую к железу, то есть имели прямой доступ к видеокарте, клавиатуре, мыши, звуковым устройствам и другим частям системы. Подобный подход использовался в программировании под консоли, однако создание игр для компьютера осложнялось тем, что, в отличие от приставок, здесь не было фиксированной конфигурации системы. Это приходилось учитывать при написании кода, что значительно усложняло жизнь девелоперам.
Крэйг Эйслер — один из создателей DirectX
Так или иначе, но обращаться напрямую к аппаратной части компьютера в Windows 95 стало невозможно. Причиной этого была новая защищенная модель памяти, которая запретила прямой доступ к устройствам. Шел 1994 год, Windows 95 была на подходе, и Microsoft требовалось быстрое и эффективное решение возникшей проблемы. Им стал API DirectX, за создание которого отвечали как раз Эйслер, Сен-Джон и Энгстром. Релиз DirectX версии 1.0 состоялся 30 сентября 1995 года под названием Windows Games SDK.
Первая итерация DirectX была очень упрощена относительно своих будущих версий. Она поддерживала вывод двухмерной графики, звуков, а также обрабатывала данные, поступающие с различных манипуляторов.
DirectX 1.0 разрабатывался для Windows 95
Разработчики игр встретили DirectX довольно прохладно. Во-первых, они не были уверены, что Microsoft будет поддерживать API на протяжении долгого времени. Недоверие к Microsoft возросло после того, как компания свернула поддержку API WinG, который рассматривался как один из «помощников» в портировании игр с DOS на Windows. Во-вторых, «девяносто пятая» была требовательней к аппаратной части, из-за чего производительность в играх, как правило, снижалась в сравнении с MS-DOS. Ну и в-третьих — у DOS было огромное количество энтузиастов, которые ни в какую не хотели программировать под Windows.
Стоит сказать, что к моменту появления DirectX разработчикам игр уже был доступен API OpenGL, разработанный компанией Silicon Graphics Inc и представленный в 1992 году. Но в Microsoft решили пойти своим путем. В дальнейшем противостояние DirectX и OpenGL было похоже на битву Давида против Голиафа. Microsoft, прежде всего, брала своей финансовой мощью, а Silicon Graphics — репутацией и техническим опытом. Так, выбор в пользу OpenGL тогда сделал создатель Doom и Quake Джон Кармак (John Carmack). Он считал, что программный код DirectX слишком сложный для программирования, и поэтому в открытую поддерживал более «дружелюбный» интерфейс OpenGL. Конечно же, на планы Microsoft это никак не повлияло, но прохладная встреча DirectX со стороны разработчиков ясно дала понять, что работы у инженеров компании целый непочатый край.
Скриншот из игры Doom, за разработку которой отвечал Кармак
Особенности DirectX 10
- Более реалистичная анимация шерсти меха и растений
- Более мягкие и более чёткие тени
- Более насыщенные ландшафты с более сложной окружающей обстановкой
- Значительно более тщательно прорисованный лес, более масштабные и детальные сцены баталий
- Более динамичные и чаще меняющиеся по ходу событий сценарии игр
- Больший реализм и уменьшение смазывания движущихся объектов
- Объёмные эффекты
- Уточнённый, более реалистичный дым и облака
- Более реалистичные отражения и преломления на отражающих поверхностях – воде, автомобилях, стекле и др.
- Снижение загрузки CPU, перераспределение обсчёта ряда процессов на GPU, снижение вероятности подтормаживания и зависания системы при сложном геймплее
В качестве иллюстраций выше приведённых преимуществ можно привести сравнительные скриншоты DirectX9 и DirectX10. Детализация
С самого начала типичным API, применявшимся для программирования графики, являлся Graphical Device Interface (GDI). Позднее были представлены DirectDraw и Direct3D как альтернативные API с поддержкой полноэкранных игр и 3D рендеринга с помощью существовавших на то время аппаратных решений, что добавило сложности совместной обработке элементов GDI и Direct3D. Версия модели видео драйвера (Windows Driver Model, WDM) для Windows XP - XPDM, чётко отражает последовательную природу обработки GDI и Direct3D.
Новая модель драйвера - Windows Vista Display Driver Model (WDDM), меняет приоритеты и выводит на первый план графический процессор и Direct3D, придавая совершенно другой смысл 3D рендерингу картинки экрана за счёт программируемого GPU. Благодаря использованию WDDM всё графическое "железо" теперь управляется исключительно посредством Direct3D, и все остальные графические интерфейсы взаимодействуют с видеокартой только посредством Direct3D драйвера.
- Использование Direct3D 9 подразумевает поддержку Windows XP или более ранних версий Windows
- Использование Direct3D 9 с XPDM драйверами подразумевает поддержку Windows Vista для систем на базе "железа" без поддержки Direct3D 10
- Использование Direct3D 10 позволит оценить все прелести нового поколения видеокарт под Windows Vista
- DirectDraw - 2D растровая графика
- Direct3D - D3D, 3D графика
- DirectInput - обработка данных клавиатуры, мышки, джойстика и других игровых контроллеров
- DirectPlay - сетевые коммуникации в играх
- DirectSound - запись и воспроизведение звука
- DirectSound3D - DS3D, 3D звук
- DirectMusic - воспроизведение саундтреков из DirectMusic Producer
- DirectSetup - инсталляция компонентов, не реализованных в API DirectX
- DirectX Media - сочетание DirectAnimation, DirectShow, DirectX Video Acceleration, Direct3D Retained Mode и DirectX Transform, соответственно, для анимации, воспроизведения мультимедиа и потоковых приложений, 3D и интерактива
- DirectX Media Objects - поддержка объектов потоковой обработки - кодировщиков, декодеров, эффектов
Ссылки и ресурсы по сегодняшней теме: Предыдущие публикации по теме Windows Vista: Выражаем благодарность российскому представительству компании NVIDIA за систему, любезно предоставленную для экспериментов с Windows Vista.
Вот уже полгода прошло, как с выходом Windows Vista появился новый графический API от Microsoft – DirectX 10. И до недавнего времени нам приходилось довольствоваться лишь технологическими демками, разработанными производителями видеокарт, но ситуация потихоньку меняется. Сегодня мы предлагаем вам познакомиться с первыми тестами в игровых бенчмарках, разработанных для DirectX 10. Совсем недавно вышел патч 1.7.0.0. к хорошо известной игре Company of Heroes, который позволяет на имеющемся «движке» использовать шейдеры версии DX10. Второй тест также базируется на существующей игре – Call of Juarez, однако выполнен в виде отдельного приложения, и не является патчем, расширяющем функциональность исходной игры. Прежде чем перейти к тестам, вкратце представим участников данного тестирования.
Как вы, наверное, догадались, это Radeon HD2900XT, единственная доступная видеокарта AMD, которая обладает поддержкой DirectX 10. Характеристики видеокарты вам хорошо известны – рабочие частоты 740/1650 МГц, объем памяти 512 Мб, ширина шины памяти 512 бит. Подробные сведения об архитектуре и особенностях Radeon HD2900XT вы можете почерпнуть из нашего обзора.
Видеокарта ASUS EN8800GTX AquaTank вам тоже хорошо знакома. Штатные частоты этой видеокарты несколько выше, чем рекомендованные значения для типичных карт класса 8800GTX. Чтобы получить представление о производительности «типовой» 8800GTX в данном тестировании, нам пришлось понизить частоты ASUS EN8800GTX AquaTank до рекомендованных значений – 575/1800 МГц (да простят нас инженеры ASUS).
Следующей в «табели о рангах» видеокарт NVIDIA значится GeForce 8800GTS с объемом видеопамяти 640 Мб. Типичным представителем этой серии выступает видеокарта производства Walton Chaintech Corp. Характеристики видеокарты стандартны – частоты 500/1600 МГц, объем памяти, как уже говорилось, 640 Мб, ширина шины памяти – 320 бит.
Раз в тестировании участвует видеокарта 8800GTS 640 Мб, хорошо было бы сравнить ее с версией, оснащенной всего лишь 320 Мб видеопамяти. Есть у нас и такая видеокарта, производства ASUS. Кроме вдвое меньшего объема видеопамяти, она ничем не отличается от «старшей сестры». Частоты - 500/1600 МГц, ширина шины памяти – 320 бит.
Не единым «топом» жив человек. Узнать о производительности видеокарт среднего класса в приложениях DirectX 10, пожалуй, даже более интересно. Поэтому мы решили включить в тестирование две видеокарты GeForce 8600GTS. Та, что вы видите выше, принадлежит перу компании Palit. Частоты видеокарты стандартны для 8600GTS и составляют 675/2000 МГц, ширина шины памяти, как вы помните – 128 бит. Ключевой особенностью данной видеокарты является наличие объема памяти в 512 Мб, что вдвое больше, чем положено «типовой» 8600GTS.
Ну а в качестве той самой «типовой» 8600GTS сегодня выступает видеокарта от ECS. Частоты - 675/2000 МГц, ширина шины памяти – 128 бит, объем видеопамяти 256 Мб. А теперь приступим к самому интересному, непосредственно к тестам.
Тестирование
Для удобства сравнения результаты видеокарт на диаграммах отмечены следующими цветами - Radeon HD2900XT, разумеется, ярко-красным. GeForce 8800GTX – зеленым. Результаты видеокарт 8800GTS 640/320 Мб выделены желтым/золотистым цветами, соответственно. Результаты 8600GTS 512/256 Мб – оттенками голубого. Более темный оттенок соответствует видеокарте 8600GTS с объемом памяти 256 Мб.
Тесты Company of Heroes в DirectX 9.0c
Поскольку подавляющее большинство видеокарт в данном тестировании относится к классу high-end, мы решили в настройках игры установить близкое к максимальному качество графики. Скриншот с параметрами тестирования вы видите ниже.
Из этих настроек изменениям подвергались всего три параметра. Первый параметр, Shader Quality, отвечает за тип используемых игрой шейдеров. Для тестов под DirectX 9.0c значение этого параметра устанавливалось на «High». Для тестов под DirectX 10 значение этого параметра устанавливалось, соответственно, как «Direct3D 10». Остальные два параметра, которые мы изменяли, это настройки детализации текстур (Low/High) и режим полноэкранного сглаживания (None/4AA). Так сделано для того, чтобы можно было оценить влияние объема установленной на карту видеопамяти и степень падения производительности при включении полноэкранного сглаживания. Давайте посмотрим, что же в итоге получилось.
Поразительно, но в этом относительно «легком» режиме Radeon HD2900XT умудряется обогнать не только своего прямого соперника в лице 8800GTS, но даже и 8800GTX. Что касается пар 8800GTS 640/320 и 8600GTS 512/256, то различия в производительности в данном режиме минимальны. По всей видимости, при низкой детализации текстур большого объема видеопамяти не требуется, а в остальном характеристики видеокарт в этих парах одинаковы. К сожалению, утилита RivaTuner не показывает уровень загрузки видеопамяти под Windows Vista 64, поэтому приходится довольствоваться только предположениями. Давайте теперь установим параметр детализации текстур в положение «High».
В абсолютном выражении результаты чуть понизились, что естественно. Radeon HD2900XT по-прежнему на равных борется за лидерство с 8800GTX. Увеличение детализации текстур никак не отразилось на относительной производительности в паре 8800GTS 640/320, а вот результаты пары 8600GTS 512/256 испытывают заметное расслоение. Впрочем, и раньше было известно, что для игры Company of Heroes 512 Мб видеопамяти совсем не лишние. Теперь еще более усложним задачу, включив полноэкранное сглаживание степени 4х.
В этом режиме Radeon HD2900XT уже не в состоянии обогнать 8800GTX, тем не менее, преимущество над 8800GTS весьма ощутимо. Пара 8800GTS 640/320 по-прежнему демонстрирует практически идеальную синхронность результатов. Стабильность сохраняется и в паре 8600GTS 512/256, но несколько другого рода. Версия карты с большим объемом памяти примерно в полтора раза опережает «стандартную» 8600GTS. Но и этого хватает только лишь на то, чтобы показать играбельный FPS в разрешении не выше, чем 1024х768.
Тесты Company of Heroes в DirectX 10
Далее приведены результаты тестов с использование шейдеров версии DirectX 10. Остальные параметры были оставлены без изменений. Как и ранее, начнем с «простого» режима – низкая детализация текстур и отсутствие полноэкранного сглаживания.
Держитесь за стулья, господа, и не падайте. Включение шейдеров версии DirectX 10 приводит не только к более достоверной, реалистичной картинке, но и вызывает падение результатов по сравнению с DirectX 9.0c более чем в 2 раза, в абсолютном выражении. Что же относительной производительности, то в низких разрешениях вне конкуренции оказывается GeForce 8800GTX. Radeon 2900XT демонстрирует сравнимую с 8800GTS производительность, но с увеличением разрешения его результаты уменьшаются не так сильно, что позволяет ему сравниться с 8800GTX в разрешении 1600х1200. В паре видеокарт 8600GTS 512/256 результаты отличаются примерно в 2,5 раза, и даже в разрешении 1024х768 в этом режиме речь об играбельном FPS уже не идет.
С увеличением уровня детализации текстур картина, которую мы видели выше, принципиально не меняется. GeForce 8800GTX остается безусловным лидером во всех разрешениях. Возможно, радеону уже не хватает установленных 512 Мб видеопамяти. Так это или нет, мы проверим, когда представится возможность протестировать версию с 1 Гб видеопамяти на борту. С другой стороны, в таком случае должна быть разница в результатах 8800GTS с разным объемом видеопамяти, но ее почему-то не наблюдается. Пожалуй, это самый аномальный результат в данном тесте. Что касается результатов 8600GTS, то уже начиная с разрешения 1280х1024 объем видеопамяти перестает иметь большое значение. Еще один довод в пользу гипотезы о повышенном требовании данного теста к объему видеопамяти (более 512 Мб).
Включение полноэкранного сглаживания приводит к дальнейшему «проседанию» результатов, но в целом картина не меняется. За исключением результатов пары 8800GTS 640/320 в разрешении 1600х1200, где версия карты с объемом видеопамяти 640 Мб демонстрирует полуторократное преимущество над урезанной версией. Что касается абсолютных результатов, то даже для топовых видеокарт играбельным остается лишь разрешение 1024х768. Интересно, сколько поколений видеокарт DirectX 10 должно смениться, прежде чем в данном тесте мы увидим играбельные FPS для видеокарт среднего класса в разрешении хотя бы 1280х1024? Может быть, низкие результаты в этом DirectX 10 тесте обусловлены собственно тестом, а не «железом»? Давайте посмотрим, что участники нашего тестирования покажут в бенчмарке Call of Juarez DX 10.
Тесты Call of Juarez DX10 Demo
Как уже говорилось, данный бенчмарк выполнен в виде отдельного приложения, при этом для запуска и управления настройками графики используется собственный лаунчер. Скриншот с предустановленными настройками качества «Low» вы видите ниже.
Из доступных изменению параметров присутствуют разрешение экрана и уровень детализации. В разделе «Advanced Settings» отображаются детальные настройки качества графики, соответствующие выбранному уровню «Details». Первый тест мы проведем на минимальных настройках.
При этих настройках лидирует Radeon HD2900XT, впрочем 8800GTX отстает совсем немного. Пара 8800GTS 640/320 по-прежнему демонстрирует стабильный паритет результатов. А вот в паре 8600GTS 512/256 результаты разделились сразу. Гораздо привлекательнее выглядит версия 8600GTS с объемом памяти 512 Мб, хотя и она не показывает играбельный FPS.
Уровень детализации «Balanced» от минимальных настроек отличается тем, что включаются простые тени объектов и полноэкранное сглаживание степени 2х.
Radeon HD2900XT и здесь смотрится неплохо, но в разрешении 1600х1200 все же уступает 8800GTX. Результаты в паре 8800GTS 640/320 расслаиваются, более предпочтительно смотрится версия карты с объемом памяти 640 Мб, что естественно. Как это ни грустно, но приходится признать, что производительность обычной 8600GTS падает «ниже плинтуса». Версия 8600GTS с 512 Мб видеопамяти по сравнению с ней демонстрирует трехкратный прирост, но и это можно назвать разве что ускоренным слайд-шоу.
Настройки графики «High» используют еще более высокую степень полноэкранного сглаживания и теней объектов.
В соперничестве Radeon HD2900XT и GeForce 8800GTX борьба проходит с переменным успехом. Значительные изменения наблюдаются в результатах пары 8800GTS 640/320. В разрешении 1600х1200 версия с 320 Мб видеопамяти резко «проваливается», да так, что показывает результат хуже 8600GTS 512 Мб. Ну а результаты 8600GTS 256 Мб и комментировать не надо, все очевидно.
Давайте попробуем выяснить, что же является причиной столь резких провалов результатов – детализация теней или уровень полноэкранного сглаживания? Для этого мы сделаем следующее. При настройках детализации отключим полноэкранное сглаживание, не меняя остальных параметров, как показано на скриншоте.
Сравнив эту диаграмму с предыдущей, приходим к заключению, что в значительном проседании результатов на уровне детализации «High» все-таки «виновато» полноэкранное сглаживание. Если его отключить, то провал в производительности 8800GTS 320 Мб сразу исчезает. Заметно вырастают и результаты Radeon HD2900XT. Тем не менее, на производительности GeForce 8800GTX наличие/отсутствие сглаживания сказывается в гораздо меньшей степени. Вполне возможно, что включение сглаживания приводит к серьезному повышению потребления видеопамяти. Но, как уже было сказано выше, пока не представляется возможным выяснить этот вопрос с достаточной определенностью.
Выводы
Подведем первые итоги. Сравнение производительности видеокарт в тестах DirectX 9 и DirectX 10 показало, что увеличение реалистичности картинки приводит к значительному падению уровня FPS. В общем-то, логично, за «красоту» приходится платить. Требования к объему видеопамяти тоже достаточно высокие, даже в относительно «простых» режимах. Современные топовые видеокарты в DirectX 10 пока не демонстрируют сногсшибательной производительности, но вполне способны показать играбельный FPS, хотя и не на максимальных настройках. Производительность же видеокарт среднего класса оставляет желать лучшего. Конечно, было бы неверно делать далекие прогнозы на основании результатов всего лишь двух бенчмарков, один из которых, к тому же, является демкой в чистом виде. Да и сами игры под DirectX еще могут быть неоптимизированны. Как разработчикам игр, так и производителям видеопроцессоров предстоит еще многое сделать, чтобы мы могли наслаждаться качественно новой графикой без «тормозов». Как говорится, ждем-с. - Обсудить материал на форуме.
Читайте также: