Технологии приложений трехмерной графики.
Большинство массовых приложений трехмерной графики, в том числе игр, при построении объемных сцен следуют устоявшейся технологии, которую можно разбить на относительно обособленные этапы. Описываемая ниже общепринятая последовательность не является жестко заданной. При конкретной реализации на программном и аппаратном уровнях могут появляться существенные отличия, однако смысловое содержание блоков практически не меняется.
Главной функцией программ создания трехмерной графики является преобразование графических абстрактных объектов в изображения на экране монитора компьютера. Эти абстрактные математические описания должны быть визуализированы, т.е. преобразованы в видимую форму. Процедура визуализации основывается на жестко стандартизированных функциях, предназначенных для составления выводимого на экран целостного изображения из отдельных абстракций. Основными стандартными функциями являются:
геометризация – это определение размеров, ориентации и расположения примитивов в пространстве и расчет влияния источников света;
и растеризация - преобразование примитивов в пиксели на экране с нанесением нужных затенений и текстур.
Процесс визуализации трехмерной сцены на экране монитора компьютера происходит следующим образом:
1. В первую очередь определяется состояние объектов, принимающих участие в сцене, которую необходимо отобразить (активен или нет).
7. И, наконец, выполняется закрашивание (рендеринг). Закрашивание происходит по точкам на основе данных о текстуре, степени прозрачности, параметрах тумана, освещении. Каждому пикселу, таким образом, присваивается определенный цвет, и он размещается в нужном месте буфера кадра.
8. Далее может следовать этап наложения, какого либо эффекта на уже готовое изображение кадра.
Рендеринг (закрашивание) выполняется по многоступенчатому процессу, называемому конвейером рендеринга, который состоит из трех этапов обработки:
- тесселяции,
- геометрической обработки,
- растеризации.
Растеризация. При аппаратном рендеринге 3D-акселератор берет на себя наиболее емкие вычислительные функции по растеризации треугольников. Для ускорения обработки текстур используют параллельную работу нескольких (2-3) конвейеров (блоков). Обычно для получения полноценного преобразования часто требуется три прохода конвейера блока рендеринга, но если в видеоакселераторе реализованы два конвейера, способные работать параллельно, то потребуется два прохода (рис.1).
Рис. 1. Варианты построения видеоадаптеров с различным
числом конвейеров рендеринга.
Геометрическая обработка. В наиболее совершенных 3D-акселераторах используются геометрические процессоры, которые ускоряют всю стадию геометрической обработки, в том числе трансформацию (если 3D-акселератор поддерживает операции с матрицами) и освещение. Программа хранит местоположение объектов изображения в мировых координатах, упрощая связи между различными объектами. Большинство вычислений происходит в процессоре.
Вычисление координат вершин. Процессор вычисляет позицию каждой вершины для каждого объекта в мировой системе координат.
Отсечение краев. Изображаемые объекты могут не вписываться в пределы видимой области. Выступающие части должны быть удалены, поэтому процессор отсекает края объекта по границам рисуемой области - по одному многоугольнику за один раз.
Отбрасывание скрытых поверхностей. Изображать невидимые поверхности излишне. Процессор должен распознавать видимые поверхности и отбрасывать невидимые.
Вычисление координат проекций. Дисплей работает всего лишь как двумерное устройство, наподобие куска стекла, через которое вы смотрите на трехмерную сцену. Чтобы промоделировать это в компьютере, нам нужно пересчитать координаты проекций вершин каждого многоугольника из системы координат в пространстве в систему координат на плоскости (поверхности экрана).