CompositorEffect

实验性: The implementation may change as more of the rendering internals are exposed over time.

继承: Resource < RefCounted < Object

用于创建自定义渲染效果的资源。

描述

这种资源定义的是自定义渲染效果,可以通过视口的 Environment 应用到 Viewport 上。可以实现在渲染管道的给定阶段进行渲染期间调用的回调,并允许插入其他阶段。请注意,该回调是在渲染线程上执行的。

属性

bool

access_resolved_color

bool

access_resolved_depth

EffectCallbackType

effect_callback_type

bool

enabled

bool

needs_motion_vectors

bool

needs_normal_roughness

bool

needs_separate_specular

方法

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 枚举的大小。


属性说明

bool access_resolved_color 🔗

  • void set_access_resolved_color(value: bool)

  • bool get_access_resolved_color()

如果为 true 并且启用了 MSAA,则会在执行该效果之前触发颜色缓冲的解析。

注意:要在 _render_callback 中访问解析后的缓冲,请使用:

  1. var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
  2. var color_buffer = render_scene_buffers.get_texture("render_buffers", "color")

bool access_resolved_depth 🔗

  • void set_access_resolved_depth(value: bool)

  • bool get_access_resolved_depth()

如果为 true 并且启用了 MSAA,则会在执行该效果之前触发深度缓冲的解析。

注意:要在 _render_callback 中访问解析后的缓冲,请使用:

  1. var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
  2. var depth_buffer = render_scene_buffers.get_texture("render_buffers", "depth")

EffectCallbackType effect_callback_type 🔗

实现的效果类型,决定在渲染的哪个阶段调用回调。


bool enabled 🔗

  • void set_enabled(value: bool)

  • bool get_enabled()

如果为 true,则该渲染效果会应用到所有相关视口。


bool needs_motion_vectors 🔗

  • void set_needs_motion_vectors(value: bool)

  • bool get_needs_motion_vectors()

如果为 true,则会在不透明渲染状态下触发运动向量的计算。

**注意:要在 _render_callback 中访问运动向量缓冲,请使用:

  1. var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
  2. var motion_buffer = render_scene_buffers.get_velocity_texture()

bool needs_normal_roughness 🔗

  • void set_needs_normal_roughness(value: bool)

  • bool get_needs_normal_roughness()

如果为 true,则会在深度预阶段触发法线和粗糙度数据的输出,仅适用于 Forward+ 渲染器。

**注意:要在 _render_callback 中访问粗糙度缓冲,请使用:

  1. var render_scene_buffers : RenderSceneBuffersRD = render_data.get_render_scene_buffers()
  2. var roughness_buffer = render_scene_buffers.get_texture("forward_clustered", "normal_roughness")

bool needs_separate_specular 🔗

  • void set_needs_separate_specular(value: bool)

  • bool get_needs_separate_specular()

如果为 true,则会触发镜面反射数据渲染至独立缓冲,在应用效果后进行混合,仅适用于 Forward+ 渲染器。


方法说明

void _render_callback(effect_callback_type: int, render_data: RenderData) virtual 🔗

请使用自定义的渲染代码实现该方法。effect_callback_type 应当与 effect_callback_type 中指定的效果回调类型一致。可以通过 render_data 访问渲染状态,这个状态只有在渲染时有效,不应该存储。