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...
CompositorEffect
Експериментальний: The implementation may change as more of the rendering internals are exposed over time.
Успадковує: Resource < RefCounted < Object
Цей ресурс дозволяє створювати користувацький ефект.
Опис
Цей ресурс визначає користувацький ефект рендерингу, який можна застосувати до Viewport-ів через Environment видозмінних екранів. Ви можете реалізувати зворотний виклик, який викликається під час рендерингу на певному етапі конвеєра рендерингу і дозволяє вставляти додаткові проходи. Зверніть увагу, що цей виклик відбувається у потоці візуалізації. CompositorEffect є абстрактним базовим класом і має бути розширений для реалізації специфічної логіки рендерингу.
Посібники
Властивості
Методи
void |
_render_callback(effect_callback_type: int, render_data: RenderData) virtual |
Переліки
enum EffectCallbackType: 🔗
EffectCallbackType EFFECT_CALLBACK_TYPE_PRE_OPAQUE = 0
Зворотній зв'язок називається перед нашим непрозорим рендерингом, але після проходу глибини (за наявності).
EffectCallbackType EFFECT_CALLBACK_TYPE_POST_OPAQUE = 1
Зворотній зв'язок називається після того, як наш непрозорий рендеринг, але перед нашим небом продається.
EffectCallbackType EFFECT_CALLBACK_TYPE_POST_SKY = 2
Зворотній зв'язок називається після того, як наш небо буде продано, але перед нашими задньими буферами створюються (і якщо увімкнено, перед розсіюванням та/або відображенням простору екрану).
EffectCallbackType EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT = 3
Зворотній зв'язок називається перед нашим прозорим рендеринговим пасом, але після того, як наш небо продається, і ми створили наші задні буфери.
EffectCallbackType EFFECT_CALLBACK_TYPE_POST_TRANSPARENT = 4
Зворотний виклик викликається після нашого проходу прозорого рендерингу, але перед будь-якими вбудованими ефектами постобробки та виведенням на нашу ціль візуалізації.
EffectCallbackType EFFECT_CALLBACK_TYPE_MAX = 5
Представляємо розмір EffectCallbackType enum.
Описи властивостей
Якщо true і MSAA увімкнено, це ініціює вирішення буфера кольорів перед запуском ефекту.
Примітка: У _render_callback(), щоб отримати доступ до дозволеного буфера, використовуйте:
var render_scene_buffers = render_data.get_render_scene_buffers()
var color_buffer = render_scene_buffers.get_texture("render_buffers", "color")
Якщо true і MSAA увімкнено, це ініціює вирішення буфера глибини перед запуском ефекту.
Примітка: У _render_callback(), щоб отримати доступ до дозволеного буфера, використовуйте:
var render_scene_buffers = render_data.get_render_scene_buffers()
var depth_buffer = render_scene_buffers.get_texture("render_buffers", "depth")
EffectCallbackType effect_callback_type 🔗
void set_effect_callback_type(value: EffectCallbackType)
EffectCallbackType get_effect_callback_type()
Тип ефекту, який реалізований, визначає на якому етапі рендерингу називається зворотній дзвінок.
Якщо true цей ефект рендерингу наноситься на будь-який видпорт, який додається.
Якщо true, це ініціює обчислення векторів руху під час непрозорого стану візуалізації.
Примітка: У _render_callback() для доступу до буфера вектора руху використовуйте:
var render_scene_buffers = render_data.get_render_scene_buffers()
var motion_buffer = render_scene_buffers.get_velocity_texture()
Якщо true, це ініціює вихід нормальних даних і даних шорсткості під час нашого попереднього проходу глибини, що застосовується лише для засобу візуалізації Forward+.
Примітка: У _render_callback(), щоб отримати доступ до буфера шорсткості, використовуйте:
var render_scene_buffers = render_data.get_render_scene_buffers()
var roughness_buffer = render_scene_buffers.get_texture("forward_clustered", "normal_roughness")
Необроблений буфер нормалі та шорсткості зберігається в оптимізованому форматі, відмінному від того, який доступний у просторових шейдерах. Під час вибірки буфера необхідно застосувати функцію перетворення. Використовуйте цю функцію, скопійовану з `тут <https://github.com/godotengine/godot/blob/da5f39889f155658cef7f7ec3cc1abb94e17d815/servers/ren/renderer_rd/shaders/forward_clustered/scene_forward_clustered_inc.glsl#L334-L341>`__:
vec4 normal_roughness_compatibility(vec4 p_normal_roughness) {
float roughness = p_normal_roughness.w;
if (roughness > 0,5) {
roughness = 1,0 - roughness;
}
roughness /= (127,0 / 255,0);
return vec4(normalize(p_normal_roughness.xyz * 2.0 - 1.0) * 0.5 + 0.5, roughness);
}
bool needs_separate_specular 🔗
Якщо true це викликає дзеркальні дані, що надходять до окремого буфера і поєднуються після дії, застосовувалися тільки для навантажувача Forward+.
Описи методів
void _render_callback(effect_callback_type: int, render_data: RenderData) virtual 🔗
Реалізуйте цю функцію у власному коді рендерингу. effect_callback_type завжди має відповідати типу зворотного виклику ефекту, який ви вказали в effect_callback_type. render_data надає доступ до стану рендерингу, він дійсний лише під час рендерингу і не повинен зберігатися.