У любого художника со стажем есть архив: текстуры на 512 пикселей из проекта пятилетней давности, рендеры, сделанные когда видеокарта не тянула больше, сканы и фотореференсы с плохих камер. Выбрасывать жалко, использовать в нынешнем виде нельзя. Здесь и появляется апскейл текстур.
Нейросетевой апскейл текстур решает часть этих задач, но далеко не все. Посмотрим, что можно вытянуть, что нельзя в принципе, и чем работа с картами материалов отличается от работы с обычной картинкой.
Чем нейросетевой апскейл отличается от обычного
Классическое увеличение изображения интерполирует: берёт соседние пиксели и вычисляет промежуточные. Новой информации не появляется, картинка становится больше и мягче.
Нейросетевой апскейл работает иначе: модель обучена на парах изображений низкого и высокого разрешения и достраивает детали, опираясь на то, как выглядят похожие структуры. Она не восстанавливает утраченное, а придумывает правдоподобное.
Из этого следует главное правило: апскейл хорош там, где правдоподобие важнее точности. Кирпичная стена, кора дерева, ржавчина, ткань восстанавливаются отлично. Мелкий текст, логотипы, точные технические детали превращаются в убедительную выдумку.
Апскейл текстур: выбор модели под задачу
Универсальной модели нет, и это первая ошибка новичка: прогонять всё через одну.
- Фотореалистичные поверхности. Модели, обученные на фотографиях, дают лучший результат на камне, металле, ткани, коже.
- Рисованное и стилизованное. Отдельные модели для иллюстраций и аниме: они не пытаются добавить фотографическую зернистость.
- Лица. Специализированные модели восстанавливают черты лица заметно лучше универсальных, но склонны делать всех похожими друг на друга.
- Сильно сжатые исходники. Есть модели, обученные бороться с артефактами JPEG. На чистом исходнике они дают худший результат, чем обычные.
Практический подход: прогнать один и тот же фрагмент через три до пяти моделей и сравнить в масштабе один к одному. Разница будет очевидной, а угадать заранее почти невозможно.
Главная особенность: карты материалов апскейлят по-разному
Здесь чаще всего ошибаются. PBR-материал это не одна картинка, а набор карт, и каждая содержит разные данные.
Base Color
Единственная карта, которая содержит собственно изображение. Апскейлится обычными моделями, результат обычно хороший.
Normal
Не изображение, а закодированные в цвете векторы нормалей. Нейросеть, обученная на фотографиях, воспринимает её как странную фиолетовую картинку и портит: добавляет детали, которые нарушают длину векторов, и шейдинг ломается.
Правильный путь: либо апскейлить нормали специализированной моделью, либо не апскейлить вовсе, а перегенерировать карту из увеличенной карты высот. После любого апскейла нормали нужно перенормировать.
Roughness, Metallic, AO
Это карты значений, а не цвета. Апскейл обычной моделью добавляет в них шум, который на рендере выглядит как грязь на поверхности. Для них лучше работает обычная бикубическая интерполяция с последующим лёгким размытием: терять здесь нечего, эти карты и так плавные.
Порядок работы с набором карт
- Апскейлить Base Color нейросетью.
- Карты значений увеличивать обычной интерполяцией.
- Карту нормалей либо перегенерировать, либо апскейлить отдельно с перенормировкой.
- Собрать материал и проверить на сфере при разном освещении, а не на плоскости.
Как устроены сами карты и за что отвечает каждая, разбирали в материале про генерацию текстур для Blender.
Апскейл рендеров: другая задача
С рендерами ситуация проще в одном и сложнее в другом.
Проще: рендер это обычное изображение, специальных карт нет.
Сложнее: в рендере есть элементы, которые апскейл разрушает. Тонкие ровные линии превращаются в волнистые, плавные градиенты покрываются полосами, шум от трассировки лучей нейросеть принимает за текстуру и усиливает.
Практическое правило: если есть возможность перерендерить в нужном разрешении, всегда перерендеривайте. Апскейл рендера это компромисс для случаев, когда сцена утеряна или пересчёт стоит слишком дорого. Как ускорить сам просчёт, разбирали в статье про оптимизацию рендера в Cycles.
Отдельно: шумный рендер сначала прогоняют через шумоподавление, потом апскейлят. В обратном порядке шум увеличится вместе с картинкой и станет неустранимым.
Типичные артефакты и что с ними делать
Пластиковая гладкость. Модель убрала микрорельеф и сделала поверхность стерильной. Лечится смешиванием результата с исходником и добавлением зерна поверх.
Выдуманная детализация. На месте размытого пятна появился узор, которого не было. Заметно на повторяющихся структурах: кирпич, черепица, ткань. Единственное лечение это уменьшить коэффициент увеличения или взять другую модель.
Ореолы на контрастных границах. Светлая или тёмная кайма вдоль резких переходов. Лечится обработкой по частям с последующим смешиванием.
Швы при тайловой обработке. Большие текстуры обрабатываются кусками, и на стыках видны границы. Нужна обработка с перекрытием.
Потеря бесшовности. Самая коварная проблема. Бесшовная текстура после апскейла перестаёт стыковаться сама с собой, потому что модель обработала края независимо. Проверять обязательно, лечится обработкой со сдвигом.
Апскейл сканов и фотореференсов
Отдельная категория, где апскейл окупается лучше всего.
Фотографии поверхностей для текстур. Снимки стен, дерева, металла, сделанные на старый телефон. Здесь апскейл работает почти идеально: правдоподобие важнее точности, а фактура именно правдоподобная структура.
Сканы старых материалов. Отсканированная бумага, ткань, кожа. Важно перед апскейлом убрать муар и пыль, иначе нейросеть усилит и то и другое.
Референсы для моделирования. Чертежи и виды сбоку из интернета. Здесь осторожно: апскейл придумает несуществующие детали, а вы будете моделировать по ним. Для референса лучше умеренное увеличение и понимание, что мелочи додуманы.
Кадры из видео. Отдельный кадр из ролика содержит компрессию и смаз движения. Смаз апскейл не убирает, он его увеличивает, поэтому берите кадры из статичных сцен.
Пакетная обработка архива
Когда моделей и текстур сотни, обрабатывать по одной невозможно. Несколько приёмов, которые делают пакет управляемым.
- Разложите по типам заранее. Base Color в одну папку, карты значений в другую, нормали в третью. Для каждой папки свои настройки, и это единственный способ не испортить половину архива одной командой.
- Сохраняйте оригиналы. Обрабатывайте в отдельную папку, не поверх. Модель, которая сегодня кажется лучшей, через полгода будет заменена более удачной, и вам понадобятся исходники.
- Ведите список настроек. Какая модель, какой коэффициент, какие параметры. Через месяц вы не вспомните, чем обрабатывали, а докатать пропущенный файл понадобится.
- Обрабатывайте ночью. Пакет на несколько сотен текстур занимает часы, а видеокарта в это время не нужна для другой работы.
- Выборочный контроль. Проверьте глазами каждый десятый файл. Полная проверка нереальна, а систематическая ошибка проявится и на выборке.
Когда апскейл не поможет
Три ситуации, в которых лучше сразу делать заново.
Исходник меньше 256 пикселей. Информации слишком мало, нейросеть будет не восстанавливать, а сочинять целиком.
Нужна фактическая точность. Технические чертежи, схемы, тексты, номера, логотипы. Апскейл придумает похожие символы, и это хуже, чем размытые настоящие.
Требуется коммерческое качество главного ассета. Текстура героя проекта, которую будут разглядывать вблизи, должна быть сделана, а не вытянута.
Практический рабочий процесс
Порядок, который экономит время при разборе архива.
- Отсортируйте по ценности. Большая часть архива не нужна вовсе, это первое, что стоит признать.
- Проверьте, есть ли исходники. Если сохранился проект в Substance или исходные фотографии, перегенерировать всегда лучше апскейла.
- Тестируйте на фрагменте. Обрабатывать текстуру на 4096 пикселей ради проверки модели бессмысленно, хватит куска 512 на 512.
- Обрабатывайте пакетно только после того, как определились с моделью и коэффициентом.
- Проверяйте в сцене, а не в просмотрщике. Текстура оценивается на модели при освещении, а не как картинка.
Частые вопросы
Какой коэффициент увеличения безопасен?
Двукратный почти всегда даёт честный результат. Четырёхкратный работает на фактурах и разваливается на структурах. Восьмикратный это уже генерация, а не увеличение.
Нужна ли мощная видеокарта?
Для локальной обработки желательна: она определяет скорость и максимальный размер обрабатываемого куска. На процессоре тоже работает, но медленнее в разы. Что даёт апгрейд видеокарты в реальных задачах, разбирали в сравнении RTX 5090 против RTX 4090.
Можно ли апскейлить карту высот?
Можно, и это часто лучший путь: увеличить карту высот, а из неё пересчитать нормали. Так вы получаете согласованный набор карт вместо независимо обработанных.
Портит ли апскейл бесшовность текстуры?
Часто да. После обработки обязательно проверьте стыковку: сдвиньте текстуру на половину и посмотрите на середину. Если шов появился, обрабатывайте со сдвигом и склеивайте результаты.
Что делать со старым рендером в низком разрешении, если сцена утеряна?
Сначала шумоподавление, потом апскейл не более чем вдвое, потом ручная доводка проблемных мест в редакторе. Полностью вытянуть маленький рендер до печатного качества не получится.
