В компьютерной графике растеризация ( британский английский ) или растеризация ( американский английский ) — это задача взятия изображения, описанного в векторном графическом формате (формы), и преобразования его в растровое изображение (серию пикселей , точек или линий, которые при совместном отображении создают изображение, представленное с помощью форм). [1] [2] Затем растрированное изображение может быть отображено на дисплее компьютера , видеодисплее или принтере , или сохранено в формате файла растрового изображения . Растрирование может относиться к технике рисования 3D-моделей или к преобразованию примитивов 2D-рендеринга , таких как многоугольники и отрезки линий , в растровый формат.
Термин «растеризация» происходит от немецкого Raster «сетка, узор, схема» и латинского rāstrum «скребок, грабли». [3] [4]
Линейный алгоритм Брезенхэма является примером алгоритма, используемого для растеризации линий.
Для визуализации круга на пикселизированном холсте используются такие алгоритмы, как алгоритм средней точки круга .
Растеризация — один из типичных методов рендеринга 3D-моделей. По сравнению с другими методами рендеринга, такими как трассировка лучей , растеризация чрезвычайно быстра и поэтому используется в большинстве 3D-движков реального времени. Однако растеризация — это просто процесс вычисления отображения геометрии сцены на пиксели, и она не предписывает конкретный способ вычисления цвета этих пикселей. Конкретный цвет каждого пикселя назначается пиксельным шейдером (который в современных графических процессорах полностью программируется ). Затенение может учитывать физические эффекты, такие как положение света, их приближения или чисто художественный замысел.
Процесс растеризации 3D-моделей на 2D-плоскость для отображения на экране компьютера (« экранное пространство ») часто выполняется аппаратными средствами с фиксированной функцией (непрограммируемыми) в графическом конвейере . Это связано с тем, что нет мотивации для изменения методов растеризации, используемых во время рендеринга [5] , а специализированная система обеспечивает высокую эффективность.
Полигоны являются общим представлением цифровых 3D-моделей. Перед растеризацией отдельные полигоны обычно разбиваются на треугольники; поэтому типичной проблемой для решения 3D-растеризации является растеризация треугольника. Свойства, которые обычно требуются от алгоритмов растеризации треугольников, заключаются в том, что растеризация двух смежных треугольников (т. е. тех, которые имеют общее ребро)
Это приводит к установлению правил растеризации, гарантирующих вышеуказанные условия. Один набор таких правил называется правилом верхнего левого угла , которое гласит, что пиксель растеризуется тогда и только тогда, когда
Верхний край — это край, который строго горизонтален и лежит выше других краев, а левый край — это негоризонтальный край, который находится на левой стороне треугольника.
Это правило реализовано, например, в Direct3D [6] и во многих реализациях OpenGL (хотя спецификация не определяет его и требует только согласованного правила [7] ).
Качество растеризации можно улучшить с помощью сглаживания , которое создает «гладкие» края. Субпиксельная точность — это метод, который учитывает позиции в более мелком масштабе, чем пиксельная сетка, и может давать разные результаты, даже если конечные точки примитива попадают в те же пиксельные координаты, создавая более плавную анимацию движения. Простое или старое оборудование, такое как PlayStation 1 , не имело субпиксельной точности в 3D-растеризации. [8]