CompositorEffect
实验性: The implementation may change as more of the rendering internals are exposed over time.
继承: Resource < RefCounted < Object
用于创建自定义渲染效果的资源。
描述
这种资源定义的是自定义渲染效果,可以通过视口的 Environment 应用到 Viewport 上。可以实现在渲染管道的给定阶段进行渲染期间调用的回调,并允许插入其他阶段。请注意,该回调是在渲染线程上执行的。
属性
方法
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 枚举的大小。
属性说明
如果为 true
并且启用了 MSAA,则会在执行该效果之前触发颜色缓冲的解析。
注意:要在 _render_callback 中访问解析后的缓冲,请使用:
var render_scene_buffers : RenderSceneBuffersRD = 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 : RenderSceneBuffersRD = 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 : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
var motion_buffer = render_scene_buffers.get_velocity_texture()
如果为 true
,则会在深度预阶段触发法线和粗糙度数据的输出,仅适用于 Forward+ 渲染器。
**注意:要在 _render_callback 中访问粗糙度缓冲,请使用:
var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
var roughness_buffer = render_scene_buffers.get_texture("forward_clustered", "normal_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
访问渲染状态,这个状态只有在渲染时有效,不应该存储。