On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Рендеринг

Рендеринг (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.
Назад       Содержание       Вперёд