stringtranslate.com

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

Растровое графическое изображение

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

Этимология

Термин «растеризация» происходит от немецкого Raster  «сетка, узор, схема» и латинского rāstrum  «скребок, грабли». [3] [4]

2D-изображения

Линейные примитивы

Линейный алгоритм Брезенхема является примером алгоритма, используемого для растеризации линий.

Примитивы круга

Такие алгоритмы, как алгоритм круга средней точки, используются для рендеринга круга на пикселизированном холсте.

3D-изображения

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

Процесс растрирования 3D-моделей на 2D-плоскость для отображения на экране компьютераэкранное пространство ») часто выполняется с помощью аппаратного обеспечения с фиксированными функциями (непрограммируемого) в графическом конвейере . Это связано с тем, что нет необходимости изменять методы растеризации, используемые во время рендеринга [5] , а система специального назначения обеспечивает высокую эффективность.

Растеризация треугольников

Растеризация треугольников с использованием правила верхнего левого угла

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

  1. не оставляет дыр (нерастрированных пикселей) между треугольниками, так что растеризованная область полностью заполняется (так же, как поверхность соседних треугольников). И
  2. ни один пиксель не растеризуется более одного раза, т.е. растеризованные треугольники не перекрываются. Это делается для того, чтобы гарантировать, что результат не зависит от порядка растеризации треугольников. Перерисовка пикселей также может означать трату вычислительной мощности на пиксели, которые будут перезаписаны.

Это приводит к установлению правил растеризации , гарантирующих вышеуказанные условия. Один набор таких правил называется правилом верхнего левого угла , которое гласит, что пиксель растеризуется тогда и только тогда, когда

  1. его центр полностью лежит внутри треугольника. Или
  2. его центр лежит точно на ребре треугольника (или нескольких ребрах в случае углов), которое является (или, в случае углов, все) либо верхним , либо левым краем.

Верхнее ребро — это ребро, которое строго горизонтально и лежит над другими ребрами, а левое ребро — это негоризонтальное ребро, находящееся на левой стороне треугольника.

Это правило реализовано, например, в Direct3D [6] и во многих реализациях OpenGL (хотя спецификация не определяет его и требует только согласованного правила [7] ).

Качество

Пиксельная точность (слева) и субпиксельная точность (в центре) и сглаживание (справа)

Качество растеризации можно улучшить с помощью сглаживания , создающего «гладкие» края. Субпиксельная точность — это метод, который учитывает позиции в более мелком масштабе, чем пиксельная сетка, и может давать разные результаты, даже если конечные точки примитива попадают в одни и те же пиксельные координаты, создавая более плавную анимацию движения. Простому или более старому оборудованию, такому как PlayStation 1 , не хватало субпиксельной точности при растеризации 3D. [8]

Смотрите также

Рекомендации

  1. Майкл Ф. Уорбойс (30 октября 1995 г.). ГИС: перспектива информатики. ЦРК Пресс. стр. 232–. ISBN 978-0-7484-0065-2.
  2. Канг-Цунг Чанг (27 августа 2007 г.). Программирование ArcObjects с помощью VBA: целенаправленный подход, второе издание. ЦРК Пресс. стр. 91–. ISBN 978-1-4200-0918-7.
  3. ^ Харпер, Дуглас. «растр». Интернет-словарь этимологии .
  4. ^ раструм. Чарльтон Т. Льюис и Чарльз Шорт. Латинский словарь по проекту «Персей» .
  5. ^ «Растеризация: практическая реализация». www.scratchapixel.com . Проверено 6 октября 2023 г.
  6. ^ «Правила растеризации (Direct3D 9)» . Документы Майкрософт . Проверено 19 апреля 2020 г.
  7. ^ OpenGL 4.6 (PDF) . п. 478.
  8. ^ «Проблемы растеризации PlayStation» . Либретро . 4 октября 2016 г. Проверено 19 апреля 2020 г.

Внешние ссылки