From 9ceadbc7bbcb3ded801898c38b728b1c8d800709 Mon Sep 17 00:00:00 2001 From: 4aiman Date: Thu, 26 Dec 2024 23:41:27 +0300 Subject: [PATCH] Added "drop_shadow_blink.shader" file StreamFX pulled the plug, obs-shaderfilter is the way. Had to fix implicit casting --- drop_shadow_blink.shader | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 drop_shadow_blink.shader diff --git a/drop_shadow_blink.shader b/drop_shadow_blink.shader new file mode 100644 index 0000000..15d410a --- /dev/null +++ b/drop_shadow_blink.shader @@ -0,0 +1,27 @@ +uniform int shadow_offset_x; +uniform int shadow_offset_y; +uniform int shadow_blur_size; +uniform float speed; +uniform float4 shadow_color; +uniform bool is_alpha_premultiplied; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_samples = int(pow(shadow_blur_size * 2 + 1, 2)); + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * shadow_offset_x, + v_in.uv.y - uv_pixel_interval.y * shadow_offset_y); + float sampled_shadow_alpha = 0; + for (int blur_x = -shadow_blur_size; blur_x <= shadow_blur_size; blur_x++) + { + for (int blur_y = -shadow_blur_size; blur_y <= shadow_blur_size; blur_y++) + { + float2 blur_uv = shadow_uv + float2(uv_pixel_interval.x * blur_x, uv_pixel_interval.y * blur_y); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a / shadow_blur_samples; + } + } + float t = elapsed_time * speed; + float4 final_shadow_color = float4(shadow_color.rgb, shadow_color.a * sampled_shadow_alpha* (1 + sin(t)) / 2); + float4 color_two = final_shadow_color * (1-color.a) + color * (int(is_alpha_premultiplied) * 1 + int(!is_alpha_premultiplied) * color.a); + return float4(color_two.r, color_two.g, color_two.b, color_two.a); +}