В компьютерной графике mip -карты (также MIP-карты ) или пирамиды [1] [2] [3] представляют собой предварительно рассчитанные, оптимизированные последовательности изображений , каждая из которых представляет собой представление предыдущего с прогрессивно более низким разрешением . Высота и ширина каждого изображения или уровня в mip-карте в два раза меньше предыдущего уровня. Mip-карты не обязательно должны быть квадратными. Они предназначены для увеличения скорости рендеринга и уменьшения артефактов наложения . Высокое разрешение mip-изображения используется для образцов с высокой плотностью, например, для объектов, расположенных близко к камере; изображения с более низким разрешением используются, когда объект находится дальше. Это более эффективный способ уменьшения масштаба текстуры , чем выборка всех текселей в исходной текстуре, которые внесли бы вклад в пиксель экрана ; быстрее взять постоянное количество образцов из соответствующим образом отфильтрованных текстур. Mip-карты широко используются в 3D- компьютерных играх , авиасимуляторах , других 3D-системах визуализации для фильтрации текстур , а также в 2D- и 3D- программном обеспечении ГИС . Их использование известно как мип-маппинг . Буквы MIP в названии являются аббревиатурой латинской фразы multum in parvo , что означает «многое в малом». [4]
Поскольку mip-карты по определению являются предварительно выделенными , для их использования требуется дополнительное дисковое пространство . Они также связаны с вейвлет-сжатием . Текстуры mip-карт используются в 3D-сценах для сокращения времени, необходимого для рендеринга сцены. Они также улучшают качество изображения , уменьшая алиасинг и муаровые узоры , которые возникают на больших расстояниях просмотра [5] за счет увеличения памяти на 33% на текстуру.
MIP-текстуры используются для:
MIP-отображение было изобретено Лэнсом Уильямсом в 1983 году и описано в его статье «Пирамидальная параметрическая» геометрия . [4] Из аннотации: «В этой статье продвигается «пирамидальная параметрическая» геометрия предварительной фильтрации и выборки, которая минимизирует эффекты наложения и обеспечивает непрерывность внутри и между целевыми изображениями». Упомянутую пирамиду можно представить как набор MIP-отображений, сложенных друг перед другом.
Первый патент на Mipmap и генерацию текстур был выдан в 1983 году Джонсоном Яном, Николасом Сабо и Лиш-Янном Ченом из Link Flight Simulation (Singer). Используя их подход, текстура могла быть сгенерирована и наложена на поверхности (криволинейные и плоские) любой ориентации и могла быть выполнена в реальном времени. Текстурные узоры могли быть смоделированы, предполагая реальный материал мира, который они должны были представлять непрерывным образом и без наложения, в конечном итоге обеспечивая уровень детализации и постепенные (незаметные) переходы уровня детализации. Генерация текстур стала повторяемой и последовательной от кадра к кадру и оставалась в правильной перспективе и соответствующем затенении. Поскольку применение текстурирования в реальном времени применялось к ранним трехмерным системам CGI-симуляторов полета, а текстура была предпосылкой для реалистичной графики, этот патент стал широко цитироваться, и многие из этих методов позже были применены в графических вычислениях и играх по мере расширения приложений с годами. [9]
Термин mipmap происходит от латинской фразы multum in parvo («много в малом пространстве») и map, смоделированной на основе bitmap. [4] Термин pyramids до сих пор широко используется в контексте ГИС . В программном обеспечении ГИС пирамиды в основном используются для ускорения времени рендеринга.
Каждое растровое изображение набора mipmap является уменьшенным дубликатом основной текстуры , но с определенным пониженным уровнем детализации. Хотя основная текстура все равно будет использоваться, когда вид достаточен для ее визуализации с полной детализацией, рендерер переключится на подходящее изображение mipmap (или фактически, выполнит интерполяцию между двумя ближайшими, если активирована трилинейная фильтрация ), когда текстура просматривается с расстояния или небольшого размера. Скорость рендеринга увеличивается, поскольку количество пикселей текстуры ( текселей ), обрабатываемых на пиксель отображения, может быть намного ниже для аналогичных результатов с более простыми текстурами mipmap. Если используется ограниченное количество образцов текстуры на пиксель отображения (как в случае с билинейной фильтрацией ), то артефакты уменьшаются, поскольку изображения mipmap фактически уже сглажены . Уменьшение и увеличение масштаба также становится более эффективным с помощью mipmap.
Если текстура имеет базовый размер 256 на 256 пикселей, то связанный набор mip-карт может содержать серию из 8 изображений, каждая из которых составляет одну четвертую общей площади предыдущей: 128×128 пикселей, 64×64, 32×32, 16×16, 8×8, 4×4, 2×2, 1×1 (один пиксель). Если, например, сцена визуализирует эту текстуру в пространстве 40×40 пикселей, то будет использоваться либо увеличенная версия 32×32 (без трилинейной интерполяции ), либо интерполяция mip-карт 64×64 и 32×32 (с трилинейной интерполяцией). Самый простой способ создания этих текстур — последовательное усреднение; Однако могут использоваться и более сложные алгоритмы (возможно, основанные на обработке сигналов и преобразованиях Фурье ).
Увеличение дискового пространства, требуемого для всех этих mip-карт, составляет треть исходной текстуры, поскольку сумма площадей 1/4 + 1/16 + 1/64 + 1/256 + ⋯ сходится к 1/3. В случае изображения RGB с тремя каналами, сохраненными в виде отдельных плоскостей, общую mip-карту можно визуализировать как аккуратно помещающуюся в квадратную область, в два раза большую, чем размеры исходного изображения с каждой стороны (в два раза больше с каждой стороны — это в четыре раза больше исходной площади — одна плоскость исходного размера для каждого из красного, зеленого и синего цветов составляет в три раза больше исходной площади, а затем, поскольку меньшие текстуры занимают 1/3 исходной, 1/3 от трех — это один, поэтому они займут то же общее пространство, что и одна из исходных красной, зеленой или синей плоскостей). Это вдохновило на создание тега multum in parvo .
Когда текстура просматривается под крутым углом, фильтрация не должна быть однородной в каждом направлении (она должна быть анизотропной, а не изотропной ), и требуется компромиссное разрешение. Если используется более высокое разрешение, когерентность кэша снижается, а наложение увеличивается в одном направлении, но изображение, как правило, становится более четким. Если используется более низкое разрешение, когерентность кэша улучшается, но изображение становится чрезмерно размытым. Это будет компромиссом уровня детализации MIP (LOD) для наложения и размытия. Однако анизотропная фильтрация пытается разрешить этот компромисс путем выборки неизотропного текстурного следа для каждого пикселя, а не просто корректировки MIP LOD. Эта неизотропная выборка текстуры требует либо более сложной схемы хранения, либо суммирования большего количества выборок текстуры на более высоких частотах. [10]
Таблицы суммированных областей могут экономить память и обеспечивать большее разрешение. Однако они снова наносят ущерб согласованности кэша и требуют более широких типов для хранения частичных сумм, которые больше размера слова базовой текстуры. Таким образом, современное графическое оборудование их не поддерживает.
{{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка )