Рендеринг (rendering) - процесс визуализации трехмерных объектов и сохране-
ние изображения в фрейм-буфере. Рендеринг выполняется по многоступенчатому
механизму, называемому конвейером рендеринга. Конвейер рендеринга может быть
разделен на 3 стадии: тесселяция, геометрическая обработка и растеризация.
Принцип конвейеризации является фундаментальным понятием, в соответствии с
ним работают и 3D-ускорители, и 3D-API, - благодяря конвейеру можно рассмот-
реть работу любого из них. Если взять произвольный 3D-ускоритель, то он не
будет ускорять все стадии конвейера, и даже более того, стадии могут лишь
частично ускоряться им. Далее мы рассмотрим подробнее стадии конвейера в
контексте работы 3D-ускорителей. Традиционно каждой стадии называют буквами.
Стадия "T". Тесселяция (триангуляция) - процесс разбиения поверхности объек-
тов на полигоны (треугольники или четырехугольники). Эта стадия проводится
полностью программно вне зависимости от технического уровня и цены 3D-аппа-
ратуры. Тем не менее тесселятор (программный код, отвечающий за тесселяцию)
должен учитывать особенности того или иного 3D-ускорителя, так как они могут
иметь разные требования к полигонам-примитивам:
1) произвольные треугольники
2) треугольники с горизонтальной нижней или верхней гранью
3) треугольник или четырехугольник с описанием уравнений ребер (бесконечные
плоскости)
Также тесселятор должен учитывать, умеет ли работать с сетками (meshes) раз-
ных типов. Если 3D-программа разрабатывается на высокоуровневом 3D-API, на-
пример Direct3D RM или PowerRender, то ей не надо заботиться обо всех этих
деталях, так как такой API имеет свой тесселятор.
Стадия "G". Геометрическая обработка делится на несколько фаз, и может час-
тично ускоряться 3D-ускорителем.
1) трансформация (transformation) - преобразование координат (вращение, пе-
ренос и масштабирование всех объектов)
2) отсечение (clipping), выполняемое до и после преобразования координат
3) освещение (lighting) - определение цвета каждой вершины с учетом всех
световых источников (решение уравнения освещенности)
4) проецирование (projection) - преобразование координат в систему координат
экрана
5) setup - предварительная обработка потока вершин (перевод из плавающей
точки в фиксированную точку данных о вершинах, а также сортировка вершин,
отбрасывание задних граней, субпиксельная коррекция)
Hаиболее часто люди путаются именно с геометрической обработкой. Это усугуб-
ляется тем, что сами производители путают терминологию. (Hапример 3Dlabs за-
являет, что Glint Delta - геометрический сопроцессор, что вообще говоря не-
верно, Delta - это setup engine.) Большинство существующих 3D-ускорителей
ускоряют только последнюю фазу - setup, при том делают это с разной степенью
полноты. Говорят, что 3D-ускоритель имеет полный setup engine, если он может
переводить в фиксированную точку все данные о вершине. В зависимости от типа
примитивов, с которыми работает 3D-ускоритель, речь ведется о triangle setup
или о planar setup.
Геометрический процессором называется ускоритель, который ускоряет всю ста-
дию геометрической обработки, в том числе трансформацию и освещение. Реали-
зация геометрического процессора довольно дорого, и как уже было сказано, он
является объектом рекламных спекуляций. Определить реализован ли геометри-
ческий процессор довольно легко - надо выяснить, поддерживает ли 3D-ускори-
тель операции с матрицами. Без такой поддержки не может идти речь об ускоре-
нии фазы трансформации. Геометрическими процессорами являются например Glint
Gamma и Pinolite.
Стадия "R". Растеризация - наиболее интенсивная операция, обычно реализуемая
на аппаратном уровне. Растеризатор выполняет непосредственно рендеринг и яв-
ляется наиболее сложной ступенью конвейера. Если стадия геометрической обра-
ботки работает с вершинами, то растеризация включает операции, проводимые на
пиксельном и суб-пиксельном уровне. Растеризация включает в себя удаление
скрытых поверхностей, текстурирование, альфа-смешение, z-буферизация, зате-
нение, антиалиасинг, dithering.
|