Fixed MSAA

This commit is contained in:
Michel Fedde 2021-03-24 13:53:29 +01:00
parent 7ea788534c
commit ddd2171da2
5 changed files with 21 additions and 9 deletions

View file

@ -133,7 +133,7 @@ namespace SM.Base.PostEffects
/// <inheritdoc/>
protected override void InitProcess()
{
_source = Pipeline.MainFramebuffer;
_source ??= Pipeline.MainFramebuffer;
_source.ColorAttachments["color"].PixelInformation = PixelInformation.RGBA_HDR;

View file

@ -28,6 +28,7 @@ namespace SM.Base.PostEffects
/// <summary>
/// This resolves a multisampled framebuffer to a non-multisampled renderbuffer.
/// <para>This removes the depth buffer.</para>
/// </summary>
/// <param name="multisampledBuffers"></param>
/// <param name="target"></param>
@ -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();

View file

@ -55,6 +55,8 @@ namespace SM.OGL.Framebuffer
/// </summary>
public Dictionary<RenderbufferAttachment, int> RenderbufferAttachments { get; } = new Dictionary<RenderbufferAttachment, int>();
public ColorAttachment this[string colorName] => ColorAttachments[colorName];
/// <summary>
/// Creates a buffer without any options.
/// </summary>

View file

@ -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();

View file

@ -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);
}