Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Використання наклейок
Примітка
Decals are only supported in the Forward+ and Mobile renderers, not the Compatibility renderer.
If using the Compatibility renderer, consider using Sprite3D as an alternative for projecting decals onto (mostly) flat surfaces.
Наклейки — це проектовані текстури, які наносяться на непрозорі або прозорі поверхні в 3D. Ця проекція виконується в реальному часі й не залежить від створення сітки. Це дозволяє переміщувати наклейки в кожному кадрі з невеликим впливом на продуктивність, навіть якщо накладено на складні сітки.
Хоча декалі не можуть додати фактичні геометричні деталі на спроектовану поверхню, декалі все одно можуть використовувати фізичну візуалізацію, щоб забезпечити подібні властивості до повномасштабних матеріалів PBR.
На цій сторінці ви дізнаєтеся:
Як налаштувати декалі в 3D-редакторі.
Як налаштувати декалі в 3D-редакторі.
Як збалансувати конфігурацію наклейки між продуктивністю та якістю.
Дивись також
The Godot demo projects repository contains a 3D decals demo.
Якщо ви хочете написати довільний 3D-текст поверх поверхні, використовуйте 3D текст, розміщений близько до поверхні, замість вузла Decal.
Випадки використання
Статичне оздоблення
Іноді найшвидший спосіб додати деталі текстури до сцени – це використовувати наклейки. Особливо це стосується органічних деталей, таких як плями бруду або піску, розкидані на великій поверхні. Наклейки можуть допомогти усунути повторення текстур у сценах і зробити візерунки більш природними. У меншому масштабі декалі також можна використовувати для створення варіацій деталей для об’єктів. Наприклад, наклейки можна використовувати для додавання гайок і болтів поверх геометрії твердої поверхні.
Оскільки декалі можуть додавати свої власні властивості PBR поверх проектованих поверхонь, їх також можна використовувати для створення слідів або мокрих калюж.

Бруд, доданий поверх геометрії рівня за допомогою наклейок
Динамічні елементи ігрового процесу
Наклейки можуть представляти тимчасові або постійні ефекти гри, як-от удари від куль і опіки від вибуху.
За допомогою вузла AnimationPlayer або сценарію можна зробити так, щоб наклейки з часом зникали (а потім видалялися за допомогою queue_free()
), щоб покращити продуктивність.
Ляпкові тіні
Тіні з крапками часто використовуються в мобільних проектах (або для дотримання стилю ретро), оскільки освітлення в реальному часі, як правило, надто дороге на мобільних пристроях низького класу. Однак, покладаючись на запечені карти освітлення з повністю запеченими вогнями, динамічні об’єкти не відкидають жодної тіні від цих вогнів. Це робить динамічні об’єкти в сценах зі світловою картою виглядати пласкими порівняно з освітленням у реальному часі, коли динамічні об’єкти виглядають майже так, ніби вони плавають.
Завдяки тіням крапки динамічні об’єкти все ще можуть відкидати приблизну тінь. Це не тільки сприяє сприйняттю глибини сцени, але також може бути елементом ігрового процесу, особливо в 3D-платформерах. Довжину тіні можна збільшити, щоб гравець знав, куди вона приземлиться, якщо впаде прямо вниз.
Навіть з освітленням у реальному часі тіні з крапками все ще можуть бути корисними як форма оклюзії навколишнього середовища в ситуаціях, коли SSAO занадто дорогий або занадто нестабільний через його природу екранного простору. Наприклад, тіні знизу транспортних засобів добре представлені за допомогою тіней з крапками.

Тінь під порівнянням об’єктів
Короткий посібник
Створення декалей в редакторі
Створіть вузол Decal у 3D-редакторі.
В інспекторі розгорніть розділ Текстури і завантажте текстуру в Текстури > Альбедо.
Перемістіть вузол «Декаль» до об’єкта, а потім поверніть його, щоб деколь було видно (і в правильній орієнтації). Якщо наклейка виглядає дзеркально, спробуйте повернути її на 180 градусів. Ви можете ще раз перевірити, чи правильна орієнтація, збільшивши Параметри > Нормальне згасання до 0,5. Це запобіжить проеціювання наклейки на поверхні, які не звернені до наклейки.
Якщо ваша наклейка призначена для впливу лише на статичні об’єкти, налаштуйте її, щоб запобігти впливу на динамічні об’єкти (або навпаки). Для цього змініть властивість декалі Cull Mask, щоб виключити певні шари. Зробивши це, змініть вузли MeshInstance3D ваших динамічних об’єктів, щоб змінити їхні шари видимості. Наприклад, ви можете перемістити їх із шару 1 на шар 2, а потім вимкнути шар 2 у властивості Cull Mask наклейки.
Властивості вузла декалі
Розмір: Розмір наклейки. Вісь Y визначає довжину проекції декалі. Зберігайте довжину проекції якомога коротшою, щоб покращити можливості вибракування, а отже, покращити продуктивність.
Текстури
Альбедо: Карта альбедо (дифузна/колірна), яка використовується для наклейки. У більшості ситуацій це текстура, яку ви хочете встановити першою. Якщо використовується звичайна чи ORM-карта, для забезпечення альфа-каналу має бути встановлено карту альбедо. Цей альфа-канал використовуватиметься як маска для визначення того, наскільки карти нормалей/ORM впливатимуть на підстилаючу поверхню.
Звичайний: Карта нормалей для використання наклейки. Це можна використати, щоб збільшити деталі, які сприймаються на наклейці, змінюючи те, як на неї реагує світло. Вплив цієї текстури помножується на альфа-канал текстури альбедо (але не Albedo Mix).
ORM: Карта оклюзії/шорсткості/металу, яка буде використана для наклейки. Це оптимізований формат для зберігання карт матеріалів PBR. Карта Ambient Occlusion зберігається в червоному каналі, карта шорсткості в зеленому каналі, металева карта в синьому каналі. Вплив цієї текстури помножується на альфа-канал текстури альбедо (але не Albedo Mix).
Випромінювання: Текстура випромінювання, яка буде використана для наклейки. На відміну від Albedo, ця текстура світиться в темряві.
Параметри
Енергія випромінювання: яскравість текстури випромінювання.
Модулювати: збільшує колір текстури альбедо та випромінювання. Використовуйте це, щоб відтінити наклейки (наприклад, для фарбування наклейок або збільшити варіацію шляхом рандомізації модуляції кожної наклейки).
Albedo Mix: Непрозорість текстури альбедо. На відміну від використання текстури альбедо з більш прозорим альфа-каналом, зменшення цього значення нижче
1.0
не зменшує вплив звичайної/ORM текстури на нижню поверхню. Встановіть значення0.0
під час створення звичайних/тільки для ORM наклейок, таких як кроки чи мокрі калюжі.Звичайне вицвітання: тьмяніє декаль, якщо кут між декалем AABB та цільовою поверхнею стає завеликим. Значення
0.0
проектує декаль незалежно від кута, тоді як значення0.999
обмежує декаль поверхнями, які є майже перпендикулярними. Встановлення Нормального згасання на значення більше0.0
має невеликі витрати на продуктивність через додані нормальні обчислення кута.
Вертикальне згасання
Верхнє вицвітання: Крива, на якій декаль буде зникати, коли поверхня віддалятиметься від центру AABB (у напрямку до кута проекції декалі). Допустимі лише позитивні значення.
Нижнє вицвітання: Крива, за якою наклейка зникає, коли поверхня віддаляється від центру AABB (від кута проекції наклейки). Допустимі лише позитивні значення.
Відстань Fade
Увімкнено: контролює, чи ввімкнено згасання відстані (форма LOD). Наклейка зникає над Початком + Довжиною, після чого її буде відбраковано та взагалі не надсилатиметься до шейдера. Використовуйте це, щоб зменшити кількість активних написів у сцені та таким чином покращити продуктивність.
Початок: Відстань від камери, на якій наклейка починає зникати (у 3D-одиницях).
Довжина: відстань, на якій наклейка зникає (у 3D). Наклейка повільно стає прозорішою на цій відстані і стає зовсім непомітною в кінці. Вищі значення призводять до більш плавного переходу згасання, що більше підходить, коли камера рухається швидко.
Відбірна маска
Cull Mask: визначає, на які шари VisualInstance3D проектуватиметься ця наклейка. За замовчуванням наклейки впливають на всі шари. Це використовується для того, щоб ви могли вказати, які типи об’єктів отримують декаль, а які ні. Це особливо корисно, щоб ви могли гарантувати, що динамічні об’єкти випадково не отримають наклейку, призначену для рельєфу під ними.
Порядок оформлення наклейки
За замовчуванням наклейки впорядковуються на основі розміру їхнього AABB та відстані до камери. AABB, розташовані ближче до камери, відображаються першими, що означає, що порядок візуалізації декалей іноді може змінюватися залежно від положення камери, якщо деякі декалі розташовані в тому самому місці.
Щоб вирішити цю проблему, ви можете налаштувати властивість Sorting Offset у розділі VisualInstance3D інспектора вузлів Decal. Це зміщення не є суворим порядком пріоритету, але керівним принципом, який використовуватиме рендерер, оскільки розмір AABB усе ще впливає на роботу сортування декалей. Тому вищі значення завжди призведуть до того, що наклейка буде намальована над іншими наклейками з меншим зміщенням сортування.
Якщо ви хочете, щоб декаль завжди відтворювалася поверх інших декалей, вам потрібно встановити для властивості Sorting Offset додатне значення, що перевищує довжину AABB найбільшої декалі, яка може її перекривати. Щоб натомість ця декаль була намальована за іншими декалями, установіть для Зміщення сортування те саме від’ємне значення.

Порівняння зсуву сортування VisualInstance3D на наклейках
Налаштування продуктивності та якості
Ефективність відтворення наклейок здебільшого визначається їх покриттям екрана, а також їх кількістю. Загалом, кілька великих наклейок, які покривають більшу частину екрана, будуть дорожчими для візуалізації, ніж багато маленьких наклейок, які розкидані навколо.
Щоб покращити продуктивність візуалізації, ви можете ввімкнути властивість Distance Fade, як описано вище. Це призведе до того, що віддалені наклейки зникають, коли вони знаходяться далеко від камери (і можуть практично не вплинути на остаточне відтворення сцени). Використовуючи групи вузлів, ви також можете запобігти появі несуттєвих декоративних наклейок на основі конфігурації користувача.
The way decals are rendered also has an impact on performance. The Rendering > Textures > Decals > Filter advanced project setting lets you control how decal textures should be filtered. Nearest/Linear does not use mipmaps. However, decals will look grainy at a distance. Nearest/Linear Mipmaps will look smoother at a distance, but decals will look blurry when viewed from oblique angles. This can be resolved by using Nearest/Linear Mipmaps Anisotropic, which provides the highest quality, but is also slower to render.
Якщо ваш проект має стиль піксельного мистецтва, спробуйте встановити для фільтра одне зі значень Найближчий, щоб наклейки використовували фільтрацію найближчого сусіда. В іншому випадку дотримуйтесь Linear.
Обмеження
Наклейки не можуть впливати на властивості матеріалу, крім перерахованих вище, наприклад на висоту (для відображення паралакса).
З міркувань продуктивності наклейки використовують суто фіксовану логіку відтворення. Це означає, що наклейки не можуть використовувати власні шейдери. Однак спеціальні шейдери на спроектованих поверхнях можуть зчитувати інформацію, яку перекривають наклейки на них, як-от шорсткість і металік.
When using the Forward+ renderer, Godot uses a clustering approach for decal rendering. As many decals as desired can be added (as long as performance allows). However, there's still a default limit of 512 clustered elements that can be present in the current camera view. A clustered element is an omni light, a spot light, a decal or a reflection probe. This limit can be increased by adjusting Max Clustered Elements in Project Settings > Rendering > Limits > Cluster Builder.
When using the Mobile renderer, only 8 decals can be applied on each individual Mesh resource. If there are more decals affecting a single mesh, not all of them will be rendered on the mesh.