summaryrefslogtreecommitdiff
path: root/servers/rendering/rasterizer_rd/rasterizer_effects_rd.h
diff options
context:
space:
mode:
Diffstat (limited to 'servers/rendering/rasterizer_rd/rasterizer_effects_rd.h')
-rw-r--r--servers/rendering/rasterizer_rd/rasterizer_effects_rd.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/servers/rendering/rasterizer_rd/rasterizer_effects_rd.h b/servers/rendering/rasterizer_rd/rasterizer_effects_rd.h
index 80849654de..2ba9610498 100644
--- a/servers/rendering/rasterizer_rd/rasterizer_effects_rd.h
+++ b/servers/rendering/rasterizer_rd/rasterizer_effects_rd.h
@@ -46,6 +46,7 @@
#include "servers/rendering/rasterizer_rd/shaders/screen_space_reflection.glsl.gen.h"
#include "servers/rendering/rasterizer_rd/shaders/screen_space_reflection_filter.glsl.gen.h"
#include "servers/rendering/rasterizer_rd/shaders/screen_space_reflection_scale.glsl.gen.h"
+#include "servers/rendering/rasterizer_rd/shaders/shadow_reduce.glsl.gen.h"
#include "servers/rendering/rasterizer_rd/shaders/specular_merge.glsl.gen.h"
#include "servers/rendering/rasterizer_rd/shaders/ssao.glsl.gen.h"
#include "servers/rendering/rasterizer_rd/shaders/ssao_blur.glsl.gen.h"
@@ -534,6 +535,18 @@ class RasterizerEffectsRD {
RID pipelines[RESOLVE_MODE_MAX]; //3 quality levels
} resolve;
+ enum ShadowReduceMode {
+ SHADOW_REDUCE_REDUCE,
+ SHADOW_REDUCE_FILTER,
+ SHADOW_REDUCE_MAX
+ };
+
+ struct ShadowReduce {
+ ShadowReduceShaderRD shader;
+ RID shader_version;
+ RID pipelines[2];
+ } shadow_reduce;
+
RID default_sampler;
RID default_mipmap_sampler;
RID index_buffer;
@@ -633,6 +646,9 @@ public:
void resolve_gi(RID p_source_depth, RID p_source_normal_roughness, RID p_source_giprobe, RID p_dest_depth, RID p_dest_normal_roughness, RID p_dest_giprobe, Vector2i p_screen_size, int p_samples);
+ void reduce_shadow(RID p_source_shadow, RID p_dest_shadow, const Size2i &p_source_size, const Rect2i &p_source_rect, int p_shrink_limit, RenderingDevice::ComputeListID compute_list);
+ void filter_shadow(RID p_shadow, RID p_backing_shadow, const Size2i &p_source_size, const Rect2i &p_source_rect, RS::EnvVolumetricFogShadowFilter p_filter, RenderingDevice::ComputeListID compute_list, bool p_vertical = true, bool p_horizontal = true);
+
RasterizerEffectsRD();
~RasterizerEffectsRD();
};