Компьютеры антивирусы медицина спорт Суббота, 23.11.2024, 11:40
Меню сайта

Кнопка сайта


Статистика





Каталог ссылок. Информационный портал - Старого.NET




Онлайн всего: 1
Гостей: 1
Пользователей: 0

Луганет





Украинских гривен курсы валют Прага
(RUB)//-//
Евро(EUR)//-//
Доллар США(USD)//-//
Форма входа

Главная » 2009 » Октябрь » 3 » DirectX 11: Раньше чем вы думаете
21:28
DirectX 11: Раньше чем вы думаете
Несмотря на то, что основное внимание на выставке Nvision 2008 было приковано к профессиональным игровым соревнованиям, стендам и интересным играм и приложениям, там также проходили и конференции профессиональных разработчиков. Здесь внимание слушателей было в основном приковано к унифицированной вычислительной архитектуре устройств CUDA (compute unified device architecture), технологии компании Nvidia по использованию графических процессоров GPU в массивных параллельных приложениях, впрочем, не остался без внимания и одночасовой обзор предстоящей графической технологии DirectX 11 (в частности Direct3D), который был дан представителем от Microsoft Кевом Гии (Kev Gee).  
В отведенное время Гии удалось довольно сжато рассказать о многом в будущей DirectX 11, но и это дало нам лучшее понимание того, чего же от нее стоит ожидать. В какой-то степени будущая графическая технология будет не столь радикальной, как DirectX 10, и, тем не менее, в нее будут внедрены некоторые важные возможности. Однако, со слов того же Гии, работа над DirectX 11 все еще продолжается, и поэтому некоторые описанные им же возможности могут отличаться от тех, что мы увидим в конечном релизе.
Построение на DirectX 10
Как, наверное, знают многие читатели, графическая технология DirectX 10 работает только с Windows Vista, и не обеспечивает обратной совместимости с Windows XP (в качестве причины этого Microsoft называет фундаментальные изменения в модели драйвера дисплея, выполненные в Vista). Однако будущая DirectX 11 будет работать как в Vista, так и в будущей операционной системе Windows 7 (что, вообще говоря, является рабочим ее названием и поэтому вполне еще может измениться). Связано это будет с тем, что модель драйвера дисплея, которая будет реализована в Windows 7, фундаментально будет схожей с той, что мы сейчас видим в Windows Vista, если не совершенно той же.
Так, давайте же взглянем на конвейер будущей DirectX 11. Как видно, в стандартный графический конвейер будут добавлены три новые стадии – так называемый Hull Shader, Tessellator и Domain Shader. Изменения коснутся и пиксельного шэйдера, что позволит включить так называемые вычислительные шэйдеры (Compute Shader), которые будут работать на общие компьютерные приложения. Мы опишем все это подробнее чуть позже.

Помимо новых стадий, DirectX 11 будет “настроен” и на полную поддержку многопотоковости (мультитридинга), поэтому DLL-библиотеки будущей графической технологии будут “порождать потоки”, подобно тому, как это уже делается на многоядерных и SMT-процессорах.
 Также в DirectX 11 будут добавлены некоторые новые форматы текстурного сжатия, которые будут обеспечивать лучшее качество изображения и поддерживать большой динамический диапазон (мы рассмотрим их подробнее чуть позже) и масса небольших функций, большинству из которых не потребуется новое оборудование. Среди таких функций будет поддержка двойной точности чисел с плавающей запятой (опциональная возможность, предназначенная для вычислительных шэйдеров), увеличение текстурных ограничений до 16K и увеличение верхнего лимита ресурса до 2ГБ. 
Вот теперь, давайте поговорим обо всем и поподробнее….

Аппаратная тесселяция

Одной из ключевых задач, стоящих перед разработчиками современных игр, является создание более сложных, детализованных и реалистичных героев с одновременным уменьшением времени на это создание. Ранее для увеличения детализации использовались методы треугольной сеточной тесселяции (тесселяция - процесс деления изображения на более мелкие формы, чаще всего на треугольники и четырёхугольники – прим. переводчика), которые обладали одним, но впрочем, значительным недостатком – повешенными требованиями к памяти и накопителям, что выливалось в различные проблемы пропускной способности, и в частности, в увеличение времени загрузки. Одновременным же решением всех этих проблем является использование для получения дополнительной детализации (сложности) героев специальных мощностей графических процессоров, что также можно назвать использованием аппаратной тесселяции. Поэтому поддержка последней и будет реализована в DirectX 11.

Надо сказать, что некоторые эксперты рассчитывали увидеть поддержку аппаратной тесселяции еще в DirectX 10, однако их ожиданиям тогда не суждено было сбыться. И, тем не менее, аппаратная тесселяция в полной мере будет внедрена в DX11, но, для своей работы она будет требовать именно оборудование DX 11. Так, в настоящее время AMD внедряет аппаратный тесселятор в свою серию графических процессоров AMD Radeon HD, однако, со слов Гии, это оборудование, разработанное под DX 10.1 и DX 10, не будет поддерживать тесселяцию DX11.

Дело в том, что внедренная в DX11 тесселяция будет более общей, нежели то встроенное решение, которое в настоящее время применяется в графических процессорах AMD (по существу аппаратура AMD использует туже тесселяционную единицу, что и в Xbox 360). Однако в тесселяции DX11 будет использоваться более расширенный подход, а не тот, который в настоящее время используется компанией AMD.

Работа же новых стадий DirectX 11 будет заключаться в следующем. На вход так называемого поверхностного шэйдера (hull shader) будут поступать контрольные точки для патча (это первое появление патчевых, “заплаточных” данных в DirectX). Данные же с выхода поверхностного шэйдера “скажут” тесселятору насколько тесселировать. Тесселятор же, сам по себе являющийся фиксированной функциональной единицей, возьмет данные с выхода поверхностного шэйдера и сгенерирует добавочную геометрию. Далее зональный шэйдер (Domain Shader) из данных тесселяции подсчитает положения вершин и передаст их в геометрический шэйдер.

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

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

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

Compute Shader или вычислительный шэйдер

Компании Nvidia и AMD вот уже несколько лет выпускают графические процессоры общего назначения, также известные как GP-GPU (General purpose - Graphics Processing Unit). Так уже 8-ая серия графических процессоров от Nvidia в действительности обладала (и обладает!) аппаратными возможностями, позволяющими использовать мощность этих графических процессоров для решения общих компьютерных задач, т.е. для выступления в качестве “двигателей” общих компьютерных вычислений. Преимущества здесь очевидны – от использования высокопараллельных компьютерных “двигателей”, являющихся частью современных графических процессоров, вполне можно получить некоторую дополнительную производительность. Именно поэтому работы в этом направлении ведутся уже сейчас. Так, компания Apple уже работает с некоей группой Khronos Group над так называемым проектом OpenCL, который основывается на OpenGL и по своей сути является методом по использованию графических процессоров в общих компьютерных целях. У компании AMD есть аналогичный проект Stream SDK, поддерживающий эти возможности на оборудовании серии Radeon HD. Не отстает от всех и Nvidia, со своей технологией CUDA, для которой уже даже стали появляться приложения.

Большой вклад в эту область должна сделать и будущая графическая технология DirectX 11, в которую будет внедрен так называемый Compute Shader или попросту вычислительный шэйдер. Последний будет использовать ресурсы графического процессора для выполнения пост-процессинговой рутинной работы, типа эффектов размытия. Однако, для реализации подобных возможностей, требуется введение в высокоуровневый язык DirectX HLSL дополнительного синтаксиса и конструкций, впрочем, и результат от этой работы будет положительным – пользователям будет дана возможность получения из графического конвейера сгенерированных структур данных, которые большим образом будут подходить для общих компьютерных приложений.

В конечном же итоге появление DirectX 11 расширит уже существующий набор инструментов по поддержке общих вычислений на GPU, который в результате будет состоять из:
Nvidia проекта CUDA для операционных систем Windows, MacOS, и Linux, предназначенного для графических процессоров Nvidia GPU и CPU процессоров Intel (и возможно даже AMD); 
AMD проекта Stream SDK для операционных систем Windows и Linux, предназначенного для графических процессоров AMD GPU и CPU процессоров от этой же компании AMD; 
Проекта OpenCL для операционной системы MacOS (и возможно других ОС) и предназначенного как для графических процессоров от Nvidia, так и от AMD; 
Вычислительного шэйдера DirectX 11 для операционных систем Windows, предназначенного для графических процессоров Nvidia и ATI GPU и, предположительно, для CPU процессоров Intel и AMD. 

Таким образом, в отличие от проектов CUDA и Stream SDK, DirectX 11 позволит унифицировать в Windows вычисления на GP-GPU-оборудовании различных производителей. Ведь API, которые будут для этого использоваться, предположительно будут одними и теми же. 
Многопотоковость (multithreading)

Многопотоковость в настоящее время является довольно горячей и популярной темой. Этот термин уже прочно вошел в повседневную компьютерную жизнь, ведь все современные процессоры являются как минимум двух-ядерными, а такие компании-разработчики, как Intel и AMD, уже анонсировали и свои четырехядерные разработки (как, например Intel Q8300). 

То же самое можно сказать и о производителях видеокарт – и AMD и Nvidia уже обладают много-ядерными разработками и уже встраивают поддержку многопотоковости в свои драйвера. Тем не менее, большинство версий DirectX все еще являются однопотоковыми, впрочем, в DirectX 11 этот недостаток должен быть устранен. В частности будущая многопотоковость должна затронуть рендеринг, который в дальнейшем сможет распадаться на множество потоков, вроде прорисовки и состояния. Кроме того, поддержка многопотоковости должна будет включать асинхронную загрузку ресурсов, которая в действительности может происходить во время выполнения потоков рендеринга.

Для облегчения работы всего этого, устройства DirectX 11 будут “разбиваться” на три составляющие части - на непосредственно устройство, на ближайшее окружение и на отложенные интерфейсы окружения. Причем ближайшим окружением будет являться текущее устройство, использующееся для состояния и прорисовки, тем временем как отложенными окружениями будут по-потоковые окружения устройства, предназначенные для будущего рендеринга. Заметьте, что рендеринг в действительности также будет отложенным – это не тоже самое, что и прорисовка в так называемый back buffer и зеркальное отображение. Это скорее удержание каждым отложенным окружением списка дисплеев (вызовов прорисовки) готовым к рендерингу до подходящего момента.
Динамическое подключение шэйдера

В настоящее время, при необходимости вызова множества шэйдеров создается огромный, так называемый “uber” шэйдер, который содержит все необходимое для вызова какого угодно индивидуального шэйдера в конкретной ситуации. Однако такой шэйдер обладает одним значительным недостатком – трудностью своей отладки, как, впрочем, и не высокой эффективностью использования аппаратных ресурсов. Поэтому компания Microsoft хочет внедрить в язык HLSL такие объектно-ориентированные возможности, как интерфейсы и классы, которые дадут программистам возможность создания шэйдеров с поведением подпрограмм и загрузкой по мере необходимости.
Улучшенное сжатие текстур

Используемое в настоящее время в DirectX текстурное сжатие уже показывает свой совсем не маленький возраст. Часто изображения, получаемые в результате распаковывания и отображения множества текстур, кажутся “блочными”, даже если текстуры сами по себе высокого разрешения. Кроме того, в настоящее время в DirectX нет никакой поддержки сжатия текстур с высоким динамическим диапазоном.

Поэтому, в DirectX 11 будут внедрены два новых формата сжатия текстур - BC6 (иногда называемый BC6H) и BC7. Первый будет поддерживать HDR-текстуры (текстуры с высоким динамическим диапазоном) с потерей данных в отношении 6:1 (16 бит на канал) и будет обеспечивать высокое визуальное качество (хотя и совсем не без потерь). Второй же будет работать с LDR-форматами (текстуры с низким динамическим диапазоном) и может даже включать альфу. Он будет обеспечивать сжатие 3:1 для RBG или 4:1 для RGB+альфа и также обеспечивать очень высокое визуальное качество.

Что же касается будущего оборудования DirectX 11, то его аппаратная процедура распаковывания текстур должна будет соответствовать спецификациям DX11, чего пока нет ни в DX10, ни в более низких версиях графической технологии.
Поддержка оборудования DirectX 10

Почти все возможности новой графической технологии DirectX 11, за исключением аппаратной тесселяции, будут поддерживаться оборудованием DX10. Однако стоит учесть, что игры и приложения на оборудовании DX10 все же будут работать в режиме DX10. Впрочем, в отличие от DX10, которая работает только на DX10-оборудовании, некоторые возможности DX11 будут работать и на оборудовании для DX10.

Так, в частности, “будет работать” многопотоковость, хотя отложенные окружения будут реализовываться программно на уровне API, а не аппаратно, как это будет сделано на оборудовании DX11. Также будут работать и добавленные объектно-ориентированные возможности, хотя об их эффективности можно будет поспорить. Что же касается новых текстурных форматов сжатия, то их вполне можно реализовать и на драйверном уровне, даже если они будут медленнее, чем аппаратные. 
DirectX 11: Раньше, чем вы думаете

Если окончательную финальную версию DirectX11 мы увидим только с первой версией будущей операционной системы Windows 7, то первые обзорные версии ее API Microsoft собирается поставить уже в ноябре 2008 года. В это же время мы получим более полное представление о том, какие же возможности будет содержать новая графическая технология. Финальная же их картина появится только с выходом Windows 7, что по разным данным должно произойти или в конце 2009 или в начале 2010 года.


Взято с http://www.winline.ru

Просмотров: 1048 | Добавил: DankoIya | Теги: windows, MacOS, DirectX 11, Компании Nvidia, linux, Intel Q8300, microsoft, multithreading, Nvidia, Intel | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Октябрь 2009  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
262728293031




Друзья сайта
  • "Красота"
  • МСК "Лугор"
  • Северодонецк"
  • Поиск
    Пользовательского поиска




    Сними свой «Аватар»



    Как установить на один компьютер Windows Vista, XP и Linux?



    Доктор Веб нашел порнографию ВКонтакте