Это, наверное, самый большой материал по DirectX 10 публиковавшийся когда-либо на нашем сайте (скажу лишь, что перевод его занял по приблизительным подсчетам три дня). Его дополняют довольно любопытные презентации ATI и подробный рассказ о новом API и его влиянии на будущее игровой индустрии…
Как DirectX 10 и его Unified Architecture отразятся на игроках? Какие преимущества получат любители игр? Недавно мы общались с ATI на тему о том, как DirectX 10 проявится в их будущих GPU и что он принесет.
Вступление
DirectX и Shader Model; если у вас есть современный игровой ПК и вы интересуетесь этой областью, вы наверняка о них слышали. Мы слышали и помним обещания о потрясающей кинематографической реалистичной графике в играх, какую мы видели в CG фильмах, таких как Final Fantasy: The Spirits Within. Итак, мы в 2006 году, четыре года спустя после выхода DirectX 9, два года спустя после появления третьей шейдерной модели (SM 3.0). У нас до сих пор нет возможности насладиться всеми «кинематографическими» игровыми возможностями DirectX 9, все замерли в ожидании следующего крупного обновления DirectX. DirectX 10 обладает потрясающим потенциалом для игроков, возможностью реализовать невероятную графику.
Из истории DirectX
Возвращаясь назад, в «темные времена» игровой ПК индустрии, мы встречаемся с небольшим выбором 3D карт, всего лишь двумя технологиями реализации качественной графики – OpenGL и 3dfx, принадлежащий Glide – причем последний требовал специфического оборудования, когда OpenGL был открытой платформой и широко поддерживался обществом, в том числе сторонниками Linux. С Windows, Microsoft решила сказать свое слово на рынке мультимедиа. Компания разработала ряд API, которые позволяли разработчикам проще получить доступ к почти любым возможностям оборудования. DirectX включил в себя все эти API, а именно Direct Sound, Direct Input, Direct 3D и другие.
DirectX развивался; DirectX 3, DirectX 5 (не было DirectX 4, его пропустили и сразу выпустили 5), DirectX 6, 7, 8 и теперь 9. Каждая версия предоставляла новые возможности и увеличивала пластичность платформы. DirectX 8 считается началом эпохи программируемых шейдеров. До DirectX 8 все функции были строго «зафиксированы», а это значит, что разработчик мог применять в своих приложениях только те эффекты, которые поддерживались определенным типом видеоадаптеров. Например, если графический чипсет не поддерживал dot3, то не было никакого способа разработчику внести этот эффект в свою игру. С программируемым графическим процессором все изменилось. Разработчики игр могли теперь сами разрабатывать любые эффекты и внедрять их в свои игры. Однако в ранних версиях DirectX содержались ограничения на количество констант (постоянных), длину программы и др. DirectX 8 и 8.1 ввели Shader Model 1.1 – 1.3 (DX8.1 включал также SM 1.4). Шейдерная модель дала новые возможности и увеличила пластичность API.
DirectX 9 дебютировал с Shader Model 2.0. Вторая версия модели была большим шагом по сравнению с 1.4. С выходом DirectX 9.0c появилась и Shader Model 3.0. Новая версия шейдеров давала почти безграничные возможности разработчикам. Но эти возможности ограничивались возможностями оборудования. И теперь, когда DirectX 9 еще не исчерпал своего потенциала, пришла пора говорить о DirectX 10.
Введение в DirectX 10
Обсуждаемый нами новый API будет официально называться DirectX 10. Ранее ему планировалось присвоить имя Windows Graphic Foundation 1.0 и 2.0, но нет, остановились на общеизвестном DX10. Итак, теперь, когда мы знаем, как оно называется, давайте рассмотрим, как это получить?
DirectX 10 будет доступен только пользователям Windows Vista. Вы не найдете релиза DirectX 10 для Windows XP. DirectX 10 интегрирован с Vista и нам неизвестны планы о том, что Microsoft собирается официально поддержать новый API на ХР. В Windows Vista также интегрирован DirectX 9.0L для обеспечения совместимости с компонентами DirectX 9. Думайте об этом, как о двух разных DirectX в одной ОС. Мы будем иметь DirectX 9.0L для оборудования с поддержкой DirectX 9 и DirectX 10 для оборудования с поддержкой DirectX 10. Если вы хотите пользоваться DirectX 10, вам придется воспользоваться Windows Vista. И не исключено, что именно в связи с возможностями нового API будут связаны многочисленные переходы на новую ОС. Итак, вам будут нужны Windows Vista, оборудование с поддержкой DirectX 10 и, разумеется, игры, разработанные с учетом спецификаций DirectX 10.
Но у любого, даже самого заядлого геймера, возникнет следующий вопрос: «Каковы будут затраты на это обновление, и оправдает ли их преимущества?». Об этом мы сможем судить только поиграв в игры на базе DirectX 10. А пока, мы можем рассмотреть только его архитектуру и потенциал.
Ограничения DirectX 9, маленькая проблема
Перед тем, как мы перейдем к DirectX 10, давайте посмотрим и поймем, что же делает DirectX 9, и какие ограничения в нем остались?
Одна из наиболее существенных проблем DirectX 9 это «API object overhead». Под этим понимается, что API использует CPU для выполнения задач рендеринга до того, как начинается прорисовка изображения на видеокарте. Когда происходит рендеринг игры, приложение сначала связывается с API, API с драйвером, но до того как происходит задействование GPU вашей видеокарты. Все эти запросы обрабатываются CPU, что означает потерю ценных ресурсов.
Поэтому именно эта проблема может быть наверху списка проблем, которые будут исправлены в DirectX 10 и сделают его привлекательным для геймеров.
Из этой проблемы следует другая – лимит на количество объектов, которые могут отображаться в одном кадре. Объектом может быть что угодной в игре, от персонажа до дерева. Сегодня лимит составляет примерно 500 объектов в одном кадре. Разработчик игры должен крайне бережно сбалансировать количество объектов в своем приложении, чтобы придать реализм окружающей среде. Это существенно ограничивает возможности. Возьмем, например деревья. Самый простой путь, это взять дерево, скопировать его, возможно, поменять цвет. Ограничение состоит в том, что тысячи уникальных деревьев с разной формой листьев, кроны, высотой и др. не могут отображаться в одном кадре. DirectX 10 смягчит это ограничение.
На слайде выше вы можете видеть, как объект проходит фазы от приложения до API и драйвера, где случается некоторая задержка. Эта задержка и снижает быстродействие. Эту проблему обычно называют Small Batch Problem.
Проблемы постоянной конвейерной шейдерной архитектуры
Следующее ограничение, присутствующее в DirectX 9 и современных GPU связана с конвейерами. В GPU обработка вершин и пикселей четко разделена (определенное количество «мощи» видеокарты обрабатывает пиксели, определенное вершины). Например, в текущей технологии X1900 XTX имеется фиксировано 8 единиц обработки вершин и 48 пикселей. С этим ограничением вы можете столкнуться, если игре требуется больше обработки вершин, но имеется только 8 единиц.
(Речь идет о шейдерах – вершинных (вертексных) и пиксельных, vertex & pixel shaders – прим. пер.).
Другая ситуация, которая становится типичной сегодня в играх, то, что вам нужно больше как вершин, так и пикселей в одной и той же сцене. С ограничениями, о которых сказано выше, может получиться так, что ваше оборудование будет полностью нагружено обработкой вершин, в то время как часть, отвечающая за пиксели, не будет занята ничем. Может случиться и другой сценарий – пиксельная обработка идет по-полной, а вертексная отдыхает! Это делает обработку графики не сбалансированной. В играх будущего, когда мы будем видеть больше и больше сцен с большим и большим количеством вершинных и пиксельных шейдеров, эта проблема станет очень острой.
DirectX 10 убирает ограничения, решение маленькой проблемы
Так как DirectX 10 переписан чуть ли не с нуля как новый API, то множество старых проблем отпадает. Снято ограничение с количество объектов, которые можно отображать в одно и тоже время. В реальном мире два объекта не идентичны, даже если они «одно и тоже». Сегодня в играх большинство объектов абсолютно идентичны. Мы видим это на примере травы, деревьев и множество других вещей. Это всего лишь копии и это мешает разработчику создать реалистичный мир. Сегодня почти вся трава в играх – просто копия одной травинки, иногда раскрашенной немного другим цветом, чтобы сделать объекты хоть немного «разными». В завтрашних играх мы сможем увидеть тысячи уникальных объектов. С DirectX 10 одной проблемой у разработчиков по созданию реализма станет меньше. Конечно, никто не отменял ограничения оборудования, которому предстоит все эти тысячи объектов рендерировать, но, по крайней мере, в API больше нет ограничения. Лишь быстродействие GPU остается ограничением, которое также снимется в ближайшем будущем.
А что же с проблемой «утечки» памяти на сложную систему обработки? Сегодня DirectX 9 с его системой API + Driver берет до 40% времени. С DirectX 10 этот процент будет снижен на половину, которая пойдет на обработку игры. Что означает, что разработчик игры может вставлять больше уникальных объектов в одну сцену.
Включая Geometry Shader
Одна из новых возможностей, добавленная в DirectX 10, это новый шаг в развитии обработки графики. На слайде ниже, геометрические шейдеры находятся между вертексными и пиксельными. Геометрические шейдеры это новые шейдеры, которые могут брать треугольники и рассматривать их как объекты, контролируя их через вершины. Затем эти графические примитивы передаются на пиксельные шейдеры. Эта технология может создавать очень привлекательные эффекты в реальном времени, такие как Displacement Mapping, Stencil Shadow Extrusion, Point-Sprite, Motion Blur и много других, которые будут доступны на оборудование с поддержкой DirectX 10. Геометрические шейдеры это очень интересная новая возможность для разработчиков игр, если не самая великолепная во всем DirectX 10.
Единая модель шейдеров (Unified Architecture)
DirectX 10 построен на единой архитектуре. Это означает, что теперь обычные вершинные, пиксельные и геометрические шейдеры будут обрабатываться одинаково вместе. Так, API теперь может обращаться к GPU один единственный раз, и за этот единственный раз обрабатывать все типы шейдеров. Вместо вертексных, пиксельных и геометрических шейдерных единиц обработки, теперь все типы будет обрабатывать одна и та же единица. Сегодня мы видим снижение быстродействия, так как каждый тип шейдеров обрабатывается разными типами единиц обработки.
В то время как DirectX 10 полностью использует единую архитектуре, GPU с единой архитектурой вовсе не является обязательным требованием спецификаций DirectX 10. Вы все еще можете пользоваться GPU с раздельными вершинными, геометрическими и пиксельными шейдерами, но пользоваться всеми нововведениями DirectX 10. Но действительно нужной функцией при использовании DirectX 10 являются геометрические шейдеры.
Одна из ключевых идей единой архитектуры это объединить работу GPU в единый процесс. Это значит, что GPU теперь может уделять больше сил таким действиям как физика, искусственный интеллект и множество другого, что сделает игровой процесс интереснее и удобнее. DirectX 10 и единая архитектура поможет увеличить быстродействие.
Теперь в графической системе имеется некий арбитр, который распределяет, сколько ресурсов нужно вертексным, пиксельными и геометрическим шейдерам. Он играет роль «полицейского по трафику» на все действия GPU. GPU теперь будет исполнять свою работу более точно, сосредотачиваться на том, на чем надо. Подобная система уже введена в Radeon X1000 Series технологии. X1000 является неким гибридом и находится на пол пути к единой архитектуре.
Вы можете также наблюдать, как это работает в XBOX 360. XBOX 360 использует технологию ATI GPU и поддерживает единую структуру. Поэтому у ATI уже есть 1 GPU нового поколения на рынке. И возможно, именно эта технология в XBOX положит будущее новым настольным GPU.
Следующая линейка GPU от ATI будет полностью с единой структурой. В этой линейке компания на базе опыта с XBOX 360 внесет усовершенствования в единую архитектуру и адаптирует GPU для работы на десктопе. Это также будет означать и другое – портирование игр между XBOX 360 и новыми чипсетами ATI GPU будет проще.
На что для нас, простых игроков, означает то, что DirectX 10 позволит добавлять в игры большее количество уникальных объектов? Это означает, что реализм и глубина погружения в игру возрастут. Новые возможности также позволят внедрять новые 3D эффекты в игры. Полностью программируемая единая архитектура может открыть новые, ранее неизведанное, нечто помимо привычного трехмерного рендеринга. GPU действительно становится главным процессором на ПК. Игровой процесс теперь действительно может стать более интересным.
ATI очень тесно работает с Microsoft для обеспечения совместимости своих продуктов с DirectX 10 API и предоставления возможностей новой графической подсистемы игровым разработчикам. И это верно, ведь без конечных продуктов все эти хай-энд программируемые интерфейсы просто бесполезны. Многие игровые преимущества, предоставляемые DirectX 10 и единой архитектурой, включая большее количество уникальных объектов, материалов, теней и физики (вода, кожа, волосы), эффектов (свет, объем), анимации масштабируемы.
Наше заключение
Итак, что же это значит для нас? Потенциал великолепен. DirectX 10 войдет в состав Vista, это значит, что вам понадобится DirectX 10 – совместимая видеокарта, Windows Vista, игры разработанные на базе нового API. Пользователи Windows XP, вероятно, не смогут воспользоваться DirectX 10.
Но переход на DirectX 10 будет не дешевым для конечных пользователей. DirectX 10 будет конечно интересным, но вряд ли трехмерных стол Windows Vista, несколько усовершенствований в графическом API и дорогущий адаптер с его поддержкой привлекут пользователей для перехода с Windows XP.
ATI же очень уверена в их новой единой архитектуре и преимуществах от DirectX 10 и Windows Vista. ATI думает, что эти нововведения произведут революцию. Но мы не можем сегодня, когда нет ни одной DirectX 10 совместимой игры, проверить это. И не сможем до тех пор, по крайней мере, пока не выйдет DX10 и Windows Vista.
Но DirectX 10 API идет в правильном направлении. Это будущее, будущее которое продолжит вечную схватку между ATI и Nvidia на рынке игр. Мы думаем, что эра DirectX 10 будет эрой следующего шага в разработке игр, то, чего ждали разработчики столько лет. И если разработчики игр счастливы, это значит, что и мы, игроки, тоже счастливы.
Источник:
Перевод: Райкер
Комментарии
Raiker, Респект!
З.Ы. Со слайдами неразбериха.
З.З.Ы. С древнеегипетского переводили?
Raiker писал:отображаться в одном кадре. DirectX 10 смягчит это ограничение.
????????
На слайде выше вы можете видеть, как объект
Raiker, A-tomic хочет сказать, что слайды расположены в конце статьи, а не самой статье.
По теме
- Windows Vista официально "мертва"
- Завтра прекращается поддержка Windows Vista
- Остался последний месяц поддержки Windows Vista
- 11 апреля Microsoft прекратит поддержку Windows Vista
- Через год прекращается поддержка Windows Vista
- Microsoft открыла исходный код Open XML SDK
- Баллмер: Longhorn/Vista - моя самая серьезная ошибка
- Сегодня заканчивается бесплатная фаза поддержки Windows Vista и Office 2007
- Microsoft продлила срок поддержки Windows Vista и Windows 7
- Практики обеспечения безопасности Microsoft - лучшие в мире