Створення тайлових текстур та атласів графіки
Тайлові текстури та texture atlases — це два різних завдання, які часто плутають. Тайлова текстура бесшовно повторюється на поверхні. Texture atlas упаковує кілька окремих зображень в одну текстуру для зниження draw calls. Обидва інструменти критичні для продуктивності, обидва вимагають специфічної роботи у Substance Designer або Photoshop, і обидва дають передбачувані артефакти, якщо зроблені неакуратно.
Тайлові текстури: де та чому з'являється паттерн
Бесшовність — необхідна, але недостатня умова хорошої тайлової текстури. Якщо текстура тайлиться коректно, але має виражений повторюючийся елемент — горизонтальний камінь у цегляній кладці, характерне плямо в бетоні — паттерн повторення буде видним навіть на великій дистанції. Це називається tiling artifact або «пральна дошка».
Розв'язується кількома способами залежно від завдання та платформи:
Stochastic tiling у шейдері — руйнування паттерну на рівні рендерингу. Шейдер робить кілька семплів текстури з невеликими варіаціями UV та змішує результат. У Unreal Engine 5 це можна зробити через Material Graph з нодами World Aligned Blend. У Unity ShaderGraph — через кастомний HLSL блок або готовий пакет типу Stochastic Sampling. Працює без збільшення обсягу текстур, але дає легкий overhead на шейдер.
Multi-layer approach — поверху тайлової бази накладається унікальний Overlay шар (великий масштаб, низька непрозорість), який розбиває монотонність. Overlay — окрема текстура, також тайлова, але з іншим масштабом тайлингу. Комбінація двох тайлових текстур з різними UV scale дає ілюзію унікальності.
Megasplat / Virtual Texturing для великих terrain — інша історія: там кожен тайл отримує унікальний набір деталей через Virtual Texture, але вимоги до GPU та VRAM суттєво вище.
Правильна тайлова текстура для PBR-пайплайну — це мінімум п'ять карт: Albedo (без освітлення), Normal Map, Roughness, Metallic/AO packed, Height Map. Height Map потрібна, якщо в матеріалі використовується Parallax Occlusion Mapping або Tessellation — без неї цегляна стіна при близькому розглядані виглядає плоскою.
Substance Designer як інструмент тайлових матеріалів
Для серйозного production тайлові текстури роблять в Substance Designer, а не в Photoshop. Причина — параметричний граф. Це означає, що результуюча текстура — це не пікселі, а алгоритм. Потрібно мінювати розмір каменів у цегляній кладці? Один параметр в графі. Потрібна версія з мокрою поверхнею? Окрема змінна, що включає Roughness override в нижніх зонах.
Граф типової тайлової текстури у Substance Designer:
- Shape генератор (Tile Generator, Splatter, Flood Fill) — базова форма елементів
- Noise та Warp — руйнування ідеальної повторюваності: Perlin noise на edge variation, Directional Warp для органічних форм
- Height to Normal — конвертація рельєфу в Normal Map через Sobel filter
- Level та Curve — фінальна калібровка діапазонів під PBR-значення
Створення Substance Designer графа займає більше часу, ніж ручна рисовка текстури у Photoshop. Але він окупається при будь-яких змінах ТЗ та дозволяє створювати варіації без переділки з нуля.
Texture Atlas: упаковка та нарізка
Texture atlas знижує кількість draw calls — замість десяти матеріалів на десять дрібних об'єктів використовується один матеріал з однією текстурою, в якій всі десять упаковані. У Unity це напрямку впливає на batching: Static Batching працює тільки з об'єктами, у яких спільний матеріал та текстура.
Оптимальна упаковка атласа — не просто «затиснути все в 2K». Важлива texel density: дрібний пропс на атласі 256x256 при загальній текстурі 2048x2048 отримає в 8 раз гірше розрішення, ніж якби був на індивідуальній 256x256 текстурі. Тому assets в атлас підбираються за розміром та важливістю: hero-пропсі — більша площа на атласі, фоновий мусор — менша.
Інструменти для упаковки: TexturePacker (кросс-платформенний, добре інтегрується в CI/CD), Unity Sprite Atlas для 2D, Unreal нативний Texture Atlas Generator для Landscape, ручна упаковка через скрипти на Python/PIL для нестандартних пайплайнів.
Окремо завдання — атласи для Sprite/UI у 2D-проектах. Тут правила упаковки строжіші: padding між спрайтами мінімум 2–4 пікселя для запобігання bleeding при фільтрації, атлас кратен ступеню двійки (512, 1024, 2048), PowerOfTwo обов'язковий для коректного mipmap.
Типові помилки при створенні тайлових текстур та атласів
Normal Map запечена з неправильними настройками. Якщо Normal Map запечена з High-poly з неправильним Tangent Basis, вона буде працювати у Substance Painter, але сломається у Unity або Unreal через різне угодження про вісь Y (DirectX vs OpenGL). Симптом — темні смуги по швам. Розв'язується через явне вказання Tangent Space при експорті з Substance Painter: DirectX для Unreal, OpenGL для Unity.
Тайлова текстура з інформацією про освітлення. Запечені тіні або ambient occlusion у Albedo тайлової текстури — фатальна помилка. При зміні часу суток або напрямку світла AO в текстурі буде конфліктувати з динамічним освітленням.
Переповнений атлас без mip-map урахування. Текстура 4096x4096 з сотнею дрібних спрайтів дає красивий атлас, але на мобільних пристроях після генерації mip-map дрібні спрайти перетворюються на кольорові плями вже на mip level 3–4. Необхідно перевіряти атлас на фінальних mip-рівнях перед здачею.
| Масштаб завдання | Орієнтовний термін |
|---|---|
| Одна тайлова текстура (Substance Designer граф) | 2–4 дні |
| Набір тайлових текстур для біому (5–10 матеріалів) | 1,5–3 тижні |
| Texture atlas для набору пропсів (до 30 об'єктів) | 3–5 днів |
| Texture atlas для 2D-проекту (UI + спрайти) | 1–2 тижні |
Вартість визначається після аналізу ТЗ: розрішення текстур, кількість варіацій, цільова платформа та движок.





