Архитектура Giga3D

Введение

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

Ключевая особенность архитектуры Giga3D, которая отличает ее от большинства графических решений на рынке, состоит в том, что растеризация в ней выполняется с использованием процесса, известного как "тайлинг", или "разбиение на куски". Основное преимущество этого типа рендеринга состоит в том, что тайлы разумного размера могут быть полностью отрендерены с использованием встроенной в чип статической памяти, при этом нет необходимости обращаться к внешнему динамическому ОЗУ для выполнения медленных операций вида "чтение-изменение-запись". Другие реализации тайловой архитектуры страдают от несовместимости со стандартными интерфейсами программирования или требуют от главного процессора выполнения дополнительных вычислений. Это не так в случае с архитектурой Giga3D — она полностью совместима со стандартными интерфейсами программирования трехмерной графики и использует общепринятую архитектуру драйверов.

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

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

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

Сглаживание

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

Текущие реализации архитектуры Giga3D делают 4х-кратное мультисэмпловое сглаживание со случайными смещениями (джитером) без падения скорости. Все конкурирующие графические архитектуры для ПК работают медленнее, когда сглаживание сцены включено. В случае Giga3D это не так. Кроме того, так как сэмплирующая решетка имеет переменный шаг (нерегулярна), достигаемое качество изображения лучше, чем с использованием двухкратно большего разрешения дисплея по обеим осям. Другими словами, разрешение 640x480 на аппаратуре GigaPixel выглядит заметно лучше, чем 1280x960 на сэмплирующих точечно (без сглаживания) графических системах. Точно так же, разрешение 1280x1024 выглядит лучше, чем могло бы выглядеть 2560x2048, если бы вы могли себе позволить дисплей с таким разрешением. Некоторые другие графические чипсеты позволяют производить рендеринг в высоком разрешении и затем фильтруют результат в более низкое. Для устройств класса ПК, по состоянию на ноябрь 1999, все эти решения страдают от значительного падения производительности при включении сглаживания. Они также используют сэмплирующую решетку с постоянным шагом (без смещений), и поэтому качество изображения у них хуже, чем у полученного с помощью Giga3D.

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

Процесс рендеринга, классическая архитектура

В классической архитектуре каждый примитив обрабатывается по мере поступления на конвейер. Процесс рендеринга состоит из двух главных этапов: обработка геометрии и растеризация.

  • Обработка геометрии
    • Вершины трансформируются в пространство наблюдения
    • Примитив обрезается, чтобы вписаться в экран
    • Вычисляется и применяется вершинное освещение
  • Растеризация — примитив сканируется в каждой точке пространства экрана (the primitive is scanned in screen space at each sample)
    • Вычисляет цвета
    • Вычисляет координаты для текстур
    • Производит операции выборки текстур и фильтрации
    • Читает Z-буфер, чтобы получить текущее значение глубины
    • Сравнивает глубину из Z-буфера с глубиной примитива — если примитив ближе, записывает значения цвета и глубины в буфер кадров
    • Если задействованы операции смешения, также должна быть выполнена операция вида "чтение-изменение-запись" для компонентов цвета

Шаги, перечисленные как часть процесса растеризации, надо выполнить много раз на каждый пиксель для реализации мультисэмплового сглаживания. Важно отметить, что довольно сложно узнать, когда будут использованы новые текстуры. В дополнение, операции доступа к Z-буферу вида "чтение-изменение-запись" имеют тенденцию сильно ограничивать общую производительность системы. Большие примитивы также заставляют конвейер простаивать в процессе их рисования.

Процесс рендеринга, архитектура Giga3D

Архитектура Giga3D обрабатывает геометрию по-другому. Программно доступная часть конвейера рендеринга очень похожа на классические архитектуры. За ней находятся системы накопления данных и отсечения невидимых объектов, и затем тайловая система растеризации. Примитивы в случае архитектуры Giga3D принимаются немедленно, не ожидая растеризации. Система геометрии/накопления данных/видимости и система растеризации, или разбиения на тайлы, работают параллельно, но обычно над двумя разными кадрами. Пока для кадра с номером N собираются данные, кадр N-1 растеризуется. Это значит, что, до того как начинается растеризация, все требуемые текстуры были определены и есть все данные для того, чтобы сделать их доступными, как только они потребуются.

  • Обработка геометрии
    • Вершины трансформируются в пространство наблюдения
    • Примитив обрезается, чтобы вписаться в экран
    • Вычисляется и применяется вершинное освещение
  • Накопление данных и видимость
    • Каждый примитив вместе с требуемой для него информацией сопоставляется со всеми тайлами, которые он затрагивает
    • Отбрасываются все примитивы и пиксели, которые закрываются непрозрачными поверхностями
  • Растеризация — производится для каждого тайла для всех примитивов, которые затрагивают этот тайл
    • Вычисляет цвета
    • Вычисляет координаты для текстур
    • Производит операции выборки текстур и фильтрации
    • Читает Z-буфер, чтобы получить текущее значение глубины
    • Сравнивает глубину из Z-буфера с глубиной примитива — если примитив ближе, записывает значения цвета и глубины во встроенный буфер тайлов.
    • После того, как все примитивы прошли рендеринг, записывает данные о цвете и, если нужно, глубине во внешнний буфер кадров

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

Запаздывание в один кадр приводит к потрясающему увеличению эффективности

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

Как насчет совместимости?

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

Отсечение невидимых объектов

Что, если системе надо обработать только видимые примитивы?

Термин "средняя сложность глубины сцены" (сложность сцены) описывает среднее число полигонов, покрывающих каждый пиксел на экране. Например, сцена с единственным большим прямоугольником, закрывающим весь экран, имеет сложность сцены, равную единице. Сцена с двумя большими непрозрачными прямоугольниками, которые закрывают весь экран и один находится впереди другого, имела бы сложность сцены, равную двум и т.д. Чем более сложными становятся приложения, а сцены — более насыщенными, тем более возрастает средняя сложность глубины сцены. Текущие игры имеют значения сложности сцены около трех, и это число увеличивается. Реализация интерактивной среды с большим количеством участников может привести к очень высоким значениям сложности сцены, так как автор программы никак не может предотвратить выстраивание большого количества образов пользователей в любом произвольном порядке.

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

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

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

Преимущества для более сложных (попиксельных) операций

Самый лучший способ получить более реалистичные значения затенения — это производить более сложные пиксельные операции. Это уже реализовано с использованием карт освещения и других текстурных операций. С течением времени все более и более сложные операции будут производиться над каждым пикселом. Архитектура Giga3D прекрасно сбалансирована, чтобы лидировать в этой области. Система отсечения невидимых объектов позволяет архитектуре Giga3D иметь фактический уровень производительности в несколько раз больше достигаемого в классической архитектуре при той же скорости вычислений, так как их необходимо выполнять только для видимых пикселей.

Все дело в ширине полосы пропускания

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

Как далеко нам надо продвинуться?

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

Ограничение памяти

Существуют два способа построения подсистем памяти с более высокой пропускной способностью. Первый заключается в увеличении частоты. Недостаток этого подхода в том, что вопросы целостности сигнала быстро становятся. Стоимость упаковки кристалла в корпус растет в экспоненциальной прогресии. Иногда этот способ реализуют через более сложный протокол (такой, как Rambus), который обычно имеет высокую пропускную способность, но также и более высокую задержку (латентность), что создает проблемы для классических графических архитектур. Второй метод — спроектировать более широкий интерфейс. Это также приводит к значительному увеличению стоимости кристалла, платы и устройства в целом при переходе от 256 бит к 512 битам, 1024 битам и т.д. Увеличение ширины интерфейса памяти приводит к неэффективности в случае маленьких примитивов, например, когда приходится читать и затем записывать все 1024 бита, чтобы изменить одну точку узкого и высокого треугольника.

Как насчет встроенного динамического ОЗУ?

Многие люди надеются, что решения с встроенным динамическим ОЗУ позволят полностью переместить графическую память на кристалл, таким образом избегая сложности и дороговизны выскоскоростной внешней памяти. У этого подхода есть две проблемы. Первая заключается в том, что встроенная память имеет малый объем по сравнению с обычным динамическим ОЗУ. Разработка с возможностями высококачественного наложения текстур, работы с буфером глубины и сглаживания сцены при разрешении 1600x1200, потребует для реализации памяти эквивалент нескольких кристаллов, по крайней мере, для нескольких следующих поколений технологического процесса производства специализированных интегральных схем. Другая проблема состоит в том, что такая память слишком "дорогая" и в смысле цены, и в смысле ресурсов. Это происходит потому, что она в большинстве случаев не выходит на обычный для динамической памяти уровень стоимости, и потому, что остальная часть кристалла должна быть выполнена с использованием технологического процесса, который совместим с производством динамического ОЗУ, и значит, не оптимален для обычных кристаллов.

Какая скорость заполнения достаточна?

Предположим, что используется разрешение, как минимум, 1280x1024, сцены отличаются высокой сложностью и использованием многопроходных операций, что приводит к фактическим значениям сложности сцены в 10 и больше, полноэкранное сглаживание, и все это — при частоте кадров 75 Гц и больше. Какая скорость заполнения требуется для этого? Примерно 1280x1024*10*4*75 = 3.9 Гсэмплов в секунду, а на разрешении 1600x1200 это переходит в 5.76 Гсэмплов в секунду. Это базовый уровень производительности, требуемой для приличного качества изображения. По состоянию на ноябрь 1999, другие самые совершенные решения для рынка ПК достигают меньше, чем 500 Мсэмплов в секунду, что составляет приблизительно одну десятую от выведенного ранее уровня. Учитывая то, как далеко им надо продвинуться, и принимая во внимание и вышеприведенные ограничения на производительность памяти, классическим архитектурам будет очень трудно достичь требуемого уровня производительности без обращения к многочиповым решениям и нескольким независимым подсистемам памяти.

Насколько хороша Giga3D?

На типичной сцене при разрешении 1280x1024, используя 4х-кратное мультисэмпловое сглаживание, архитектура Giga3D использует менее одной десятой доли полосы пропускания памяти, требуемой классической архитектурой при рендеринге той же сцены. Это приводит к фантастической производительности при низких затратах на память, кристалл и устройство в целом. Автоматическое использование постоянного полноэкранного сглаживания на полной является потрясающим преимуществом фирменной архитектуры GigaPixel. Она предоставляет явное преимущество в качестве перед традиционной ахитектурой с равноценной подсистемой памяти.

Пространственная локализация

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

Насколько важно аппаратное трансформирование и освещение?

Важно помнить, что решающая оценка производительности — это ее значение для всей графической системы в целом. Число полигонов, необходимых для генерации сцен с соответствующей сложностью, изменяется в зависимости от требований к содержанию. Чем больше полигонов, тем, обычно, лучше. Примитивы высшего порядка (кривые поверхности) могут быть еще лучше. Архитектура Giga3D подобна классической архитектуре, с точки зрения программной модели конвейера. Это значит, что трансформирование и вершинное освещение в этой системе работают совершенно также и могут быть реализованы с такой же производительностью и эффективностью. Ни одна из двух архитектур не имеет в этом случае неоспоримого преимущества. Главный недостаток вершинного освещения в том, что использующие только его сцены могут выглядеть достаточно неестественно, если только примитивы не очень маленькие. С течением времени можно ожидать использования все большего и большего количества попиксельных операций, и это снова будет подчеркивать сильные стороны архитектуры Giga3D. Попиксельные и пофрагментные операции создают гораздо лучше выглядящие сцены, чем только одно вершинное освещение, и на них действует эффект увеличения производительности при отсечения невидимых объектов.

Интегрированные решения

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

Масштабирование производительности

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

Заключение

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

P.S. Обзор продукта GP-3

Продукт GP-3 компании GigaPixel, основанный на архитектуре Giga3D, является высокопроизводительным, обладающим высоким качеством и низкой стоимостью, дизайном ядра устройства трехмерной графики и предназначен для лицензирования. Модели на языке Verilog, модели симуляции на языке C, тестовые наборы, и программные драйверы — все это предлагается для интеграции GP-3 в ваш конечный продукт.

Полностью соответствуя требованиям Direct3D и OpenGL, GP-3 необыкновенно гибок и прост в программировании. Все возможности могут быть сконфигурированы с учетом требований различных сегментов рынка.

Запатентованная технология GP-3 имеет продвинутое устройство обработки геометрии, которое трансформирует параметры координат, текстур и цвета из пространства трехмерной модели в пространство экрана. Подсистемы разбития на тайлы, видимости и рендеринга, соответственно, разбивают кадр на тайлы, определяют видимые пикселы и производят рендеринг тайлов. Устройство рендеринга обрабатывает только те пикселы, которые будут видны. Затем, установка, затенение и текстурирование также производятся только над видимыми пикселями, значительно сокращая требования к дополнительной внутренней обработке и к полосе пропускания видеопамяти.

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

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

Шина интерфейса к памяти

Шина соединений общего назначения, MoBus, характеризуется 32-битной шиной адреса и мультиплексными шинами чтения и записи данных. Благодаря ее универсальной архитектуре (crossbar), MoBus масшатабируема и позволяет реализовать раздельные транзакции, а также буферизовать (конвейер) как запросы доступа к данным, так и передачу данных. MoBus использует очень простой протокол шины, что позволяет легко построить интерфейс к вашей системе.

GPDRV

GPDRV, программный драйвер GigaPixel для GP-3, является переносимым, независимым от интерфейсов программирования, уровнем аппаратной абстракции, который скрывает детали программирования аппаратуры GP-3 от программиста, реализующего поддержку интерфейса. GPDRV настроен на высокую производительность, и все критичные по скорости участки кода предоставляются для системы разработки клиента в виде встроенных функций (inline functions). GigaPixel также предоставляет референсные реализции драйверов для OpenGL и Direct3D, которые используют GPDRV.

Возможности и характеристики производтельности ядра Giga3D GP-3

  • Совместимость с Direct 3D и OpenGL
  • Бесплатное полноэкранное сглаживание (Full scene, full-speed anti-aliasing)
  • Ускорение геометрии (Geometry acceleration)
  • Трилинейная фильтрация: 2 текструры и 4 пикселя за такт (Tri-linear mipmapping: 2 textures and 4 pixels/clock)
  • Анизотропный фильтр (Anisotropic filter)
  • Коррекция перспективы (Perspective correction)
  • Аппаратное накопление данных (Hardware binning)
  • Механизм установки с плавающей точкой (Floating point setup engine)
  • Оптимизация видимости (Visibility optimizations)
  • Скорость заполнения (сложность сцены=4): 25.6 Гтекселей в секунды на частоте 200 МГц (12.8 Гсэмплов в секунду) (Fill rate (depth complexity = 4): 25.6 Gtexel/sec @200Mhz (12.8 Gsamples/sec)
  • Скорость обработки примитивов: 33-66 миллионов в секунду (Polygon rate: 33-66 million/sec)
  • Буфер глубины (Z buffer, 24 bit)
  • Чтение буфера глубины (Z buffer read back)
  • Функция глубины (Z function)
  • Субпиксельная и субтексельная коррекция (Sub-pixel and sub-texel accuracy)
  • Диффузное затенение (Diffuse shading)
  • Вспышки (Specular)
  • 32 битный цвет (32-bit color)
  • Альфа-смешение (Alpha blending)
  • Альфа-тестирование (Alpha test)
  • Функция прозрачности (Alpha function)
  • Геометрия: списки, цепочки и веера треугольников; линии и точки (Geometry: triangle lists, fans and strips; lines, points)
  • Затенение (Shadows)
  • Направленный свет (Spot lights)
  • Поддержка неквадратных текстур (Non-square texture support)
  • Композиция текстур (Texture compositing)
  • Сжатие текстур DXT1 (DXT-1 texture compression)
  • Форматы текстур (Texture formats): RGB565, RGBA5551, RGBA4444, RGB888, RGBA8888, BGR565, BGRA5551, BGRA4444, BGR888, BGRA8888, LA88, L8 и A8
  • Режимы заворачивания текстур: повторение, обрезание, зеркало и граница (Texture wrap modes: repeat, clamp, mirror, and border)
  • Фильтрация текстур: точечная, билинейная, трилинейная, анизотропная (Texture filters: point, bilinear, trilinear, and anisotropic)
  • Смешение текстур: форматы DX-6 и DX (Texture blending: DX-6 and DX-7)
  • Мультитекстурирование (Multi-texture)
  • Рендеринг в текстуру (Render to texture)
  • Туман (пиксельный и вершинный): линейный, exp и exp2 (Fog (per pixel and per vertex): linear, exp, and exp2)
  • Пиксельное смешение: src alpha, dst alpha (Pixel blending: src alpha blend and dst alpha blend)
  • Операции с шаблонами (Stencil operation)
  • Карты глубины, выдавливание (Embossed bump mapping)
  • Ускорение 2D
  • Число транзисторов: 4 миллиона (Gate count: 4 M)
  • Объем встроенной SRAM: 80 Кбайт (SRAM: 80 Kbytes)
  • Размер тайла: 32x32 пикселя (Tile size: 32x32 pixels)




14 июня 2000 Г.

Архитектура Giga3D

Архитектура Giga3D

Введение

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

Ключевая особенность архитектуры Giga3D, которая отличает ее от большинства графических решений на рынке, состоит в том, что растеризация в ней выполняется с использованием процесса, известного как "тайлинг", или "разбиение на куски". Основное преимущество этого типа рендеринга состоит в том, что тайлы разумного размера могут быть полностью отрендерены с использованием встроенной в чип статической памяти, при этом нет необходимости обращаться к внешнему динамическому ОЗУ для выполнения медленных операций вида "чтение-изменение-запись". Другие реализации тайловой архитектуры страдают от несовместимости со стандартными интерфейсами программирования или требуют от главного процессора выполнения дополнительных вычислений. Это не так в случае с архитектурой Giga3D — она полностью совместима со стандартными интерфейсами программирования трехмерной графики и использует общепринятую архитектуру драйверов.

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

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

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

Сглаживание

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

Текущие реализации архитектуры Giga3D делают 4х-кратное мультисэмпловое сглаживание со случайными смещениями (джитером) без падения скорости. Все конкурирующие графические архитектуры для ПК работают медленнее, когда сглаживание сцены включено. В случае Giga3D это не так. Кроме того, так как сэмплирующая решетка имеет переменный шаг (нерегулярна), достигаемое качество изображения лучше, чем с использованием двухкратно большего разрешения дисплея по обеим осям. Другими словами, разрешение 640x480 на аппаратуре GigaPixel выглядит заметно лучше, чем 1280x960 на сэмплирующих точечно (без сглаживания) графических системах. Точно так же, разрешение 1280x1024 выглядит лучше, чем могло бы выглядеть 2560x2048, если бы вы могли себе позволить дисплей с таким разрешением. Некоторые другие графические чипсеты позволяют производить рендеринг в высоком разрешении и затем фильтруют результат в более низкое. Для устройств класса ПК, по состоянию на ноябрь 1999, все эти решения страдают от значительного падения производительности при включении сглаживания. Они также используют сэмплирующую решетку с постоянным шагом (без смещений), и поэтому качество изображения у них хуже, чем у полученного с помощью Giga3D.

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

Процесс рендеринга, классическая архитектура

В классической архитектуре каждый примитив обрабатывается по мере поступления на конвейер. Процесс рендеринга состоит из двух главных этапов: обработка геометрии и растеризация.

  • Обработка геометрии
    • Вершины трансформируются в пространство наблюдения
    • Примитив обрезается, чтобы вписаться в экран
    • Вычисляется и применяется вершинное освещение
  • Растеризация — примитив сканируется в каждой точке пространства экрана (the primitive is scanned in screen space at each sample)
    • Вычисляет цвета
    • Вычисляет координаты для текстур
    • Производит операции выборки текстур и фильтрации
    • Читает Z-буфер, чтобы получить текущее значение глубины
    • Сравнивает глубину из Z-буфера с глубиной примитива — если примитив ближе, записывает значения цвета и глубины в буфер кадров
    • Если задействованы операции смешения, также должна быть выполнена операция вида "чтение-изменение-запись" для компонентов цвета

Шаги, перечисленные как часть процесса растеризации, надо выполнить много раз на каждый пиксель для реализации мультисэмплового сглаживания. Важно отметить, что довольно сложно узнать, когда будут использованы новые текстуры. В дополнение, операции доступа к Z-буферу вида "чтение-изменение-запись" имеют тенденцию сильно ограничивать общую производительность системы. Большие примитивы также заставляют конвейер простаивать в процессе их рисования.

Процесс рендеринга, архитектура Giga3D

Архитектура Giga3D обрабатывает геометрию по-другому. Программно доступная часть конвейера рендеринга очень похожа на классические архитектуры. За ней находятся системы накопления данных и отсечения невидимых объектов, и затем тайловая система растеризации. Примитивы в случае архитектуры Giga3D принимаются немедленно, не ожидая растеризации. Система геометрии/накопления данных/видимости и система растеризации, или разбиения на тайлы, работают параллельно, но обычно над двумя разными кадрами. Пока для кадра с номером N собираются данные, кадр N-1 растеризуется. Это значит, что, до того как начинается растеризация, все требуемые текстуры были определены и есть все данные для того, чтобы сделать их доступными, как только они потребуются.

  • Обработка геометрии
    • Вершины трансформируются в пространство наблюдения
    • Примитив обрезается, чтобы вписаться в экран
    • Вычисляется и применяется вершинное освещение
  • Накопление данных и видимость
    • Каждый примитив вместе с требуемой для него информацией сопоставляется со всеми тайлами, которые он затрагивает
    • Отбрасываются все примитивы и пиксели, которые закрываются непрозрачными поверхностями
  • Растеризация — производится для каждого тайла для всех примитивов, которые затрагивают этот тайл
    • Вычисляет цвета
    • Вычисляет координаты для текстур
    • Производит операции выборки текстур и фильтрации
    • Читает Z-буфер, чтобы получить текущее значение глубины
    • Сравнивает глубину из Z-буфера с глубиной примитива — если примитив ближе, записывает значения цвета и глубины во встроенный буфер тайлов.
    • После того, как все примитивы прошли рендеринг, записывает данные о цвете и, если нужно, глубине во внешнний буфер кадров

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

Запаздывание в один кадр приводит к потрясающему увеличению эффективности

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

Как насчет совместимости?

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

Отсечение невидимых объектов

Что, если системе надо обработать только видимые примитивы?

Термин "средняя сложность глубины сцены" (сложность сцены) описывает среднее число полигонов, покрывающих каждый пиксел на экране. Например, сцена с единственным большим прямоугольником, закрывающим весь экран, имеет сложность сцены, равную единице. Сцена с двумя большими непрозрачными прямоугольниками, которые закрывают весь экран и один находится впереди другого, имела бы сложность сцены, равную двум и т.д. Чем более сложными становятся приложения, а сцены — более насыщенными, тем более возрастает средняя сложность глубины сцены. Текущие игры имеют значения сложности сцены около трех, и это число увеличивается. Реализация интерактивной среды с большим количеством участников может привести к очень высоким значениям сложности сцены, так как автор программы никак не может предотвратить выстраивание большого количества образов пользователей в любом произвольном порядке.

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

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

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

Преимущества для более сложных (попиксельных) операций

Самый лучший способ получить более реалистичные значения затенения — это производить более сложные пиксельные операции. Это уже реализовано с использованием карт освещения и других текстурных операций. С течением времени все более и более сложные операции будут производиться над каждым пикселом. Архитектура Giga3D прекрасно сбалансирована, чтобы лидировать в этой области. Система отсечения невидимых объектов позволяет архитектуре Giga3D иметь фактический уровень производительности в несколько раз больше достигаемого в классической архитектуре при той же скорости вычислений, так как их необходимо выполнять только для видимых пикселей.

Все дело в ширине полосы пропускания

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

Как далеко нам надо продвинуться?

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

Ограничение памяти

Существуют два способа построения подсистем памяти с более высокой пропускной способностью. Первый заключается в увеличении частоты. Недостаток этого подхода в том, что вопросы целостности сигнала быстро становятся. Стоимость упаковки кристалла в корпус растет в экспоненциальной прогресии. Иногда этот способ реализуют через более сложный протокол (такой, как Rambus), который обычно имеет высокую пропускную способность, но также и более высокую задержку (латентность), что создает проблемы для классических графических архитектур. Второй метод — спроектировать более широкий интерфейс. Это также приводит к значительному увеличению стоимости кристалла, платы и устройства в целом при переходе от 256 бит к 512 битам, 1024 битам и т.д. Увеличение ширины интерфейса памяти приводит к неэффективности в случае маленьких примитивов, например, когда приходится читать и затем записывать все 1024 бита, чтобы изменить одну точку узкого и высокого треугольника.

Как насчет встроенного динамического ОЗУ?

Многие люди надеются, что решения с встроенным динамическим ОЗУ позволят полностью переместить графическую память на кристалл, таким образом избегая сложности и дороговизны выскоскоростной внешней памяти. У этого подхода есть две проблемы. Первая заключается в том, что встроенная память имеет малый объем по сравнению с обычным динамическим ОЗУ. Разработка с возможностями высококачественного наложения текстур, работы с буфером глубины и сглаживания сцены при разрешении 1600x1200, потребует для реализации памяти эквивалент нескольких кристаллов, по крайней мере, для нескольких следующих поколений технологического процесса производства специализированных интегральных схем. Другая проблема состоит в том, что такая память слишком "дорогая" и в смысле цены, и в смысле ресурсов. Это происходит потому, что она в большинстве случаев не выходит на обычный для динамической памяти уровень стоимости, и потому, что остальная часть кристалла должна быть выполнена с использованием технологического процесса, который совместим с производством динамического ОЗУ, и значит, не оптимален для обычных кристаллов.

Какая скорость заполнения достаточна?

Предположим, что используется разрешение, как минимум, 1280x1024, сцены отличаются высокой сложностью и использованием многопроходных операций, что приводит к фактическим значениям сложности сцены в 10 и больше, полноэкранное сглаживание, и все это — при частоте кадров 75 Гц и больше. Какая скорость заполнения требуется для этого? Примерно 1280x1024*10*4*75 = 3.9 Гсэмплов в секунду, а на разрешении 1600x1200 это переходит в 5.76 Гсэмплов в секунду. Это базовый уровень производительности, требуемой для приличного качества изображения. По состоянию на ноябрь 1999, другие самые совершенные решения для рынка ПК достигают меньше, чем 500 Мсэмплов в секунду, что составляет приблизительно одну десятую от выведенного ранее уровня. Учитывая то, как далеко им надо продвинуться, и принимая во внимание и вышеприведенные ограничения на производительность памяти, классическим архитектурам будет очень трудно достичь требуемого уровня производительности без обращения к многочиповым решениям и нескольким независимым подсистемам памяти.

Насколько хороша Giga3D?

На типичной сцене при разрешении 1280x1024, используя 4х-кратное мультисэмпловое сглаживание, архитектура Giga3D использует менее одной десятой доли полосы пропускания памяти, требуемой классической архитектурой при рендеринге той же сцены. Это приводит к фантастической производительности при низких затратах на память, кристалл и устройство в целом. Автоматическое использование постоянного полноэкранного сглаживания на полной является потрясающим преимуществом фирменной архитектуры GigaPixel. Она предоставляет явное преимущество в качестве перед традиционной ахитектурой с равноценной подсистемой памяти.

Пространственная локализация

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

Насколько важно аппаратное трансформирование и освещение?

Важно помнить, что решающая оценка производительности — это ее значение для всей графической системы в целом. Число полигонов, необходимых для генерации сцен с соответствующей сложностью, изменяется в зависимости от требований к содержанию. Чем больше полигонов, тем, обычно, лучше. Примитивы высшего порядка (кривые поверхности) могут быть еще лучше. Архитектура Giga3D подобна классической архитектуре, с точки зрения программной модели конвейера. Это значит, что трансформирование и вершинное освещение в этой системе работают совершенно также и могут быть реализованы с такой же производительностью и эффективностью. Ни одна из двух архитектур не имеет в этом случае неоспоримого преимущества. Главный недостаток вершинного освещения в том, что использующие только его сцены могут выглядеть достаточно неестественно, если только примитивы не очень маленькие. С течением времени можно ожидать использования все большего и большего количества попиксельных операций, и это снова будет подчеркивать сильные стороны архитектуры Giga3D. Попиксельные и пофрагментные операции создают гораздо лучше выглядящие сцены, чем только одно вершинное освещение, и на них действует эффект увеличения производительности при отсечения невидимых объектов.

Интегрированные решения

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

Масштабирование производительности

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

Заключение

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

P.S. Обзор продукта GP-3

Продукт GP-3 компании GigaPixel, основанный на архитектуре Giga3D, является высокопроизводительным, обладающим высоким качеством и низкой стоимостью, дизайном ядра устройства трехмерной графики и предназначен для лицензирования. Модели на языке Verilog, модели симуляции на языке C, тестовые наборы, и программные драйверы — все это предлагается для интеграции GP-3 в ваш конечный продукт.

Полностью соответствуя требованиям Direct3D и OpenGL, GP-3 необыкновенно гибок и прост в программировании. Все возможности могут быть сконфигурированы с учетом требований различных сегментов рынка.

Запатентованная технология GP-3 имеет продвинутое устройство обработки геометрии, которое трансформирует параметры координат, текстур и цвета из пространства трехмерной модели в пространство экрана. Подсистемы разбития на тайлы, видимости и рендеринга, соответственно, разбивают кадр на тайлы, определяют видимые пикселы и производят рендеринг тайлов. Устройство рендеринга обрабатывает только те пикселы, которые будут видны. Затем, установка, затенение и текстурирование также производятся только над видимыми пикселями, значительно сокращая требования к дополнительной внутренней обработке и к полосе пропускания видеопамяти.

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

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

Шина интерфейса к памяти

Шина соединений общего назначения, MoBus, характеризуется 32-битной шиной адреса и мультиплексными шинами чтения и записи данных. Благодаря ее универсальной архитектуре (crossbar), MoBus масшатабируема и позволяет реализовать раздельные транзакции, а также буферизовать (конвейер) как запросы доступа к данным, так и передачу данных. MoBus использует очень простой протокол шины, что позволяет легко построить интерфейс к вашей системе.

GPDRV

GPDRV, программный драйвер GigaPixel для GP-3, является переносимым, независимым от интерфейсов программирования, уровнем аппаратной абстракции, который скрывает детали программирования аппаратуры GP-3 от программиста, реализующего поддержку интерфейса. GPDRV настроен на высокую производительность, и все критичные по скорости участки кода предоставляются для системы разработки клиента в виде встроенных функций (inline functions). GigaPixel также предоставляет референсные реализции драйверов для OpenGL и Direct3D, которые используют GPDRV.

Возможности и характеристики производтельности ядра Giga3D GP-3

  • Совместимость с Direct 3D и OpenGL
  • Бесплатное полноэкранное сглаживание (Full scene, full-speed anti-aliasing)
  • Ускорение геометрии (Geometry acceleration)
  • Трилинейная фильтрация: 2 текструры и 4 пикселя за такт (Tri-linear mipmapping: 2 textures and 4 pixels/clock)
  • Анизотропный фильтр (Anisotropic filter)
  • Коррекция перспективы (Perspective correction)
  • Аппаратное накопление данных (Hardware binning)
  • Механизм установки с плавающей точкой (Floating point setup engine)
  • Оптимизация видимости (Visibility optimizations)
  • Скорость заполнения (сложность сцены=4): 25.6 Гтекселей в секунды на частоте 200 МГц (12.8 Гсэмплов в секунду) (Fill rate (depth complexity = 4): 25.6 Gtexel/sec @200Mhz (12.8 Gsamples/sec)
  • Скорость обработки примитивов: 33-66 миллионов в секунду (Polygon rate: 33-66 million/sec)
  • Буфер глубины (Z buffer, 24 bit)
  • Чтение буфера глубины (Z buffer read back)
  • Функция глубины (Z function)
  • Субпиксельная и субтексельная коррекция (Sub-pixel and sub-texel accuracy)
  • Диффузное затенение (Diffuse shading)
  • Вспышки (Specular)
  • 32 битный цвет (32-bit color)
  • Альфа-смешение (Alpha blending)
  • Альфа-тестирование (Alpha test)
  • Функция прозрачности (Alpha function)
  • Геометрия: списки, цепочки и веера треугольников; линии и точки (Geometry: triangle lists, fans and strips; lines, points)
  • Затенение (Shadows)
  • Направленный свет (Spot lights)
  • Поддержка неквадратных текстур (Non-square texture support)
  • Композиция текстур (Texture compositing)
  • Сжатие текстур DXT1 (DXT-1 texture compression)
  • Форматы текстур (Texture formats): RGB565, RGBA5551, RGBA4444, RGB888, RGBA8888, BGR565, BGRA5551, BGRA4444, BGR888, BGRA8888, LA88, L8 и A8
  • Режимы заворачивания текстур: повторение, обрезание, зеркало и граница (Texture wrap modes: repeat, clamp, mirror, and border)
  • Фильтрация текстур: точечная, билинейная, трилинейная, анизотропная (Texture filters: point, bilinear, trilinear, and anisotropic)
  • Смешение текстур: форматы DX-6 и DX (Texture blending: DX-6 and DX-7)
  • Мультитекстурирование (Multi-texture)
  • Рендеринг в текстуру (Render to texture)
  • Туман (пиксельный и вершинный): линейный, exp и exp2 (Fog (per pixel and per vertex): linear, exp, and exp2)
  • Пиксельное смешение: src alpha, dst alpha (Pixel blending: src alpha blend and dst alpha blend)
  • Операции с шаблонами (Stencil operation)
  • Карты глубины, выдавливание (Embossed bump mapping)
  • Ускорение 2D
  • Число транзисторов: 4 миллиона (Gate count: 4 M)
  • Объем встроенной SRAM: 80 Кбайт (SRAM: 80 Kbytes)
  • Размер тайла: 32x32 пикселя (Tile size: 32x32 pixels)