diff --git a/SMCode/SM.Base/PostEffects/BloomEffect.cs b/SMCode/SM.Base/PostEffects/BloomEffect.cs
index 42eeed5..095fdb7 100644
--- a/SMCode/SM.Base/PostEffects/BloomEffect.cs
+++ b/SMCode/SM.Base/PostEffects/BloomEffect.cs
@@ -81,7 +81,7 @@ namespace SM.Base.PostEffects
/// Radius of the effect
/// Default: 2
///
- public float Radius = 2;
+ public float Radius = 1;
///
/// This can disable the bloom calculation.
diff --git a/SMCode/SM.Base/PostEffects/Shaders/bloom_blur.glsl b/SMCode/SM.Base/PostEffects/Shaders/bloom_blur.glsl
index 4943dd6..834ad23 100644
--- a/SMCode/SM.Base/PostEffects/Shaders/bloom_blur.glsl
+++ b/SMCode/SM.Base/PostEffects/Shaders/bloom_blur.glsl
@@ -35,12 +35,13 @@ void main() {
vec2 tex_offset = 1.0 / textureSize(renderedTexture, 0) * vec2(Horizontal ? 1 : 0, Horizontal ? 0 : 1);
- vec3 result = max(GetRenderColorOffset(vec2(0)).rgb - thres, 0) * (First ? Power : 1);
- result *= GetWeight(0);
+ vec3 result = max(GetRenderColorOffset(vec2(0)).rgb - thres, 0) * (First ? Power : 1) * GetWeight(0);
+
+ float radi = Radius + (length(result));
for(int i = 1; i < WeightCount; i++) {
- result += max(GetRenderColorOffset(tex_offset * i * Radius).rgb - thres, 0) * (First ? Power : 1) * GetWeight(i);
- result += max(GetRenderColorOffset(-tex_offset * i * Radius).rgb - thres, 0) * (First ? Power : 1) * GetWeight(i);
+ result += max(GetRenderColorOffset(tex_offset * i * radi).rgb - thres, 0) * (First ? Power : 1) * GetWeight(i);
+ result += max(GetRenderColorOffset(-tex_offset * i * radi).rgb - thres, 0) * (First ? Power : 1) * GetWeight(i);
}
color = vec4(result, 1);
diff --git a/SM_TEST/TestRenderPipeline.cs b/SM_TEST/TestRenderPipeline.cs
index 8d540b7..117db39 100644
--- a/SM_TEST/TestRenderPipeline.cs
+++ b/SM_TEST/TestRenderPipeline.cs
@@ -16,11 +16,11 @@ namespace SM_TEST
MainFramebuffer = CreateWindowFramebuffer(16, PixelInformation.RGBA_HDR);
- _postBuffer = CreateWindowFramebuffer(0, depth: false);
+ _postBuffer = CreateWindowFramebuffer(0, PixelInformation.RGBA_HDR, depth: false);
Framebuffers.Add(_postBuffer);
_bloom = new BloomEffect(_postBuffer, hdr: true, .5f)
{
- Threshold = .5f
+ Threshold = .8f,
};
@@ -40,7 +40,7 @@ namespace SM_TEST
_bloom.Draw(context);
Framebuffer.Screen.Activate(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
- PostProcessUtility.FinalizeHDR(_postBuffer["color"], 1);
+ PostProcessUtility.FinalizeHDR(_postBuffer["color"], .5f);
context.Scene.DrawDebug(context);
}