stringtranslate.com

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

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

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

Этимология

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

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

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

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

Круглые примитивы

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

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

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

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

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

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

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

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

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

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

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

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

Качество

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

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

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

Ссылки

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

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