Сила есть - а умище куда девать?

...Добрейший из монстров оскалил три ряда не менее добрых клыков. Вспышки пулеметных очередей отражались от блестящей белой эмали и играли разноцветными отблесками на тысячах чешуек... Так вот он какой - Quake 8 1/2. Впрочем, речь пойдет не о развитии игр в ближайшем будущем, а скорее, о развитии того, на чем они будут работать. Ибо ныне приличная графика невозможна без приличного 3D-ускорителя. А ускорители в последнее время растут над собой даже быстрее, чем процессоры по закону Мура. На данный момент мы имеем две заявки на звание акселератора очередного нового поколения - Savage 2000 от S3 и GeForce256 от nVidia. Оба гордо именуют себя GPU (Graphics Processing Unit) и грозятся перевернуть индустрию компьютерной графики. Какие же у них имеются для этого основания?

GeForce 256. Итак, это GPU - то бишь однокристальный процессор с интегрированными устройствами (engine) для расчета трансформаций (transform), освещения (lighting), обсчета треугольников (triangle setup) и рендеринга. Собственно говоря, интеграция первых двух шагов и является козырной фишкой Savage 2000 и GeForce256. Чтобы оценить серьезность данного шага, надо разобраться во всех подробностях создания трехмерного изображения. Первоначально трехмерная сцена представлена в так называемой системе "мировых" координат (то есть внутренней системе координат программы). Затем ее надо перевести (вот он, собственно, и transform engine) в систему координат, связанную с наблюдателем (то есть с камерой). Это необходимо для расчета освещения и эффектов, связанных с расстоянием до объектов (например, тумана). Второе преобразование - из системы наблюдателя в систему экранных координат - для вывода во фреймбуфер и далее на дисплей. Для каждого из этих преобразований необходимо производить операции перемножения четырехмерных матриц и векторов (три координаты соответствуют трем измерениям, а четвертая несет информацию о перспективе). Поскольку математика при этом применяется сугубо специфическая, а расчеты надо делать для каждой вершины объекта (а количеством вершин определяется реалистичность изображения), то задача в целом очень подходит для аппаратной оптимизации.

Далее наступает очередь lighting engine, которая рассчитывает векторы от источников света до объектов и от объектов до наблюдателя. Кроме того, lighting engine разделяет информацию о длине и направлении вектора для последующего использования на более поздних этапах 3D-конвейера. Для расчета в lighting engine используются операции, аналогичные transform engine. GeForce будет аппаратно поддерживать до 8 источников света. В GeForce transform и lighting выполнены отдельно, чтобы не снижать общей эффективности. По сути же устройство, обсчитывающее transform и lighting (они обычно так и пишутся - T&L), является математическим сопроцессором. Точнее, в силу специфической математики, геометрическим сопроцессором. В большинстве современных ускорителей (не считая отдельных и очень дорогих моделей для графических станций) T&L на аппаратном уровне не реализовывались. Эти операции выполнял центральный процессор, скармливая ускорителю готовые треугольники в виде информации о координатах вершин и их освещенности. Но мощности современных математических сопроцессоров явно недостаточно для обсчета количества треугольников, необходимого для фотореалистичной графики (и даже больше того, редкий процессор может обсчитать в секунду то количество треугольников, которое способен отрендерить и вывести на экран в нее же современный 3D-ускоритель). Вот поэтому монстры у нас бегают сплошь с квадратными головами, а машины ездят на восьмиугольных колесах. Переложив T&L на специализированный процессор, GeForce убивает сразу несколько зайцев: во-первых, позволяет сильно (на порядок, не меньше) увеличить сложность 3D-моделей, и, соответственно, реалистичность (что и было продемонстрировано на презентации чипа). Во-вторых, разгрузить процессор для обсчета рабочих алгоритмов (в случае игр - AI и физики). В-третьих, обеспечить более-менее постоянные 60 fps (то бишь, кадров в секунду) независимо (в разумных пределах) от скорости процессора.

Однако "железный" T&L - палка о двух концах, потому как какое железо к компьютеру не привинчивай, без соответствующего софта он его не поймет и не оценит. Прямой намек на полезность GeForce для существующих игр имеется в FAQ nVidia: единственная выгода от использования GeForce в современных играх - ускоренный вывод на экран в разрешениях 1024х768 и выше. То есть практически никакой. Поддержка аппаратного T&L имеется в OpenGL, однако эти функции большинством разработчиков не используются. Но nVidia, S3 (и, предположительно, 3Dfx) не стали бы делать геометрические сопроцессоры, не позаботившись об их поддержке. Тут на сцену выступает DirectX 7.0 производства Microsoft. Данный API (а точнее, Direct3D его часть) поддерживает аппаратный T&L. Кроме того, в нем имеется еще несколько новинок, поддержкой которых хвастается nVidia. Первая - и особенно широко разрекламированная - Cube Environment Mapping. Данная технология предназначена для создания правдоподобных отражений. Если говорить вкратце, то для отражающего объекта создается 6 карт текстур (достаточно больших, до 1kX1k пикселей), соответствующих сторонам куба, описанного вокруг объекта. Для комнаты, скажем, это будут изображения стен, пола и потолка. Теперь текстуры накладываются на объект, и отражения готовы. Эффект получается намного реалистичнее, чем от используемого сейчас метода сферической карты (то же самое, только с проекцией на сферу). И вычислений при этом требуется значительно меньше. К тому же обсчет Cube Environment Mapping в GeForce тоже аппаратно оптимизирован. В результате имеем достаточно правдоподобно изображенные отражающие поверхности и массу эффектов, связанных с отражениями (простейший - правильные блики). Еще одна интересная особенность DirectX 7 - Vertex Blending. Эта технология позволяет сглаживать переходы между трехмерными объектами, что позволит получить более реалистичные картинки.

Но мы несколько отдалились от 3D-конвейера. Следующей после T&L идет Triangle setup\clipping engine. Она представляет собой устройство для вычислений с плавающей запятой, получающее от предыдущего шага информацию о вершинах полигонов и передающее необходимые данные в Rendering engine. Надо сказать, что в первых 3D-ускорителях этот шаг выполнял центральный процессор, однако потом Setup был реализован в ускорителях аппаратно. После Setup наступает завершающая стадия - Rendering - то есть вывод на экран отдельных треугольников и их заполнение пикселами текстур. После чего мы имеем сформированное изображение. В GeForce применена технология, позволяющая одновременно обсчитывать и выводить 4 пиксела за такт (явное развитие идеи TwinTexel Engine из Riva TNT). Результатом работы платы является вывод 15 миллионов треугольников или 480 миллионов пикселов в секунду.

 

Но это еще не все технические подробности, собственно говоря, подробности как раз только начинаются. В GeForce256 (как и следует из названия) применена 256-разрядная внутренняя шина и 256-разрядный Rendering engine. Далее будет поддерживаться до 128 Мб локальной памяти. Плюс к этому - поддержка всех пяти способов сжатия текстур из DirectX 6 - и количество одновременно используемых текстур резко уходит в заоблачные дали. Поддерживается также и модный нынче Bump Mapping (технология, позволяющая получать видимость объемного изображения при помощи наложения дополнительных текстур) в лице однопроходного эффекта emboss (чеканка) и dot-product bump mapping. 350-мегагерцовый RAMDAC позволит получать картинку с разрешением до 2048x1536 при частоте смены кадров 75 Гц. Еще одна разрекламированная новинка GeForce256 - поддержка шины 4x AGP в режиме Fast Writes (то есть, быстрая запись). Данный режим позволяет процессору пересылать данные по системной шине непосредственно AGP-устройству. В стандартном AGP данные сперва будут записаны процессором в оперативную память, а затем считаны оттуда AGP-устройством. В общем то, использование Fast Writes должно ускорить обмен данными с процессором, но, как обычно, есть одна деталь. Пока что не существует чипсетов, поддерживающих Fast Writes. Ближайшая его инкарнация намечена в многострадальном Intel'овском чипсете i820 (Camino). Так что nVidia сама разрабатывала контроллер AGP 4х с Fasr Writes (на основе спецификации AGP 2.0) и затем испытывала на нем GeForce. Сертификация от Intel была получена, но работа с реальным железом - другое дело. Кстати, GeForce содержит 23 миллиона транзисторов, что будет поболе, чем в Pentium III. В то же время nVidia заявляет, что отпускаться OEM'ам (то есть производителям) чипы будут примерно по $50. Интересно, какой нужен коэффициент выхода готовых схем, чтобы окупить затраты?

В общем, пока в истории GeForce еще хватает загадок - во многом благодаря рекламной политике nVidia, радостно вещающей, что "наш первый в мире GPU первым в мире будет рисовать лучшее в мире изображение почти даром". Честно сказать, скриншоты с презентации впечатляют. И интеграция T&L имеет большой потенциал. Но пока не появятся конкретные платы и результаты их тестирования, ничего определенного сказать будет нельзя. А тестировать будет на чем, благо, разработчики игр уже вплотную взялись за DX 7.

Константин АФАНАСЬЕВ,
AKG_Monster@usa.net

Версия для печатиВерсия для печати

Номер: 

37 за 1999 год

Рубрика: 

Hardware
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!