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...
Частичні шейдери
Шейдери частинок – це спеціальний тип шейдерів, який запускається перед малюванням об'єкта. Вони використовуються для обчислення властивостей матеріалу, таких як колір, положення та обертання. Їх можна малювати з будь-яким звичайним матеріалом для CanvasItem або Spatial, залежно від того, чи є вони 2D чи 3D.
Частичні шейдери унікальні, оскільки вони не використовуються для малювання самого об'єкта; вони використовуються для обчислення властивостей частинок, які потім використовуються шейдером CanvasItem або Spatial. Вони містять дві функції процесора: start() і process().
На відміну від інших типів шейдерів, частинкові шейдери зберігають дані, які були виведені в попередньому кадрі. Таким чином, часткові шейдери можна використовувати для складних ефектів, які відбуваються в кількох кадрах.
Примітка
Шейдери частинок доступні лише для вузлів частинок на основі GPU (GPUParticles2D і GPUParticles3D).
Вузли частинок на основі процесора (CPUParticles2D і CPUParticles3D) відображаються на графічному процесорі (це означає, що вони можуть використовувати власні шейдери CanvasItem або Spatial), але їхній рух імітується на ЦП.
Режими візуалізації
Режим візуалізації |
Опис |
|---|---|
Keep_data |
Не очищайте попередні дані під час перезавантаження. |
Disable_force |
Вимкнути силу притягання. |
Disable_velocity |
Ігнорувати значення |
Collision_use_scale |
Масштабуйте розмір частинок для зіткнень. |
Вбудовані
Значення, позначені як in, доступні лише для читання. Значення, помічені як out, можуть бути записані за бажанням і не обов’язково міститимуть розумні значення. Значення, помічені як inout, забезпечують розумне значення за замовчуванням і, за бажанням, можуть бути записані. До семплерів не можна писати, тому вони не позначені.
Глобальні вбудовані функції
Глобальні вбудовані функції доступні скрізь, включаючи спеціальні функції.
Вбудований |
Опис |
|---|---|
In float TIME |
Глобальний час з моменту запуску двигуна, у секундах. Повторюється кожні |
у float PI |
Константа типу |
у float TAU |
Константа типу |
у float E |
Константа |
Вбудовані функції запуску та обробки
Доступ до цих властивостей можна отримати за допомогою функцій start() і process().
Function |
Опис |
|---|---|
In float LIFETIME |
Час життя частинки. |
In float DELTA |
Час процесу дельта. |
In uint NUMBER |
Унікальний номер з початку емісії. |
In uint INDEX |
Індекс частинок (від загальної кількості частинок). |
In mat4 EMISSION_TRANSFORM |
Перетворення емітера (використовується для нелокальних систем). |
In uint RANDOM_SEED |
Випадкове початкове число використовується як основа для випадкового. |
Inout bool ACTIVE |
|
Inout vec4 COLOR |
Колір частинок можна записати та отримати доступ до нього у функції vertex сітки. |
Inout vec3 VELOCITY |
Швидкість частинок може бути змінена. |
Inout mat4 TRANSFORM |
Перетворення частинок. |
Inout vec4 CUSTOM |
Дані про користувацькі частинки. Доступні з шейдера сітки як |
Inout float MASS |
Маса частинки, призначена для використання з атракторами. За замовчуванням |
In vec4 USERDATAX |
Вектор, який дозволяє інтегрувати додаткові дані, визначені користувачем, у шейдер процесу частинок. |
In uint FLAG_EMIT_POSITION |
Прапорець для останнього аргументу функції |
In uint FLAG_EMIT_ROT_SCALE |
Прапорець для останнього аргументу функції |
In uint FLAG_EMIT_VELOCITY |
Прапорець для останнього аргументу функції |
In uint FLAG_EMIT_COLOR |
Прапорець для останнього аргументу функції |
In uint FLAG_EMIT_CUSTOM |
Прапорець для останнього аргументу функції |
In vec3 EMITTER_VELOCITY |
Швидкість вузла Particles2D (3D). |
In float INTERPOLATE_TO_END |
Значення властивості interp_to_end (3D) вузла Particles. |
In uint AMOUNT_RATIO |
Значення властивості amount_ratio (3D) вузла Particles. |
Примітка
Щоб використовувати змінну COLOR у StandardMaterial3D, встановіть vertex_color_use_as_albedo значення true. У ShaderMaterial отримуйте доступ до нього за допомогою змінної COLOR.
Запустити вбудовані модулі
Вбудований |
Опис |
|---|---|
In bool RESTART_POSITION |
|
In bool RESTART_ROT_SCALE |
|
In bool RESTART_VELOCITY |
|
In bool RESTART_COLOR |
|
In bool RESTART_CUSTOM |
|
Вбудовані процеси
Вбудований |
Опис |
|---|---|
In bool RESTART |
|
In bool COLLIDED |
|
In vec3 COLLISION_NORMAL |
Нормальний результат останнього зіткнення. Якщо зіткнення не виявлено, воно дорівнює |
In float COLLISION_DEPTH |
Довжина нормалі останнього зіткнення. Якщо зіткнення не виявлено, вона дорівнює |
In vec3 ATTRACTOR_FORCE |
Сумарна сила атракторів на цю частинку в даний момент. |
Функції процесу
emit_subparticle() наразі є єдиною користувацькою функцією, що підтримується шейдерами частинок. Вона дозволяє користувачам додавати нову частинку із заданими параметрами з субемітера. Новостворена частинка використовуватиме лише ті властивості, що відповідають параметру flags. Наприклад, наступний код випромінюватиме частинку із заданим положенням, швидкістю та кольором, але без заданого обертання, масштабу та користувацького значення:
mat4 custom_transform = mat4(1.0);
custom_transform[3].xyz = vec3(10.5, 0.0, 4.0);
emit_subparticle(custom_transform, vec3(1.0, 0.5, 1.0), vec4(1.0, 0.0, 0.0, 1.0), vec4(1.0), FLAG_EMIT_POSITION | FLAG_EMIT_VELOCITY | FLAG_EMIT_COLOR);
Function |
Опис |
|---|---|
bool emit_subparticle (mat4 xform, vec3 velocity, vec4 color, vec4 custom, uint flags) |
Випромінює частинку з підвипромінювача. |