diff --git a/SMCode/SM.Base/PostEffects/BloomEffect.cs b/SMCode/SM.Base/PostEffects/BloomEffect.cs
index be90afd..42eeed5 100644
--- a/SMCode/SM.Base/PostEffects/BloomEffect.cs
+++ b/SMCode/SM.Base/PostEffects/BloomEffect.cs
@@ -133,7 +133,7 @@ namespace SM.Base.PostEffects
///
protected override void InitProcess()
{
- _source = Pipeline.MainFramebuffer;
+ _source ??= Pipeline.MainFramebuffer;
_source.ColorAttachments["color"].PixelInformation = PixelInformation.RGBA_HDR;
diff --git a/SMCode/SM.Base/PostEffects/PostProcessUtility.cs b/SMCode/SM.Base/PostEffects/PostProcessUtility.cs
index e8c7b31..55bef36 100644
--- a/SMCode/SM.Base/PostEffects/PostProcessUtility.cs
+++ b/SMCode/SM.Base/PostEffects/PostProcessUtility.cs
@@ -28,6 +28,7 @@ namespace SM.Base.PostEffects
///
/// This resolves a multisampled framebuffer to a non-multisampled renderbuffer.
+ /// This removes the depth buffer.
///
///
///
@@ -36,7 +37,7 @@ namespace SM.Base.PostEffects
multisampledBuffers.Activate(FramebufferTarget.ReadFramebuffer);
target.Activate(FramebufferTarget.DrawFramebuffer);
GL.BlitFramebuffer(0, 0, (int) multisampledBuffers.Size.X, (int) multisampledBuffers.Size.Y, 0, 0,
- (int) target.Size.X, (int) target.Size.Y, ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit,
+ (int) target.Size.X, (int) target.Size.Y, ClearBufferMask.ColorBufferBit,
BlitFramebufferFilter.Nearest);
target.Activate();
diff --git a/SMCode/SM.OGL/Framebuffer/Framebuffer.cs b/SMCode/SM.OGL/Framebuffer/Framebuffer.cs
index c5d40a1..8ffc5f1 100644
--- a/SMCode/SM.OGL/Framebuffer/Framebuffer.cs
+++ b/SMCode/SM.OGL/Framebuffer/Framebuffer.cs
@@ -55,6 +55,8 @@ namespace SM.OGL.Framebuffer
///
public Dictionary RenderbufferAttachments { get; } = new Dictionary();
+ public ColorAttachment this[string colorName] => ColorAttachments[colorName];
+
///
/// Creates a buffer without any options.
///
diff --git a/SM_TEST/Program.cs b/SM_TEST/Program.cs
index 3e49a51..e0e3412 100644
--- a/SM_TEST/Program.cs
+++ b/SM_TEST/Program.cs
@@ -27,6 +27,14 @@ namespace SM_TEST
window.SetScene(scene = new Scene());
scene.Objects.Add(new DrawObject2D());
+ scene.Objects.Add(new DrawObject2D()
+ {
+ Transform =
+ {
+ Position = new SM.Base.Types.CVector2(20,20),
+ ZIndex = new SM.Base.Types.CVector1(1)
+ }
+ });
window.UpdateFrame += WindowOnUpdateFrame;
window.Run();
diff --git a/SM_TEST/TestRenderPipeline.cs b/SM_TEST/TestRenderPipeline.cs
index cde2f5b..8d540b7 100644
--- a/SM_TEST/TestRenderPipeline.cs
+++ b/SM_TEST/TestRenderPipeline.cs
@@ -14,14 +14,13 @@ namespace SM_TEST
public override void Initialization()
{
- MainFramebuffer = CreateWindowFramebuffer(0);
+ MainFramebuffer = CreateWindowFramebuffer(16, PixelInformation.RGBA_HDR);
- _postBuffer = CreateWindowFramebuffer(0);
+ _postBuffer = CreateWindowFramebuffer(0, depth: false);
Framebuffers.Add(_postBuffer);
- _bloom = new BloomEffect(MainFramebuffer, hdr: true, .5f)
+ _bloom = new BloomEffect(_postBuffer, hdr: true, .5f)
{
- Threshold = .5f,
- Radius = 5
+ Threshold = .5f
};
@@ -36,10 +35,12 @@ namespace SM_TEST
context.Scene.DrawMainObjects(context);
context.Scene.DrawHUD(context);
-
- Framebuffer.Screen.Activate(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+ PostProcessUtility.ResolveMultisampledBuffers(MainFramebuffer, _postBuffer);
_bloom.Draw(context);
+ Framebuffer.Screen.Activate(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+
+ PostProcessUtility.FinalizeHDR(_postBuffer["color"], 1);
context.Scene.DrawDebug(context);
}