Текстуры и накладки

Что такое текстуры и накладки: инженерный взгляд
Текстура — это растровое изображение, которое накладывается на снимок для имитации материала (дерево, камень, ткань, металл) либо для внесения диффузных искажений. Накладка — частный случай текстуры с прозрачностью, используемая для эффектов засветки, боке, царапин, световых бликов и оптических аберраций. В нашем редакторе оба элемента реализованы как отдельные слои с собственным набором метаданных и поддерживаемых режимов смешивания.
Технические спецификации форматов
- PNG-24 / PNG-32 — основной формат хранения текстур с альфа-каналом (прозрачность). Рекомендуемый цветовой профиль: sRGB IEC61966-2.1; для накладок с полупрозрачностью обязателен 8-битный альфа-канал. Глубина — от 24 до 48 бит на пиксель. При использовании текстур для материалов с высокой детализацией желателен 16-битный канал для градиентов шероховатости.
- JPEG (базовый, progressive) — допускается для текстур без прозрачности (например, фоновые шумы, зернистость, фильмы). Сжатие с потерями; при факторе качества ниже 85% возникают артефакты блоков 8×8, негативно сказывающиеся на рельефных наложениях. Рекомендуется mozjpeg-энкодинг с оптимизацией под плавные градиенты.
- TIFF (Uncompressed / LZW / Deflate) — профессиональный формат для исходных текстур библиотеки; поддерживает слои, альфа-каналы, несколько страниц. В браузере декодируется через WebAssembly-сборку libtiff; используется для текстур высокого разрешения (от 8K), где JPEG артефакты недопустимы.
- AVIF / WebP (lossless) — современные варианты с улучшенной компрессией. AVIF с 12-битной глубиной позволяет хранить HDR-текстуры. Используются для финальных превью в галерее, так как декодирование через WebCodecs снижает нагрузку на центральный процессор на 30–40% по сравнению с JPEG.
Параметры качества и производственные стандарты
Все текстуры, проходящие модерацию в библиотеку, должны удовлетворять следующим критериям, утверждённым в 2026 году:
- Разрешение — не менее 2048×2048 пикселей; оптимально 4096×4096 для физически корректных материалов (PBR). Для накладок допускается 1024×1024 при условии бесшовного тайлинга.
- Цветовое пространство — только sRGB с корректным встроенным ICC-профилем. Текстуры в Adobe RGB или DCI-P3 автоматически конвертируются с помощью 3D LUT, встроенного в пайплайн.
- Гамма-коррекция — текстурные карты (normal map, roughness, metallic) должны быть в линейном пространстве (float или encode с гаммой 1.0). Фототекстуры — с гаммой 2.2.
- Повторяемость — для тайлируемых текстур (плитка, кирпич, ткань) обязателен seam-анализ: отклонение яркости на стыках не более 0.5% в 8-битном диапазоне.
- Битрейт и вес — JPEG-текстуры не тяжелее 15 МБ при 4096×4096; PNG — до 45 МБ (для изображений с большими областями однородного цвета — до 30 МБ). Файлы, превышающие лимит, проходят повторную оптимизацию через pngquant с флагом --quality=65-80.
Аппаратные требования и работа с видеопамятью
При загрузке текстуры в онлайн-редактор выделяется видеопамять (VRAM) в следующем соотношении:
- 8-битная текстура 4096×4096 — ≈ 64 МБ (4 канала × 1 байт);
- 16-битная текстура того же размера — ≈ 128 МБ;
- 32-битная текстура с плавающей точкой (EXR) — ≈ 256 МБ.
Для предотвращения превышения лимита VRAM (обычно 1–2 ГБ на встроенной графике) используется асинхронная выгрузка с помощью OffscreenCanvas и Web Workers. Текстуры, не попавшие в область видимости, выгружаются из GPU-памяти в кеш оперативной памяти; при повторном вызове загрузка производится через transferable buffers без копирования. Текстуры сжаты через BCn (S3TC) или ETC2 — в зависимости от возможностей GPU пользователя. Для накладок с альфа-каналом применяется формат ASTC (4×4 или 8×8 блоков), обеспечивающий хорошее соотношение качества и скорости рендеринга.
Отличия от альтернативных решений
В отличие от встраиваемых фильтров («эффект дождя», «боке»), которые генерируют накладки процедурно на стороне сервера и отдают уже готовый плоский растр, мы предоставляем доступ к исходной текстуре как к слою. Пользователь может изменять масштаб (с бикубической интерполяцией Ланцоша с апертурой 3), вращать, зеркально отражать и редактировать маску прозрачности кистью — это даёт контроль, недоступный в мобильных приложениях-однодневках. Кроме того, поддерживается PBR-конвейер: при загрузке карт нормалей (normal map) и шероховатости (roughness) система на лету строит рельеф в трёхмерной реконструкции через фильтр Собеля на GPU, что невозможно в редакторах, не использующих WebGL-шейдеры.
Протоколы тестирования и гарантии качества
Каждая текстурная библиотека проходит автоматизированный пайплайн проверки на:
- цветовую точность — по метрике CIEDE2000 ≤ 2.0 относительно эталонного мата;
- отсутствие артефактов компрессии — применяется детектор блочности на основе DCT-коэффициентов;
- кривизну линий — для накладок с геометрическими узорами (доски, паркет) допускается искривление не более 0.1°;
- профиль — валидация встроенного ICC-тега через LittleCMS; при отсутствии профиля текстуре присваивается sRGB и обновляется header.
Пользовательский файл с накладкой не проходит модерацию, но перед композитингом выполняется клиентская проверка размеров (не менее 64×64 пикселя) и цветовой глубины (не менее 24 бит). При несоответствии выводится предупреждение, а слой блокируется до коррекции.
Заключение по спецификациям
Текстуры и накладки в нашем редакторе — не просто фильтры, а профессиональные элементы многослойной обработки. Они соответствуют современным требованиям к HDR-композитингу, PBR-алидации и эффективному использованию видеопамяти. Благодаря поддержке AVIF, ASTC, линейного цветового пространства и WebAssembly-декодирования достигается работа с текстурами до 16К при стабильных 60 FPS на интегрированных GPU 2024–2026 годов.
Добавлено: 08.05.2026
