MIP-текстурирование


MIP-текстурирование (англ. MIP mapping) — метод текстурирования, использующий несколько копий одной текстуры с разной детализацией. Название происходит от лат. multum in parvo — «много в малом».

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

Многие современные компьютерные игры позволяют пользователю снизить в настройках качество текстурирования, сделав выбор между производительностью и качеством. В случае установки «низкого» качества текстур самая качественная версия вообще не будет использоваться, а вместо неё — более низкие MIP-уровни.

Создаётся так называемая MIP-пирамида — последовательность текстур с разрешением от максимального до 1×1. Например: 1×1, 2×2, 4×4, 8×8, 16×16, 32×32, 64×64, 128×128, 256×256, 512×512 и 1024×1024. Каждая из этих текстур называется MIP-уровнем (англ. MIP level) или уровнем детализации (англ. level of detail).

На всех этих текстурах находится одно и то же изображение. Таким образом, MIP-текстурирование увеличивает расход видеопамяти на треть:

где resolution — разрешение виртуальной камеры (количество пикселей, которое будет в объекте размером в 1 ед., расположенном в 1 ед. от камеры), texelsize — размер текселя в единицах трёхмерного мира, dist — расстояние до объекта в тех же единицах, mip bias — число, позволяющее выбирать более или менее детальную текстуру, чем даёт формула.