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 надає доступ до стану рендерингу, він дійсний лише під час рендерингу і не повинен зберігатися.