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