В компьютерной графике MIP -карты (также MIP-карты ) или пирамиды [1] [2] [3] представляют собой заранее рассчитанные оптимизированные последовательности изображений , каждое из которых представляет собой представление предыдущего с прогрессивно более низким разрешением . Высота и ширина каждого изображения или уровня в MIP-карте в два раза меньше, чем у предыдущего уровня. Мип-карты не обязательно должны быть квадратными. Они предназначены для увеличения скорости рендеринга и уменьшения артефактов алиасинга . Mip-изображение высокого разрешения используется для образцов с высокой плотностью, например, для объектов, близких к камере; используются изображения с более низким разрешением, поскольку объект кажется дальше. Это более эффективный способ понижающей фильтрации ( минимизации ) текстуры , чем выборка всех текселей исходной текстуры, которые могут вносить вклад в пиксель экрана ; быстрее получить постоянное количество выборок из текстур, подвергнутых соответствующей фильтрации. Mip-карты широко используются в компьютерных 3D-играх , авиасимуляторах , других системах 3D-изображений для фильтрации текстур , а также в программном обеспечении 2D и 3D ГИС . Их использование известно как мипмаппинг . Буквы MIP в названии являются аббревиатурой латинской фразы multum in parvo , что означает «много в малом». [4]
Поскольку MIP-карты по определению выделяются заранее , для их использования требуется дополнительное пространство для хранения . Они также связаны с вейвлет-сжатием . Mip-текстуры используются в 3D-сценах для уменьшения времени, необходимого для рендеринга сцены. Они также улучшают качество изображения за счет уменьшения сглаживания и муара , возникающих на больших расстояниях просмотра, [5] за счет увеличения памяти на 33% на текстуру.
Мип-карты используются для:
Мипмэппинг был изобретен Лэнсом Уильямсом в 1983 году и описан в его статье «Пирамидальная параметрика» . [4] Из аннотации: «В этой статье предлагается «пирамидальная параметрическая» геометрия предварительной фильтрации и выборки, которая сводит к минимуму эффекты наложения спектров и обеспечивает непрерывность внутри и между целевыми изображениями». Упомянутую пирамиду можно представить как набор MIP-карт, расположенных друг напротив друга.
Первый патент на Mipmap и генерацию текстур был выдан в 1983 году Джонсоном Яном, Николасом Сабо и Лиш-Янном Ченом из Link Flight Simulation (Singer). Используя их подход, текстуру можно генерировать и накладывать на поверхности (криволинейные и плоские) любой ориентации и делать это в режиме реального времени. Текстурные узоры могут быть смоделированы так, чтобы наводить на мысль о материале реального мира, который они должны были представлять непрерывным образом и без псевдонимов, в конечном итоге обеспечивая уровень детализации и постепенные (незаметные) переходы между уровнями детализации. Генерация текстур стала повторяемой и последовательной от кадра к кадру, сохраняя правильную перспективу и соответствующее затемнение. Поскольку применение текстурирования в реальном времени применялось к ранним CGI-системам трехмерных авиасимуляторов, а текстура была предпосылкой для реалистичной графики, этот патент стал широко цитироваться, и многие из этих методов позже были применены в графических вычислениях и играх по мере расширения приложений по всему миру. годы. [9]
Происхождение термина «мипмап» является инициализмом латинской фразы multum in parvo («много в небольшом пространстве») и карты, созданной по образцу растрового изображения. [4] Термин «пирамиды» до сих пор широко используется в контексте ГИС . В программном обеспечении ГИС пирамиды в основном используются для ускорения времени рендеринга.
Каждое растровое изображение набора MIP-карт является уменьшенной копией основной текстуры , но с определенным пониженным уровнем детализации. Хотя основная текстура по-прежнему будет использоваться, когда представление будет достаточным для ее полной детализации, средство рендеринга переключится на подходящее MIP-изображение (или, по сути, будет интерполировать между двумя ближайшими, если активирована трилинейная фильтрация ), когда текстура будет смотреть на расстоянии или в небольшом размере. Скорость рендеринга увеличивается, поскольку количество пикселей текстуры ( текселей ), обрабатываемых на пиксель дисплея, может быть намного меньше для аналогичных результатов с более простыми MIP-текстурами. Если использовать ограниченное количество образцов текстуры на пиксель дисплея (как в случае с билинейной фильтрацией ), то количество артефактов уменьшается, поскольку MIP-изображения фактически уже сглажены . Уменьшение и увеличение масштаба также становится более эффективным с помощью MIP-карт.
Если текстура имеет базовый размер 256 на 256 пикселей, то связанный набор MIP-карт может содержать серию из 8 изображений, каждое из которых составляет четверть общей площади предыдущего: 128×128 пикселей, 64×64, 32×32. , 16×16, 8×8, 4×4, 2×2, 1×1 (один пиксель). Если, например, сцена отображает эту текстуру в пространстве размером 40×40 пикселей, то либо увеличенная версия 32×32 (без трилинейной интерполяции ), либо интерполяция 64×64 и 32×32. будут использоваться MIP-карты (с трилинейной интерполяцией). Самый простой способ создания таких текстур — последовательное усреднение; однако можно использовать и более сложные алгоритмы (возможно, основанные на обработке сигналов и преобразованиях Фурье ).
Увеличение объема памяти, необходимого для всех этих 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: несколько имен: список авторов ( ссылка )