Технология T-Buffer от 3dfx

Технология T-Buffer была создана инженерами компании 3dfx с тем, чтобы повысить уровень реализма визуализации 3D графики в персональных компьютерах. Не секрет, что главной целью разработчиков систем 3D визуализации является обеспечение фотореалистичного качества воспроизведения графики с плавностью воспроизведения графического видео ряда как в кино. Достигнуть этого можно при условии избавления от различных дефектов изображения, возникающих при воспроизведении компьютерной 3D графики. Конечная цель заключается в приближении качества создаваемого изображения на компьютерных системах к качеству изображений, получаемых с помощью фото или видеокамер. В принципе, существующие технологии визуализации позволяют добиться высокого реализма графики в одном кадре, т.е. при статичном изображении. Более того, достаточно высокого реализма можно добиться при создании графического видеоряда, создаваемого заранее, т.е. не в режиме реального времени. Но чтобы подобная визуализация происходила в реальном времени (интерактивно), т.е. чтобы кадры формировались с достаточной скоростью для плавного изменения сцены в игре, сравнимого по качеству с изменениями сцены, происходящими на экране кинотеатра, требуются большие вычислительные ресурсы, достаточные объемы быстрой памяти, а также новые алгоритмы и технологические решения. Хорошим примером, показывающим разницу между графическим видеорядом, формируемым в режиме реального времени и созданным заранее может служить любая игра, у которой имеется вступительный видео ролик (т.н. intro). Во вступительном видео ролике, как правило, красивая анимация, похожая на настоящий фильм, в игре все обстоит несколько иначе. Нет плавности линий, персонажи не так тщательно прорисованы, освещение не всегда выглядит естественным и т.д. и т.п. Так вот разработчики технологий и аппаратного обеспечения стремятся сделать возможным, чтобы в игре обеспечивалась визуализация сцены в реальном времени с фотореалистичным качеством и со скоростью смены кадров, обеспечивающей плавность и естественность движений (т.н. full motion).

Технология T-Buffer, о которой решила поведать компания 3dfx, должна способствовать обеспечению более качественной визуализации компьютерной 3D графики за счет наложения различных цифровых эффектов в режиме реального времени на сформированное в результате рендеринга изображение. Самыми важными среди предлагаемых к использованию эффектов являются: full-scene spatial anti-aliasing (сглаживание всей сцены, т.е. удаление неровностей линий и границ полигонов на всем пространстве видимой сцены, чаще называемым просто full-scene anti-aliasing), motion blur (эффект размытости контуров быстро движущихся объектов, аналогичный тому, который возникает при съемке фотокамерой движущихся объектов) и depth of field (эффект облегчающий визуальное восприятие конкретных объектов сцены за счет фокусировки только на конкретном объекте или части сцена, а все остальная сцена остается не в фокусе, т.е. размывается). Эффект depth of field позволяет использовать такой параметр, как расстояние между объектами. Делается это за счет введения различных уровней четкости или величины фокусировки для каждого объекта сцены. Объект или часть сцены, на которых сделана фокусировка, выглядят более четко, а все остальные объекты или окружающая сцена выглядят более размытыми. Таким образом, внимание наблюдателя может концентрироваться как на близких, так и на удаленных объектах или частях сцены.

Заметим, что реализация двух первых эффектов (full scene antialiasing и motion blur) не представляет никаких проблем в случае с традиционной (химической) фотографией. На фотопленке границы объектов фиксируются без внесения каких-либо искажений в виде неровностей, а эффект motion blur (т.е. размытие очертаний быстро движущегося объекта) легко получается в результате обычной съемки движущихся объектов с выдержкой в 1/250 секунды или более медленной. В итоге, наложив на отображаемую 3D графическую сцену подобные эффекты, удается сделать конечное изображение более реалистичным.

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

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

Теперь сделаем небольшое отступление для исторической справки. Посмотрим, что же лежит в основе создания технологии T-Buffer.

Немного истории

Многие функциональные возможности современных чипов 3D акселераторов, применяемых в настольных компьютерах, берут свое начало из алгоритмов рендеринга, разработанных для высокопроизводительных графических рабочих станций. Современные настольные компьютеры становятся все быстрее и мощнее, вследствие чего дорогостоящие решения для рабочих станций находят широкое применение в недорогих настольных компьютерах. Чтобы понять, для чего создана технология T-Buffer, мы совершим небольшой исторический экскурс и рассмотрим некоторые алгоритмы, которые создавались изначально для рабочих станций.

В 1984 году Robert Cook, Thomas Porter и Loren Carpenter работавшие в компьютерном подразделении компании Lucasfilm Ltd. опубликовали доклад под названием Distributed Ray Tracing (Распределенная трассировка лучей в компьютерной графике). Доклад был посвящен тем же проблемам, решить которые должна технология T-Buffer. В те времена, когда доклад был опубликован, существующий метод известный под именем ray tracing позволял отображать четкие тени, отражения и отраженный свет в создаваемых компьютером изображениях за счет точного определения путей распространения световых лучей. Тем не менее, первоначальный алгоритм ray tracing имел ограниченную возможность в области создания эффектов размытия или т.н. смягчающих эффектов (soft effect), таких, как, например плавные (размытые) границы большинства теней в реальном мире или эффект depth of field, о котором мы говорили выше.

Одной из причин такого ограничения являлось то, что следствием использования техники ray tracing становится появление артефактов (дефектов или ошибок) сглаживания (aliasing artifacts). Преимуществом технологии distributed ray tracing было как раз в том, что она совмещала в себе основную идею техники ray tracing в сочетании с новой техникой сглаживания (anti-aliasing). В итоге, был предложен новый способ создания изображений с гораздо более простым в реализации методом наложения эффектов размытия, например, плавные тени (soft shadows), motion blur и depth of field.

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

Одна из проблем, требующих решения, заключалась в том, чтобы найти способ наложения этих новых эффектов в режиме реального времени, т.е. при высокой скорости смены кадров и отображения сцены. Решение этой проблемы было описано в 1990 году в докладе Paul Haeberli и Kurt Akeley из компании Silicon Graphics Computer Systems, который назывался "The Accumulation Buffer: Hardware Support for High-Quality Rendering" (Буфер накопления: аппаратная поддержка высококачественного рендеринга).

Accumulation Buffer, к которому мы еще вернемся несколько позже, это системная архитектура, которая обеспечивает дополнительный буфер для интеграции нескольких процессов рендеринга одной сцены. Хотя изначально accumulation buffer использовался для пространственного сглаживания (spatial anti-aliasing), он также обеспечивал возможность использования таких эффектов, как soft shadows, motion blur и depth of field. Но, что самое важное, accumulation buffer обеспечивал возможность применения этих эффектов в режиме реального времени.

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

Зачем нужен T-Buffer

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

Тут на горизонте появляется проблема определения того, насколько должна быть мала разница между изображением, созданным с помощью компьютера и тем, что обычный пользователь привык видеть в реальной жизни, на фотографиях и в кино. Технология T-Buffer призвана сократить разницу между реальной жизнью и компьютерной моделью. Сокращение разрыва достигается за счет обеспечения аппаратного ускорения в режиме реального времени реализации таких эффектов, как spatial anti-aliasing, motion blur, depth of field и других, близких по смыслу эффектов.

Очень важно понимать, что рендеринг с применением таких эффектов, как spatial anti-aliasing, motion blur, depth of field и других техник может сделать воспринимаемое зрителем изображение настолько реалистичным, что это будет просто раздражать его, так как не будет оправдывать его ожиданий увидеть нечто созданное компьютером. Конечная цель использования любых специальных эффектов в том, чтобы зритель ощущал себя внутри создаваемого на экране монитора 3D мира во время игры или использования симулятора. Поэтому, держа это в голове, посмотрим более внимательно на спецификации цифровых эффектов, возможность использования которых обеспечивает технология T-Buffer.

Full Scene Spatial Anti-Aliasing

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


Слева: anti-aliasing Off, справа: anti-aliasing On

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

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

Не вдаваясь в подробности, скажем, что необходимость использования sampling исходит из реальных ограничений в виде доступных объемов памяти, ограниченной ширины полосы пропускания и т.д. Выходом является дискретизация (sampling) данных об исходном изображении с постоянным интервалом и хранение полученных, неполноценного набора данных. Но в результате храниться меньший объем информации об изображении, чем в идеале должно было бы храниться. Вследствие того, что некоторая часть данных об исходном изображении теряется, могут возникать визуальные артефакты подобные неровностям (aliasing). Для смягчения таких отрицательных проявлений в техниках рендеринга часто используется прием, суть которого заключается в увеличении коэффициента дискретизации (super-sampling) с тем, чтобы хранить больше данных об исходном изображении.

В контексте обсуждения технологии T-Buffer имеет смысл четко различать пространственное сглаживание (spatial anti-aliasing) и сглаживание (anti-aliasing) в общем. Почти все цифровые эффекты, которые доступны к использованию благодаря T-Buffer, в строгом техническом смысле являются вариациями общего случая сглаживания (anti-aliasing). Когда мы обсуждаем пространственное сглаживание (spatial anti-aliasing), мы говорим о процессе удаления неровностей на краях полигонов и минимизации эффекта пляшущих полигонов. Тем не менее, T-Buffer, может также осуществлять temporal anti-aliasing (super-sampling в момент применения эффекта motion blur) и focal anti-aliasing (super-sampling в фокусном расстоянии для реализации эффекта depth of field).

Также важно сделать различие между full-scene spatial anti-aliasing (пространственное сглаживание всей сцены, чаще используется термин full-scene anti-aliasing) и упрощенной формой пространственного сглаживания, которое устраняет неровности только границ объектов (включая линии, чаще используется термин edge-anti-aliasing). Только применение техники пространственного сглаживания всей сцены позволяет избавиться от всех пространственных артефактов в виде неровностей, включая неровности краев и пляшущие полигоны. В спецификациях некоторых 3D графических карт доступных сегодня на рынке, заявлено о поддержке пространственного сглаживания (spatial anti-aliasing). Но в реальности в имеющихся реализациях есть некоторые ограничения: например, если в отображаемой сцене необходимо произвести сортировку (по существу произвести компоновку объектов 3D сцены по параметру глубины для удаления невидимых поверхностей) или, если необходимо переопределить границы полигонов и произвести их прорисовку, то сглаживание не происходит вообще, либо выполняется программными методами, т.е. за счет CPU, а в результате снижается производительность. Каждый из методов в этом случае очень сильно нагружает центральный процессор системы. В результате разработчики приложений (читай игр) делают выбор в пользу высокой частоты смены кадров, нежели используют преимущества доступных в настоящее время технологий пространственного сглаживания, работающих в режиме "не реального времени". Стоит отметить, что в случае с нетрадиционной архитектурой 3D визуализации PowerVR от VideoLogic этих проблем нет, только вот и карт на базе чипа PowerVR 250 тоже пока нет на рынке. Но все может изменить применение технологии T-Buffer, которая является первой техникой, рассчитанной на массовый рынок, обеспечивающей пространственное сглаживание всей сцены (full-scene anti-aliasing) в режиме реального времени.

Motion Blur

Существующие технологии создания изображений с помощью компьютеров воспроизводят моделирование движущегося объекта за счет прорисовки каждого кадра в отдельности. При этом движущийся объект в каждом кадре прорисовывается с четкими, ровными краями. В результате, когда происходит проигрывание созданного графического видео ряда, движение прорисованного объекта выглядит нереальным. Иногда кажется, что прорисованный объект освещается импульсным (стробоскопическим) источником света, в результате чего движение происходит как бы рывками, без плавных переходов между кадрами, порой напоминая фильмы немого кино. Такой эффект называют стробоскопическими дефектами (strobing artifacts). В реальной жизни или на экране кинотеатра объекты движутся плавно, без рывков. Strobing artifacts могут быть также отнесены к разряду temporal aliasing, т.е. временных неровностей. Применение технологии T-Buffer позволит решить эту проблему, за счет обеспечения поддержки наложения эффекта motion blur (размытие очертаний быстро движущегося объекта) в режиме реального времени.

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

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

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

В качестве примера, показывающего положительное влияние эффекта motion blur на визуальное восприятие сцен с движущимися объектами, можно привести кинофильм. Кинопроектор прокручивает пленку с фильмом со скоростью смены 24 кадров в течение каждой секунды. Зрители видят на экране естественное движение персонажей. В тоже время, если вы запустите компьютерную игру, в которой каждую секунду также будут сменяться 24 кадра, вы все равно легко заметите неестественность движений персонажей в игре.

Разница возникает из-за того, что кинокамера производит съемку за счет открытия затвора в течение некоторого периода времени, за которое свет попадает на пленку, в то же время снимаемый объект продолжает движение. Фактически этот процесс обеспечивает автоматическое наложение эффекта motion blur. Съемка с наложением эффекта motion blur в каждом кадре пленки позволяет зрителям вполне комфортно воспринимать фильм при частоте смены 24 кадров в секунду. Для сравнения, изображение созданное с помощью компьютера и без применения эффекта motion blur необходимо воспроизводить с частотой смены кадров в 2-3 раза большей, чтобы избежать проявления стробоскопических дефектов при отображении движущихся объектов. Технология T-Buffer позволяет воспроизводить графический видео ряд с высокой частотой смены кадров и при одновременном наложении эффекта motion blur в режиме реального времени, что должно обеспечить наилучший уровень восприятия компьютерной 3D графики.

Depth of Field

Любой непрофессиональный фотограф, у которого есть камера с возможностью изменения фокусного расстояния или с жестко установленным фокусным расстоянием, имеет, по крайней мере, минимальное представление о проблеме depth of field (т.е. наведение резкости при съемке конкретного объекта). Расположите камеру максимально близко к стеклу окна в вашем доме, по которому стекают дождевые капли, сфотографируйте картину и вы увидите на фотографии, что большая часть мира за окном будет выглядеть размазанным, с неразличимыми деталями. Измените фокусировку камеры, наведя ее на дом через дорогу, тогда на фотографии не будут видны дождевые капли на стекле окна. Теперь вы имеете представление о том, что такое depth of field.

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

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

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

Создаваемое сегодня на компьютере изображение в режиме реального времени, тем не менее, не обеспечивает зрителя какими-либо компонентами визуального восприятия для определения расстояния и не обеспечивает возможности использовать эффекты типа depth of field для привлечения внимания зрителя к определенным участкам изображения на экране. Современные графические системы отображают все объекты на экране (близкие и удаленные) в фокусе, до тех пор, пока не будет специальным образом добавлен эффект размытия, чтобы добиться результата как при использовании эффекта depth of field. Технология T-Buffer впервые обеспечит возможность использования в режиме реального времени эффектов depth of field на компьютерах для массового рынка.

Soft Shadows и Reflectance Blur

Технология T-Buffer также обеспечивает возможность использования нескольких других эффектов. Два из них заслуживают особого внимания: soft shadows (мягкие тени или тени с плавными, размытыми контурами) и reflectance blur (размытые отражения).

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

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

Что же представляю собой все эти эффекты в общем случае?

Эффекты full-scene spatial anti-aliasing, motion blur, depth of field, soft shadows и reflectance blur все имеют одну важную общую черту: говоря строгим техническим языком, все эти эффекты представляют собой вариации техники сглаживания (anti-aliasing). Как уже отмечалось, aliasing или дефекты в виде неровностей являются следствием использования метода under-sampling (т.е. дискретизации с уменьшающим коэффициентом). Или, говоря общими словами, aliasing артефакты являются визуальными аномалиями, возникающими из-за того, что имеется и хранится меньше информации об изображении, чем на самом деле необходимо.

Технология T-Buffer обеспечивает возможность ускорения работы применяемой общей техники сглаживания (anti-aliasing) за счет использования большего числа кадров одного и того же исходного изображения (просто нет более точного термина для этого) для обеспечения лучшего качества визуализации. В случае с full-scene spatial anti-aliasing это означает, что используется большее число семплов в 2D (XY) пространстве с целью избавления от неровностей или лестничного эффекта на границах (краях) полигонов. Для эффекта motion blur это означает, что в течение одного и того же временного интервала используется большее число семплов с целью избежать стробоскопического эффекта при отображении быстро движущихся объектов. В случае с эффектом depth of field, это означает использование большего числа фокальных объектов (т.е. находящихся в фокусе камеры) с целью сделать результат 3D рендеринга более похожим на съемку настоящей камерой реальных объектов. Эффекты soft shadows и reflectance blur также основаны на аналогичных техниках используемых при множественной дискретизации (multiple samplings).

Другая общая черта, которой обладают эти специальные эффекты, заключается в том, что за исключением full-scene spatial anti-aliasing все они имеют относительно тонкое воздействие на визуальное восприятие. Суть в том, что наличие или отсутствие этих эффект не всегда сказывается на восприятии созданного с помощью компьютера изображения, в то время, как отсутствие пространственного сглаживания (full-scene spatial anti-aliasing) очень сильно ухудшает общие ощущения от восприятия 3D графики. Заметим, что, невзирая на то, насколько тонко воздействуют на восприятие эти эффекты, их использование обеспечит повышение качества изображений, создаваемых на компьютере, делая грань различий между компьютерной графикой и фотографией все тоньше. Не используйте эти эффекты, и любой неподготовленный зритель сразу определит, что воспроизводимое изображение выглядит совсем ненатурально, даже если наблюдатель не сможет в точности сказать, чего именно не хватает изображению и что в нем не так, как должно бы быть. Технология T-Buffer позволит сократить разрыв между реальностью и компьютерной моделью, сделав возможным отображение высококачественной графики в режиме реального времени на системах, рассчитанных на массовый рынок.

Как работает T-Buffer

Чтобы понять, какие преимущества дает использование технологии T-Buffer, нужно знать и понимать, как работает эта технология и в чем ее отличие от предшествующей технологии Accumulation Buffer.

Хотя существует несколько разновидностей реализации Accumulation Buffer, в технике рендеринга обычно используются следующие шаги:

  1. Очистка буфера накопления (Accumulation Buffer)
  2. Очистка вторичного буфера (back buffer) и рендеринг всей сцены во вторичном буфере
  3. Передача всех данных о созданной сцене в буфер накопления с определением изменений в сцене (weighting, это как раз и называется этапом накопления)
  4. Повторение шагов 2 и 3 столько раз, сколько требуется. Каждое повторение заключает в себе процесс комбинирования новой версии изображения с изображением, которое уже хранится в буфере накопления, в итоге результирующее изображение создается в как усреднение на основе данных об изменениях в различных версиях одной сцены, формирующих в итоге конечное изображение. Фактически происходит комбинирование нескольких изображений, за счет чего и происходит наложение различных эффектов.
  5. Передача, с учетом масштабирования, содержимого буфера накопления во вторичный буфер и обмен содержимого вторичного и первичного буферов. Результатом являются данные об изображении, которое будет выведено на экран. Вывод на экран производится из первичного буфера (front buffer).

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

По существу T-Buffer выполняет такую же работу, как и Accumulation Buffer. И тот и другой осуществляют комбинирование нескольких различных изображений, чтобы наложить на результирующее изображения цифровые эффекты. Однако конечный результат достигается различными методами. Шаги, необходимые для наложения эффектов при использовании технологии T-Buffer довольно просты:

  1. Очистка вторичного буфера (или нескольких вторичных буферов)
  2. Рендеринг нескольких изображений во вторичном буфере (или во вторичных буферах)
  3. Обмен содержимого первичного и вторичного буфера, а затем вывод изображения на экран.

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

Существует эмпирическое правило, суть которого в том, что для достижения максимально возможного качества изображения необходимо объединить от 16 до 30 слегка отличающихся изображений, чтобы в результате получилось конечное изображение. Тем не менее, при использовании существующих технологий очень сложно осуществить такое количество повторяющихся операций без снижения скорости смены кадров ниже уровня режима реального времени. К счастью, при использовании от 4 до 8 операций повторений в режиме реального времени обычно удается обеспечить высокое качество изображения за счет наложения специальных эффектов, а обе технологии, T-Buffer и Accumulation Buffer, поддерживают такой режим работы.

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

Отметим еще одну важную деталь. T-Buffer позволяет работать одновременно с несколькими кадровыми буферами (обычно включающими в себя вторичный/первичный буферы), что избавляет от необходимости повторяемых операций рендеринга. На практике это означает возможность рендеринга изображения одновременно в нескольких кадровых буферах (в нескольких вторичных буферах), т.е. все происходит параллельно. T-Buffer осуществляет комбинирование изображений, созданных в нескольких кадровых буферах, в процессе чего и происходит наложение специальных цифровых эффектов. Затем результирующее изображение передается в первичный буфер (кадровый буфер) и выводится оттуда на экран монитора.

В случае применения пространственного сглаживания T-Buffer управляет рендерингом в нескольких кадровых буферах на пиксельном уровне. В этом случае для определения пикселей конечного изображения используется избыточная информация в виде данных о нескольких пикселей (т.н. субпиксели), рендеринг которых происходит в различных кадровых буферах (четыре или более) Затем под управлением T-Buffer происходит смешивание субпикселей, в результате чего и получается конечный пиксель. Это обеспечивает отсутствие дефектов в виде неровностей краев полигонов, линий и сцинтилляции полигонов. Другими словами 3D сцена представляется в виде нескольких 2D изображений, которые представляют собой просто разные слои одного и того же конечного изображения. T-Buffer комбинирует эти несколько слоев и в результате получается конечное изображение.

Эффекты типа motion blur, soft shadows, soft reflectance и depth of field реализуются за счет рендеринга четырех или более кадров одного и того же финального изображения, но в разных перспективах, т.е. под разными углами зрения. Например, в случае с эффектом motion blur, происходит рендеринг изображения движущегося объекта за промежуток времени, в результате в финальном кадре получается требуемое смазывание контуров. Аналогичная идея применяется и в случае моделирования эффекта depth of field. При этом происходит рендеринг нескольких вариаций одной и той же сцены с применением разных параметров фокусировки. В случае с размытыми тенями и отражениями осуществляется рендеринг разных слоев финального изображения, каждый из которых имеет свой коэффициент прозрачности и определенный угол для каждого отражения или тени.

Отметим, что все описанные нами выше эффекты могут реализовываться параллельно.

К слову, тут можно увидеть ушки технологии Talisman от Microsoft. Если же говорить коротко, то еще в 1996 году Microsoft рассказала о технологии Talisman, суть которой как раз в использовании различных изображений, представляющих собой слои конечного изображения. Эти слои формируются раздельно, а затем специальный блок, называемый Image Layer Compositor, комбинирует их и формирует конечное изображение. Впрочем, мы говорили, что в том или ином виде, но все стоящие внимания идеи рано или поздно реализуются на практике.

Вторая характерная особенность T-Buffer, по сравнению с Accumulation Buffer состоит в том, что у вас есть возможность применять конкретный эффект только к определенной части изображения. Для примера можно рассмотреть ситуацию, когда на неизменяемом фоне движется автомобиль, к которому нужно применить эффект motion blur. При любом количестве повторных операций рендеринга конечного изображения в случае использования Accumulation Buffer нам потребуется каждый раз полностью перерисовывать каждое промежуточное изображение. В случае использования T-Buffer мы можем воспроизвести неизменяемый фон только один раз, а затем повторять рендеринг только машины столько раз, сколько потребуется. В связи с тем, что только ограниченное число полигонов и пикселей нужно будет повторно воспроизводить, мы получим автоматический прирост производительности при использовании T-Buffer по сравнению с применением Accumulation Buffer.

Заметим, что есть информация о том, что 3dfx совместно с Microsoft работает над интеграцией поддержки T-Buffer в DirectX. Правда о DirectX 7.0 пока речи не идет, зато в DirectX 8.0 это поддержка может быть включена.

Заключение

Технология T-Buffer обеспечивает возможность применять цифровые эффекты, которые до сих пор не было возможности использовать в режиме реального времени на компьютерах для массового рынка. Одним из важнейших эффектов является full-scene spatial anti-aliasing (пространственное сглаживание всей сцены), использование которого в тоже время не должно отразиться на общей производительности, читай частоте смены кадров. Это решение одной из важнейших проблем современных систем 3D рендеринга, рассчитанных на рынок массовых, т.е. потребительского уровня цен, компьютеров. Один только этот эффект, реализуемый полностью на аппаратном уровне, сам по себе уже важный шаг вперед в области создания высококачественной интерактивной 3D графики.

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

Ну, хорошо, это все была теория. А как дело обстоит на практике? Работа T-Buffer в части реализации full-scene spatial anti-aliasing была продемонстрирована в штаб-квартире 3dfx. Демонстрация проводилась на базе специального комплекта Mercury от компании Quantum3D. Mercury представляет собой комплект из четырех карт Obsidian2 200SBi на каждой из которых установлено по два чипа Voodoo2, работающих под управлением специального контроллера AAlchemy. Mercury имеет в общей сложности 96 Мб локальной памяти и позволяет реализовывать эффект пространственного сглаживания всей сцены в режиме реального времени с применением supersampling с коэффициентом 2 и выводить уже сглаженное изображения в разрешениях вплоть до 1024x1024. Мы не случайно упомянули объем локальной памяти используемой в Mercury. Дело в том, что использование supersampling, т.е. дискретизации с увеличивающим коэффициентом требует, в случае с традиционной полигонной архитектуры 3D рендеринга, существенных объемов памяти. В случае с Mercury под кадровый буфер доступно всего 32 Мб, а уже эта память делиться между T-Buffer и первичным/вторичным буферами, вся остальная память используется для хранения текстур. Так как в спецификациях современных графических акселераторов заявлено о возможности работы с 3D графикой в разрешениях вплоть до 1600x1200, то, соответственно, и объемы памяти необходимой для кадрового буфера возрастают. Если учесть еще, что в следующем поколении 3D чипов будет, скорее всего, не один конвейер рендеринга, а несколько, то не исключено, что и кадровых буферов будет несколько, благо T-Buffer как раз позволяет управлять несколькими кадровыми буферами, а значит и памяти потребуется больше. Неудивительно, что аналитики уверенно заявляют о том, что графические 3D акселераторы следующего поколения будут иметь 64 Мб и даже более локальной памяти.

Эффект full-scene spatial anti-aliasing будет прекрасно реализовываться с помощью T-Buffer практически в любом уже существующим приложении, вне зависимости от используемого интерфейса, будь то Glide, Direct3D или OpenGL. По сути, пользователю надо будет лишь разрешить использование пространственного сглаживания всей сцены, и этот эффект будет реализован на аппаратном уровне через T-Buffer. Ожидается, что производительность при этом не пострадает, а если и пострадает, то не намного и частота смены кадров будет оставаться на приемлемом уровне. Если принять во внимание, что 3dfx считает приемлемой частоту смены кадров на уровне 60-85 fps при разрешении 1280x1024 и при 32-битной глубине представления цвета, то применение T-Buffer понравится всем, так как ровные края полигонов и прямые линии, безусловно, положительно сказываются на общем восприятии 3D графики.

Подробности о T-Buffer позволяют сделать вполне однозначные выводы о том, что следующее поколении графических чипов от 3dfx будет иметь не один конвейер рендеринга, их будет как минимум четыре. Прибавьте к этому по два блока текстурирования для каждого конвейера и учтите, что T-Buffer можно будет и не использовать. Перед вами будет чемпион по скорости. Но скорость уже отходить на второй план. Теперь все разработчики аппаратной части добиваются качества, не забывая о высокой скорости.

Что касается реализации остальных эффектов, которые позволяет применять T-Buffer, то 3dfx планирует осуществлять их поддержку через расширения для OpenGL и DirectX. Разумеется, поддержка T-Buffer будет и в Glide. Что касается аппаратной реализации, то, по словам представителей 3dfx поддержка T-Buffer на аппаратном уровне будет реализована уже в следующем поколении чипов, вероятно, речь идет о Voodo4/Napalm. Кстати, по случаю рассекречивания T-Buffer один из высокопоставленных представителей 3dfx Scott Sellers, являющийся еще и одним из основателей компании, разоткровенничался и подтвердил информацию о том, что следующий чип Voodoo4/Napalm действительно будет осуществлять рендеринг с 32 битной точностью. Кроме того, по словам того же Scott Sellers первая буква в названии T-Buffer выбрана в честь Gary Tarolli, еще одного соучредителя 3dfx, который руководил разработками новой технологии.

Интересной подробностью можно считать заявление одного из вице-президентов Intel Pat Gelsinger о том, что в пару к T-Buffer и невероятно высокой скорости текстурирования (помните, мы говорили о нескольких конвейерах и с парой блоков текстурирования у каждого?) очень органично подходит технология расчета трансформаций и геометрии (Transformation and Lightning), базирующаяся на вычислительных ресурсах Pentium III с поддержкой SSE. Позвольте, скажет внимательный читатель, а как же разговоры о том, что на платах на базе Voodoo4/Napalm будет внешний геометрический сопроцессор от Mitsubishi? Все просто. В чем удобство внешнего акселератора геометрии? В том, что его можно добавить и позже, когда мощности FPU центрального процессора системы в паре с вариациями на тему SIMD не будет хватать для расчета геометрии. Этот момент может наступить только когда появятся реальные приложения, которым не будет хватать вычислительных ресурсов. Пока все говорит о том, что такие приложения появятся лишь в следующем году. Поэтому, зачем торопиться? Кстати, есть неподтвержденная информация о том, что nVidia тоже сначала выпустит упрощенную версию своего следующего чипа, без встроенного геометрического ускорителя. Все эти предположения выглядят вполне логично.

P.S.

Итак, подведем окончательный итог. Суть технологии T-Buffer состоит в обеспечении возможности управления несколькими кадровыми буферами, что позволяет использовать ряд специальных эффектов. Самый важный цифровой эффект это full-scene spatial anti-aliasing. Кроме того, уже сейчас разработаны техники использования таких эффектов, как motion blur, depth of field, soft shadows и soft reflectance. Технология T-Buffer это, прежде всего инструментарий. Имея возможность управлять рендерингом сразу в нескольких кадровых буферах, разработчик приложений может создавать свои собственные специальные эффекты. Для реализации эффекта full-scene spatial anti-aliasing не нужно каких-либо специальных интерфейсов, для всех других эффектов, которые можно накладывать с помощью T-Buffer потребуется поддержка через интерфейсы, которая, впрочем, может быть реализована через расширения к OpenGL или Direct3D. К слову, поддержка T-Buffer будет встроена и в API Glide. Технологию T-Buffer можно использовать и с современными графическими акселераторами, имеющими один или два конвейера, но при этом будет ощутимая потеря в скорости, так как придется осуществлять многопроходный рендеринг. Эффективность T-Buffer в полной мере проявляется только в специально адаптированных под эту технологию системах. Комплект Mercury на практике показал, что дает использование нескольких конвейеров и как работает T-Buffer в реальных условиях.

Главная идея T-Buffer состоит в обеспечении визуализации более качественной 3D графики. Кроме повышения качества изображений, за счет применения эффекта full-scene spatial anti-aliasing, технология T-Buffer дает возможность использовать различные специальные эффекты, широко применяемы в киноиндустрии, которые повышают реализм 3D графики. При этом, есть все основания предполагать, что использование T-Buffer на аппаратном обеспечение, поддерживающем эту технологию, не скажется отрицательным образом на производительности, читай величине смены кадров в секунду. В общем, нам обещают повышение качества изображений и усиление реализма 3D графики при использовании T-Buffer и соответствующего аппаратного обеспечения.

Далее, технология T-Buffer не является какой-либо строго закрытой или революционной. Так как 3dfx ведет совместные работы с Microsoft по реализации поддержки T-Buffer в DirectX, то боятся, что эта технология будет закрытой нет никаких оснований. Первые чипы, поддерживающие на аппаратном уровне технологию T-Buffer, выпустит, конечно же, компания 3dfx. При этом можно смело прогнозировать, что процессоры нового поколения будут иметь минимум четыре конвейера, прибавьте к этому давно ожидаемый от 3dfx 32-битный рендеринг и объем локальной памяти не менее 64 Мб, и можно начинать копить деньги. Деньги на новую покупку вряд ли понадобятся ранее начала 2000 года. Причем реально на рынке карты на новых чипах появятся, скорее всего, лишь весной 2000.