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
用于创建自定义渲染效果的资源。
描述¶
这种资源定义的是自定义渲染效果,可以通过视口的 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 访问渲染状态,这个状态只有在渲染时有效,不应该存储。