Мип или уровень мип — это версия текстуры с определенным разрешением. Мипы существуют в наборах, называемых мип-картами. MIP-карты содержат постепенно уменьшающиеся версии одной текстуры с более низким разрешением.
Например, мип-карта может содержать 4 версии текстуры: от исходной текстуры (мип 0) до мип 1, мип 2 и мип 3:
Mipmaps обычно используются для визуализации объектов в трехмерных сценахСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь, где текстурированные объекты могут различаться по расстоянию с камерыКомпонент, который создает изображение определенной точки обзора в вашей сцене. Вывод либо рисуется на экране, либо фиксируется в виде текстуры. Подробнее
См. в Словарь. Более высокий уровень MIP используется для объектов, находящихся ближе к камере, а более низкий уровень MIP используется для более удаленных объектов.
Mipmaps может ускорить операции рендеринга и уменьшить артефакты рендеринга в ситуациях, когда графический процессор визуализирует текстуру с меньшим разрешением, чем ее полное разрешение. MIP-файл фактически представляет собой кэшированную версию исходной текстуры с уменьшенной дискретизацией. Вместо того, чтобы выполнять множество операций сэмплирования исходной текстуры с полным разрешением, графический процессор может выполнять меньшее количество операций с уже уменьшенной версией.
Иногда MIP-карты бесполезны. Мипмапы увеличивают размер текстуры на 33% как на диске, так и в памяти. Они также не дают никаких преимуществ, когда текстура визуализируется только в полном разрешении, например UI(пользовательский интерфейс). для взаимодействия с вашим приложением. В настоящее время Unity поддерживает три системы пользовательского интерфейса. Подробнее
Посмотрите в Словарь текстуру, которая не масштабируется.
Вы можете создать мип-карту для текстуры вручную или поручить Unity сгенерировать мип-карту для вас. Чтобы автоматически сгенерировать мип-карту, убедитесь, что разрешение исходной текстуры равно степени двойки, как показано в примере изображения мип-карты.
Вы можете включить или отключить MIP-карты для ресурса текстуры в Инспекторе настроек импорта текстур.
Как GPU сэмплирует мип-уровни
Когда графический процессор сэмплирует текстуру, он определяет, какой уровень MIP использовать на основе координат текстуры (UV) для текущего пикселяНаименьшая единица в компьютерном изображении. Размер пикселя зависит от разрешения вашего экрана. Пиксельное освещение рассчитывается для каждого пикселя экрана. Подробнее
См. в Словарь, а также два внутренних значения, вычисляемых графическим процессором: DDX и DDY. . DDX и DDY предоставляют информацию об UV-развертке пикселей рядом с текущим пикселем и над ним, включая расстояния и углы.
Графический процессор использует эти значения, чтобы определить, какая часть деталей текстуры видна камере. Большее расстояние и более экстремальный угол между текущим пикселем и его соседями означает, что графический процессор должен выбрать более низкое разрешение MIP; более короткое расстояние и менее экстремальный угол означают, что графический процессор должен выбрать мип-файл с более высоким разрешением.
ГП также может смешивать информацию о текстуре из двух мипов вместе при использовании трилинейной фильтрации. Смешивание мипов во время сэмплирования может сделать переход от одного мип-сигнала к другому менее заметным. Чтобы смешать мипы, графический процессор берет определенный процент информации о текстуре из одного мипа, а остальную часть — из другого мипа.
Мип-смещение
Настройка, называемая смещением мип, может выполнять две функции во время семплирования, в зависимости от настроек вашего сэмплера:
- Смещение MIP может изменить порог для GPU, выбирая более низкое или более высокое MIP для образца. Графический процессор выбирает определенный мип при использовании точечной фильтрации в вашем сэмплере. Например, GPU может решить, что текстура с набором UV-разверток должна использовать образец из Mip 3. При смещении mip, равном –2, вместо этого GPU будет использовать Mip 1 с более высоким разрешением для образца.
- Смещение мип-сигналов может указать графическому процессору, что один мип-файл предпочтительнее другого на определенный процент при смешивании сэмплов из разных мип-файлов. Графический процессор смешивает мипы при использовании линейной или трилинейной фильтрации в вашем сэмплере. Например, вычисления графического процессора могут вернуть значение 0,5. Значение 0,5 говорит графическому процессору брать 50% необходимой ему текстурной информации из одного мип-объекта, а оставшиеся 50% — из следующего мип-файла в мип-карте. Если добавить смещение MIP 0,2, значение 0,5 изменится на 0,7, а графический процессор получит 70 % информации о текстуре из первого MIP и только 30 % из второго.
Графический процессор имеет глобальное смещение MIP, которое по умолчанию применяется к выбору MIP. Текстуры могут иметь собственное мип-смещение, которое Unity добавляет или вычитает из глобального мип-смещения. Вы также можете указать собственное смещение MIP для отдельной операции выборки текстуры в ваших шейдерахпрограмме, работающей на графическом процессоре. Подробнее
См. в Словарь.
Чтобы установить смещение MIP для отдельной текстуры, см. раздел Texture.mipMapBias. Чтобы установить смещение MIP для операции выборки текстуры в шейдере с ручным кодом, используйте функции HLSL, такие как tex2dbias. Чтобы установить смещение MIP для операции выборки текстуры в Shader Graph, см. Образец узла текстуры 2D-массива или Образец двухмерного узла текстуры.
Как Unity загружает мип-карты
Вы можете управлять тем, как Unity загружает MIP-карты во время выполнения, с помощью потоковой MIP-карты.