Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Текстуры, Наложение текстур

Лекция



Привет, Вы узнаете о том , что такое наложение текстур, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое наложение текстур , настоятельно рекомендую прочитать все из категории Компьютерная графика.

Текстура ( англ. Texture mapping ) — это способ придания поверхности 3D детали — полигона : цвета, фактуры, блеска, матовости и других физических свойств (для имитации чаще всего какого-либо природного материала, например бумаги, дерева, камня, металла и т.п.).

Понятие "текстура" является важным элементом 3D-моделирования, поскольку позволяет воспроизвести также малые объекты поверхности, создание которых полигонами оказалось бы чрезмерно ресурсоемким. Например, шрамы на коже, складки на одежде, мелкие камни, предметы на поверхности стен и грунта и многое другое. Итак, текстура используется для заполнения поверхностей объектов и в качестве слоя для придания определенного эффекта или изменения геометрии всему изображению или его части.

Текстуры бывают шовные и бесшовные ( паттерны или узоры). Главное отличие последних в том, что при сочетании одних и тех же фрагментов поверхность остается цельной.

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

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

Карта текстуры наложение текстур ы

Наложение текстуры — это метод наложения текстуры на компьютерную графику . «Текстура» в этом контексте может быть высокочастотной детализацией , текстурой поверхности или цветом .

Текстуры, Наложение текстур

Наложение двухмерной текстуры на трехмерную модель

Текстуры, Наложение текстур

1: 3D-модель без текстур
2: Та же модель с текстурами

Карта текстуры применяется для создания определенного параметра визуального отображения поверхности заданной формы. Этот процесс напоминает применение узорчатой ​​бумаги на обычной белой коробке. Каждой вершине в 3D модели присваивается координаты текстуры (которая в случае 2D известна как UV координата). Места отбора проб изображения впоследствии интерполируются по поверхности модели с получением визуального результата.

Чаще всего это файл растрового (реже векторного) изображения с расширением JPEG , PNG или PAT.

История

Первоначальная методика была впервые предложена Эдвином Кэтмеллом в 1974 году в рамках его докторской диссертации.

Текстурное отображение изначально относилось к диффузному отображению , методу, который просто отображал пиксели из текстуры на 3D-поверхность («оборачивая» изображение вокруг объекта). В последние десятилетия появление многопроходного рендеринга, мультитекстурирования , MIP-карт и более сложных отображений, таких как отображение высот , отображение рельефа , отображение нормалей , отображение смещения , отображение отражения , отображение зеркального отражения , отображение окклюзии и многих других вариаций техники (управляемых системой материалов ) сделали возможным моделирование почти фотореализма в реальном времени за счет значительного сокращения количества полигонов и расчетов освещения, необходимых для построения реалистичной и функциональной 3D-сцены.

Текстуры, Наложение текстур

Примеры мультитекстурирования :
1: Нетекстурированная сфера, 2: Текстура и карты рельефа, 3: Только карта текстуры, 4: Карты непрозрачности и текстуры

Пример работы мультитекстуры на объекте: 1. Сфера на которую наложена: 2. Diffuse и bump карты; 3. Diffuse карта только; 4: Opacity и Diffuse карты.

Карты текстур

"Texture maps" перенаправляет сюда. Для альбома Стива Роуча см. Texture Maps: The Lost Pieces Vol. 3 .

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

Они могут иметь от одного до трех измерений, хотя для видимых поверхностей чаще всего используются два измерения. Для использования с современным оборудованием данные текстурных карт могут храниться в свизлированных или плиточных порядках для улучшения согласованности кэша . API рендеринга обычно управляют ресурсами текстурных карт (которые могут находиться в памяти устройства ) как буферами или поверхностями и могут разрешать « рендеринг в текстуру » для дополнительных эффектов, таких как постобработка или отображение среды .

Они обычно содержат данные о цвете RGB (хранящиеся как прямой цвет , сжатые форматы или индексированный цвет ), а иногда и дополнительный канал для альфа-смешивания ( RGBA ), особенно для рекламных щитов и текстур наложения декалей . Можно использовать альфа-канал (который может быть удобно хранить в форматах, анализируемых оборудованием) для других целей, таких как зеркальность .

Несколько текстурных карт (или каналов ) можно объединять для управления зеркальностью , нормалями , смещением или подповерхностным рассеиванием , например, для рендеринга кожи.

Несколько текстурных изображений могут быть объединены в текстурные атласы или массивы текстур для уменьшения изменений состояния для современного оборудования. (Их можно считать современной эволюцией графики тайловых карт ). Современное оборудование часто поддерживает текстуры кубических карт с несколькими гранями для отображения среды.

Создание

Текстурные карты могут быть получены путем сканирования / цифровой фотографии , разработаны в программном обеспечении для обработки изображений , таком как GIMP , Photoshop , или нарисованы на 3D-поверхностях непосредственно в инструменте для 3D-рисования, таком как Mudbox или ZBrush .

Нанесение текстуры

Этот процесс похож на наложение узорчатой ​​бумаги на обычную белую коробку. Каждой вершине в полигоне назначается текстурная координата (которая в 2D-случае также известна как UV-координаты ). Это может быть сделано посредством явного назначения атрибутов вершин , вручную отредактированных в пакете 3D-моделирования с помощью инструментов UV-развертки . Также возможно связать процедурное преобразование из 3D-пространства в текстурное пространство с материалом . Это может быть достигнуто посредством плоской проекции или, альтернативно, цилиндрического или сферического отображения. Более сложные отображения могут учитывать расстояние вдоль поверхности, чтобы минимизировать искажения. Эти координаты интерполируются по граням полигонов для выборки текстурной карты во время рендеринга. Текстуры могут быть повторены или зеркально отображены , чтобы расширить конечную прямоугольную битовую карту на большую площадь, или они могут иметь уникальное « инъективное » отображение один к одному из каждой части поверхности (что важно для отображения рендеринга и отображения освещения , также известного как запекание ).

Текстурное пространство

Текстурное отображение отображает поверхность модели (или экранное пространство во время растеризации) в текстурное пространство ; в этом пространстве текстурная карта видна в неискаженном виде. Инструменты UV-развертки обычно предоставляют вид в текстурном пространстве для ручного редактирования текстурных координат. Некоторые методы рендеринга, такие как подповерхностное рассеивание, могут быть выполнены приблизительно с помощью операций в текстурном пространстве.

Мультитекстурирование

Мультитекстурирование — это использование более одной текстуры одновременно на полигоне. Например, текстура карты освещения может использоваться для освещения поверхности в качестве альтернативы пересчету этого освещения каждый раз при рендеринге поверхности. Микротекстуры или текстуры деталей используются для добавления более высокочастотных деталей, а карты грязи могут добавлять выветривание и вариации; это может значительно уменьшить кажущуюся периодичность повторяющихся текстур. Современная графика может использовать более 10 слоев, которые объединяются с помощью шейдеров , для большей точности. Другой метод мультитекстурирования — это рельефное отображение , которое позволяет текстуре напрямую контролировать направление поверхности для целей ее расчетов освещения; оно может дать очень хороший вид сложной поверхности (например, коры дерева или грубого бетона), которая приобретает детали освещения в дополнение к обычной детальной окраске. Рельефное отображение стало популярным в последних видеоиграх, поскольку графическое оборудование стало достаточно мощным, чтобы вместить его в режиме реального времени.

Фильтрация текстур

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

Потоковая передача текстур

Потоковая передача текстур — это способ использования потоков данных для текстур, где каждая текстура доступна в двух или более различных разрешениях, чтобы определить, какую текстуру следует загрузить в память и использовать на основе расстояния от зрителя и объема памяти, доступной для текстур. Потоковая передача текстур позволяет движку рендеринга использовать текстуры низкого разрешения для объектов, находящихся далеко от камеры зрителя, и преобразовывать их в более подробные текстуры, считываемые из источника данных, по мере приближения точки обзора к объектам.

Выпечка

В качестве оптимизации можно визуализировать детали из сложной модели с высоким разрешением или дорогостоящего процесса (например, глобального освещения ) в текстуру поверхности (возможно, на модели с низким разрешением). Об этом говорит сайт https://intellect.icu . Запекание также известно как отображение рендеринга . Этот метод чаще всего используется для карт освещения , но может также использоваться для генерации карт нормалей и карт смещения . Некоторые компьютерные игры (например, Messiah ) использовали этот метод. Оригинальный программный движок Quake использовал запекание на лету для объединения карт освещения и цветовых карт (« кэширование поверхности »).

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

Типы карт

  • Diffuse map (карта базового цвета) – текстура, которой задается основной цвет поверхности. Для того чтобы хорошо работать с картой нормалей, зеркальной и другими картами диффузная карта не должна иметь никакого направленного света на своей поверхности, она должна иметь только общие окружающие окклюзии, т.е. поверхность становится темнее в глубоких трещинах и вокруг тиснения детали;
  • Specular map (карта отражения) – карта, показывающая способность отображения материала. В отличие от reflection map, specular map не показывает отображение сцены, в которой находится объект, а изображает отражение света падающего на него. Specular Map включает в себя пиксели в черно-белой цветовой гамме. Чем светлее пиксель, тем больше способность материала отражать свет и тем ярче на нем блики от света. Соответственно, чем темнее пиксель, тем более матовым становится материал и теряет свое свойство отражать свет. Для материалов керамической плитки и полированного металла могут использоваться светлые тона, а для тканей и дерева темные;
  • Bump map (карта рельефа) – карта для имитации рельефа поверхности. Создается в градациях серого цвета. При рендеринге серые области карты (имеется в виду серый цвет - R = 150, G = 150, B = 150) будет отображаться обычным образом, черные будут зарисовываться, а белые - освещаться (чем область светлее, тем больше уровень яркости) - эта иллюзия света и тени создает эффект рельефа поверхности;

Текстуры, Наложение текстур

Пример использования Normal map для уменьшения количества полигонов модели без потери качества визуального отображения.

  • Normal map – карта для имитации рельефа поверхности. Позволяет изменять нормаль отображаемого пикселя основываясь на цветной карте нормалей, в которой эти отклонения сохраняются в виде текселя, цветовые составляющие которого [ r , g , b ] интерпретируются в оси вектора [x, y, z], на основе которого вычисляется нормаль, используемая для расчета освещенности пикселя Благодаря тому, что в карте нормалей используют три канала текстуры, этот метод дает большую точность, чем Bump mapping, в котором используется только один канал и нормали, по сути, всего лишь интерпретируются в зависимости от «высоты»;

Карты нормалей обычно бывают двух типов: object-space — используется для не деформируемых объектов, таких как стены, двери, оружие и т.п.; tangent-space – применяется для возможности деформировать объекты, например персонажей. Для сотворения карт нормалей традиционно употребляются высокополигональные и низкополигональные модели, по их сопоставлению устанавливающие подходящее значение отличия нормалей.

  • Displacement map – карта смещения, для показа рельефа поверхности. Также представляется в градациях серого цвета. Принципиальное отличие от предыдущих двух методов, что этот способ автоматически по-настоящему моделирует по карте полигоны. Естественно он самый качественный и наиболее ресурсоемкий;
  • Height map – двумерный массив, каждый элемент которого интерпретируется как высота. Часто используются в программах создания ландшафтов (Terrain), чтобы хранить информацию о высоте каждой точки местности. Используются также в технологии бамп-маппинга (bump mapping);
  • AmbientOcclusion (AO) map – карта затенения;
  • Reflection map – карта отображения;
  • Curvature (Concave, Convexity, Pits, Peaks, Worn Edge) map — карта, сохраняющая выпуклости, изгибы сетки;
  • Opacity map (opaque map), (карта непрозрачности) — формируется на основе черно-белой текстуры, где полностью черный цвет будет отображаться прозрачным (вырезаться из диффузной карты), белый будет полностью отображаться, а серые оттенки будут отображаться полупрозрачно с альфа интенсивностью;
  • Glow map;
  • DuDv;
  • Flow map – карта направления текстуры, также называемая векторным полем;
  • Radiosity normal map – карта используется в основном при запекании текстур;
  • Roughness;
  • HGlossiness;
  • RGlossiness;
  • Anisotropy;
  • An.rotation;
  • Refract;
  • Glossiness;
  • IOR;
  • Translucent;
  • Enviroment.

Алгоритмы растеризации

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

Аффинное текстурирование

Текстуры, Наложение текстур

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

Аффинное текстурное отображение линейно интерполирует координаты текстуры по поверхности, и поэтому является самой быстрой формой текстурного отображения. Некоторое программное и аппаратное обеспечение (например, оригинальная PlayStation ) проецирует вершины в трехмерном пространстве на экран во время рендеринга и линейно интерполирует координаты текстуры в экранном пространстве между ними. Это может быть сделано путем увеличения фиксированных точек UV-координат или с помощью алгоритма инкрементной ошибки, похожего на алгоритм линии Брезенхэма .

В отличие от перпендикулярных полигонов, это приводит к заметным искажениям при перспективных преобразованиях (см. рисунок: текстура флажка выглядит изогнутой), особенно в качестве примитивов вблизи камеры . Такие искажения можно уменьшить, разделив полигон на более мелкие.

В случае прямоугольных объектов использование квадратурных примитивов может выглядеть менее некорректно, чем тот же прямоугольник, разделенный на треугольники, но поскольку интерполяция 4 точек усложняет растеризацию, большинство ранних реализаций предпочитали только треугольники. Некоторое оборудование, например, прямое текстурное отображение, используемое Nvidia NV1 , могло предложить эффективные квадратурные примитивы. С коррекцией перспективы (см. ниже) треугольники становятся эквивалентными, и это преимущество исчезает.

Текстуры, Наложение текстур

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

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

Корректность перспективы

Текстурирование с правильной перспективой учитывает положение вершин в трехмерном пространстве, а не просто интерполирует координаты в двухмерном пространстве экрана. Это позволяет добиться правильного визуального эффекта, но требует больших затрат на вычисления.

Выполнить перспективную коррекцию координат текстуры Текстуры, Наложение текстур Текстуры, Наложение текстур, Текстуры, Наложение текстур являясь компонентом глубины с точки зрения зрителя, мы можем воспользоваться тем фактом, что значения Текстуры, Наложение текстур, Текстуры, Наложение текстур, и Текстуры, Наложение текстурлинейны в пространстве экрана по всей текстурируемой поверхности. В отличие от оригинала Текстуры, Наложение текстур, Текстуры, Наложение текстури Текстуры, Наложение текстур, до деления, не являются линейными по поверхности в экранном пространстве. Поэтому мы можем линейно интерполировать эти обратные величины по поверхности, вычисляя скорректированные значения в каждом пикселе, чтобы получить перспективно правильное отображение текстуры.

Для этого мы сначала вычисляем обратные величины в каждой вершине нашей геометрии (3 точки для треугольника). Для вершины Текстуры, Наложение текстуру нас есть Текстуры, Наложение текстур. Затем мы линейно интерполируем эти обратные величины междунТекстуры, Наложение текстурвершины (например, с использованием барицентрических координат ), что приводит к интерполированным значениям по всей поверхности. В заданной точке это дает интерполированноетыя, Текстуры, Наложение текстур, из Текстуры, Наложение текстур. Обратите внимание, что это Текстуры, Наложение текстурпока не может быть использована в качестве координат текстуры, поскольку наше деление назТекстуры, Наложение текстуризменили свою систему координат.

Чтобы исправить обратно кты,вТекстуры, Наложение текстурпространство мы сначала вычисляем исправленныйзТекстуры, Наложение текстурснова принимая обратный Текстуры, Наложение текстур. Затем мы используем это, чтобы исправить наши Текстуры, Наложение текстур: Текстуры, Наложение текстур и Текстуры, Наложение текстур.

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

Аффинное текстурное отображение напрямую интерполирует координаты текстуры Текстуры, Наложение текстурмежду двумя конечными точками Текстуры, Наложение текстур и Текстуры, Наложение текстур:

Текстуры, Наложение текстур где Текстуры, Наложение текстур

Перспективно-корректное отображение интерполируется после деления на глубину Текстуры, Наложение текстур, затем использует свою интерполированную обратную величину для восстановления правильной координаты:

Текстуры, Наложение текстур

Аппаратное обеспечение для 3D-графики обычно поддерживает текстурирование с корректной перспективой.

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

Классические программные текстурные картографы обычно выполняли только простое наложение максимум с одним эффектом освещения (обычно применяемым через таблицу соответствия ), а корректность перспективы обходилась примерно в 16 раз дороже.

Ограниченное вращение камеры

Текстуры, Наложение текстур

Движок Doom не допускал наклонных полов или наклонных стен. Это требует коррекции перспективы только один раз на каждый горизонтальный или вертикальный промежуток, а не попиксельно.

Движок Doom ограничивал мир вертикальными стенами и горизонтальными полами/потолками, с камерой, которая могла вращаться только вокруг вертикальной оси. Это означало, что стены будут иметь постоянную координату глубины вдоль вертикальной линии, а полы/потолки будут иметь постоянную глубину вдоль горизонтальной линии. После выполнения одного расчета коррекции перспективы для глубины остальная часть линии могла использовать быстрое аффинное отображение. Некоторые более поздние рендереры этой эпохи имитировали небольшое количество наклона камеры со сдвигом , что позволяло создавать видимость большей свободы при использовании той же техники рендеринга.

Некоторые движки способны визуализировать карты высот с текстурным наложением (например, Voxel Space от Nova Logic и движок для Outcast ) с помощью инкрементных алгоритмов, подобных алгоритму Брезенхэма , создавая видимость текстурированного ландшафта без использования традиционных геометрических примитивов.

Подразделение для коррекции перспективы

Каждый треугольник может быть далее подразделен на группы примерно по 16 пикселей для достижения двух целей. Во-первых, поддержание арифметической мельницы в рабочем состоянии все время. Во-вторых, получение более быстрых арифметических результатов.

Подразделение мирового пространства

Для перспективного текстурного отображения без аппаратной поддержки треугольник разбивается на более мелкие треугольники для рендеринга, и на них применяется аффинное отображение. Причина, по которой этот метод работает, заключается в том, что искажение аффинного отображения становится гораздо менее заметным на меньших полигонах. Sony PlayStation широко использовала это, поскольку поддерживала только аффинное отображение на аппаратном уровне, но имела относительно высокую пропускную способность треугольников по сравнению с аналогами.

Разделение экранного пространства

Текстуры, Наложение текстур

Методы разделения экранного пространства.

  • Вверху слева: Quake-like,
  • вверху справа: bilinear,
  • внизу слева: const-z

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

Для Quake был использован другой подход , который вычислял бы координаты с правильной перспективой только один раз каждые 16 пикселей строки сканирования и выполнял бы линейную интерполяцию между ними, эффективно работая со скоростью линейной интерполяции, поскольку расчет с правильной перспективой выполняется параллельно на сопроцессоре. Полигоны визуализируются независимо, поэтому можно переключаться между интервалами и столбцами или диагональными направлениями в зависимости от ориентации нормали полигона, чтобы добиться более постоянного z, но усилия, похоже, того не стоят.

Другие методы

Другой метод заключался в аппроксимации перспективы более быстрым вычислением, таким как полином. Еще один метод использовал значение 1/z последних двух нарисованных пикселей для линейной экстраполяции следующего значения. Затем деление выполнялось, начиная с этих значений, так что делился только небольшой остаток но объем бухгалтерских операций делает этот метод слишком медленным на большинстве систем.

Наконец, движок Build расширил трюк с постоянным расстоянием, используемый в Doom, найдя линию постоянного расстояния для произвольных полигонов и выполнив рендеринг вдоль нее.

Аппаратные реализации

Аппаратное обеспечение для текстурного картирования изначально было разработано для моделирования (например, как реализовано в Evans and Sutherland ESIG и Singer-Link Digital Image Generators DIG), а также для профессиональных графических рабочих станций , таких как Silicon Graphics , машин для создания цифровых видеоэффектов, таких как Ampex ADO , а затем появилось в игровых автоматах , игровых консолях для потребителей и видеокартах для ПК в середине 1990-х годов. В моделировании полета текстурное картирование обеспечивало важные сигналы движения и высоты, необходимые для обучения пилотов, недоступные на нетекстурированных поверхностях. Также в приложениях для моделирования полета текстурное картирование было реализовано для обработки в реальном времени с предварительно отфильтрованными шаблонами текстур, хранящимися в памяти для доступа в реальном времени видеопроцессором.

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

Некоторые аппаратные средства объединяют текстурное отображение с определением скрытой поверхности в отложенном рендеринге на основе плиток или рендеринге сканлайнов ; такие системы извлекают только видимые текселы за счет использования большего рабочего пространства для преобразованных вершин. Большинство систем остановились на подходе Z-буферизации , который все еще может снизить рабочую нагрузку по текстурному отображению с сортировкой спереди назад .

Среди более ранних графических устройств существовало две конкурирующие парадигмы вывода текстуры на экран:

  • Прямое текстурное наложение перебирает каждый тексель текстуры и решает, где его разместить на экране.
  • Обратное текстурирование вместо этого перебирает пиксели на экране и решает, какой тексель использовать для каждого из них.

Обратное наложение текстур — метод, который стал стандартом в современном оборудовании.

Обратное текстурное отображение

При использовании этого метода пиксель на экране сопоставляется с точкой на текстуре. Каждая вершина примитива рендеринга проецируется в точку на экране, и каждая из этих точек сопоставляется с координатой текселя au,v на текстуре. Растеризатор будет интерполировать между этими точками, чтобы заполнить каждый пиксель, покрытый примитивом.

Основное преимущество заключается в том, что каждый пиксель, покрытый примитивом, будет пройден ровно один раз. После преобразования вершин примитива объем оставшейся работы напрямую зависит от того, сколько пикселей он покрывает на экране.

Главным недостатком по сравнению с прямым отображением текстур является то, что шаблон доступа к памяти в пространстве текстур не будет линейным, если текстура находится под углом к ​​экрану. Этот недостаток часто устраняется методами кэширования текстур , такими как расположение памяти текстур swizzled .

Линейную интерполяцию можно использовать напрямую для простого и эффективного аффинного текстурирования, но ее также можно адаптировать для обеспечения корректности перспективы .

Прямое наложение текстур

Прямое текстурное отображение отображает каждый тексель текстуры в пиксель на экране. После преобразования прямоугольного примитива в место на экране рендерер прямого текстурного отображения проходит по каждому текселю текстуры, накладывая каждый из них на пиксель буфера кадра .

Это использовалось в некоторых аппаратных средствах, таких как 3DO , Sega Saturn и NV1 .

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

Этот метод также хорошо подходит для рендеринга примитивов квадратов, а не для их сведения к треугольникам, что давало преимущество, когда корректное текстурирование перспективы не было доступно на аппаратном уровне. Это связано с тем, что аффинное искажение квадрата выглядит менее неправильным, чем тот же квадрат, разделенный на два треугольника (см. аффинное отображение текстуры выше). Аппаратное обеспечение NV1 также позволяло использовать режим квадратичной интерполяции для обеспечения еще лучшего приближения корректности перспективы.

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

Применение

Помимо 3D-рендеринга, доступность аппаратного обеспечения для наложения текстур вдохновила на его использование для ускорения других задач:

Томография

Можно использовать оборудование для текстурного картирования для ускорения как реконструкции наборов воксельных данных из томографических сканов , так и для визуализации результатов .

Пользовательские интерфейсы

Многие пользовательские интерфейсы используют наложение текстур для ускорения анимированных переходов элементов экрана, например Exposé в Mac OS X.

Вау!! 😲 Ты еще не читал? Это зря!

Исследование, описанное в статье про наложение текстур, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое наложение текстур и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Компьютерная графика

создано: 2025-01-16
обновлено: 2025-01-18
13



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Компьютерная графика

Термины: Компьютерная графика