DirectX 10

Это, наверное, самый большой материал по 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 будет эрой следующего шага в разработке игр, то, чего ждали разработчики столько лет. И если разработчики игр счастливы, это значит, что и мы, игроки, тоже счастливы.

Комментарии: 41
Ваш комментарий

Респект !! Отличный материал.
Жаль про NVIDIA ничего нет.

0

Первой игрой испоьзующей 10DirectX будет Кризис от Крайтек

0

Респект афтару!
Скорей бы он вышел!

0

Первой игрой с DirectX10 будет, HALO 2

0

DirectX 10 - насколько я понял отличная вещь, улучшающая работу видеокарты, тока DX 10 не будет совместим с Windows Xp, а так вполне вполне.
"ATI думает, что эти нововведения произведут революцию. Но мы не можем сегодня, когда нет ни одной DirectX 10 совместимой игры, проверить это. И не сможем до тех пор, по крайней мере, пока не выйдет DX10 и Windows Vista.
Но DirectX 10 API идет в правильном направлении. Это будущее, будущее которое продолжит вечную схватку между ATI и Nvidia на рынке игр. Мы думаем, что эра DirectX 10 будет эрой следующего шага в разработке игр, то, чего ждали разработчики столько лет. И если разработчики игр счастливы, это значит, что и мы, игроки, тоже счастливы".
- ага, я тоже во всём этом уверен. Уже пора начинать новую эру, давно пора....

0

тока DX 10 не будет совместим с Windows Xp
ШОЗАНАХ???

0

А будет эмуляция 4-х шейдеров.А то я буду брать себе 7800 gtx и хрен хнает что выйдет.

0

"Первой игрой с DirectX10 будет, HALO 2"

Странно,вроде бы ХАЛО 2 значиться как первая игра под Windows Vista...Первая игра,которая будет с поддержкой DirectX10 и шейдеров 4.0 будет Crysis от Crytek )

Поподробнее про игру можно узнать на этом форуме.

0

Из статьи ясно, что DX10 будет только в ВИСТА, значит Halo2 и есть первая игра с DX10.(Но спорить не буду,рано ещё об этом говорить, выйдет ВИСТА, тогда и узнаем).А может я и ошибаюсь!

0

Время покажет.Просто надо ждать.

0

Красафчеги,вы лучши скажыти,кагда выйдут видиокарты с паддержкай ДыХы10 и шуйдеров 4.0 ?

ЗЫ: Пешу так,патаму что недавна приехал ис Бабруйска )

0

Вот это в самую точку...хрен знает когда такая видюха появиться (появится точно, рано или поздно, но появится)....и главный вопрос СКОЛЬКО эта хрень будет СТОИТЬ?

0

Йа думайу...хм...

Скарее всиво буит стоить доллароф 600-800...Йа думаю,не дороже 7800 ГТХ 512 МВ в сваё время!

0

Но, не у каждого есть 600 - 800 долларов!!! Поэтому "простым смертным" сразу увидет все красоты Vista и DirectX 10 не придётся...что не есть хорошо...

0

Это выгодно ATI и Microsoft, так что есть и хорошая сторона =( , может кстати это и к лучшему? Появится лишний повод купить себе новую видеокарту.

0

За 600 - 800 долларов, да нах она такая нужна??? Лючше подождать пока дешевле не станет...

0

ну не за 600-800 баксов же!

0

да не, когда карта подешевеет, она и состарится одновременно. Хотя если честно, то тоже такого резона не совсем понимаю.

0

Я думаю что видюха с SM 4 И DirectX10 не скоро состарится,а более новые модели будуд отличаться только памятью...

0

ну да, только памятью, и частотой. Но я не думаю, что мой Radeon 9800XT не осилит DirectX 10 .

0

Zmeevi4ok
хочешь сказать не потянет?

0

мммм...мэээээ...уууууууууу...думаю не потянет....это впринципе невозможно....

0

ну что тогда друзья, копим на новое железо, начинаем с сегодняшнего =))))

0

так-с....новая копилочка меня ждет....

З.Ы. Потом разбивать будет жалко...хнык....хнык...)))

0

Начинать копить надо было ещё год назад.

0

Фигасибе,это значит,что я вот щас собираюсь менять комп,и он у меня не потянет для новых игр,поддерживающих DirectX 10,и придется менять опять видюху опять через год?

0

думаю в 8 серии нвидии будет и 4 шейдеры и дерикт 10 поодерживать...возьму 8600гт и круто будет она примерно 7000 будет стоить

0

Восьмая серия гыфорсоф 100% будет поддерживать DX10

0

Первыми картами полностью поддерживающими DirectX 10 и SM 4.0 будут карты на чипе R600 от ATi. Он должен выйти приблизительно в последнем квартале 2006 года. Карты на его основе не будут подразделяться на master и slave. Так что cross fire собирается из двух одинаковых карт.
Предварительные характеристики GPU:
65nm
64 Shader pipelines (Vec4+Scalar)
32 TMU's
32 ROPs
128 Shader Operations per Cycle
800MHz Core
102.4 billion shader ops/sec
512GFLOPs for the shaders
2 Billion triangles/sec
25.6 Gpixels/Gtexels/sec
256-bit 512MB 1.8GHz GDDR4 Memory
57.6 GB/sec Bandwidth (at 1.8GHz)
WGF2.0 Unified Shader

0

Чипсет R600 рулит он накрутил в 3D Mark 2006 - 11800 (или скока там я не помню)

0

А как заставить игру Devil May Cry 4 работать с DirectX 10?

0

zhenyavir
там 2 экзешника, под 9ый и 10ый директ

0

Кто знает, под Nvidia GF 8600GT DirectX11 запашет?

0

под dx11 еще не выпустили карт.

0

GF 8600GT DirectX11 запашет?
максимум 10.1 и то частично

0

да не, там dx10 то с трудом дается, а dx10.1 просто не поддерживается.

0

У Нвидии нет чипов с поддержкой 10.1, но они хотят кажется в мобильных картах 10.1 сделать..не уверен, но что то такое было.
Первые карты с дх11 у АТИ будут осенью, вместе в выходом 7ки. Нвидиевцы скорее всего либо к зиме сделают, либо к весне.

0

Материал отличный. От начала до конца прочитал.

0