Получать новые статьи на свою почту
Популярные статьи
  • Процессор — все точки над i подробнее
  • Что такое жёсткий диск и в чём его сходство с подробнее
  • В чём прикол твёрдотельных накопителей? подробнее
  • Видеокарта — функции и суть данной железки подробнее
Поддержать проект
13.08.2018
Блог Дмитрия Вассиярова.
Автор: Рубрика:

Direct3D – портал в виртуальный мир

Лого

 

Доброго дня вам, мои уважаемые читатели. Я подготовил для вас очередной сюрприз в виде рассказа о Direct3D, который заинтересует не только геймеров, но и всех желающих разобраться в вопросе: каким образом на плоском экране монитора создается полное ощущение объемного пространства.

Когда утверждают, что за графику в современных играх отвечает Директ Икс – это не совсем корректно. Данный многофункциональный API комплексно решает более глобальные задачи, связанные с со всем мультимедийным контентом. А вот Direct3D (D3D) как раз является составляющим элементом DirectX, отвечающим именно за трехмерную графику.

 

История, о которой многие не знают

Можно сказать что DirectX появился благодаря D3D. Дело в том, что до 1995 года Microsoft для работы с изображениями пользовался сторонним продуктом OpenGL. И желание создать собственный графический API, подтолкнуло их к разработке Direct 3D и проекта Директ Икс в целом. Но справедливости ради надо отметить, что работы велись не с чистого листа.

Дело в том, что еще в 1992 компания RenderMorphics, основанная и Дугом Рабсоном и Серваном Кеонджяном, добилась серьезных успехов при создании API-интерфейса для медицинского оборудования.

 

 

Их детище, названное Reality Lab, эффективно выполняло задачи связанные с САПР и 3D визуализацией. Майкрософт вовремя купил эту компанию, и теперь ее основатели, представляющие наибольшую интеллектуальную ценность, уже трудились над графическим движком для Виндовс 95. А уже в июне 1996 появилась первая DirectX версии 2.0, имевшая в своей комплектации первый полноценный Direct3D 2.0.

 

Прогресс технологий 3Д визуализации

Естественно, что прогресс не стоял на месте, конструкторы компьютерного железа предлагали новые решения, постоянно наращивая мощность, быстродействие, количество процессорных ядер и объемы памяти. Вслед за ними стремились и программисты, оптимизирующие и совершенствующие Direct3D.

Дальше я кратко представлю эволюцию D3D:

  • Версия 3.0 появилась спустя 116 дней после премьеры Direct3D;
  • четвертая версия ничем существенным не порадовала и даже была отменена.
  • новинка 5.0 отличилась тем, что было введено разделение на два режима Immediate (непосредственный) и Retained (сохраненный). Они требуют отдельного внимания, и я уделю его позже.
  • в 1998 отметился прорывом в технологиях компьютерного железа и D3D 6.0 обеспечил взаимодействие с ним;
  • 7.0 предложил обновленный формат .dds и задействовал аппаратную память для вершинных буферов;
  • Direct 3D 8.0 впервые показал возможности работы с шейдерами;
  • Директ 3Д 9.0 одна из самых стабильных версий, где работа с шейдерами получила максимум оптимизации и получила высокоуровневый язык описания процессов. И вообще здесь был ряд инновационных новинок для работы с 3D графикой;

  • множество вариаций 10-ой и 11-ой версий отличились постоянными доработками, связанными с выходом новых операционок, игровых консолей и более современного железа (обо всем и не напишешь);
  • самой актуальной на сегодня является Direct 3D 12.0. О ней я расскажу немного подробнее.

 

Direct 3D 12.0 – вершина технологии трехмерной графики

Двенадцатый Директ Х вместе с D3D 12 были представлены в 2015 году в качестве серьезной поддержки Windows 10. Поэтому разработчики реализовали в этом системном API все имеющиеся на тот момент возможности для создания 3D изображений:

  • оптимизация кода, функций и алгоритмов выразилась в существенном увеличении производительности;
  • новый подход к использованию многоядерных CPU и GPU и современных графических ускорителей;

  • видеокарты от разных производителей теперь получили возможность работы в совместном режиме;
  • снизился уровень аппаратного абстрагирования;
  • консервативная растеризация оптимизировала процесс определения столкновения и отсечения объектов;
  • в целом появился инструмент, позволяющий создавать сцены и эффекты высокой сложности

Обычно, новая Direct 3D, не слишком дружелюбна к старому железу. Но здесь разработчики постарались, чтобы обладатели старых видеокарт хоть в какой-то степени ощутили прелести 12-й версии. Это достигается за счет работы отдельно взятых функций и позволяет говорить о частичной поддержке D3D 12. Перечень GPU, поддерживаемых «двенадцаткой», выглядит так: Intel (Haswell, Broadwell, Skylake), Qualcomm, Nvidia GeForce и AMD Radeon. Понятно, что этой чести удостоились не все, а только самые последние и наиболее производительные представители. Не забыл Microsoft и о современных гаджетах. Теперь Direct 3D стала родной не только для ПК на Виндовс 10 и консоли Xbox One, но и для планшетов и смартфонов.

 

Как работает Direct 3D?

Как же работает Директ 3 D и за счет чего из набора данных образуется картинка виртуальной реальности. Для этого необходимо себе представить инструменты, находящиеся в распоряжении D3D и здесь я вернусь к его режимам.

Immediate Mode (непосредственный) отвечает за аппаратную поддержку, и позволяет разработчику минимально зависеть от используемого ПО. Так же в этом режиме графические примитивы реализуются, минуя буферы выполнения.

А уже за создание самой картинки отвечает сохраненный режим Retained Mode. С его помощью осуществляется программная обработка с помощью множество алгоритмов и методов обработки, среди которых:

  • Z- и W –буферизация;
  • буфер трафарета;
  • пространственное сглаживание;
  • смешивание цветов и текстур;
  • альфа-смешивание;
  • mipmapping;
  • отсечение и отбраковка;
  • перспективное текстурное картирование;
  • имитация атмосферных эффектов;
  • работа с программируемыми HLSL-шейдерами.

Помимо этого имеется и активная интеграция с другими элементами DirectX и технологиями. Некоторые вышеописанные «приемы» D3D могут использоваться на нескольких стадиях обработки. Давайте рассмотрим этот сложный вычислительный процесс создания картинки:

  • Чтобы описать объект в цифровом виде его сначала необходимо смоделировать. Делается это с помощью триангуляции – разбивки большой сложной поверхности на отдельные плоские треугольники. Координаты каждого их них можно описать математически, что в свою очередь позволяет применять к ним алгоритм пересчета местоположения при перемещении, деформации или разделении.

  • Дальше происходит текстурирование – на поверхность одевается «одежда», представляющая собой рисунок (заливку) с определенными свойствами. Она может иметь шероховатость, быть с определенной прозрачностью или зеркальностью (в стекле, например эти свойства совмещаются).
  • В сцене с готовыми моделями расставляется освещение, определяется яркость поверхностей. Так же здесь может учитываться видимость предметов с учетом их отдаленности.

  • Когда статическая комбинация готова в работу включаются программы имитирующие перемещение и взаимодействие объектов между собой, а так же с природными и прочими фантастическими силами.
  • Далее настает очень ответственный момент, когда вся объемная картинка как бы фотографируется и получается ее плоское изображение. Этот процесс называется рендеринг и сложность его заключается в том, что все происходит путем математического расчета лучей, идущих от каждого элемента (пикселя) трехмерной сцены. Вычисление производится для каждого кадра, и теперь вы должны понимать, какой мощностью должна обладать видеокарта, чтобы обработать 4K графику с частотой 60 fps. Многие игры поддерживают стерео режим, поэтому rendering производится сразу для двух рядом расположенных точек.

  • Кроме того в процессе рендеринга так же производится дополнительная обработка изображения – композитинг (делать это на данной стадии намного целесообразнее).

Готовые кадры отправляются в буфер видеопамяти, а оттуда, непрерывным цифровым потокам на экран, где мы воспринимаем их уже как красивый захватывающий сюжет.

Все, дорогие друзья.

Я с чувством выполненного долга заканчиваю свой рассказ о Direct3D и скажу вам по секрету, от проделанной работы меня самого распирает гордость.

Потому что в русскоязычном интернете такого подробного и понятного для простого человека материала о D3D еще не было. На этом я с вами прощаюсь, но только до новых встреч.

Всем удачи.

 

 

Этой статьей стоит поделиться
Получать новые статьи на свою почту

Оставить коментарий

:|:x:shock::oops::mrgreen::lol::idea::evil::cry::cool::arrow::???::?::!: