Как работает видеокарта с аппаратным 3D ускорителем

В трехмерной графике все объекты создаются как совокупность множества (счет идет на миллионы) треугольников, а треугольники затем образуют полигоны (но полигон, вообще говоря, любая плоская фигура с количеством углов >=3). Работа начинается с определения полигонов для каждого из объектов изображения. Далее выполняется анализ перемещения каждого из объектов относительно наблюдателя, включая и вращение относитетельно собственной оси. Кроме этого, определяется, как подсветка отражается на каждом объекте. Весь этот анализ исходит из отрисовки 30 кадров/с, хотя для терпимого качества достаточно иметь 10-15 кадров/с. Так как весь объект состоит из треугольников, все операции выполняются с координатами вершин треугольников и при перемещении объекта координаты вершин пересчитываются. При освещенииобъекта определяется уровень освещенности каждой вершины треугольника, а уровень освещенности каждой точки внутри треугольника вычисляется как средневзвешенное значение относительно вершин.
 
 

Как видно из диаграммы, весь процесс создания трехмерной картинки состоит из двух частей: Сначала создается геометрия объекта из множества треугольников, а затем выполняется отображение объекта на экране или, как принято в 3D описаниях, рендеринг (от слова render - изображать). Большинство современных видеокарт с 3D ускорителями не занимаются обсчетом вершин (т.е. первой частью), а выполняют только рендеринг. Это объясняется тем, что первая часть работы требует чрезвычайно интенсивных вычислений и она, как правило, возлагается на центральный процессор. Именно поэтому результаты тестирования видеокарт существенно зависят от производительности процессора.

Собственно рендеринг состоит из четырех основных задач: растеризации, z-буферизации, затенения и нанесения текстур. "Правильная" 3D видеокарта аппаратно выполняет все эти операции.

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

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

Затенение формирует цвет каждого треугольника в зависимости от освещения или тени, падающей на объект. Самым популярным методом сейчас является затенением по Гуро - программа, в зависимости от света (тени) в каждой вершине треугольника, вычисляет среднее значение для всего треугольника.

Нанесение текстур приводит к формированию деталей на полигоне - например, ворса на ткани, колец на срезе дерева, цементной "шубы" на стене и т.п. Текстура является образом поверхности объекта. Обычно создается несколько текстур с различным разрешением. Для частей объекта, ближайших к наблюдателю, выбираются текстуры с более высоким разрешением, для удаленных - с более низким. Этот способ также называется mip mapping.

 
« Предыдущая статья