растеризация

Растеризация

Метод рендеринга, при котором растровое изображение получается путем поиска пикселей на экране, принадлежащих векторному примитиву. Растеризуются, как правило, точки, отрезки и многоугольники (обычно треугольники).

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

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

  1. Трансформация. Эта стадия начинает вершинный конвейер, где единицей обработки является вершина (точка в аффинном пространстве). Набор вершин, формирующих трехмерный объект, переводится из модельного пространства в мировое, а затем - в видовое, где началом координат является позиция камеры (эти два преобразования обычно совмещаются в одно). Полученные вершины переводятся перспективной матрицей в пространство отсечения. В программируемом конвейере стадия трансформации производится в вершинном шейдере.
  2. Отсечение. Невидимые вершины (выходящие за пределы пирамиды видимости) отбрасываются и не передаются дальше.
  3. Нормализация. Из пространства отсечения вершины переводятся в нормализованные координаты устройства (NDC) - то есть, фактически, в двумерные координаты на экранной плоскости + координата Z, обозначающая глубину относительно экранной плоскости.
  4. Интерполяция. Полученный набор точек используется для растеризации полигонов по заданным правилам построения ребер. В программируемом конвейере эти правила могут быть заданы в геометрическом шейдере. Также на этой стадии происходит интерполяция вершинных атрибутов (цвет, нормаль, текстурные координаты и пр.) по поверхности полигона. Производится перспективная коррекция текстурных координат. С этого момента начинается пиксельный конвейер - данные обрабатываются попиксельно.
  5. Вычисление цвета. В программируемом конвейере результирующий цвет пикселя вычисляется во фрагментном шейдере. На этом этапе рассчитываются попиксельное освещение, текстурирование, рельеф, отражение, тени, прозрачность и другие эффекты. В качестве входных данных используются интерполированные вершинные атрибуты, а также текстуры.
  6. Проверка глубины. Перед тем, как записать пиксель в буфер кадра, может быть произведена проверка глубины (depth test). Координата Z пикселя сравнивается с соответствующей глубиной в Z-буфере. Если она меньше, то пиксель должен быть отрисован, если нет - то проигнорирован.
  7. Смешивание. Полученный цвет пикселя может по заданным правилам смешиваться с уже присутствующим цветом в буфере кадра. Итоговое значение записывается в буфер.
  • растеризация.txt
  • Последнее изменение: 2021/03/15 09:24
  • (внешнее изменение)