Введение
Преобразование векторного изображения в растровое изображение
В компьютерной графике растризация (британский английский) или растеризация (американский английский) — это процесс преобразования изображения, описанного в векторном графическом формате (в виде фигур), в растровое изображение (составленное из пикселей, точек или линий, которые при совместном отображении формируют изображение, изначально представленное фигурами). Растровое изображение может быть отображено на компьютерном мониторе, видеодисплее или принтере, либо сохранено в формате растрового файла. Растеризация может применяться как к технике отрисовки трехмерных моделей, так и к преобразованию двухмерных графических примитивов, таких как полигоны и отрезки прямых, в растровый формат.
Этимология
Термин "растеризация" происходит.
Линейные примитивы
Линейный алгоритм Брезенхэма — это пример алгоритма, применяемого для растрирования линий.
Круговые примитивы
Алгоритмы, такие как алгоритм построения окружности методом середины, используются для отрисовки окружностей на растровом изображении.
3D изображения
Растеризация — один из типичных методов рендеринга 3D-моделей. По сравнению с другими методами рендеринга, такими как трассировка лучей, растеризация чрезвычайно быстра и поэтому используется в большинстве 3D-движков реального времени. Однако растеризация — это просто процесс вычисления отображения геометрии сцены в пиксели и не определяет конкретный способ вычисления цвета этих пикселей. Конкретный цвет каждого пикселя назначается пиксельным шейдером (который в современных графических процессорах полностью программируем). Затенение может учитывать физические эффекты, такие как положение источников света, их приближения или исключительно художественные задумки. Процесс растеризации 3D-моделей на 2D-плоскость для отображения на экране компьютера ("экранное пространство") часто выполняется аппаратным обеспечением с фиксированной функциональностью (непрограммируемым) в графическом конвейере. Это обусловлено отсутствием необходимости изменять методы растеризации, используемые во время рендеринга, а специализированная система обеспечивает высокую эффективность.
Растеризация треугольника
Полигоны являются распространенным представлением цифровых 3D-моделей. Перед растризацией отдельные полигоны обычно разбиваются на треугольники; следовательно, типичная задача при 3D-растризации – это растризация треугольника. Алгоритмы растризации треугольников обычно должны обеспечивать, чтобы растризация двух смежных треугольников (то есть, имеющих общий ребро) не оставляла пробелов (нерастрированных пикселей) между треугольниками, так чтобы растрированная область была полностью заполнена (как и поверхность смежных треугольников). И чтобы ни один пиксель не растрировался более одного раза, то есть, растрированные треугольники не перекрывались. Это гарантирует, что результат не зависит от порядка, в котором треугольники растрируются. Перерисовка пикселей также может означать бесполезную трату вычислительных ресурсов на пиксели, которые будут перезаписаны. Это приводит к разработке правил растризации, гарантирующих вышеуказанные условия. Один из таких наборов правил называется правилом "верхний левый", которое гласит, что пиксель растрируется тогда и только тогда, когда его центр полностью находится внутри треугольника. Или его центр лежит точно на ребре треугольника (или нескольких ребрах в случае углов), которое является (или, в случае углов, все) либо верхним, либо левым ребром. Верхним ребром называется горизонтальное ребро, расположенное выше других ребер, а левым ребром – не горизонтальное ребро, находящееся слева от треугольника. Это правило реализовано, например, в Direct3D и многих реализациях OpenGL (хотя спецификация не определяет его и требует лишь согласованного правила).
leaves no holes (non rasterized pixels) between the triangles, so that the rasterized area is completely filled (just as the surface of adjacent triangles). And
no pixel is rasterized more than once, i. e. the rasterized triangles don't overlap. This is to guarantee that the result doesn't depend on the order in which the triangles are rasterized. Overdrawing pixels can also mean wasting computing power on pixels that would be overwritten. This leads to establishing rasterization rules to guarantee the above conditions. One set of such rules is called a top left rule, which states that a pixel is rasterized if and only if
its center lies completely inside the triangle. Or
its center lies exactly on the triangle edge (or multiple edges in case of corners) that is (or, in case of corners, all are) either top or left edge. A top edge is an edge that is exactly horizontal and lies above other edges, and a left edge is a non horizontal edge that is on the left side of the triangle. This rule is implemented e. g. by Direct3D and many OpenGL implementations (even though the specification doesn't define it and only requires a consistent rule).
Качество
Качество растрирования можно улучшить с помощью сглаживания, которое создает "гладкие" края. Субпиксельная точность — это метод, учитывающий позиции с более высокой точностью, чем пиксельная сетка, и способный выдавать различные результаты, даже если конечные точки примитива попадают в одни и те же пиксельные координаты, обеспечивая более плавную анимацию движения. Простое или устаревшее оборудование, такое как PlayStation 1, не поддерживало субпиксельную точность при 3D-растеризации.