Сентябрь 22 2021 23:30:52
Навигация
· Главная
· Конференция
· Статьи
· Файловый архив
· Новости по темам
· Ссылки
· Связатся с нами
· Расширенный поиск
· Вакансии
Статьи по категориям:
Аналитика
Видеокарты
Звук и акустика
Игры
Корпуса и БП
Материнские платы
Моддинг
Мониторы
Носители информации
Ноутбуки и КПК
Оперативная память
Периферия
Софт
Процессоры
Системы охлаждения
Телефоны
Фотоаппараты
mp3 плееры
Акустика


Последние статьи
· Тестирование корпуса...
· Игра Bioshock – шок,...
· Фотоаппарат FUJIFILM...
· Вольтмод и тестирова...
· LeadTek GeForce 8400...
Новые файлы
Video Card Stability... 9237
RaBIT (ATI Radeon BI... 8277
PowerStrip 3.76 7551
nVidia Tray Tools 1.... 7729
nVHardPage SE 3.5 7464
NiBiTor (NVIDIA BIOS... 7577
GPU-Z 0.1.5 7034
aTuner 1.9.81 7166
ATITool 0.27 beta4 7318
ATI Tray Tools 1.3.6... 7341
Полезная информация:

Транспьютер (англ. transputer) — элемент построения многопроцессорных систем, выполненный на одном кристалле большой интегральной схемы, продукт английской компании INMOS Ltd. (ныне - подразделение SGS-Thomson Microelectronics).

Общее голосование
Пользуетесь ли Вы ноутбуком?

Да, без него сейчас никуда

Пользуюсь, но редко

Нету, но собираюсь приобрести

Нету, он мне и не нужен

Популярные загрузки
Video Card Stabil... 9237
A64Tweaker v0.6 8768
CoreTemp 0.94 8710
CPUCooL 7.3.6 8459
TweakRAM 5.8 buil... 8405
MemOptimizer 3.0.1 8337
MemTest 3.5 8331
RaBIT (ATI Radeon... 8277
MemMonster 4.65 8241
RivaTuner 2.0 RC 16 8027
RSS News
Рекомендуем:
DirectX10: новое средство для разработки 3D игр.
Автор: Чекмарёв Алексей (ZeroCool)

Введение.

Перед тем как переходить непосредственно к DirectX10 необходимо пояснить, что такое DirectX и немного рассказать о возможностях очень эффективного и популярного в настоящее время пакета DirectX9.0, который используется практически всеми играми в той или иной степени, выпущенными с начала 2004 года. В настоящее время игр, в полной мере использующих возможности DirectX9.0, всё ещё очень мало и весь потенциал этого набора API (Application Programming Interface) функций ещё не раскрыт.

DirectX – это набор низкоуровневых интерфейсов для создания прикладной программы, то есть набор API функций, предназначенный для эффективного и удобного программирования 3D-графики и других мультимедийных приложений, в нашем случае будет рассматриваться только создание трёхмерных сцен в компьютерных играх. В состав DirectX также входит набор функций для работы с устройствами ввода, так называемый Direct Input, набор функций для работы со звуком, Direct Sound и ещё несколько компонентов для работы с сетью и для работы с мультимедийными потоками, т.е. его захват и вывод, которые как уже упоминалось выше необходимы для создания других мультимедийных приложений. Я хочу заострить внимание на графических возможностях DirectX10 и поэтому далее об этих возможностях упоминаться не будет, поэтому остановимся на Direct Graphics. Для тех, кому возможно захочется разобраться в этой теме подробнее, может даже захочется создать что-нибудь своё, то рекомендую для начала изучить язык программирования C++, затем скачать с сайта Microsoft пакет с документацией и примерами программ на DirectX, он называется DX SDK (DirectX Software Developer Kit). Сразу поясню, что для работы с ним вам понадобится среда разработки Microsoft Visual Studio .NET 2003 или более поздняя версия.

Коротко о возможностях DirectX9.0.

Я думаю, что не стоит углубляться в программирование графики, ведь далеко не каждый имеет навыки программирования и поэтому я лишь поясню некоторые возможности DirectX9.0 о которых возможно многие уже знают и нового ничего не услышат. Используя DirectX9.0 можно создавать трёхмерные сцены высокого качества с высокой степенью детализации в реальном времени. Одной из главных возможностей этого набора функций является возможность программировать графику используя шейдеры. Шейдер - это специальная программа, которая использует определенные программируемые регистры видеокарты для создания различных графических эффектов. Как вы все наверное знаете поддержка Shader Model 2.0 начинается именно с DirectX9.0, более ранние версии DirectX не имеют этой поддержки, далее были разработаны компанией ATI более продвинутые виды шейдеров Shader Model 2.0b, в которых была увеличена длина инструкции и добавлены некоторые новые возможности. Для этой модели шейдеров был выпушен обновлённый пакет DirectX9.0b, но к сожалению эта модель шейдеров не получила широкого распространения и использования программистами графики, далее были разработаны Shader Model 3.0, которые в значительной мере расширили возможности программирования графики, с приходом этой модели шейдеров появилась возможность динамического ветвления и была значительно увеличена длина инструкции и конечно же для поддержки этой модели программируемой графики была выпущена новая версия DirectX9.0c. Так же необходимо упомянуть, что шейдеры бывают двух типов, Vertex Shader и Pixel Shader, каждые из которых используются для решения различных задач. В DirectX10 появилась новая модель шейдеров, Geometry Shader, которая значительно расширила возможности для программистов.

Одна из технологий визуализации, наиболее заметная в современных играх называется Bump Mapping, этот эффект создает на плоской поверхности рельефность, в результате чего эта поверхность уже не кажется плоской. Можно вспомнить отличную игру Far Cry от разработчика CryTek, которая как гром среди ясного неба появилась на прилавках магазинов и сразила всех наповал своими графическими возможностями, причём сразила не только всех людей, но и практически все системы, поскольку для комфортной игры требовалась система с конфигурацией Hight End класса. Так вот в этой игре возможности DirectX9.0 были раскрыты по максимуму на тот момент, это было 23 февраля 2004 года. Даже вышедшие позже легендарные DOOM 3 и Half-Life 2 не казались такими уж великолепными, на фоне Far Cry. Я упомянул именно Far Cry поскольку именно в этой игре применили Bump Mapping практически к каждому объекту и каждой поверхности в игре, с разной степенью успеха. Посмотрев на пару скриншотов ниже, можно с уверенностью сказать, что плитка на полу имеет трёхмерную структуру, но на самом деле это просто графический эффект создаёт это изображение. Так же как, например мышцы на теле у главного мутанта в игре тоже выглядят трёхмерными или даже живыми, оставаясь при этом плоскими.

Рисунок 1

Рисунок 2

Для создания эффекта трёх мерности на плоской поверхности необходимы две текстуры, карта нормалей к поверхности и собственно нормальная карта, т.е. нормальная текстура. Вы можете увидеть эти текстуры ниже.

Рисунок 3. Нормальная текстура. Рисунок 4. Карта нормалей.



У этого эффекта есть один главный недостаток, дело в том что на углах поверхности эффекта трёх мерности добиться невозможно и поэтому это главное место, где можно увидеть, что применён именно эффект Bump Mapping. Вообще этот эффект во многом облегчил работу моделерам, ведь им теперь не надо уделять особое внимание мелким деталям на модели, потому что реализовать это стало возможно простым применением этого эффекта, но простым это только в сухой теории, ведь реально применить эффект Bump Mapping не такая уж простая задача.

Одним из более эффективных в плане визуализации эффектов является Parallax Occlusion Mapping, его смысл такой же как и у Bump Mapping, т.е. создать детальную поверхность с множеством мелких деталей на молополигональной модели. Главное отличие этого эффекта от Bump Mapping заключается в присутствии эффекта параллакса. Параллакс – видимое смещение объекта из-за изменения угла наблюдателя, именно этого нет у Bump Mapping`а. Обратите внимание на пару скриншотов ниже, на которых демонстрируется преимущество эффекта Parallax Occlusion Mapping над эффектом Bump Mapping. Эти снимки сняты с демонстрационного демо-ролика от ATI под названием Toy Shop, его можно скачать с этой страницы либо как приложение (114Mb), в таком случае для запуска демки вам понадобится видеокарта ATI серии X1800 или выше, либо можно скачать отснятое видео (91Mb), что более удобно для пользователей, не имеющих данную видеокарту.

Рисунок 5

Рисунок 6

Для создания такого эффекта необходимы три текстуры, нормальная карта, карта нормалей и карта высот. Последняя и создаёт более реальную трёхмерную поверхность. Для эффективного использования этого эффекта необходимо комбинировать Bump Mapping и Parallax Occlusion Mapping, т.к. последний очень серьёзно «кушает» системные ресурсы видеокарты и, применяя только его для всей сцены это просто «повесит» систему. Лично я на сегодня ни в одной игре не видел применения этого эффекта, несмотря на то, что он реализуется на DirectX9.0c, которому на смену в скором времени прейдет DirectX10, это к теме о нераскрытом потенциале.

Рисунок 7

Ещё есть множество графических эффектов, которые можно реализовать средствами DirectX9.0c, например реализация мягких теней, мягких частиц, которые до сих пор не получили реального воплощения в играх. Так же не так давно компания ATI стала демонстрировать новую возможность, так называемый «Render to Vertex Buffer», часто пишут коротко «R2VB», необходимо отметить, что эта технология находится на экспериментальной стадии, в полной мере эта возможность будет реализована на DirectX10. Эта технология позволяет осуществлять множество решений средствами видеокарты, например анимация большого количества объектов, отрисовка теней от чётырёх источников света одновременно, далее обработка до 1.000.000 частиц (на X1900 получаем 45 FPS), генерация океанских волн (обеспечивает десяти кратное увеличение производительности, по сравнению с CPU), реальное моделирование снега. Предлагаю посмотреть на скриншоты и убедиться на сколько широки возможности DirectX9.0c.

Например на этом скриншоте это чудо носиться по снегу, создавая в нём углубления, т.е. протаптывая снег, при этом снег постепенно восстанавливает свою форму, поскольку с неба падают снежинки, разве не круто было бы это увидеть в игре?

Рисунок 8. Динамика снега.

А на этом скриншоте генерируются океанские волны, при помощи той же технологии R2VB, волны в динамике выглядят очень реально, в скором времени такие волны должны появиться в играх. Надо отметить, что достижением является не сама реализация таких волн, а то, что обработка производится полностью средствами видеокарты, без участия центрального процессора.

Рис. 9. Генерация океанских волн.

Тут, как я упомянул выше, происходит отрисовка теней от одного анимированного объекта и чётырёх источников света. Для игр это очень важно, это создаёт эффект реалистичности. Помню ещё в 2005 году, разработчики игры S.T.A.L.K.E.R Shadow of Chernobyl в интервью говорили, что они реализовали отрисовку теней от множества источников света, но пока об этом знают только сами разработчики.

Рисунок 10. Тени от четырёх источников света.

Думаю хватит о DirectX9.0, пара уже переходить на разъяснение возможностей DirectX10, я хочу сказать что я упомянул лишь пару эффектов из пакета DirectX9.0, поскольку рассказывать о всех эффектах в рамках одной статьи очень тяжело, да и как вы должно были заметили, это не легко воспринять за один раз. И ещё, рассказывая обо всех эффектах можно очень и очень долго, поэтому я остановлюсь на этом.

Возможности DirectX10.

В начале этого пункта стоит напомнить, что DirectX10 будет поддерживаться только операционной системой Windows Vista, т.е. для игр под DirectX10 вам обязательно потребуется установить эту операционную систему. Но не стоит сразу огорчаться, поскольку практически все проекты будут разрабатываться как для DirectX10 так и для DirectX9.0c, так что тем, у кого нет возможности для перехода на новую платформу, по-прежнему смогут играть в новые игры. Далее пойдет практически только техническая сторона DirectX10, поэтому стоит читать внимательно, если конечно это вас интересует.

В DirectX10 появился новый конвейер (pipeline), который включает в себя:

  • ортогональный фрейм буфер (Orthogonalized Frame Bufer)

  • геометрический шейдер (Geometry Shader)

  • поточный вывод (Stream out)


К возможностям ортогонального фрейм буфера относится следующее. Разнообразные виды позволяют подключать ресурсы к различным частям конвейера. Возможность по-разному интерпретировать ресурсы. Позволяет рециркулировать данные. Осуществляет доступ к текстурам VS, GS и PS. Буфер констант позволяет хранить большее количество данных, осуществляет более быстрое обновление констант, появилась возможность группировки констант в различные буфера для более эффективного обслуживания, таким образом исчезают ограничения DirectX9.0. Новые возможности включают в себя более эффективную многопроходную отрисовку, например расчёт анимации производится один раз, а отрисовка по этим данным производится необходимое количество раз, что позволяет сильно уменьшить нагрузку на графический и центральный процессор, поскольку вычисления произвели всего один раз, а не как например это происходит в DirectX9.0c, где вычисления производятся при каждой отрисовке. Так же появилась так называемая возможность: карты смещения (Displacement mapping), позволяет создавать в игре не повторяющиеся объекты, например лес, ещё эта возможность позволяет создавать огромные ландшафты и реализовывать некоторые другие решения. Ещё одной интересной особенностью является альтернативная интерпретация данных. И наконец добавлена возможность создания эффектов на основе GPGPU методов, позволяет производит простые расчёты физики, например соударение частиц с поверхностью земли, таким образом можно освободить от некоторой работы CPU.

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

Следующее относится к поточному выводу. Позволяет сохранять результаты вывода GS (геометрический шейдер), работает с переменным количеством примитивов. При выводе все топологии конвертируются в списки примитивов, в так называемый «triangle list» и другие списки. Альтернативный способ вывода помимо отрисовки в текстуру/VB. К новым интересным возможностям в этой области относится расчёт значений для примитивов, например нормали треугольников. Экструзия объёмов теней позволяет производить анимацию на GPU с поточным выводом (невозможно в DirectX9), экструзия производится в GS – генерация боков объема теней, экструзия на DirectX10 работает на 20% быстрее, чем на DirectX9.0.

Анимация в DirectX10.

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

Обзор некоторых достижений.

Перед тем, как переходить к демонстрации некоторых, уже достигнутых реализаций DirectX10, хочу заметить, что «железо» всё ещё не готово, но есть возможность реализовать некоторые эффекты из набора средств пакета DirectX10 на видеокарте DirectX9.0, работает всё это дело вроде бы неплохо и разработчики уже сегодня могут проанализировать на глазок производительность DirectX10.

Для начала предлагаю посмотреть на эту замечательную рыбку, отрисованную на разных версиях DirectX. На первом изображении (рисунок 11) отчётливо виден недостаток детализации, рыбка просто ужасна. На втором изображении (рисунок 12) увеличено количество треугольников с 1480 до 23680, т.е. в шестнадцать раз и соответственно заметно увеличилась детализация изображения, но как вы должны были заметить, на модели присутствует противный блеск, который многих раздражал в игре Far Cry. На третьем изображении (рисунок 13) снова возвращаемся к 1480 треугольников, но применяем эффект карты смещения (Displacement mapping), доступный только в DirectX10, о котором было упомянуто выше и в результате получаем детальную модель с малым числом треугольников и с отсутствием противного блеска.

Рисунок 11

Рисунок 12

Рисунок 13

А вот отличный пример использования геометрических шейдеров, о которых говорилось ранее. Значит в динамике эти ветви динамически растут из земли, обволакивая забор и склеп, не пересекая поверхностей. Это именно та возможность, о которой я писал выше, т.е. замена примитивов, а точнее удаление старых и создание новых. Это должно сильно улучшить атмосферу в играх, ведь теперь будет больше динамики. Эта небольшая демка входит в состав того же DX SDK, который можно скачать с сайта Microsoft (506.5Mb), но для её запуска понадобится операционная система Windows Vista (3.2Gb (x86)) и DirectX10.

Рисунок 14

В DirectX10 появилась возможность применять эффект Motion Blur для определённого объекта, а не для всей сцены, как это было в DirectX9.0. Вот пример, этот чудила разминается и подпрыгивает с вращением, демонстрируя эффект размытия, скриншот снят с видео, поэтому он мало несёт информации.

Рисунок 15

Какие проекты уже готовятся под DirectX10.

Я немного слукавил прямо в заголовке, дело в том, что на данный момент заявлен только один проект, о котором наверняка все знают, ну или почти все. Этот проект Crysis, о котором говорят, что он сразит всех на повал не только своими техническими возможностями в области графики, но и революционным игровым режимом, т.е. геймплейем, который будет демонстрировать эффект присутствия в игре. Так же в игре будет многопользовательский режим игры, который тоже будет необычным, а точнее он будет реализован впервые. Это всё заявляют менеджеры проекта и главный представитель компании, её президент Цеват Йерли. Разработкой проекта занимается студия CryTek, а обязанность издателя взяла на себя компания EA, которая не пожалела денег на Crysis в итоге бюджет игры составил 16 миллионов евро. Об этом проекте стало известно ещё в начале весны 2005 года, но официальное подтверждение было получено только в начале 2006 года. Игра разрабатывается преимущественно под DirectX9.0c, но разработчики заявляют, что они добавят графические эффекты из DirectX10, таким образом игра будет красивее под управлением DirectX10, нежели под управлением DirectX9.0c. А учитывая более быструю работу DirectX10 игра будет работать с одинаковой скоростью под управлением обоих API наборов функций, но на DirectX10 как я уже сказал, будет красивее.

Вы только посмотрите на эти несколько скриншотов, демонстрирующих достижения компании CryTek и мы сможем увидеть эти достижения уже совсем скоро на своём персональном компьютере. Вы всмотритесь в эти лица, представленные на рисунке 16, они как живые и это всё благодаря правильному применению продвинутых шейдеров.

Рисунок 16

Рис. 17. Пошаговая обработка лица.

Далее демонстрируется на сколько реализованная картинка в игре похожа на реальный мир, на третьем изображении (рисунок 20) даже можно на пару секунд задуматься, где игра, а где реальный мир. Вот что значит возможности новой платформы для разработки, хотя всё это реализовано на видеокарте DirectX9.0c, работает оно под управлением DirectX10. Но точного подтверждения, но какой платформе были отрендерены изображения нет, поэтому это не стоит воспринимать буквально!

Рис. 18. Демонстрация применения объёмных теней.
Рис. 19. Просто сравнение двух изображений.
Рис. 20. Просто сравнение двух изображений.

Что в итоге?

В итоге разработчики игр и другого программного обеспечения получат в свои руки новое, очень эффективное средство для разработки, которое должно позволит решать те или иные задачи немного проще, а главное добавит уйму новых возможностей. Главное нововведение в Windows Vista, по отношению к Windows XP, является то, что это платформа заявлена компанией разработчиком Microsoft, как игровая платформа, а не как просто операционная система. Дело в том, что Windows XP на самом деле не является игровой платформой, в ней эта возможность как бы дополнительная, что сильно затрудняет работу для разработчиков. Надеюсь с приходом (в хорошем смысле этого слова) Windows Vista игры станут значительно качественнее и интереснее и по настоящему интересные проекты станут выходить чаще, чем это происходит сегодня.

Спасибо всем за внимание, с вами был Чекмарёв Алексей (ZeroCool). Статья написана лично мною с начала до конца специально для ZeLeZo.kiev.ua, при копировании статьи на другие ресурсы, просьба указывать имя автора.

Обсуждаем статью в конференции
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Отлично! Отлично! 100% [1 Голос]
Очень хорошо Очень хорошо 0% [Нет голосов]
Хорошо Хорошо 0% [Нет голосов]
Удовлетворительно Удовлетворительно 0% [Нет голосов]
Плохо Плохо 0% [Нет голосов]
Авторизация
Логин

Пароль



Забыли пароль?
Запросите новый здесь.
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 933
· Новый пользователь: Oliverk48
Рекомендуем

Время загрузки: 0,03 секунд 9,711,130 уникальных посетителей