<< Главная страница

Windows - DirectX 10

DirectX занимает важное место в архитектуре Windows. Этот набор системных компонентов отвечает за все мультимедийные задачи в системе: видео, звук, графику. Мы расскажем об интересных новинках и изменениях в десятой версии Direct3D – компонента, ответственного за трехмерную графику. Тем более что в Microsoft Vista на его плечи легла визуализация графического интерфейса операционной системы – Aero.

На самом деле мы были бы рады познакомить читателей с новыми возможностями всех компонентов DirectX, если бы... таковые имели место. В этот раз впервые значительным, даже кардинальным изменениям подвергся только Direct3D. Прочие крупные компоненты (а из актуальных их теперь лишь два: DirectInput и DirectSound) остались без изменений, еще несколько уже довольно давно считаются устаревшими (DirectDraw, DirectMusic и DirectPlay) либо предназначенными для мультимедийных, а не игровых задач (DirectShow).

Хотя такой компонент, как Direct3D (D3D), адресован разработчикам ПО и игр и обычные пользователи напрямую с ним не работают, знать о нем им не помешает. Ведь каждая новая версия D3D устанавливает некую планку технических возможностей, которые должен поддерживать 3D-акселератор аппаратно (т. е. без эмуляции видеодрайвером), чтобы называться совместимым с ней, – и эта информация поможет в выборе модели видеокарты. К тому же по поддержке той или иной игрой определенной версии Direct3D можно примерно судить о техническом потенциале графического движка игры, по крайней мере на переходном этапе между версиями (т. е. в ближайшие год-полтора), так как в первую очередь новую версию D3D стараются поддержать наиболее технологичные и современные проекты. И наконец, та или иная игра делается в расчете на определенную минимальную версию Direct3D и без поддержки ее системой (ОС и видеокартой) просто не запустится – это может послужить толчком к апгрейду либо уберечь от покупки несовместимой игры для старого компьютера.

Crysis

Direct3D 10 стал первым крупным обновлением данного API за последние четыре года – со времен появления D3D 9.0 в 2002 г. И это первый случай, когда его новая версия поддерживается только самой последней операционной системой Microsoft Vista. Поддержка D3D10 в Windows XP официально не планируется, к тому же она трудно осуществима технически. Причина кроется в значительном изменении архитектуры дисплейного драйвера, т. е. уходе от принципа его совместимости с прошлым семейством Windows NT 5.x (Windows 2000, XP, 2003 Server). Новая архитектура называется WDDM (Windows Display Driver Model), и переход на нее во многом вызван появлением нового графического интерфейса в Vista – Aero, базирующегося на Direct3D и в немалой степени «нагружающего» 3D-акселератор. Aero не использует для рендеринга GUI старый двумерный GDI API, применявшийся в Windows для этих целей еще с первых версий, и при использовании которого перерисовываются только части экрана, изменившиеся или «затертые» другими окнами, например, при их перемещении. Многие эффекты Aero являются динамическими и истинно трехмерными, что GDI не под силу. В Aero пересмотрена сама концепция рендеринга интерфейса программ: вместо непосредственного рисования на экране происходит сборка изображения из отдельных частей с применением эффектов на лету, несколько раз в секунду, как это осуществляется в играх. В свою очередь рендеринг трехмерного изображения параллельно несколькими программами, а также самой ОС без возникновения задержек требует лучшего управления его ресурсами, что и достигается с помощью WDDM-совместимых драйверов.

От общеархитектурных изменений в Vista для поддержки D3D10 перейдем к новым возможностям этого API и акселераторов, аппаратно совместимых с ним. На диаграмме изображена общая схема 3D-конвейера в Direct3D, округлые блоки являются гибко программируемыми с помощью шейдеров, прямоугольные же по-прежнему управляются путем установки набора состояний, задающих режим их работы. Уделим внимание новым этапам конвейера.

Direct3D 9
Direct3D 10
Схемы конвейера рендеринга Direct3D 9 и Direct3D 10

Input Assembler (IA) предназначен для задания набора входных данных, размещенных в видеопамяти, для использования их последующими этапами конвейера и интерпретации нужным образом. Следующий за ним этап вершинного шейдера (vertex shader, VS) не претерпел особых изменений по сравнению с прошлой версией и служит для трансформации информации отдельных вершин-точек 3D-объектов, изменяя такие их параметры, как координаты или освещенность.

Одним из самых интересных и наиболее мощных нововведений D3D10 являются геометрические шейдеры (geometry shader, GS). Вершинные шейдеры ничего не знают о связях отдельных вершин объекта, над которым работают, т. е. геометрической топологии объекта, и не могут вмешиваться в эти связи, добавляя или удаляя вершины. В отличие от них геометрические шейдеры работают уже с целыми примитивами (точка, линия либо треугольник) и их связями с соседними примитивами, но главное – могут более произвольно с ними обращаться, генерируя на выходе новые примитивы на лету в любом количестве либо пропуская ненужные, в зависимости от входных данных и своего алгоритма. Такие богатые возможности в обращении с геометрией позволяют перенести полностью на GPU многие вещи, которые ранее делались частично под управлением CPU, что снижало скорость параллельной работы процессора и видеокарты за счет частых блокировок 3D-ресурсов для произведения операций над ними на CPU. К примеру, стало возможным полностью перенести на GPU системы частиц, расчет теневых объемов для ряда алгоритмов динамических теней, реализовать наконец честный displacement mapping, некоторые прогрессивные техники motion blur, визуальные эффекты (мех, волосы, растительность), однопроходное создание кубических карт отражения (cubemap).

Стадия геометрического шейдера в 3D-конвейере является опциональной и расположена между этапами вершинного шейдера и растеризации. Кроме того, как видно из схемы, выход геометрического шейдера может быть отправлен и просто в буфер памяти, а затем повторно подан на вход конвейера в произвольный момент, даже на другом кадре. Это позволяет, к примеру, однократно вычислить скелетную анимацию или морфинг для очень сложной модели, сохранить результат операции в видеопамяти, после чего многократно подавать ее на рендеринг на том же или последующих кадрах, реализуя таким образом новый метод инстансинга (instansing) объектов.

Все прочие стадии конвейера не являются чем-то новым: растеризатор преобразует трехмерную сцену в двумерное изображение с учетом перспективы и вызывает пиксельный шейдер (pixel shader, PS) для расчета цвета и Z-глубины каждого пиксела. После чего на последнем этапе сборки и вывода производятся окончательные проверки на глубину (Z test) и соответствие буферу шаблонов (stencil test, может применяться для самых разных алгоритмов, чаще для теней и отражений), в случае успеха результат пиксела сохраняется в буфер кадра или текстуру (render target).

Crysis

В Direct3D 10 используется очередное поколение шейдеров – Shader Model 4.0 (SM 4.0). Среди новых возможностей: целочисленные и побитовые команды для лучшего управления логикой шейдера, снятие ограничений на количество инструкций в шейдере, увеличение лимитов на количество используемых шейдером текстур. Разработчики отказались и от поддержки низкоуровневого ассемблерного языка программирования шейдеров, теперь все шейдеры должны быть написаны на высокоуровневом языке HLSL. Сама функциональность HLSL в четвертой версии разбита на некую базовую, которую поддерживают все три типа шейдеров (VS, GS и PS), и специфическую для каждого из них. Легко видно, что такие изменения, как введение третьего типа шейдеров и унификация их базовой функциональности, лишний раз послужили толчком к переходу в новом D3D10-совместимом поколении акселераторов к унификации архитектуры GPU, когда в зависимости от нагрузки на ту или иную часть 3D-конвейера отдельные вычислительные блоки GPU временно берут на себя функции по работе над одним из трех типов шейдеров. И хотя подобная архитектура GPU не является непременным требованием со стороны спецификаций Direct3D, она оказалась вовремя поддержанной как NVIDIA в GeForce 8 series, так и AMD/ATI в еще не вышедшем R600.

В SM 4.0 было уделено особое внимание передаче константных данных в код шейдера. Через них в шейдер передавались самые разные наборы данных, например о костях модели для скелетной анимации, информация об источниках света, позиции, повороте и масштабе модели. Ранее у каждого шейдера имелся один довольно небольшой блок константных данных, его приходилось часто менять, иногда перед каждым вызовом рендеринга, постоянно перекачивая весь блок между системной и видеопамятью. В SM 4.0 константные данные разбиты на наборы, которыми можно управлять независимо и подключать к шейдеру до 16 таких наборов. Подобный подход дает немалый выигрыш в производительности, поскольку разные наборы констант можно обновлять независимо и с разной частотой. Некоторые загружаются в видеопамять единожды, сразу после загрузки уровня (например, список статических источников света), другие будут изменяться лишь один раз за кадр (положение и параметры динамических источников света в сцене), а третьи – с каждым выводимым объектом (позиция, ориентация, анимационные данные).

Alan Wake

Кроме того, в десятой версии наконец ликвидированы пережитки, которые оставались еще с шестой-седьмой версии. Так, произошел окончательный отказ от механизмов Fixed Function Pipeline (FFP) – конвейера с фиксированной функциональностью, методики рендеринга «дошейдерной» эпохи. Это был большой набор состояний, флагов и функций для их установки, который и так уже долгое время в новых акселераторах эмулировался с помощью шейдеров и существенно «раздувал» как код видеодрайвера, так и саму библиотеку Direct3D. Под нож пошла и «развесистая» система опроса драйвера видеокарты через сам D3D о возможностях и ограничениях аппаратуры – capabilities (или кратко – caps). Зачастую данные, полученные подобным образом, были неполны или просто неверны. Разработчикам также приходилось нередко использовать всевозможные «хаки» как для отдельных поколений графически чипов, так и для некоторых особенностей архитектур видеокарт ATI и NVIDIA. Microsoft пытается в очередной раз привести все к единому, поддерживаемому всеми стандарту, и видеокарты, которые хотят называться D3D10-совместимыми, должны попросту поддерживать все возможности, оговоренные в документации на Direct3D от и до, без отклонений в сторону меньшей функциональности. Были исключены медленные вызовы рендеринга объектов из системной памяти (DrawPrimitiveUp), как и весь механизм работы с пулами памяти. На практике даже в играх топ-компаний часто злоупотребляли этими возможностями, что сильно снижало производительность. Теперь все ресурсы должны быть явно размещены в видеопамяти перед использованием. Исчезла давно критикуемая концепция «потери и восстановления устройства» (device lost & restore) – к такому состоянию Direct3D приходил после нажатия Alt+Tab , Win+L (блокировка сессии) или Alt+Enter (переключение между полноэкранным и оконным режимами). При возникновении подобной ситуации игра должна была освободить все занятые ею ресурсы Direct3D, произвести сброс устройства, затем пересоздать эти ресурсы заново. Что происходило, во-первых, медленно, во-вторых, код обработки описанной ситуации (иногда достаточно сложный) был рассредоточен по всему графическому движку, и в случае допущенной где-то ошибки игра просто «падала» после Alt+Tab . С такой проблемой, наверное, сталкивался каждый. Сейчас из Direct3D выделен отдельный модуль под названием DXGI (DirectX Graphics Infrastructure), который отвечает за общие вопросы управления 3D-адаптерами, дисплеями и экранными режимами, гаммой, презентацией финального изображения, а также обработку ситуаций переключения режима пользователем по Alt+Enter . И наконец, за счет избавления от всех устаревших возможностей, а значит, облегчения Direct3D runtime, вместе с переносом многих проверок правильности данных с этапа рендеринга на этап создания ресурсов, были облегчены многие вызовы Direct3D, т. е. теперь можно выводить на экран больше объектов в каждом кадре при прежней производительности.

Итак, мы видим, что Microsoft учла многие недостатки и ограничения прошлых поколений своего 3D API и постаралась их исправить, зачастую путем простого отказа от накопленного «балласта». Особое внимание было уделено повышению гибкости программирования 3D-конвейера, перспективе обеспечения еще большего параллелизма между CPU и GPU, снижению объемов передаваемых в видеокарту данных, улучшению менеджмента ее ресурсов. Добавление некоторых возможностей, таких как геометрические шейдеры, открывает путь к реализации многих систем и алгоритмов полностью на GPU (системы частиц, displacement mapping). Хотя ничто не дается даром – Direct3D 10 будет работать только с Vista и только с новым поколением ускорителей. Для всего остального придется использовать девятую версию.

Сейчас на рынке уже имеется одна линейка акселераторов с поддержкой Direct3D 10 – NVIDIA GeForce 8800, финальная версия DirectX SDK вышла в декабре, а вот финальную версию D3D10-совместимых драйверов под этот акселератор можно будет увидеть лишь в январе 2007 г., когда в розничной продаже появится Microsoft Windows Vista. В скором времени стоит ожидать как младшие модели в этой линейке ускорителей от NVIDIA, так и конкурирующий продукт от ATI, имеющий пока кодовое название R600 (поступит в I квартале 2007). По-видимому, первые игры с движками, поддерживающими новый API, начнут выходить к весне-лету 2007 г.; вероятно, ими станут Crysis от Crytek или игры на Unreal Engine 3.0 (Unreal Tournament 2007). Впрочем, оба эти движка также поддерживают и DirectX 9.0c, да и полный переход на новую версию API с отказом от поддержки предыдущей произойдет не раньше чем через полтора-два года, когда текущее поколение акселераторов окончательно устареет.

Даты выхода различных версий DirectX

Версия DirectX Операционная система Дата выпуска
DirectX 1.0 Windows 95a 30 сентября 1995
DirectX 2.0/2.0a Windows 95 OSR2 и NT 4.0 5 июня 1996
DirectX 3.0/3.0a Windows NT 4.0 SP3 (последняя версия с поддержкой DirectX для Windows NT 4.0) 15 сентября 1996
DirectX 4.0
DirectX 5.0 Была доступна в бета-версии под Windows NT 5.0, инсталлировалась под Windows NT 4.0 16 июля 1997
DirectX 5.1 Windows 95/98/NT 4.0 1 декабря 1997
DirectX 5.2 Windows 95 5 мая 1998
DirectX 6.0 Windows 98/NT 4.0 7 августа 1998
DirectX 6.1 Windows 95/98/98SE 3 февраля 1999
DirectX 7.0 Windows 95/98/98SE/2000 22 сентября 1999
DirectX 7.0a Windows 95/98/98SE/2000 1999
DirectX 7.1 Windows 95/98/98SE/Mе/2000 16 сентября 1999
DirectX 8.0 Windows 95/98/98SE/Mе/2000 30 сентября 2000
DirectX 8.0 Xbox 3 ноября 2000
DirectX 8.0a Последний вариант под Windows 95 7 ноября 2000
DirectX 8.1 Windows 98/98SE/Mе/2000/XP 12 ноября 2001
DirectX 9.0 Windows Server 2003 19 декабря 2002
DirectX 9.0a Windows 98/98SE/Mе/2000/XP 26 марта 2003
DirectX 9.0b RC2 13 августа 2003
DirectX 9.0c Windows XP SP2, Windows Server 2003 SP1, Xbox 360 13 декабря 2004
DirectX 9.0c Совместимые с DX9.0c версии Windows, впервые включены D3DX DLL 9 декабря 2005
DirectX 9.0c (Shader Model 3.0) Windows XP Последнее обновление с поддержкой Windows 98/98SE/Mе/2000 – в августе 2005 Версии декабря 2005 и февраля 2006 – с поддержкой формата XML для некоторых классов Ежемесячные обновления с августа 2005
DirectX 9.0L DirectX 9 API – только для Windows Vista
DirectX 10.0 Новая версия DirectX – только для Windows Vista

DirectX 10 – десятый шаг навстречу виртуальному миру

В данной Теме недели мы решили затронуть и такую серьезную проблему, как новый API, разработанный компанией Microsoft. Почему лишь затронуть? Дело в том, что DirectX 10 – это не надстройка предшествующей версии, а практически заново созданная «среда существования» графической подсистемы в новой ОС Windows Vista, и даже для поверхностного описания принципов ее работы потребуется объем, намного превосходящий наш журнал. Но, как говорится, и большой путь начинается с маленького шага.

Разумеется основные моменты, касающиеся функционирования DirectХ 10 (для простоты под DirectХ 10 мы подразумеваем самую важную его составляющую Direct3D 10) и отличий от девятой версии, в большей части интересны программистам, так как для обычного пользователя вся взаимосвязь с данным API, как правило, заканчивается настройкой вкладки с одноименным названием в меню драйвера. Тем не менее есть несколько моментов, которыми нам хотелось бы поделиться с читателями.


DirectХ 10 только в Windows Vista

Возможно, эта новость кому-то покажется порядком устаревшей, но начинать описание данного API, думаем, стоит именно с нее. Действительно, Microsoft не будет обеспечивать совместимость нового API с предыдущими версиями своей ОС. Причем в официальном заявлении компании отказ от поддержки DirectХ 10 в Windows XP звучит как невозможность обеспечения полноценной функциональности из-за устаревшего подхода к использованию драйверов и управлению аппаратными ресурсами графической подсистемы. Может возникнуть резонный вопрос: «Каково соотношение технических и маркетинговых предпосылок к такому заявлению?» Однако это не тема нашего сегодняшнего материала.

Как бы там ни было, в новой ОС управление всеми аппаратными ресурсами действительно более виртуализировано, в том числе драйверная часть расслоена на две составляющие – низкий (поддержка аппаратных ресурсов на уровне ядра ОС) и пользовательский уровень (по сути, интерфейс для конфигурации).

Необходимые нововведения – графический чип с поддержкой нового API в обязательном порядке должен быть мультизадачным, а графическая память соответственно виртуализированной. Так, обращение любого приложения к аппаратным ресурсам графической карты теперь выполняется в четыре стадии – в отличие от трех в предыдущей версии ОС. Теперь любое обращение формируется через интерфейс Direct3D, затем на более низком уровне ядра проходит через виртуальный планировщик работы GPU и менеджер видеопамяти, а далее через низкоуровневый Kernel-Mode Driver (KMD) происходит общение уже с аппаратной частью.


Разделения на Direct3D 9 и Direct3D 10

Опять-таки в отличие от Windows XP в Vista будут применяться три графических конвейера. Старый DirectХ-конвейер, оставленный для сохранения совместимости с ПО, разработанным для предыдущей версии ОС, будет выполнять следующий набор действий: аппаратное ускорение видеоконтента вплоть до HDTV (разумеется, с поддержкой HDCP), обработку графики Direct3D 9 (через старую часть драйвера, написанную для XP) и трансформацию вызовов более старых версий Direct3D (5, 6, 7, 8) в код Direct3D 9 с соответствующей заменой стандартных (фиксированных) функций формирования и обработки 3D-объектов шейдером из набора SM 3.0.

Второй конвейер также стандартный – это ICD для обеспечения работоспособности OpenGL-приложений. И наконец, третий – тот самый Direct3D 10, который сможет работать только под Windows Vista и не имеет обратной совместимости с предыдущими API DirectX. На нем остановимся подробнее.


Новый конвейер Direct3D 10

Пожалуй, главное новшество, положенное в основу Direct3D 10, – максимальное недопущение «вольностей» со стороны производителей GPU из-за специфики структуры нового набора шейдеров SM 4.0. В результате многочисленные надстройки, придуманные производителями, теперь уйдут в прошлое. Вспомните чехарду с Direct3D 9, когда для соответствия спецификациям требовалась лишь поддержка SM 2.0, а уже сами разработчики за три года «додумали» столько, что версии 9.0с и 9.0а отличались такими «мелочами», как SM 3.0, HDR, новые типы фильтрации, использование геометрических шаблонов и т. д. И все это кардинальным образом смогло изменить реализм трехмерной графики. Однако отсутствие жесткой стандартизации на уровне API привело к тому, что многие возможности пришлось снова поддерживать на уровне приложений (читай – игр), а это вылилось в проблемы с совместимостью, потери производительности и др. Теперь только 100%-ное соответствие требованиям нового API позволит карте называться DirectX 10-совместимой, а выход за эти рамки станет бессмысленным. В результате получается, что по 3D-возможностям все новые видеокарты от ATI/AMD и NVIDIA, рассчитанные на Direct3D 10, будут архитектурно идентичными, разница лишь в быстродействии.

Полное избавление от фиксированных 3D-функций

Все принципы работы, заложенные в DirectX с версии 6 до 8,1, а именно: использование определенных (заранее обозначенных) функций формирования 3D-объектов, теперь уходят в прошлое. Так, начиная с DirectX 10 всем будут заведовать шейдеры.

Унификация типов шейдеров

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

Потоковый вывод

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

Унификация типов ресурсов

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

HLSL 10 (high level shader language)

Бурное развитие языка программирования шейдеров высокого уровня за последние два с половиной года для Direct3D и OpenGL 2.0 привело к практически полному отказу от использования ассемблера в описании шейдера. Рассказывать о преимуществах языка высокого уровня мы не станем. Самое главное, что HLSL не требует серьезных знаний в области машинного программирования, в то же время ПО, написанное на этом языке, гораздо легче поддается модернизации.

FX 10

Новая система создания 3D-эффектов, использующая синтаксис Direct3D 10. Основная задача, которую должен выполнять данный sub-API, – просчет сложных эффектов в реальном времени в 3D-сценах, для создания которых ранее применялась исключительно предварительная визуализация.

SM 4.0 (Shader Model)

Обратите внимание на таблицу: с использованием унифицированной модели шейдеров вдвое возрастает эффективность имеющихся в распоряжении ресурсов, так как больше нет разделения на вершинные и пиксельные типы данных. Но не стоит сбрасывать со счетов и количественные показатели, рост которых не может не впечатлять. Вряд ли будет преувеличением сказать, что возможности, доступные четвертому поколению шейдеров, на порядок превосходят заявленные в SM 3.0.


Подведение итогов
Пример реализации геометрических шейдеров и процедурной геометрии

В новых играх, начиная со II квартала 2007 г., нас ожидают очередные стандарты трехмерной графики. На основе таких современных технологий, как процедурная геометрия (Procedural Geometry), к примеру, можно создавать ландшафты с постепенно растущей растительностью, а с помощью систем объемных частиц (Volume Particles) – демонстрировать реалистичные дымовые эффекты (комбинированием систем частиц и расчета освещения с помощью трассировки лучей). В свою очередь, морфинг распределенных объектов (Sparse Morph Targets) – это предельно естественная мимика персонажей. А суть попиксельного замещающего текстурирования (Displacement Mapping) заключается в вытягивании призм из треугольников на поверхности объектов с последующим применением геометрического шейдера для генерации новой текстуры произвольной либо заданной формы с учетом угла обзора камеры. Все это позволит создавать такие игровые движки, реалистичность которых сможет поразить даже видавших виды скептиков. Однако бесплатно ничего не бывает – за подобные красоты пользователю придется платить, и причем весьма немало. Как нам кажется, выход во II квартале 2007 г. более дешевых версий видеокарт для DirectX 10 не исправит ситуацию (вспомните, как было с появлением первых бюджетных для DirectX 9). Современная графика для отрисовки в реальном времени требует все больше аппаратных ресурсов, и гибкость подходов в Direct3D 10 поможет скорее программистам в написании игр, чем пользователям в увеличении производительности.

Так что посоветовать можем только одно: чтобы увидеть все вышеописанное у себя на мониторе, но не в режиме пошаговой стратегии, экономьте средства для покупки GeForce 8800 GTX, а еще лучше – сразу двух.

Сравнительные характеристики спецификаций различных версий DirectX

Параметры DirectX 8.1 DirectX 9.0a DirectX 9.0c DirectX 10
Шейдерная модель SM 1.4 SM 2.0 SM 3.0 SM 4.0
Вершинные инструкции 128 256 512 64000
Пиксельные инструкции 4+8 32+64 512
Вершинные константы 96 256 256 16×4096
Пиксельные константы 8 32 224
Вершинные переменные 16 16 16 4096
Пиксельные переменные 2 12 32
Вершинные потоки 16 16 16 16
Пиксельные потоки 4+2 8+2 10 32
Вершинные текстуры - - 4 128
Пиксельные текстуры 8 16 16
Размер 2D-текстур 2000×2000 2000×2000 2000×2000 8000×8000

На главную
Комментарии
Войти
Регистрация