8800 над землей
Автор: Роман Косячков
Опубликовано в журнале "Домашний компьютер" №12 от 6 декабря 2006 года.
Джомолунгма (Chomolongma), Эверест, Сагарматха — высочайшая
вершина земного шара (8848 м).
Если помните, в своих колонках об операционной системе Windows Vista я
неоднократно упоминал некий DirectX 10-й версии, постоянно ссылаясь, что эта
тема отдельная и требует особого разговора. А разговор все откладывался и
откладывался… Причина тому — довольно проста. С одной стороны, DirectX 10
действительно способен весьма существенно изменить в лучшую сторону прежде всего
компьютерные игры1 (хотя и не только их); с другой стороны, те нововведения, что
несет в себе новая версия, весьма трудно поддаются описанию, как говорится, «на
пальцах». А иного формат «7000 знаков» не подразумевает. Но буквально на днях
один из ведущих видеочипмейкеров взял очередную «вершину», и далее тянуть с
рассказом о DirectX 10 стало просто неприличным… Так что начну, пожалуй. Как
водится, издалека.
DirectX — это интерфейс прикладного программирования (Application Programming
Interface, API), предоставляющий разработчикам приложений некую
стандартизированную совокупность команд (и сервисов), с помощью которых можно
программировать работу всевозможных устройств от разных производителей. Главное,
чтобы данное устройство поддерживалось DirectX, то есть имело соответствующие
драйверы. А ведь так было не всегда. До появления DirectX программистам
приходилось в коде своих приложений учитывать всю совокупность возможного
оборудования у пользователей. Грубо говоря, для каждой «железки», с некоторой
вероятностью установленной в ПК, писать свой участок кода, напрямую управляющий
ее работой. И такого оборудования (видео- и звуковых карт, клавиатур, мышей и
игровых манипуляторов и т. п.) становилось с каждым годом все больше и больше.
Но и это еще не все. Появление и широкое распространение Microsoft Windows 95
должно было еще более усложнить жизнь разработчикам софта. В отличие от MS-DOS,
бывшей в то время основной программной платформой, Windows 95 функционировала в
так называемом защищенном режиме работы процессора, что, конечно, значительно
увеличивало робастность2 операционной системы, однако и ограничивало возможности
программ по прямому управлению устройствами. В общем, заколдованный круг. И в
Microsoft придумали, как одним махом решить обе проблемы. Во-первых, всех
производителей соответствующего оборудования призвали (фактически, обязали)
писать для своих устройств DirectX-совместимые драйверы. Во-вторых,
разработчикам программ дали стандартизированный API DirectX, то есть новый
инструмент (фактически, язык), используя который, они отныне уже не забивали
себе голову вопросом, какие конкретно «железки» могут быть установлены в
компьютерах потенциальных пользователей, а писали свои программы для неких
идеальных DirectX-совместимых устройств, безотносительно тонкостей их конкретной
реализации. В общем, в августе 1995 года на рынке появилась ОС Windows 95, а уже
в октябре — и первый API DirectX, носивший изначально название Windows Game SDK.
Что недвусмысленно указывает на его назначение: в Microsoft очень хотели, чтобы
Windows 95 стала самой популярной игровой платформой, отняв это звание у
безнадежно устаревшей DOS.
С той поры довольно много воды утекло. DirectX дорос до версии 9.0с, и
большинство игр для ПК пишется с использованием этого API. Если вы на своем ПК
из командной строки Windows запустите программку dxdiag, то сможете увидеть, из
каких модулей состоит DirectX. Для последней версии это модули: Direct3D/DirectDraw,
отвечающий за отрисовку на экране 3D/2D-изображений; DirectSound, осуществляющий
взаимодействие между программами и звуковой подсистемой ПК; DirectMusic, в чьи
функции входит, в основном, воспроизведение музыкальных MIDI-файлов и
микширование всевозможных звуков; DirectInput, управляющий клавиатурами,
мышками, игровыми контроллерами и прочим; и, наконец, DirectPlay,
предназначенный преимущественно для поддержки сетевых игр. Все просто и изящно,
что тут можно существенно улучшить выпуском «десятки»? Попробуем разобраться…
Забавно, но все чаще убеждаюсь, что история имеет свойство повторяться. DirectX
в части Direct3D, наиболее востребованного модуля для современных игр, был
придуман, чтобы разработчик не задумывался над тем, какая видеокарта и с какими
возможностями работы с 3D стоит в компьютере пользователя. И даже будет ли
видеокарта вообще поддерживать 3D!3 Однако в последние годы подходы ведущих
производителей графических процессоров (прежде всего Intel4, NVIDIA и ATI) к
проектированию своих чипов настолько разошлись, что программистам вновь пришлось
для видео каждого производителя писать в своих приложениях отдельные ветки кода.
DirectX 10 призван в значительной степени разрулить эту ситуацию, так как
выдвигает значительно более определенные требования к «железу», то есть включает
в себя жесткие аппаратные спецификации. Более того, введены новые наборы
инструкций (High Level Shader Language — HLSL 10), по большому счету служащие
той же цели. Также в Microsoft серьезно переработали принципы отрисовки
3D-картинки, что привело к существенному снижению числа команд, требуемого для
формирования каждого кадра и, как следствие, к некоторому повышению
производительности. И, наконец, дали разработчикам игр новые возможности
программирования через унификацию архитектуры шейдеров5 и потоковый ввод-вывод.
Все это чрезвычайно интересные решения, но сегодня мы не будем углубляться в
технические дебри, оставив их «Тестлабу», а зададимся практическим вопросом:
когда мы сможем, как говорится, все это «пощупать»?
Ответ простой: уже сегодня. Или — почти сегодня. В начале ноября компания NVIDIA
объявила о начале выпуска новейшего графического процессора GeForce 8800GTX
(кодовое наименование G80). Его технические характеристики способны поразить
воображение неподготовленного юзера. Технологический процесс — 90 нм; 861
миллион вентилей на кристалле; 384-разрядная шина памяти; 128 скалярных
арифметико-логических устройств (ALU), разбитых на 8 блоков; 32 блока обработки
текстур; частота ядра — 575 МГц; объем памяти типа GDDR3 — 768 Мбайт. И,
наконец, главное — впервые реализована полная поддержка DirectX 10, в том числе
новой шейдерной модели (Shader Model 4), геометрических шейдеров, потоковой
обработки и прочего. Практически сразу большинство производителей видеокарт
анонсировало свои продукты на основе нового графического процессора. Стали
известны и цены: около 600 долларов за описанную выше топовую модель, и 450 за
GeForce 8800GTS, несколько урезанную по числу ALU (96 вместо 128) и тактовой
частоте (500 вместо 575 МГц) версию. Видеокарты весьма велики — 27 сантиметров в
длину, и имеют аж 2 разъема на борту для подключения внешнего питания. И не
мудрено — при серьезной нагрузке видеокарта на основе GeForce 8800GTX потребляет
более 300 Вт, так что потребуется установить в ПК, как минимум, полукиловаттный
блок питания. И ради чего это все? Как у новинки с производительностью? Да,
очень неплохо. В среднем NVIDIA GeForce 8800GTX производительнее предыдущего
лидера ATI X1950XTX на 20–30 процентов, а на высоких разрешениях в некоторых
играх разрыв в пользу новинки доходит до заоблачных полутора раз! Прямо-таки «эверест»
среди графических процессоров! Впрочем, ATI (точнее, теперь уже AMD) еще не
сказала своего слова, а ведь выпуск нового чипа R600 уже не за горами,
ориентировочно в феврале…
И напоследок про оговорку, что пощупать «десятку» можно почти сегодня. Здесь
объяснение такое: «железо» уже есть (GeForce 8800), но на момент написания этой
колонки DirectX 10 еще не был объявлен официально. Более того, корпоративная
версия Windows Vista 30 ноября вышла без поддержки этого API. По слухам, есть
некоторая вероятность, что мы увидим «десятку» в тех версиях «Висты», что
планируются к выпуску на начало следующего года. Так что придется немного
подождать, а пока… GeForce 8800 невероятно быстр и с текущей версией DirectX!
1 В чем можно убедиться, взглянув на обложку этого номера журнала.
2 Робастность — устойчивость к сбоям.
3 Direct3D способен выводить 3D-изображение на экран вообще без аппаратной
поддержки, только программными средствами. Правда, производительность такого
варианта будет катастрофически мала.
4 Да-да — и Intel! Не стоит забывать, что компания Intel благодаря
интегрированным решениям владеет почти 40 процентами всего рынка
видеоконтроллеров, а на NVIDIA и ATI приходится в среднем по 25.
5 Если упростить, то шейдер — программка (или функция), исполняемая не
центральным процессором, а специальным блоком видеокарты. Шейдеры бывают
вершинные и пиксельные, а с DirectX 10 — еще и геометрические.