summaryrefslogtreecommitdiffstats
path: root/servers/rendering_server.h
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-20 23:59:27 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-20 23:59:27 +0100
commit292f4c7f9795dc9296710996ffa8510a02e92b2d (patch)
tree5b6a2279b994649bc4201bda75f20835d9a918fc /servers/rendering_server.h
parentdc2d1e3f479fb64e6da23c00d38ed030a085fb6c (diff)
parent5a98845655900a7884bf5a73c5406318f1106d77 (diff)
downloadredot-engine-292f4c7f9795dc9296710996ffa8510a02e92b2d.tar.gz
Merge pull request #80214 from BastiaanOlij/rendering_effect
Implement hooks into renderer
Diffstat (limited to 'servers/rendering_server.h')
-rw-r--r--servers/rendering_server.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/servers/rendering_server.h b/servers/rendering_server.h
index 6b00213440..02a90dad3b 100644
--- a/servers/rendering_server.h
+++ b/servers/rendering_server.h
@@ -816,6 +816,7 @@ public:
virtual void camera_set_cull_mask(RID p_camera, uint32_t p_layers) = 0;
virtual void camera_set_environment(RID p_camera, RID p_env) = 0;
virtual void camera_set_camera_attributes(RID p_camera, RID p_camera_attributes) = 0;
+ virtual void camera_set_compositor(RID p_camera, RID p_compositor) = 0;
virtual void camera_set_use_vertical_aspect(RID p_camera, bool p_enable) = 0;
/* VIEWPORT API */
@@ -1046,6 +1047,37 @@ public:
virtual void sky_set_material(RID p_sky, RID p_material) = 0;
virtual Ref<Image> sky_bake_panorama(RID p_sky, float p_energy, bool p_bake_irradiance, const Size2i &p_size) = 0;
+ /* COMPOSITOR EFFECTS API */
+
+ enum CompositorEffectFlags {
+ COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_COLOR = 1,
+ COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_DEPTH = 2,
+ COMPOSITOR_EFFECT_FLAG_NEEDS_MOTION_VECTORS = 4,
+ COMPOSITOR_EFFECT_FLAG_NEEDS_ROUGHNESS = 8,
+ COMPOSITOR_EFFECT_FLAG_NEEDS_SEPARATE_SPECULAR = 16,
+ };
+
+ enum CompositorEffectCallbackType {
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_OPAQUE,
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_OPAQUE,
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_SKY,
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT,
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_TRANSPARENT,
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_MAX,
+ COMPOSITOR_EFFECT_CALLBACK_TYPE_ANY = -1,
+ };
+
+ virtual RID compositor_effect_create() = 0;
+ virtual void compositor_effect_set_enabled(RID p_effect, bool p_enabled) = 0;
+ virtual void compositor_effect_set_callback(RID p_effect, CompositorEffectCallbackType p_callback_type, const Callable &p_callback) = 0;
+ virtual void compositor_effect_set_flag(RID p_effect, CompositorEffectFlags p_flag, bool p_set) = 0;
+
+ /* COMPOSITOR API */
+
+ virtual RID compositor_create() = 0;
+
+ virtual void compositor_set_compositor_effects(RID p_compositor, const TypedArray<RID> &p_effects) = 0;
+
/* ENVIRONMENT API */
virtual RID environment_create() = 0;
@@ -1241,6 +1273,7 @@ public:
virtual void scenario_set_environment(RID p_scenario, RID p_environment) = 0;
virtual void scenario_set_fallback_environment(RID p_scenario, RID p_environment) = 0;
virtual void scenario_set_camera_attributes(RID p_scenario, RID p_camera_attributes) = 0;
+ virtual void scenario_set_compositor(RID p_scenario, RID p_compositor) = 0;
/* INSTANCING API */
@@ -1737,6 +1770,8 @@ VARIANT_ENUM_CAST(RenderingServer::ViewportSDFOversize);
VARIANT_ENUM_CAST(RenderingServer::ViewportSDFScale);
VARIANT_ENUM_CAST(RenderingServer::ViewportVRSMode);
VARIANT_ENUM_CAST(RenderingServer::SkyMode);
+VARIANT_ENUM_CAST(RenderingServer::CompositorEffectCallbackType);
+VARIANT_ENUM_CAST(RenderingServer::CompositorEffectFlags);
VARIANT_ENUM_CAST(RenderingServer::EnvironmentBG);
VARIANT_ENUM_CAST(RenderingServer::EnvironmentAmbientSource);
VARIANT_ENUM_CAST(RenderingServer::EnvironmentReflectionSource);