Новый 3D-акселератор Savage2000 от S3

Все мы с нетерпением ждем анонса новых графических чипсетов от NVIDIA и 3dfx. Еще бы, ведь нам обещают возможность воспроизведения на экранах наших компьютеров более реалистичной графики. Порой даже используется термин "фотореалистичная графика". С другой стороны, на рынке 3D-графики есть и другие сильные игроки, а также "темные лошадки". В своих статьях мы уже рассказывали о вероятном будущем рынка графических акселераторов. Там же мы высказывали предположение, что NVIDIA и 3dfx нет смысла торопиться с анонсами новых продуктов и технологий. Скорее, они выберут тактику выжидания. В этом смысле наши предположения оправдались. Первой компанией, которая официально объявила интегрированный 3D-графический чипсет нового поколения, стала S3, Inc. Для своего нового детища S3 выбрала имя Savage2000. Почему именно такое имя? Ну, во-первых, торговая марка Savage уже хорошо известна на рынке, во-вторых, 2000 — модная цифра, знаменующая новое тысячелетие. Можно, в принципе, высказать некоторые сомнения насчет оправданности выбора именно такого названия. Например, чипсеты Savage3D и Savage4 все-таки ориентированы на рынок недорогих решений. В то время, как Savage2000, об этом мы подробнее поговорим ниже, нацелен, как минимум, на потребителей со средним бюджетом, но с повышенными запросами к производительности и качеству 3D-акселераторов. Что касается цифры 2000, то она вполне банальна, и ничего нового в ней нет. В общем, маркетинговый отдел S3 особо не фантазировал, а может быть, они просто торопились. Ну что же, с названием разобрались, перейдем к вопросу о том, почему именно сегодня был анонсирован чип Savage4, а не, скажем, месяцем позже.

Еще пару недель назад про новый продукт от S3 было неизвестно почти ничего, за исключением неподтвержденных слухов. Так, если про GeForce 256 (кодовое имя NV10) от NVIDIA и про Napalm от 3dfx было и есть довольно много предположений, наряду с достоверной информацией, то про новый чип от S3, было известно очень мало. Так, была информация, что кодовое имя нового чипа — GX4, и что, возможно, в новый чип будет интегрирован геометрический акселератор, отвечающий за преобразование координат и расчет освещения. За неделю до официального пресс-релиза один из менеджеров S3 бросил фразу о том, что следует ждать анонсов новых продуктов типа GX4. Наступило 30 августа 1999 года, и в сети стали появляться материалы о новом чипе Savage2000 от S3. Почему S3 выбрала именно 30 августа, а не, скажем, 30 сентября? Все просто. Дело в том, что не так давно было объявлено о том, что S3 покупает хорошо известную на компьютерном рынке компанию Diamond Multimedia. Процесс покупки — довольно длительная процедура. Так вот, 20 сентября покупка должна была окончательно завершиться после одобрения сделки основными акционерами Diamond Multimedia. Понятно, что анонс нового продукта с многообещающими возможностями и сопутствующее этому повышенное внимание прессы, аналитиков и менеджеров компаний-партнеров (да и конкурентов) могут положительно сказаться как на общем имидже корпорации S3, так и на курсе ее акций. В общем, объявление нового чипа незадолго перед завершением серьезной сделки — это грамотный стратегический ход. Особенно в свете слухов о том, что далеко не все акционеры Diamond Multimedia одобряют сделку. Теперь же можно прогнозировать, что S3 благополучно купит Diamond Multimedia, а вместе с этим — хорошо развитую сеть продаж и поддержки, плюс технологические решения в области телекоммуникаций, мультимедиа и ряд хорошо раскрученных торговых марок. Более того, в качестве элемента логотипа марки Savage2000 использован стилизованный ограненный алмаз (иначе говоря, бриллиант, т.е. Diamond).

Далее, была и еще одна причина объявления о Savage2000 именно 30 августа. Дело в том, что на следующий день, 31 августа NVIDIA запланировала анонс своего нового продукта. Причем подготовлен этот анонс был основательно. Страсти нагнетались заблаговременно, и до последнего момента завеса тайны над тем, что же будет объявлено, тщательно соблюдалась. В результате, 31 августа 1999 года компания NVIDIA официально объявила о своем новом детище GeForce 256. Разумеется, вся информация о GPU, а именно так NVIDIA назвала свой новый интегрированный чипсет, была подготовлена заранее. Но S3 с анонсом Savage2000 несколько испортила праздник на улице NVIDIA. Судите сами, на сайте NVIDIA гордо написано, что GPU GeForce 256 является первым интегрированным решением для массового рынка, содержащим аппаратную реализацию блока T&L (Transformation and Lighting), иначе говоря, GeForce 256 имеет интегрированный геометрический акселератор. Но S3 анонсировала Savage2000, свой вариант GPU, также имеющий интегрированный геометрический акселератор, на сутки раньше. Так что приоритет все-таки на стороне S3. Данный материал посвящен чипу (или, если хотите, GPU) Savage2000, так как он был анонсирован раньше GeForce 256. Поэтому про GeForce 256 мы будем говорить лишь по мере необходимости. Немного позже мы обязательно посвятим GeForce 256 от NVIDIA отдельную статью.

Теперь вернемся к Savage2000 и посмотрим внимательно на то, что же предлагает нам S3 в этот раз.

Интегрированными чипами "все в одном" сегодня никого не удивишь, как, впрочем, и модификациями чипов, ориентированными на разные сегменты рынка. В данном вопросе S3 пошла проторенной дорогой, в чем нет ничего зазорного. Серия чипов Savage2000 представляет собой интегрированное 2D/3D/Video решение. Пока объявлено о двух вариантах чипа: Savage2000 и Savage2000+. Мы говорим "пока", так как история учит тому, что, в случае необходимости или неожиданных улучшений в технологии, могут появиться и новые модификации. Чип Savage2000 ориентирован на OEM-рынок, а чип Savage2000+ ориентирован на потребительский рынок. Разница между двумя версиями чипов состоит только в рабочих частотах графического ядра и шины памяти. Приведем мини-таблицу для наглядности:

 Savage2000Savage2000+
Интерфейс шины памяти128 бит128 бит
Ширина полосы пропускания памятиДо 2.6 Гб/секДо 3.2 Гб/сек
Рабочая частота шины памятиДо 166 МГцДо 200 МГц
Рабочая частота графического ядраДо 150 МГцДо 200 МГц
Скорость заполнения сцены (Fillrate)До 300 млн. пикселей в секДо 400 млн. пикселей в сек
Скорость текстурирования (2 текселя на пиксель за один такт)До 600 млн. текселей в секДо 800 млн. текселей в сек

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

Итак, давайте посмотрим на спецификацию Savage2000.

Общие характеристики:

  • Частота ядра: до 200 МГц
  • Частота работы шины памяти: до 200 МГц
  • Скорость обработки треугольников: предположительно 10-15 млн. треугольников в секунду
  • Разрядность шины памяти: 128-бит
  • Ширина полосы пропускания шины памяти: до 3.2 Гб/сек
  • Поддерживаемые типы памяти: модули 1Mx16, 2Mx32 или 4Mx16 типа SDRAM; модули 512Kx32 или 1Mx32 типа SGRAM (с поддержкой режима блочной записи)
  • Объем локальной видеопамяти: до 64 Мб
  • RAMDAC: интегрированный, частота 350 МГц с поддержкой коррекции гаммы
  • Поддерживаемые разрешения: вплоть до 2048x1536
  • Интерфейс внешней шины: полная поддержка AGP x2/x4 (включая SBA и DME) и PCI 2.2 (включая Bus mastering)
  • Поддерживаются спецификации: последовательная шина I2C и DDC; ACPI D0-D3 режимы и управление питанием PCI; 100% соответствие PC'99
  • Технологический процесс: 0.18 мкм
  • Число транзисторов: 12 млн.
  • Размер чипа: 31x31mm
  • Тип корпуса чипа: PBGA, 409 контактов

2D-часть:

  • 128-разрядное 2D-ядро
  • Поддержка акселерации BitBLT, закраски прямоугольников и полигонов, прорисовка линий, аппаратный курсор и масштабирование по горизонтали/вертикали
  • Работа с ускорением графике при 8-, 16- и 32-битном представлении глубины цвета

3D-часть:

  • Интегрированный геометрический процессор преобразования координат и установки освещения (S3TL)
  • Аппаратная установка 8 источников света по спецификации OpenGL для всей сцены
  • Геометрический движок, выполняющий операции над вещественными числами и занимающийся расположением полигонов в пространстве
  • Возможность равномерного распределения нагрузки по расчету геометрии между CPU и S3TL
  • Полная поддержка OpenGL и DX7
  • Непрервыная скорость при рендеринге 2 пикселей с одновременным наложением двух текстур на пиксель за такт
  • Однопроходный движок наложения четырех текстур (Single-pass Quad-Texture engine)
  • Программируемые режимы смешивания нескольких текстур
  • Аппаратная поддержка рельефного текстурирования (поддерживается только режим выдавливания)
  • Реализованная на аппаратном уровне поддержка технологии S3TC
  • Рендеринг при 32-битном представлении глубины цвета
  • Сглаживание полной сцены (Full scene anti-aliasing), работает по-разному, в зависимости от интерфейса (D3D или OGL) и в зависимости от конкретного приложения.
  • Однопроходная трилинейная фильтрация
  • Анизотропная фильтрация с частичной поддержкой на аппаратном уровне
  • Поддерживается 8-битный стенсель буфер
  • Поддерживается 16/24/32-битная Z-буферизация
  • Поддерживаются отраженный свет и размытые тени
  • Улучшенные режимы прозрачности и полупрозрачность (Enhanced alpha blending modes)
  • Наложение тумана по вершинам полигонов и попиксельно в определенных областях сцены
  • Поддержка текстур размером 2048х2048 текселей

Поддержка плоскопанельных мониторов:

  • Соответствие спецификации DVI
  • 12/24-битный цифровой интерфейс для подключения к кодерам плоскопанельных мониторов
  • Авторастяжение и центрирование для VGA текстовых и графических режимов
  • Поддерживаются разрешения вплоть до 1280x1024

Поддержка DVD/DTV:

  • Масштабирование изображения без потерь качества.
  • Преобразование данных из планарного формата в упакованный формат
  • Движок компенсации движения третьего поколения
  • Реализация на аппаратном уровне подсветки и режимов полупрозрачности для наложения субтитров
  • Поддержка мультиоконного видео для использования в видеоконференциях
  • Управление яркостью, насыщенностью, контрастностью цвета, тональностью цвета и цветовой гаммой с возможностью программирования
  • Обработка потоков (Streams Processor) с отображением в разрешениях вплоть до 1600x1200
  • Поддерживается VIP 2.0 видеопорта, обеспечивает поддержку всех разрешений HDTV
  • Цифровой порт для подключения NTSC/PAL TV-кодировщиков, обеспечивающий подключение без потерь данных
  • Режим деинтерлейсинга при отображении на мониторе интерлейсного изображения
  • Поддержка интерфейса Microsoft DirectDraw7 HVA
  • Множество конфигураций HDTV, поддерживаемых через DMA и захват управления шиной

Поддержка ОС, интерфейсов и программного обеспечения:

  • Драйверы для Windows 98/95
  • Драйверы для Windows NT 4.0 и Windows 2000
  • Драйверы для Windows 3.x и OS/2 3.0/4.0 (Warp )
  • Драйверы для Linux
  • Поддержка Direct3D, DirectDraw и DirectShow
  • Поддержка OpenGL ICD для Windows 9x и Windows NT
  • Исчерпывающий SDK, утилиты и инструментарий для независимых разработчиков программного обеспечения

Теперь рассмотрим подробно самые интересные детали. Про 2D-часть говорить не будем, ничего нового там придумать давно уже нельзя. Испортить можно, но у компании S3, как правило, проблем с 2D давно нет. Поэтому сразу перейдем к самому интересному. Начнем с архитектуры Savage2000.

Фактически, в Savage2000 впервые реализованы два ключевых архитектурных решения: Single-pass Quad-Texture engine и S3TL. Single-pass Quad-Texture engine — графический движок, позволяющий накладывать четыре текстуры, по две на один отображаемый пиксель, за один такт, и, более того, возможен режим работы, когда на один пиксель накладывается сразу четыре текстуры. Заметим, что возможность наложения на один пиксель четырех текстур за один такт пока не поддерживается в приложениях, но это, безусловно, хороший задел на будущее. Тут стоит заметить, что не исключено появление технологии, когда два конвейера осуществляют рендеринг в разных кадровых буферах, а затем их результаты совмещаются и выводятся на экран, не исключено, что речь может идти о технологии, аналогичной T-Buffer от 3dfx. Поживем — увидим. Все это означает, что в чипе Savage2000 реализовано два конвейера рендеринга с двумя блоками текстурирования в каждом, при этом поддерживается режим наложения на один пиксель до четырех текстур.

Для сравнения: сегодняшние лидеры рынка 3D-графики не имеют таких возможностей. Например, Riva TNT2 от NVIDIA имеет два конвейера рендеринга с одним блоком текстурирования в каждом, а Voodoo3 имеет один конвейер рендеринга с двумя блоками текстурирования. Двухконвейерная архитектура Savage2000 в паре с Single-pass Quad-Texture engine должна обеспечить высокую скорость заполнения сцены (fillrate) как в приложениях, использующих мультитекстурирование, так и в тех, которые не используют такую технику. Высокая скорость fillrate обеспечит большую скорость смены кадров (fps), что повысит играбельность в высоких разрешениях. В общем, есть все предпосылки к тому, что карты на Savage2000 будут очень быстрыми, по крайней мере, по сравнению с сегодняшними лидерами рынка.

Напомним, что карты на базе чипа Savage2000 могут иметь до 64 Мб локальной видеопамяти. Такой объем локальной памяти при высокой производительности чипа может обеспечить пользователю комфортную игру в разрешении 1600x1200 при 32-битной глубине представления цвета, 32-битной Z-буферизации, тройной буферизации и со свободным объемом локальной видеопамяти в 32 Мб, которую можно использовать для хранения текстур. Тут следует пояснить, что свободную локальную память можно использовать не просто для хранения текстур, а для кэширования текстур. В этом случае AGP-текстурирование также останется при деле. Из AGP-памяти будут подгружаться текстуры (гигантских размеров) для статичной геометрии сцены, а из текстурного кэша в локальной памяти будут подгружаться текстуры для динамичной геометрии. Заметим, что Savage2000 поддерживает, разумеется, технологию компрессии текстур S3TC, лицензированную Microsoft и включенную в состав D3D, и благодаря компрессии текстур в 32 Мб локальной памяти отведенной под их хранение (или кэширование) может поместиться 192 Мб (!) текстур. Очень уместно в данном контексте то, что в Savage2000 реализован полноценный 128-разрядный интерфейс локальной видеопамяти, а не тот хитрый, как у Savage4, который, на самом деле, является 64-разрядным.

При всех новшествах, в чипе Savage2000 не реализована аппаратная поддержка Environment Mapped Bump Mapping или Dot Produce Bump Mapping. Это несколько странно. Фактически, под словами Hardware Bump Mapping в спецификации подразумевается все тот же, малоинтересный метод выдавливания (Embossing Bump Mapping). А жаль. Вероятно, инженеры S3 очень спешили с завершением работ, либо в момент утверждения проекта нового чипа реализации прогрессивных техник рельефного текстурирования не придали значения.

Теперь плавно перейдем к сладкому. Но начнем с вопроса о качестве создаваемого изображения. Если оглянуться на Savage4, то практически бесспорным является тот факт, что, при всех недостатках (особенно в части скорости), карты на Savage4 обеспечивают очень качественное изображение в 3D, практически лучшее. Нет никаких предпосылок к тому, что карты на базе Savage2000 будут справляться со своей задачей хуже. При этом в чип Savage2000 интегрирован геометрический сопроцессор, названный S3TL (S3 Transformation & Lighting). Заметим, что поддержка специализированного геометрического сопроцессора на графических картах, рассчитанных на массовый рынок, — давно ожидаемая и горячо обсуждаемая в сети функция. В свое время мы публиковали статью на эту тему. Теперь мы можем обсудить первый официально объявленный 3D-графический чип с интегрированным геометрическим акселератором. Так как S3TL — это одна из самых интересных особенностей Savage2000, то мы уделим этому вопросу наибольшее внимание, тем более, что благодаря наличию геометрического сопроцессора нам обещают большую производительность, а главное — больший реализм и качество создаваемого изображения. Начнем мы с небольшого теоретического курса.

Что такое аппаратная реализация Transformation and Lighting (T&L)?

Процесс создания 3D-сцены на основе имеющихся данных (читай: создание 3D-мира) осуществляется двумя функциональными блоками. Первых функциональный блок называется "geometry engine" (геометрический движок), который осуществляет преобразование (transformations) 3D-координат отображаемого мира в 2D-координаты для вывода изображения на экран монитора. Такая операция необходима из-за того, что 3D-мир отображается на 2D-мониторе, поэтому нельзя напрямую использовать трехмерные координаты объектов. Второй функциональный блок называется "rasterization engine" (движок растеризации), который выполняет задачи по отображению теперь уже двумерного мира на экране монитора. Кроме преобразования 3D-координат в 2D-координаты, геометрический движок может быть задействован для генерации информации об источниках освещения отображаемой сцены — накапливая информацию об источниках света и вычисляя количество света, которое каждый источник света испускает на любую выбранную точку отображаемой сцены. В то время, как движок растеризации (включающий в себя конвейер 3D-рендеринга) является стандартной частью любой 3D-графической карты, рассчитанной на массовый рынок в течение уже нескольких лет, выполнение геометрических вычислений на аппаратном уровне можно было встретить до недавнего времени лишь в профессиональных 3D-акселераторах, рассчитанных на рынок рабочих станций. Чип Savage2000 является первым, официально объявленным 3D-графическим решением для массового рынка, в котором реализован интегрированный геометрический акселератор, выполняющий на аппаратном уровне операции T&L.

S3TL

В чип Savage2000 интегрирован геометрический акселератор, специально оптимизированный для прямого взаимодействия с движком растеризации. Такая интеграция должна способствовать обеспечению максимально возможной производительности при рендеринге 3D-сцены. Ниже представлена блок-схема чипа Savage2000:

Данные, на основе которых происходит рендеринг трехмерной сцены, могут приниматься напрямую от CPU или из AGP/локальной видеопамяти, что более эффективно, так как процесс не зависит от возможностей CPU, а все вычисления выполняются геометрическим процессором, встроенным в графический чип. А высвобождаемые ресурсы CPU могут быть использованы для других целей, например, для реализации более продвинутого искусственного интеллекта (AI), расчета физики моделируемого мира (сила тяготения, плотность воздуха, и т.д.) в играх. После того, как необходимые данные получены, они проходят через этап преобразования координат, когда исходные координаты объектов 3D-сцены (называемые координатами объектного пространства, "object space") преобразуются в координаты объектов (называемые координатами пространства отображения, "view space") , которые после рендеринга отображаются на экране монитора. В пространстве отображения каждая точка может быть освещена на основе хранящихся данных об освещении перед тем, как координаты точки будут преобразованы для правильного расположения относительно угла зрения пользователя, т.н. правильной точки наблюдения в пространстве, известном как зрительное пространство ("eye space"). Затем координаты объекта преобразуются в 2D-вид, т.е. в координаты экрана, и происходит коррекция расстояний, т.н. операция трансформации перспективы. Наконец, происходит вывод результирующих данных на экран монитора одновременно с удалением всех данных об объектах, которые не будут видны на экране, с целью избежать ненужной работы при последующем рендеринге. Операции по преобразованию координат и расчету освещения требуют очень мощных вычислительных ресурсов. Выполнять эти операции может CPU, а может специализированный геометрический процессор. Эти несколько этапов преобразования координат и расчета освещения реализуются в виде конвейера, а все вычисления выполняются блоком FPU, в результате получается аппаратная реализация T&L, которая получила имя S3TL. От производительности FPU, выполняющего все вычисления по преобразованию координат, напрямую зависит количество полигонов, используемых в процессе тесселяции, т.е. процесс представления неровных поверхностей серией треугольников. Чем мощнее FPU геометрического сопроцессора, тем большее число полигонов можно использовать для представления объекта, а значит, тем более реалистичным получается конечное изображение.

К сожалению, S3 не объявила о вычислительной мощности S3TL. Зато GPU GeForce 256 от NVIDIA позволяет обрабатывать до 15 млн. треугольников в секунду. Можно предположить, что S3TL имеет сравнимый потенциал.

Модель освещения OpenGL

Аппаратная реализация модели установки освещения от S3 базируется на OpenGL Lighting Model (которая практически полностью соответствует модели установки освещения Direct3D, за исключением небольших отличий, также поддерживаемой на аппаратном уровне в Savage2000). Существует множество параметров, используемых для управления каждым источником света индивидуально (S3TL поддерживает стандартные для OpenGL восемь источников света одновременно), но, в общем случае, OpenGL-источники света могут быть разделены на три основных типа: Directional lights, Point lights и Spot lights. Поговорим о типах источников света подробнее, тем более, что эта тема будет в фокусе внимания в ближайшие пару лет, как минимум.

Directional Lights

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

Point Lights

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

Spot Lights

Прожектор (Spot Lights) является самым сложным типом освещения, так как в этом случае добавляется возможность определения конуса, за пределами которого источник света не может светить. Этот тип источника света хорошо применим при моделировании освещения от поисковых фонарей на патрульных машинах, карманных фонариков, автомобильных фар или в любых других случаях, когда размеры освещаемой области должны быть четко контролируемыми. Установка прожекторного освещения требует наибольших вычислительных затрат для определения значения результирующего цвета и именно поэтому редко используется в случае традиционных программных методов расчета освещенности (за счет CPU). Даже при использовании аппаратного геометрического акселератора S3TL расчеты по установке прожекторного освещения снижают общую производительность, однако, потери в скорости будут небольшими, точно меньше, чем в два раза.

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

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

Более подробную информацию о моделировании освещения можно найти в текущей спецификации OpenGL.

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

Что дает использование S3TL?

Применение геометрического акселератора позволяет 3D-графическим картам отображать полную сцену на экране монитора при небольшом вмешательстве CPU или вообще без участия CPU, что в итоге может совершить, фактически, революцию в индустрии 3D-приложений. Вместо того, чтобы тратить от 50% до 95% ресурсов CPU на преобразование координат и передачу получившихся данных графическому процессору, статичная геометрия может быть рассчитана непосредственно в AGP или локальной видеопамяти, и полученные данные могут непосредственно передаваться в 3D-графический процессор с использованием широкой полосы пропускания. Кроме экономии вычислительных ресурсов CPU, такая технология существенно снижает трафик с системной памятью, что снижает нагрузку за счет отсутствия необходимости обращения к одной и той же памяти через AGP. Только если статичная геометрия (например, стены, пол, потолок лабиринтов на уровне игры) рассчитывается в AGP памяти, требования к ширине полосы пропускания системной памяти снижаются, как минимум, в два раза, в некоторых случаях — в четыре и более раз. И, наконец, скорость расчета динамической геометрии (например, перемещение монстров и игрока в игре) увеличивается на 40-50% за счет выполнения преобразовании координат геометрическим акселератором, без каких-либо улучшений в области ширины полосы пропускания памяти.

Это в особенности очень важно для разработчиков игр, которым крайне необходимы дополнительные ресурсы CPU для мощного, жадного до ресурсов центрального процессора искусственного интеллекта (AI, artificial intelligence) и реализации физических движков (подобные движки должны моделировать в игре реальные физические законы типа тяготения, инерции, магнитных полей и т.д.), которые как раз разрабатываются.

Зачем использовать S3TL для установки освещения, если есть возможность использовать освещение на основе текстур (карты освещенности)?

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

Карты освещения (light maps) отлично подходят для генерации статичного освещения, так как их можно создавать заранее, используя медлительные движки установки освещения типа radiosity, которые обеспечивают очень реалистичный результат, но за очень долгий промежуток времени. Radiosity — это графическая технология создания естественного освещения (включая непрямое освящение) на основе физической модели распространения света внутри сложной архитектурной среды. Эта техника позволяет точно вычислять пути распространения света и осуществлять полноцветную визуализацию сцены.

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

На иллюстрации ниже показан пример алиасинга (ошибка при визуализации) карты освещенности в Quake2.


Обратите внимание на неровную границу сферы освещения, создаваемую на полу от выстрела из ружья

Применение геометрического акселератора дает возможность легко и быстро рассчитать динамическое освещение во время процесса растеризации, а создаваемые эффекты динамического освещения могут быть добавлены к результату, получаемому при использовании карт освещенности стандартными конвейерами рендеринга с поддержкой мультитекстурирования. Формула для создания точного статичного освещения с использованием карт освещенности (в режиме мультитекстурирования) и с добавлением динамического освещения, рассчитываемого геометрическим акселератором, выглядит так:

({diffuse + lightmap} * base-texture) + specular

Вербально формула звучит так:

Цветовая компонента рассеиваемого света (diffuse) складывается с текселем карты освещенности (lightmap), и все это вместе накладывается на базовую текстуру (base-texture), после чего добавляется цвет компоненты отражаемого света (specular).

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

На иллюстрации ниже приведен пример использования карты освещенности в паре с динамически рассчитываемым рассеиваемым освещением.


Стена представляет собой поверхность с наложенной картой освещения. Яркие пятна света — это динамическое освещение, рассчитываемое для вертексов

Аппаратная реализация освещения по вертексам (вершинам полигонов) является первым шагом в сторону продвижения на массовый рынок 3D-графических ускорителей, которые поддерживают реализацию освещения для каждого пикселя (per-pixel lighting) на аппаратном уровне. Метод установки освещения для каждого пикселя (иногда ошибочно называемый методом Фонга) позволит добиться существенно лучших результатов по сравнению с традиционными техниками мультитекстурирования. Ввод для широкого применения аппаратной поддержки вертекс освещения (vertex lighting) позволит разработчикам создать прочную основу для приложений, поддерживающих аппаратную реализацию установки освещения. И сделать еще один шаг в сторону отображения фотореалистичной 3D-графики.

Что насчет мощных CPU со специальными наборами 3D-инструкций?

Появление технологий, специально оптимизированных для ускорения расчетов по преобразованию координат и установки освещения в виде специальных наборов от Intel (SSE) и AMD (3DNow!), значительно повысили возможности CPU (точнее, блока FPU) по обработке геометрических вычислений. Однако специализированный геометрический акселератор (фактически, FPU, расположенный на борту видеокарты) все равно имеет хорошее поле для деятельности. В самом типичном случае число тактов CPU, необходимых для генерации вертексов, сократится в 3-4 раза, если эта работа будет выполняться при участии специальных наборов команд обработки 3D-данных. Кроме того, так как CPU вынужден использовать одну и туже шину данных для обмена с системной памятью компьютера и 3D-графическим чипсетом, процесс передачи информации графическому чипсету стал существенным препятствием, снижающим производительность видеоподсистемы и проявилось это узкое место еще до появления специализированных наборов инструкций в CPU для обработки графических данных.

Идеальной была бы ситуация, когда графический процессор получал бы необходимые геометрические данные непосредственно из локальной видеопамяти или из AGP-памяти, без какого-либо участия в этом процессе CPU-системы. Новые наборы инструкций в центральных процессорах обеспечивают незначительные улучшения за счет предварительной выборки данных для считывания, но никак не решают проблему с доступной шириной полосы пропускания для передачи данных по шине памяти. В итоге, эти усиленные специальными наборами инструкций процессорные мощности могут быть использованы для выполнения общих задач, с решением которых они справляются лучше всего, например, расчет физических свойств 3D-мира (масса, вес, инерция и т.д.), AI, динамическое моделирование, генерация процедурного текстурирования и т.д.

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

Поддержка S3TL приложениями

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

Некоторые из уже существующих приложений могут уже сегодня в полной мере использовать преимущества геометрических сопроцессоров. Любая игра, работающая через интерфейс OpenGL, уже сегодня может использовать все преимущества графических карт, в состав которых входит геометрический акселератор. Хорошим примером таких игр могут служить Quake2 и Quake3 Arena от iD Software, Inc. Объем получаемых преимуществ увеличится, если приложение использует OpenGL Display Lists (таблицы или списки отображения) для преобразования геометрических данных в формат, который может быть непосредственно воспринят геометрическим акселератором. В наборе интерфейсов Microsoft DirectX 7.0 также имеется встроенная поддержка геометрических акселераторов, поэтому любое приложение, использующее конвейер преобразований координат Direct3D может быть портировано с целью реализации поддержки этих преобразований геометрическим акселератором за счет внесения лишь небольших (довольно простых) изменений в код. Изменение существующих приложений, которые используют собственные программные движки преобразования координат таким образом, чтобы они также использовали преимущество выполнения этих преобразований геометрическим акселератором, как правило, не является чересчур сложной задачей. В общем, ожидается, что к концу 1999 года около трети всех ожидаемых к выпуску игр будут поддерживать расчет преобразования координат геометрическим акселератором, т.е. на аппаратном уровне.

Конечно же, все это, на самом деле, не позволяет использовать все преимущества аппаратной реализации геометрического движка (читай: S3TL). В частности, большая часть Direct3D и OpenGL приложений все еще осуществляют установку освещения самостоятельно (разумеется, загружая CPU системы) вместо того, чтобы передавать все необходимые исходные данные интерфейсу (API) с тем, чтобы установка освещения выполнялась на аппаратном уровне.

Любое приложение может быть легко модернизировано с тем, чтобы все операции по расчету преобразования координат выполнялись геометрическим акселератором. Громадное увеличение числа готовых для использования полигонов, т.е. с преобразованными координатами вершин (их число увеличивается минимум вдвое, в то время как увеличение числа полигонов в 10 и более раз вполне возможно) будет хорошим поводом для разработчиков внести изменения в код своих приложений. Некоторые необходимые изменения очень просты. Модель динамического изменения уровня детализации (LOD, level-of-detail) может рассчитываться с более удаленной дистанции от пользователя, что повысит точность воспроизведения удаленных объектов. Также модели могут быть переработаны с целью обеспечить возможность воспроизведения более естественных деталей и ровных краев. Вполне вероятно, что это простой процесс, особенно если учесть то, что в играх могут использоваться модели с ультравысокой детализацией для генерирования FMV(Full Motion Video)-последовательностей вместо того, чтобы использовать сами эти видеофрагменты. И, наконец, аппаратная установка освещения может применяться в качестве замены встроенных в приложение конвейеров установки освещения, а дополнительные источники света и специальные световые эффекты обычно являются естественной модернизацией с точки зрения затраченных на это усилий и визуального эффекта для пользователей.

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

Подведем итоги

Итак, можно констатировать ряд фактов: мир изменился, но первым это сделала компания S3. Да-да, именно корпорация S3, которая на сутки раньше компании NVIDIA официально анонсировала новое поколение графического чипсета с интегрированным геометрическим акселератором S3TL. Да, реклама нового графического чипсета GeForce 256 от NVIDIA была обставлена с большим размахом. Однако приоритет все же за S3. Напомним, что GeForce 256 так же, как и чип Savage2000, имеет встроенный геометрический процессор. Это главное, что роднит два новых продукта. Можно уверенно прогнозировать, что термин GPU (Graphics Processor Unit) будет очень популярным в ближайшем будущем. Хотя название на скорость не влияет.

Можно уверенно прогнозировать, что Savage2000 будет однозначно быстрее всех сегодняшних чипов 3D-графики. Причем даже не принимая во внимание наличие S3TL. Напомним, что Savage2000 имеет два конвейера рендеринга с двумя блоками текстурирования на каждом. Это позволяет воспроизводить Savage2000 два пикселя с наложением двух текстур на каждый пиксель за один такт. До сих пор такого решения не было на массовом рынке. Наличие геометрического акселератора S3TL позволит существенно повысить качество визуализации за счет аппаратной установки освещения и повысить общую производительность за счет аппаратного преобразования координат вершин полигонов. К сожалению, нет никаких точных цифр, которые показали бы производительность S3TL в части преобразования координат. Фактически, мы не знаем, какое количество полигонов может обрабатывать геометрический акселератор, интегрированный в Savage2000. Пока мы можем лишь строить предположения, но, судя по всему, эта цифра находится в пределах 10-15 млн. треугольников/сек. По словам Paul Crosley из S3, отладка управляющей математики для S3TL еще не завершена, поэтому конкретные цифры пока не называются. Косвенно величину 10-15 млн. треугольников/сек подтверждает то, что S3 говорит о том, что применение S3TL позволит в 4-10 раз увеличить число полигонов, используемых при рендеринге сцены, по сравнению с программными методами расчета геометрии.

К слову, GeForce 256 имеет свои особенности, некоторые из которых также впервые присутствуют у продукта, нацеленного на массовый рынок. Так, стоит отметить четырехконвейерную архитектуру, что позволяет GeForce 256 осуществлять рендеринг сразу четырех пикселей за один такт. Сейчас прогнозировать то, на каком GPU карта будет быстрее и качественнее воспроизводить 3D-изображение, преждевременно. Стоит дождаться реальных видеоадаптеров и уже тогда сравнить их в деле. Тем более, что ждать осталось недолго. Так, первые карты на Savage2000 должны появится уже в ноябре этого года. Разумеется, если не случится чего-либо непредвиденного в сентябре, первая карта на Savage2000 появится под маркой Diamond. Ожидается, что ретейл вариант на базе GPU Savage2000+ будет стоить до $250 в варианте с 64 Мб локальной видеопамяти, AGP x4, ТВ-выходом и, возможно, с выходом для подключения цифровых мониторов.

Что касается карт на GeForce 256, то ожидается, что они появятся на рынке несколько раньше, возможно, уже в октябре этого года. При сравнимых объемах локальной видеопамяти цены должны быть примерно одинаковы.

Стоить новые чипы от S3 будут удивительно недорого: $29 за версию Savage2000 и $35 за версию Savage2000+ при партии в 10000 штук.

Заметим, что Savage2000 будет производиться по более передовой технологии 0.18 мкм, нежели GeForce 256, при производстве которого будет использоваться 0.22 мкм процесс. Это означает, что чипы GeForce 256 по определению обходятся дороже. Но, кроме себестоимости и прибыли, есть такой фактор, как конкуренция. К счастью, с конкуренцией, судя по всему, все будет в порядке. Кстати, на наш взгляд, именно использование 0.22 мкм технологического процесса вынудило NVIDIA ограничить тактовую частоту GeForce 256 величиной в 120 МГц, так как, в противном случае, могут возникнуть проблемы с перегревом чипа. Это предположение косвенно подтверждает заявление Leadtek о том, что их карты на базе GeForce 256 будут оснащены мониторингом температуры. Предполагается, что NVIDIA перейдет на 0.18 мкм процесс только в следующем году, и тогда тактовая чаcтота GeForce 256 может возрасти. Что касается S3, то для нее переход на 0.18 мкм процесс не новинка, уже примерно полгода по этому процессу производятся чипсеты для мобильных решений.

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

Вернемся к S3. Немного выше мы предположили, что Savage2000 сможет обрабатывать от 10 до 15 млн. треугольников в секунду. На чем основано такое предположение, ведь скорость расчета координат вершин треугольников и скорость преобразования этих координат напрямую зависит от вычислительной мощности блока FPU. Наше мнение основано на том, что S3 обладает всеми необходимыми возможностями для создания такого мощного блока операций с вещественными числами. Откуда у S3 такие возможности? Все просто. В 1997 году с аукциона продавался пакет патентов компании Exponential Technology, которая вела разработки по созданию x86|PowerPC совместимого процессора по заказу и на деньги IBM. В общем, у компании возникли технические и финансовые трудности, после чего все ее имущество, а прежде всего — это патентованные технологии, пошли с молотка. Так вот, весь пакет патентов был куплен за 10 млн. американских долларов неназванной компанией. Сразу пошли слухи, что свою лапу наложила корпорация Intel, что впрочем, выглядело логичным шагом. Но, оказалось, что технологии приобрела компания S3. В результате, по общему мнению аналитиков, S3 получила возможность создать собственный x86 процессор, так как имеющиеся в их распоряжении технологии это позволяли. Некоторые аналитики даже предсказывали, что скоро у Intel появится новый конкурент. Однако S3 пошла другим путем. В начале 1999 года S3 подписала c Intel кросс-лицензионное соглашение, а также долгосрочное соглашение о партнерстве, в рамках которого S3 стала главным партером Intel по тестированию AGP x4 (Intel AGP 4X validation partner). Кроме того, Intel купила примерно 25%-ный пакет акций S3. В общем, корпорации стали большими друзьями. Были слухи, что существует и негласное соглашение. В результате, каждая компания получила то, что хотела. Именно поэтому мы считаем, что есть все основания предполагать, что блок FPU у Savage2000 достаточно мощный, наверняка не слабее, чем у GeForce 256.

Анонс компанией S3 нового поколения графических чипов Savage2000 окончательно закрепил за компанией титул новатора и лидера технологий. Вспомним, что именно S3 создала технологию компрессии текстур S3TC, которая стала стандартной после лицензирования ее Microsoft и включения в DirectX. Именно S3 сделала первый графический акселератор с поддержкой однопроходной трилинейной фильтрации. И, наконец, именно S3 первой объявила о новом поколении графических акселераторов с интегрированным геометрическим сопроцессором (S3TL). Теперь S3 осталось развить и закрепить успех. Все будет напрямую зависеть не столько от своевременного появления карт на базе Savage2000, сколько от качественно и своевременно созданных драйверов. В особенности ICD OpenGL. Так или иначе, выиграет та компания, которой отдаст предпочтение конечный пользователь. Не стоит забывать, что на горизонте маячит тень 3dfx, которая, вероятно, уже в октябре представит свой новый чипсет.

Нам же остается набраться терпения и дождаться появления первых карт на базе Savage2000.

Использованы материалы S3, Inc.




1 сентября 1999 Г.

S3 Savage2000 - первый взгляд на S3TL и прочее

Новый 3D-акселератор Savage2000 от S3

Все мы с нетерпением ждем анонса новых графических чипсетов от NVIDIA и 3dfx. Еще бы, ведь нам обещают возможность воспроизведения на экранах наших компьютеров более реалистичной графики. Порой даже используется термин "фотореалистичная графика". С другой стороны, на рынке 3D-графики есть и другие сильные игроки, а также "темные лошадки". В своих статьях мы уже рассказывали о вероятном будущем рынка графических акселераторов. Там же мы высказывали предположение, что NVIDIA и 3dfx нет смысла торопиться с анонсами новых продуктов и технологий. Скорее, они выберут тактику выжидания. В этом смысле наши предположения оправдались. Первой компанией, которая официально объявила интегрированный 3D-графический чипсет нового поколения, стала S3, Inc. Для своего нового детища S3 выбрала имя Savage2000. Почему именно такое имя? Ну, во-первых, торговая марка Savage уже хорошо известна на рынке, во-вторых, 2000 — модная цифра, знаменующая новое тысячелетие. Можно, в принципе, высказать некоторые сомнения насчет оправданности выбора именно такого названия. Например, чипсеты Savage3D и Savage4 все-таки ориентированы на рынок недорогих решений. В то время, как Savage2000, об этом мы подробнее поговорим ниже, нацелен, как минимум, на потребителей со средним бюджетом, но с повышенными запросами к производительности и качеству 3D-акселераторов. Что касается цифры 2000, то она вполне банальна, и ничего нового в ней нет. В общем, маркетинговый отдел S3 особо не фантазировал, а может быть, они просто торопились. Ну что же, с названием разобрались, перейдем к вопросу о том, почему именно сегодня был анонсирован чип Savage4, а не, скажем, месяцем позже.

Еще пару недель назад про новый продукт от S3 было неизвестно почти ничего, за исключением неподтвержденных слухов. Так, если про GeForce 256 (кодовое имя NV10) от NVIDIA и про Napalm от 3dfx было и есть довольно много предположений, наряду с достоверной информацией, то про новый чип от S3, было известно очень мало. Так, была информация, что кодовое имя нового чипа — GX4, и что, возможно, в новый чип будет интегрирован геометрический акселератор, отвечающий за преобразование координат и расчет освещения. За неделю до официального пресс-релиза один из менеджеров S3 бросил фразу о том, что следует ждать анонсов новых продуктов типа GX4. Наступило 30 августа 1999 года, и в сети стали появляться материалы о новом чипе Savage2000 от S3. Почему S3 выбрала именно 30 августа, а не, скажем, 30 сентября? Все просто. Дело в том, что не так давно было объявлено о том, что S3 покупает хорошо известную на компьютерном рынке компанию Diamond Multimedia. Процесс покупки — довольно длительная процедура. Так вот, 20 сентября покупка должна была окончательно завершиться после одобрения сделки основными акционерами Diamond Multimedia. Понятно, что анонс нового продукта с многообещающими возможностями и сопутствующее этому повышенное внимание прессы, аналитиков и менеджеров компаний-партнеров (да и конкурентов) могут положительно сказаться как на общем имидже корпорации S3, так и на курсе ее акций. В общем, объявление нового чипа незадолго перед завершением серьезной сделки — это грамотный стратегический ход. Особенно в свете слухов о том, что далеко не все акционеры Diamond Multimedia одобряют сделку. Теперь же можно прогнозировать, что S3 благополучно купит Diamond Multimedia, а вместе с этим — хорошо развитую сеть продаж и поддержки, плюс технологические решения в области телекоммуникаций, мультимедиа и ряд хорошо раскрученных торговых марок. Более того, в качестве элемента логотипа марки Savage2000 использован стилизованный ограненный алмаз (иначе говоря, бриллиант, т.е. Diamond).

Далее, была и еще одна причина объявления о Savage2000 именно 30 августа. Дело в том, что на следующий день, 31 августа NVIDIA запланировала анонс своего нового продукта. Причем подготовлен этот анонс был основательно. Страсти нагнетались заблаговременно, и до последнего момента завеса тайны над тем, что же будет объявлено, тщательно соблюдалась. В результате, 31 августа 1999 года компания NVIDIA официально объявила о своем новом детище GeForce 256. Разумеется, вся информация о GPU, а именно так NVIDIA назвала свой новый интегрированный чипсет, была подготовлена заранее. Но S3 с анонсом Savage2000 несколько испортила праздник на улице NVIDIA. Судите сами, на сайте NVIDIA гордо написано, что GPU GeForce 256 является первым интегрированным решением для массового рынка, содержащим аппаратную реализацию блока T&L (Transformation and Lighting), иначе говоря, GeForce 256 имеет интегрированный геометрический акселератор. Но S3 анонсировала Savage2000, свой вариант GPU, также имеющий интегрированный геометрический акселератор, на сутки раньше. Так что приоритет все-таки на стороне S3. Данный материал посвящен чипу (или, если хотите, GPU) Savage2000, так как он был анонсирован раньше GeForce 256. Поэтому про GeForce 256 мы будем говорить лишь по мере необходимости. Немного позже мы обязательно посвятим GeForce 256 от NVIDIA отдельную статью.

Теперь вернемся к Savage2000 и посмотрим внимательно на то, что же предлагает нам S3 в этот раз.

Интегрированными чипами "все в одном" сегодня никого не удивишь, как, впрочем, и модификациями чипов, ориентированными на разные сегменты рынка. В данном вопросе S3 пошла проторенной дорогой, в чем нет ничего зазорного. Серия чипов Savage2000 представляет собой интегрированное 2D/3D/Video решение. Пока объявлено о двух вариантах чипа: Savage2000 и Savage2000+. Мы говорим "пока", так как история учит тому, что, в случае необходимости или неожиданных улучшений в технологии, могут появиться и новые модификации. Чип Savage2000 ориентирован на OEM-рынок, а чип Savage2000+ ориентирован на потребительский рынок. Разница между двумя версиями чипов состоит только в рабочих частотах графического ядра и шины памяти. Приведем мини-таблицу для наглядности:

 Savage2000Savage2000+
Интерфейс шины памяти128 бит128 бит
Ширина полосы пропускания памятиДо 2.6 Гб/секДо 3.2 Гб/сек
Рабочая частота шины памятиДо 166 МГцДо 200 МГц
Рабочая частота графического ядраДо 150 МГцДо 200 МГц
Скорость заполнения сцены (Fillrate)До 300 млн. пикселей в секДо 400 млн. пикселей в сек
Скорость текстурирования (2 текселя на пиксель за один такт)До 600 млн. текселей в секДо 800 млн. текселей в сек

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

Итак, давайте посмотрим на спецификацию Savage2000.

Общие характеристики:

  • Частота ядра: до 200 МГц
  • Частота работы шины памяти: до 200 МГц
  • Скорость обработки треугольников: предположительно 10-15 млн. треугольников в секунду
  • Разрядность шины памяти: 128-бит
  • Ширина полосы пропускания шины памяти: до 3.2 Гб/сек
  • Поддерживаемые типы памяти: модули 1Mx16, 2Mx32 или 4Mx16 типа SDRAM; модули 512Kx32 или 1Mx32 типа SGRAM (с поддержкой режима блочной записи)
  • Объем локальной видеопамяти: до 64 Мб
  • RAMDAC: интегрированный, частота 350 МГц с поддержкой коррекции гаммы
  • Поддерживаемые разрешения: вплоть до 2048x1536
  • Интерфейс внешней шины: полная поддержка AGP x2/x4 (включая SBA и DME) и PCI 2.2 (включая Bus mastering)
  • Поддерживаются спецификации: последовательная шина I2C и DDC; ACPI D0-D3 режимы и управление питанием PCI; 100% соответствие PC'99
  • Технологический процесс: 0.18 мкм
  • Число транзисторов: 12 млн.
  • Размер чипа: 31x31mm
  • Тип корпуса чипа: PBGA, 409 контактов

2D-часть:

  • 128-разрядное 2D-ядро
  • Поддержка акселерации BitBLT, закраски прямоугольников и полигонов, прорисовка линий, аппаратный курсор и масштабирование по горизонтали/вертикали
  • Работа с ускорением графике при 8-, 16- и 32-битном представлении глубины цвета

3D-часть:

  • Интегрированный геометрический процессор преобразования координат и установки освещения (S3TL)
  • Аппаратная установка 8 источников света по спецификации OpenGL для всей сцены
  • Геометрический движок, выполняющий операции над вещественными числами и занимающийся расположением полигонов в пространстве
  • Возможность равномерного распределения нагрузки по расчету геометрии между CPU и S3TL
  • Полная поддержка OpenGL и DX7
  • Непрервыная скорость при рендеринге 2 пикселей с одновременным наложением двух текстур на пиксель за такт
  • Однопроходный движок наложения четырех текстур (Single-pass Quad-Texture engine)
  • Программируемые режимы смешивания нескольких текстур
  • Аппаратная поддержка рельефного текстурирования (поддерживается только режим выдавливания)
  • Реализованная на аппаратном уровне поддержка технологии S3TC
  • Рендеринг при 32-битном представлении глубины цвета
  • Сглаживание полной сцены (Full scene anti-aliasing), работает по-разному, в зависимости от интерфейса (D3D или OGL) и в зависимости от конкретного приложения.
  • Однопроходная трилинейная фильтрация
  • Анизотропная фильтрация с частичной поддержкой на аппаратном уровне
  • Поддерживается 8-битный стенсель буфер
  • Поддерживается 16/24/32-битная Z-буферизация
  • Поддерживаются отраженный свет и размытые тени
  • Улучшенные режимы прозрачности и полупрозрачность (Enhanced alpha blending modes)
  • Наложение тумана по вершинам полигонов и попиксельно в определенных областях сцены
  • Поддержка текстур размером 2048х2048 текселей

Поддержка плоскопанельных мониторов:

  • Соответствие спецификации DVI
  • 12/24-битный цифровой интерфейс для подключения к кодерам плоскопанельных мониторов
  • Авторастяжение и центрирование для VGA текстовых и графических режимов
  • Поддерживаются разрешения вплоть до 1280x1024

Поддержка DVD/DTV:

  • Масштабирование изображения без потерь качества.
  • Преобразование данных из планарного формата в упакованный формат
  • Движок компенсации движения третьего поколения
  • Реализация на аппаратном уровне подсветки и режимов полупрозрачности для наложения субтитров
  • Поддержка мультиоконного видео для использования в видеоконференциях
  • Управление яркостью, насыщенностью, контрастностью цвета, тональностью цвета и цветовой гаммой с возможностью программирования
  • Обработка потоков (Streams Processor) с отображением в разрешениях вплоть до 1600x1200
  • Поддерживается VIP 2.0 видеопорта, обеспечивает поддержку всех разрешений HDTV
  • Цифровой порт для подключения NTSC/PAL TV-кодировщиков, обеспечивающий подключение без потерь данных
  • Режим деинтерлейсинга при отображении на мониторе интерлейсного изображения
  • Поддержка интерфейса Microsoft DirectDraw7 HVA
  • Множество конфигураций HDTV, поддерживаемых через DMA и захват управления шиной

Поддержка ОС, интерфейсов и программного обеспечения:

  • Драйверы для Windows 98/95
  • Драйверы для Windows NT 4.0 и Windows 2000
  • Драйверы для Windows 3.x и OS/2 3.0/4.0 (Warp )
  • Драйверы для Linux
  • Поддержка Direct3D, DirectDraw и DirectShow
  • Поддержка OpenGL ICD для Windows 9x и Windows NT
  • Исчерпывающий SDK, утилиты и инструментарий для независимых разработчиков программного обеспечения

Теперь рассмотрим подробно самые интересные детали. Про 2D-часть говорить не будем, ничего нового там придумать давно уже нельзя. Испортить можно, но у компании S3, как правило, проблем с 2D давно нет. Поэтому сразу перейдем к самому интересному. Начнем с архитектуры Savage2000.

Фактически, в Savage2000 впервые реализованы два ключевых архитектурных решения: Single-pass Quad-Texture engine и S3TL. Single-pass Quad-Texture engine — графический движок, позволяющий накладывать четыре текстуры, по две на один отображаемый пиксель, за один такт, и, более того, возможен режим работы, когда на один пиксель накладывается сразу четыре текстуры. Заметим, что возможность наложения на один пиксель четырех текстур за один такт пока не поддерживается в приложениях, но это, безусловно, хороший задел на будущее. Тут стоит заметить, что не исключено появление технологии, когда два конвейера осуществляют рендеринг в разных кадровых буферах, а затем их результаты совмещаются и выводятся на экран, не исключено, что речь может идти о технологии, аналогичной T-Buffer от 3dfx. Поживем — увидим. Все это означает, что в чипе Savage2000 реализовано два конвейера рендеринга с двумя блоками текстурирования в каждом, при этом поддерживается режим наложения на один пиксель до четырех текстур.

Для сравнения: сегодняшние лидеры рынка 3D-графики не имеют таких возможностей. Например, Riva TNT2 от NVIDIA имеет два конвейера рендеринга с одним блоком текстурирования в каждом, а Voodoo3 имеет один конвейер рендеринга с двумя блоками текстурирования. Двухконвейерная архитектура Savage2000 в паре с Single-pass Quad-Texture engine должна обеспечить высокую скорость заполнения сцены (fillrate) как в приложениях, использующих мультитекстурирование, так и в тех, которые не используют такую технику. Высокая скорость fillrate обеспечит большую скорость смены кадров (fps), что повысит играбельность в высоких разрешениях. В общем, есть все предпосылки к тому, что карты на Savage2000 будут очень быстрыми, по крайней мере, по сравнению с сегодняшними лидерами рынка.

Напомним, что карты на базе чипа Savage2000 могут иметь до 64 Мб локальной видеопамяти. Такой объем локальной памяти при высокой производительности чипа может обеспечить пользователю комфортную игру в разрешении 1600x1200 при 32-битной глубине представления цвета, 32-битной Z-буферизации, тройной буферизации и со свободным объемом локальной видеопамяти в 32 Мб, которую можно использовать для хранения текстур. Тут следует пояснить, что свободную локальную память можно использовать не просто для хранения текстур, а для кэширования текстур. В этом случае AGP-текстурирование также останется при деле. Из AGP-памяти будут подгружаться текстуры (гигантских размеров) для статичной геометрии сцены, а из текстурного кэша в локальной памяти будут подгружаться текстуры для динамичной геометрии. Заметим, что Savage2000 поддерживает, разумеется, технологию компрессии текстур S3TC, лицензированную Microsoft и включенную в состав D3D, и благодаря компрессии текстур в 32 Мб локальной памяти отведенной под их хранение (или кэширование) может поместиться 192 Мб (!) текстур. Очень уместно в данном контексте то, что в Savage2000 реализован полноценный 128-разрядный интерфейс локальной видеопамяти, а не тот хитрый, как у Savage4, который, на самом деле, является 64-разрядным.

При всех новшествах, в чипе Savage2000 не реализована аппаратная поддержка Environment Mapped Bump Mapping или Dot Produce Bump Mapping. Это несколько странно. Фактически, под словами Hardware Bump Mapping в спецификации подразумевается все тот же, малоинтересный метод выдавливания (Embossing Bump Mapping). А жаль. Вероятно, инженеры S3 очень спешили с завершением работ, либо в момент утверждения проекта нового чипа реализации прогрессивных техник рельефного текстурирования не придали значения.

Теперь плавно перейдем к сладкому. Но начнем с вопроса о качестве создаваемого изображения. Если оглянуться на Savage4, то практически бесспорным является тот факт, что, при всех недостатках (особенно в части скорости), карты на Savage4 обеспечивают очень качественное изображение в 3D, практически лучшее. Нет никаких предпосылок к тому, что карты на базе Savage2000 будут справляться со своей задачей хуже. При этом в чип Savage2000 интегрирован геометрический сопроцессор, названный S3TL (S3 Transformation & Lighting). Заметим, что поддержка специализированного геометрического сопроцессора на графических картах, рассчитанных на массовый рынок, — давно ожидаемая и горячо обсуждаемая в сети функция. В свое время мы публиковали статью на эту тему. Теперь мы можем обсудить первый официально объявленный 3D-графический чип с интегрированным геометрическим акселератором. Так как S3TL — это одна из самых интересных особенностей Savage2000, то мы уделим этому вопросу наибольшее внимание, тем более, что благодаря наличию геометрического сопроцессора нам обещают большую производительность, а главное — больший реализм и качество создаваемого изображения. Начнем мы с небольшого теоретического курса.

Что такое аппаратная реализация Transformation and Lighting (T&L)?

Процесс создания 3D-сцены на основе имеющихся данных (читай: создание 3D-мира) осуществляется двумя функциональными блоками. Первых функциональный блок называется "geometry engine" (геометрический движок), который осуществляет преобразование (transformations) 3D-координат отображаемого мира в 2D-координаты для вывода изображения на экран монитора. Такая операция необходима из-за того, что 3D-мир отображается на 2D-мониторе, поэтому нельзя напрямую использовать трехмерные координаты объектов. Второй функциональный блок называется "rasterization engine" (движок растеризации), который выполняет задачи по отображению теперь уже двумерного мира на экране монитора. Кроме преобразования 3D-координат в 2D-координаты, геометрический движок может быть задействован для генерации информации об источниках освещения отображаемой сцены — накапливая информацию об источниках света и вычисляя количество света, которое каждый источник света испускает на любую выбранную точку отображаемой сцены. В то время, как движок растеризации (включающий в себя конвейер 3D-рендеринга) является стандартной частью любой 3D-графической карты, рассчитанной на массовый рынок в течение уже нескольких лет, выполнение геометрических вычислений на аппаратном уровне можно было встретить до недавнего времени лишь в профессиональных 3D-акселераторах, рассчитанных на рынок рабочих станций. Чип Savage2000 является первым, официально объявленным 3D-графическим решением для массового рынка, в котором реализован интегрированный геометрический акселератор, выполняющий на аппаратном уровне операции T&L.

S3TL

В чип Savage2000 интегрирован геометрический акселератор, специально оптимизированный для прямого взаимодействия с движком растеризации. Такая интеграция должна способствовать обеспечению максимально возможной производительности при рендеринге 3D-сцены. Ниже представлена блок-схема чипа Savage2000:

Данные, на основе которых происходит рендеринг трехмерной сцены, могут приниматься напрямую от CPU или из AGP/локальной видеопамяти, что более эффективно, так как процесс не зависит от возможностей CPU, а все вычисления выполняются геометрическим процессором, встроенным в графический чип. А высвобождаемые ресурсы CPU могут быть использованы для других целей, например, для реализации более продвинутого искусственного интеллекта (AI), расчета физики моделируемого мира (сила тяготения, плотность воздуха, и т.д.) в играх. После того, как необходимые данные получены, они проходят через этап преобразования координат, когда исходные координаты объектов 3D-сцены (называемые координатами объектного пространства, "object space") преобразуются в координаты объектов (называемые координатами пространства отображения, "view space") , которые после рендеринга отображаются на экране монитора. В пространстве отображения каждая точка может быть освещена на основе хранящихся данных об освещении перед тем, как координаты точки будут преобразованы для правильного расположения относительно угла зрения пользователя, т.н. правильной точки наблюдения в пространстве, известном как зрительное пространство ("eye space"). Затем координаты объекта преобразуются в 2D-вид, т.е. в координаты экрана, и происходит коррекция расстояний, т.н. операция трансформации перспективы. Наконец, происходит вывод результирующих данных на экран монитора одновременно с удалением всех данных об объектах, которые не будут видны на экране, с целью избежать ненужной работы при последующем рендеринге. Операции по преобразованию координат и расчету освещения требуют очень мощных вычислительных ресурсов. Выполнять эти операции может CPU, а может специализированный геометрический процессор. Эти несколько этапов преобразования координат и расчета освещения реализуются в виде конвейера, а все вычисления выполняются блоком FPU, в результате получается аппаратная реализация T&L, которая получила имя S3TL. От производительности FPU, выполняющего все вычисления по преобразованию координат, напрямую зависит количество полигонов, используемых в процессе тесселяции, т.е. процесс представления неровных поверхностей серией треугольников. Чем мощнее FPU геометрического сопроцессора, тем большее число полигонов можно использовать для представления объекта, а значит, тем более реалистичным получается конечное изображение.

К сожалению, S3 не объявила о вычислительной мощности S3TL. Зато GPU GeForce 256 от NVIDIA позволяет обрабатывать до 15 млн. треугольников в секунду. Можно предположить, что S3TL имеет сравнимый потенциал.

Модель освещения OpenGL

Аппаратная реализация модели установки освещения от S3 базируется на OpenGL Lighting Model (которая практически полностью соответствует модели установки освещения Direct3D, за исключением небольших отличий, также поддерживаемой на аппаратном уровне в Savage2000). Существует множество параметров, используемых для управления каждым источником света индивидуально (S3TL поддерживает стандартные для OpenGL восемь источников света одновременно), но, в общем случае, OpenGL-источники света могут быть разделены на три основных типа: Directional lights, Point lights и Spot lights. Поговорим о типах источников света подробнее, тем более, что эта тема будет в фокусе внимания в ближайшие пару лет, как минимум.

Directional Lights

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

Point Lights

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

Spot Lights

Прожектор (Spot Lights) является самым сложным типом освещения, так как в этом случае добавляется возможность определения конуса, за пределами которого источник света не может светить. Этот тип источника света хорошо применим при моделировании освещения от поисковых фонарей на патрульных машинах, карманных фонариков, автомобильных фар или в любых других случаях, когда размеры освещаемой области должны быть четко контролируемыми. Установка прожекторного освещения требует наибольших вычислительных затрат для определения значения результирующего цвета и именно поэтому редко используется в случае традиционных программных методов расчета освещенности (за счет CPU). Даже при использовании аппаратного геометрического акселератора S3TL расчеты по установке прожекторного освещения снижают общую производительность, однако, потери в скорости будут небольшими, точно меньше, чем в два раза.

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

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

Более подробную информацию о моделировании освещения можно найти в текущей спецификации OpenGL.

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

Что дает использование S3TL?

Применение геометрического акселератора позволяет 3D-графическим картам отображать полную сцену на экране монитора при небольшом вмешательстве CPU или вообще без участия CPU, что в итоге может совершить, фактически, революцию в индустрии 3D-приложений. Вместо того, чтобы тратить от 50% до 95% ресурсов CPU на преобразование координат и передачу получившихся данных графическому процессору, статичная геометрия может быть рассчитана непосредственно в AGP или локальной видеопамяти, и полученные данные могут непосредственно передаваться в 3D-графический процессор с использованием широкой полосы пропускания. Кроме экономии вычислительных ресурсов CPU, такая технология существенно снижает трафик с системной памятью, что снижает нагрузку за счет отсутствия необходимости обращения к одной и той же памяти через AGP. Только если статичная геометрия (например, стены, пол, потолок лабиринтов на уровне игры) рассчитывается в AGP памяти, требования к ширине полосы пропускания системной памяти снижаются, как минимум, в два раза, в некоторых случаях — в четыре и более раз. И, наконец, скорость расчета динамической геометрии (например, перемещение монстров и игрока в игре) увеличивается на 40-50% за счет выполнения преобразовании координат геометрическим акселератором, без каких-либо улучшений в области ширины полосы пропускания памяти.

Это в особенности очень важно для разработчиков игр, которым крайне необходимы дополнительные ресурсы CPU для мощного, жадного до ресурсов центрального процессора искусственного интеллекта (AI, artificial intelligence) и реализации физических движков (подобные движки должны моделировать в игре реальные физические законы типа тяготения, инерции, магнитных полей и т.д.), которые как раз разрабатываются.

Зачем использовать S3TL для установки освещения, если есть возможность использовать освещение на основе текстур (карты освещенности)?

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

Карты освещения (light maps) отлично подходят для генерации статичного освещения, так как их можно создавать заранее, используя медлительные движки установки освещения типа radiosity, которые обеспечивают очень реалистичный результат, но за очень долгий промежуток времени. Radiosity — это графическая технология создания естественного освещения (включая непрямое освящение) на основе физической модели распространения света внутри сложной архитектурной среды. Эта техника позволяет точно вычислять пути распространения света и осуществлять полноцветную визуализацию сцены.

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

На иллюстрации ниже показан пример алиасинга (ошибка при визуализации) карты освещенности в Quake2.


Обратите внимание на неровную границу сферы освещения, создаваемую на полу от выстрела из ружья

Применение геометрического акселератора дает возможность легко и быстро рассчитать динамическое освещение во время процесса растеризации, а создаваемые эффекты динамического освещения могут быть добавлены к результату, получаемому при использовании карт освещенности стандартными конвейерами рендеринга с поддержкой мультитекстурирования. Формула для создания точного статичного освещения с использованием карт освещенности (в режиме мультитекстурирования) и с добавлением динамического освещения, рассчитываемого геометрическим акселератором, выглядит так:

({diffuse + lightmap} * base-texture) + specular

Вербально формула звучит так:

Цветовая компонента рассеиваемого света (diffuse) складывается с текселем карты освещенности (lightmap), и все это вместе накладывается на базовую текстуру (base-texture), после чего добавляется цвет компоненты отражаемого света (specular).

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

На иллюстрации ниже приведен пример использования карты освещенности в паре с динамически рассчитываемым рассеиваемым освещением.


Стена представляет собой поверхность с наложенной картой освещения. Яркие пятна света — это динамическое освещение, рассчитываемое для вертексов

Аппаратная реализация освещения по вертексам (вершинам полигонов) является первым шагом в сторону продвижения на массовый рынок 3D-графических ускорителей, которые поддерживают реализацию освещения для каждого пикселя (per-pixel lighting) на аппаратном уровне. Метод установки освещения для каждого пикселя (иногда ошибочно называемый методом Фонга) позволит добиться существенно лучших результатов по сравнению с традиционными техниками мультитекстурирования. Ввод для широкого применения аппаратной поддержки вертекс освещения (vertex lighting) позволит разработчикам создать прочную основу для приложений, поддерживающих аппаратную реализацию установки освещения. И сделать еще один шаг в сторону отображения фотореалистичной 3D-графики.

Что насчет мощных CPU со специальными наборами 3D-инструкций?

Появление технологий, специально оптимизированных для ускорения расчетов по преобразованию координат и установки освещения в виде специальных наборов от Intel (SSE) и AMD (3DNow!), значительно повысили возможности CPU (точнее, блока FPU) по обработке геометрических вычислений. Однако специализированный геометрический акселератор (фактически, FPU, расположенный на борту видеокарты) все равно имеет хорошее поле для деятельности. В самом типичном случае число тактов CPU, необходимых для генерации вертексов, сократится в 3-4 раза, если эта работа будет выполняться при участии специальных наборов команд обработки 3D-данных. Кроме того, так как CPU вынужден использовать одну и туже шину данных для обмена с системной памятью компьютера и 3D-графическим чипсетом, процесс передачи информации графическому чипсету стал существенным препятствием, снижающим производительность видеоподсистемы и проявилось это узкое место еще до появления специализированных наборов инструкций в CPU для обработки графических данных.

Идеальной была бы ситуация, когда графический процессор получал бы необходимые геометрические данные непосредственно из локальной видеопамяти или из AGP-памяти, без какого-либо участия в этом процессе CPU-системы. Новые наборы инструкций в центральных процессорах обеспечивают незначительные улучшения за счет предварительной выборки данных для считывания, но никак не решают проблему с доступной шириной полосы пропускания для передачи данных по шине памяти. В итоге, эти усиленные специальными наборами инструкций процессорные мощности могут быть использованы для выполнения общих задач, с решением которых они справляются лучше всего, например, расчет физических свойств 3D-мира (масса, вес, инерция и т.д.), AI, динамическое моделирование, генерация процедурного текстурирования и т.д.

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

Поддержка S3TL приложениями

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

Некоторые из уже существующих приложений могут уже сегодня в полной мере использовать преимущества геометрических сопроцессоров. Любая игра, работающая через интерфейс OpenGL, уже сегодня может использовать все преимущества графических карт, в состав которых входит геометрический акселератор. Хорошим примером таких игр могут служить Quake2 и Quake3 Arena от iD Software, Inc. Объем получаемых преимуществ увеличится, если приложение использует OpenGL Display Lists (таблицы или списки отображения) для преобразования геометрических данных в формат, который может быть непосредственно воспринят геометрическим акселератором. В наборе интерфейсов Microsoft DirectX 7.0 также имеется встроенная поддержка геометрических акселераторов, поэтому любое приложение, использующее конвейер преобразований координат Direct3D может быть портировано с целью реализации поддержки этих преобразований геометрическим акселератором за счет внесения лишь небольших (довольно простых) изменений в код. Изменение существующих приложений, которые используют собственные программные движки преобразования координат таким образом, чтобы они также использовали преимущество выполнения этих преобразований геометрическим акселератором, как правило, не является чересчур сложной задачей. В общем, ожидается, что к концу 1999 года около трети всех ожидаемых к выпуску игр будут поддерживать расчет преобразования координат геометрическим акселератором, т.е. на аппаратном уровне.

Конечно же, все это, на самом деле, не позволяет использовать все преимущества аппаратной реализации геометрического движка (читай: S3TL). В частности, большая часть Direct3D и OpenGL приложений все еще осуществляют установку освещения самостоятельно (разумеется, загружая CPU системы) вместо того, чтобы передавать все необходимые исходные данные интерфейсу (API) с тем, чтобы установка освещения выполнялась на аппаратном уровне.

Любое приложение может быть легко модернизировано с тем, чтобы все операции по расчету преобразования координат выполнялись геометрическим акселератором. Громадное увеличение числа готовых для использования полигонов, т.е. с преобразованными координатами вершин (их число увеличивается минимум вдвое, в то время как увеличение числа полигонов в 10 и более раз вполне возможно) будет хорошим поводом для разработчиков внести изменения в код своих приложений. Некоторые необходимые изменения очень просты. Модель динамического изменения уровня детализации (LOD, level-of-detail) может рассчитываться с более удаленной дистанции от пользователя, что повысит точность воспроизведения удаленных объектов. Также модели могут быть переработаны с целью обеспечить возможность воспроизведения более естественных деталей и ровных краев. Вполне вероятно, что это простой процесс, особенно если учесть то, что в играх могут использоваться модели с ультравысокой детализацией для генерирования FMV(Full Motion Video)-последовательностей вместо того, чтобы использовать сами эти видеофрагменты. И, наконец, аппаратная установка освещения может применяться в качестве замены встроенных в приложение конвейеров установки освещения, а дополнительные источники света и специальные световые эффекты обычно являются естественной модернизацией с точки зрения затраченных на это усилий и визуального эффекта для пользователей.

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

Подведем итоги

Итак, можно констатировать ряд фактов: мир изменился, но первым это сделала компания S3. Да-да, именно корпорация S3, которая на сутки раньше компании NVIDIA официально анонсировала новое поколение графического чипсета с интегрированным геометрическим акселератором S3TL. Да, реклама нового графического чипсета GeForce 256 от NVIDIA была обставлена с большим размахом. Однако приоритет все же за S3. Напомним, что GeForce 256 так же, как и чип Savage2000, имеет встроенный геометрический процессор. Это главное, что роднит два новых продукта. Можно уверенно прогнозировать, что термин GPU (Graphics Processor Unit) будет очень популярным в ближайшем будущем. Хотя название на скорость не влияет.

Можно уверенно прогнозировать, что Savage2000 будет однозначно быстрее всех сегодняшних чипов 3D-графики. Причем даже не принимая во внимание наличие S3TL. Напомним, что Savage2000 имеет два конвейера рендеринга с двумя блоками текстурирования на каждом. Это позволяет воспроизводить Savage2000 два пикселя с наложением двух текстур на каждый пиксель за один такт. До сих пор такого решения не было на массовом рынке. Наличие геометрического акселератора S3TL позволит существенно повысить качество визуализации за счет аппаратной установки освещения и повысить общую производительность за счет аппаратного преобразования координат вершин полигонов. К сожалению, нет никаких точных цифр, которые показали бы производительность S3TL в части преобразования координат. Фактически, мы не знаем, какое количество полигонов может обрабатывать геометрический акселератор, интегрированный в Savage2000. Пока мы можем лишь строить предположения, но, судя по всему, эта цифра находится в пределах 10-15 млн. треугольников/сек. По словам Paul Crosley из S3, отладка управляющей математики для S3TL еще не завершена, поэтому конкретные цифры пока не называются. Косвенно величину 10-15 млн. треугольников/сек подтверждает то, что S3 говорит о том, что применение S3TL позволит в 4-10 раз увеличить число полигонов, используемых при рендеринге сцены, по сравнению с программными методами расчета геометрии.

К слову, GeForce 256 имеет свои особенности, некоторые из которых также впервые присутствуют у продукта, нацеленного на массовый рынок. Так, стоит отметить четырехконвейерную архитектуру, что позволяет GeForce 256 осуществлять рендеринг сразу четырех пикселей за один такт. Сейчас прогнозировать то, на каком GPU карта будет быстрее и качественнее воспроизводить 3D-изображение, преждевременно. Стоит дождаться реальных видеоадаптеров и уже тогда сравнить их в деле. Тем более, что ждать осталось недолго. Так, первые карты на Savage2000 должны появится уже в ноябре этого года. Разумеется, если не случится чего-либо непредвиденного в сентябре, первая карта на Savage2000 появится под маркой Diamond. Ожидается, что ретейл вариант на базе GPU Savage2000+ будет стоить до $250 в варианте с 64 Мб локальной видеопамяти, AGP x4, ТВ-выходом и, возможно, с выходом для подключения цифровых мониторов.

Что касается карт на GeForce 256, то ожидается, что они появятся на рынке несколько раньше, возможно, уже в октябре этого года. При сравнимых объемах локальной видеопамяти цены должны быть примерно одинаковы.

Стоить новые чипы от S3 будут удивительно недорого: $29 за версию Savage2000 и $35 за версию Savage2000+ при партии в 10000 штук.

Заметим, что Savage2000 будет производиться по более передовой технологии 0.18 мкм, нежели GeForce 256, при производстве которого будет использоваться 0.22 мкм процесс. Это означает, что чипы GeForce 256 по определению обходятся дороже. Но, кроме себестоимости и прибыли, есть такой фактор, как конкуренция. К счастью, с конкуренцией, судя по всему, все будет в порядке. Кстати, на наш взгляд, именно использование 0.22 мкм технологического процесса вынудило NVIDIA ограничить тактовую частоту GeForce 256 величиной в 120 МГц, так как, в противном случае, могут возникнуть проблемы с перегревом чипа. Это предположение косвенно подтверждает заявление Leadtek о том, что их карты на базе GeForce 256 будут оснащены мониторингом температуры. Предполагается, что NVIDIA перейдет на 0.18 мкм процесс только в следующем году, и тогда тактовая чаcтота GeForce 256 может возрасти. Что касается S3, то для нее переход на 0.18 мкм процесс не новинка, уже примерно полгода по этому процессу производятся чипсеты для мобильных решений.

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

Вернемся к S3. Немного выше мы предположили, что Savage2000 сможет обрабатывать от 10 до 15 млн. треугольников в секунду. На чем основано такое предположение, ведь скорость расчета координат вершин треугольников и скорость преобразования этих координат напрямую зависит от вычислительной мощности блока FPU. Наше мнение основано на том, что S3 обладает всеми необходимыми возможностями для создания такого мощного блока операций с вещественными числами. Откуда у S3 такие возможности? Все просто. В 1997 году с аукциона продавался пакет патентов компании Exponential Technology, которая вела разработки по созданию x86|PowerPC совместимого процессора по заказу и на деньги IBM. В общем, у компании возникли технические и финансовые трудности, после чего все ее имущество, а прежде всего — это патентованные технологии, пошли с молотка. Так вот, весь пакет патентов был куплен за 10 млн. американских долларов неназванной компанией. Сразу пошли слухи, что свою лапу наложила корпорация Intel, что впрочем, выглядело логичным шагом. Но, оказалось, что технологии приобрела компания S3. В результате, по общему мнению аналитиков, S3 получила возможность создать собственный x86 процессор, так как имеющиеся в их распоряжении технологии это позволяли. Некоторые аналитики даже предсказывали, что скоро у Intel появится новый конкурент. Однако S3 пошла другим путем. В начале 1999 года S3 подписала c Intel кросс-лицензионное соглашение, а также долгосрочное соглашение о партнерстве, в рамках которого S3 стала главным партером Intel по тестированию AGP x4 (Intel AGP 4X validation partner). Кроме того, Intel купила примерно 25%-ный пакет акций S3. В общем, корпорации стали большими друзьями. Были слухи, что существует и негласное соглашение. В результате, каждая компания получила то, что хотела. Именно поэтому мы считаем, что есть все основания предполагать, что блок FPU у Savage2000 достаточно мощный, наверняка не слабее, чем у GeForce 256.

Анонс компанией S3 нового поколения графических чипов Savage2000 окончательно закрепил за компанией титул новатора и лидера технологий. Вспомним, что именно S3 создала технологию компрессии текстур S3TC, которая стала стандартной после лицензирования ее Microsoft и включения в DirectX. Именно S3 сделала первый графический акселератор с поддержкой однопроходной трилинейной фильтрации. И, наконец, именно S3 первой объявила о новом поколении графических акселераторов с интегрированным геометрическим сопроцессором (S3TL). Теперь S3 осталось развить и закрепить успех. Все будет напрямую зависеть не столько от своевременного появления карт на базе Savage2000, сколько от качественно и своевременно созданных драйверов. В особенности ICD OpenGL. Так или иначе, выиграет та компания, которой отдаст предпочтение конечный пользователь. Не стоит забывать, что на горизонте маячит тень 3dfx, которая, вероятно, уже в октябре представит свой новый чипсет.

Нам же остается набраться терпения и дождаться появления первых карт на базе Savage2000.

Использованы материалы S3, Inc.