stringtranslate.com

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

1: 3D-модель без текстур
2: Та же модель с текстурами
Наложение двухмерной текстуры на 3D-модель.

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

История

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

К 1983 году работа, проделанная Джонсоном Яном, Николасом Сабо и Лиш-Яаном Ченом в их изобретении «Метод и устройство для генерации текстур», обеспечила генерацию текстур в реальном времени, когда текстуру можно было генерировать и накладывать на поверхности (криволинейные и плоские) любого типа. ориентация. Текстурные узоры могут быть смоделированы так, чтобы наводить на мысль о материале реального мира, который они должны были представлять непрерывным образом и без псевдонимов, в конечном итоге обеспечивая уровень детализации и постепенные (незаметные) переходы между уровнями детализации. Генерация текстур стала повторяемой и последовательной от кадра к кадру, сохраняя правильную перспективу и соответствующее затемнение. [5] Поскольку применение текстурирования в реальном времени применялось к ранним системам CGI трехмерных авиасимуляторов, многие из этих методов позже широко использовались в графических вычислениях, играх и приложениях в течение многих последующих лет, поскольку текстура часто была первой предпосылкой для реалистичного вида. графика.

Также в 1983 году в статье «Пирамидиальная параметрика» Лэнс Уильямс, другой пионер графики, представил концепцию отображения изображений на поверхности для повышения реалистичности таких изображений. [6]

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

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

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

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

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

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

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

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

Создание

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

Применение текстур

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

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

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

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

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

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

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

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

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

Выпечка

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

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

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

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

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

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

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

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

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

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

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

Перспективная корректность

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

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

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

Чтобы вернуться к пространству, мы сначала вычисляем исправленное , снова взяв обратное значение . Затем мы используем это, чтобы исправить наши : и . [14]

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

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

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

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

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

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

В движке Doom не допускались наклонные полы или наклонные стены. Для этого требуется коррекция перспективы только один раз для каждого горизонтального или вертикального диапазона, а не для каждого пикселя.

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

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

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

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

Мировое космическое подразделение

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

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

Приемы разделения экранного пространства. Вверху слева: Quake-подобно, вверху справа: билинейно, внизу слева: const-z

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

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

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

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

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

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

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

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

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

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

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

Инверсное наложение текстур

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

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

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

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

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

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

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

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

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

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

Приложения

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

Томография

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

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

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

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

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

  1. ^ Ван, Хуамин. «Наложение текстур» (PDF) . кафедра компьютерных наук и инженерии . Университет штата Огайо . Архивировано из оригинала (PDF) 4 марта 2016 г. Проверено 15 января 2016 г.
  2. ^ «Наложение текстур» (PDF) . www.inf.pucrs.br . Проверено 15 сентября 2019 г.
  3. ^ «Наложение текстур CS 405» . www.cs.uregin.ca . Проверено 22 марта 2018 г.
  4. ^ Кэтмалл, Э. (1974). Алгоритм подразделения для компьютерного отображения криволинейных поверхностей (PDF) (кандидатская диссертация). Университет Юты.
  5. ^ «Метод и устройство для создания текстур».
  6. ^ Уильямс, Лэнс (июль 1983 г.). «Пирамидальная параметрика». Компьютерная графика . 17 (3): 1–11. дои : 10.1145/964967.801126.
  7. ^ Фоснер, Рон (январь 1999 г.). «DirectX 6.0 становится взрывным благодаря множеству новых функций и гораздо более быстрому коду». Microsoft.com . Архивировано из оригинала 31 октября 2016 года . Проверено 15 сентября 2019 г.
  8. ^ Хвидстен, Майк (весна 2004 г.). «Руководство по отображению текстур OpenGL». homepages.gac.edu . Архивировано из оригинала 23 мая 2019 года . Проверено 22 марта 2018 г.
  9. ^ Джон Радофф, Анатомия MMORPG, «Анатомия MMORPG». radoff.com . 22 августа 2008 г. Архивировано из оригинала 13 декабря 2009 г. Проверено 13 декабря 2009 г.
  10. ^ Робертс, Сьюзен. «Как использовать текстуры». Архивировано из оригинала 24 сентября 2021 года . Проверено 20 марта 2021 г.{{cite web}}: CS1 maint: unfit URL (link)
  11. ^ Блайт, Дэвид. Расширенные методы графического программирования с использованием OpenGL. Siggraph 1999. ( PDF ) (см.: Мультитекстура)
  12. ^ Синтез рельефных карт в реальном времени, Ян Каутц 1 , Вольфганг Хайдрихи 2 и Ханс-Петер Зайдель 1 , ( 1 Институт Макса Планка по информатике, 2 Университет Британской Колумбии)
  13. ^ ab «Лексикон следующего поколения 1996 года от А до Я: коррекция перспективы». Следующее поколение . № 15. Imagine Media . Март 1996 г. с. 38.
  14. ^ Калмс, Микаэль (1997). «Перспективное текстурирование». www.lysator.liu.se . Проверено 27 марта 2020 г.
  15. ^ «Воксельный движок местности», введение. В сознании программиста, 2005 г. (архив 2013 г.).
  16. ^ Абраш, Майкл. Специальное издание «Черной книги» Майкла Абраша по графическому программированию. Группа Кориолиса, Скоттсдейл, Аризона, 1997. ISBN 1-57610-174-6 (PDF заархивировано 11 марта 2007 г. в Wayback Machine ) (глава 70, стр. 1282) 
  17. ^ US 5739818, Спэкман, Джон Нил, «Устройство и метод для выполнения перспективно правильной интерполяции в компьютерной графике», выдан 14 апреля 1998 г. 
  18. ^ Ян, Джонсон (август 1985 г.). «Достижения в области компьютерных изображений для моделирования полетов». ИИЭЭ . 5 (8): 37–51. дои : 10.1109/MCG.1985.276213. {{cite journal}}: Внешняя ссылка |ref=( помощь )
  19. ^ «Наложение текстур для томографии» .

Программное обеспечение

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