LerpworksAcademy

Графика › Текстуры

Виртуальные текстуры: огромная картинка по кусочкам

Нужно знать заранее: Мип-мапы и фильтрация: почему вдали мыло, Настройки текстур для каждой карты

Как движок держит в памяти только видимые кусочки огромных текстур и зачем земле текстура, которую рисуют сверху во время игры: стриминговые и рантайм-виртуальные текстуры, смешивание камней с землёй и цена этого.

Пока можно прочитать

Гамма и sRGB: цвет и данные хранят по-разномуУрок · базаПервый урок раздела «Текстуры». Почему 0.5 в текстуре цвета — пятая часть света: глаз различает тени подробнее, и запись sRGB отдаёт им больше ступеней (гамма ≈ 2.2, точная кривая — под капотом); почему свет считают в линейных числах и что ломается при смешивании и размытии в записи; цвет и данные — у BaseColor галочка sRGB включена, у нормалей, шероховатости, масок и высоты выключена, и что бывает, если перепутать; где галочка в Unreal, Unity, Godot, Blender и Substance Painter; почему число в палитре и в шейдере различаются.Мип-мапы и фильтрация: почему вдали мылоУрок · базаВторой урок раздела «Текстуры». Почему вдали пол рябит: под пикселем десятки текселей, а шейдер читает один-четыре; ближайший тексель и билинейная фильтрация вблизи и почему там мыло; мип-мапы — копии вдвое меньше до 1 × 1 за треть памяти; выбор уровня по производным UV (логарифм — под капотом) и трилинейная; анизотропная фильтрация для пола под острым углом; что теряется в мипах — провода, альфа листвы, рельеф нормалей (Toksvig, Composite Texture), швы атласов; степени двойки, стриминг и сдвиг уровня; где это в Unreal, Unity, Godot, Blender и Substance Painter.Упаковка каналовУрок · базаТретий урок раздела «Текстуры». Маска — одно число на пиксель, а в текстуре четыре канала: зачем AO, шероховатость и металл кладут в одну текстуру (одна выборка, втрое меньше памяти) и почему раскладки ORM, ARM, RMA и Mask Map разные; блочное сжатие BC1, BC3, BC4, BC5, BC7 — почему зелёный точнее (5-6-5), почему альфа удваивает память, но сжимается точнее всех, и почему в BC1 маски мешают друг другу (под капотом — палитра блока на отрезке); данные без sRGB и мип-мапы по каналам; как не перепутать каналы и как выглядит ошибка; разбор в материале и что ещё пакуют.Настройки текстур для каждой картыШпаргалкаШпаргалка раздела «Текстуры». Для каждой карты — BaseColor, нормаль, ORM, шероховатость, высота, альфа, свечение, AO, карта деталей, HDR и кубмапа, интерфейс — галочка sRGB, сжатие в Unreal и формат BC, мип-мапы, типичный размер, частая ошибка и ссылка на урок; те же настройки в Unity, Godot, Blender и Substance Painter; плотность текселей по виду камеры, память 1K, 2K и 4K в каждом формате с мип-мапами и без, формулы и чек-лист импорта.Текстуры без UV: triplanar и world-alignedУрок · базаУрок раздела «Текстуры». Как покрыть скалу, утёс или склон текстурой без развёртки: адрес из мировых координат, делённых на размер плитки (world-aligned), и почему одна проекция сверху тянется на стенах в 1 / |n.z| раз; три проекции вдоль X, Y и Z и веса из нормали — модуль, степень k и сумма 1, кубическая проекция при большом k и мазки на диагоналях; карта нормалей по осям каждой проекции, знак и whiteout; цена — три выборки, biplanar и дизеринг, ловушка с мип-мапами; текстура плывёт по движущемуся предмету, точность вдали от начала мира и чего проекция не умеет.Шум: из чего сделаны маскиУрок · базаСлучайность, которая выглядит естественно. Почему белый шум — песок, а не пятна; value noise и Perlin — числа и наклоны в узлах сетки, simplex; октавы (fBm) — крупное плюс мелкое, lacunarity и persistence; Voronoi — клетки, F1 и трещины F2 − F1; маска из шума — порог, smoothstep, remap и искажение координат; бесшовный шум и почему в материалах шум чаще читают из текстуры, а не считают.