From f7be55f6c6f434f32fc236c772ef4160f5f1a7ad Mon Sep 17 00:00:00 2001 From: cosmonaut Date: Thu, 24 Feb 2022 22:07:35 -0800 Subject: [PATCH] update render pass ABI --- MoonWorksMultiWindow.csproj | 8 +- lib/MoonWorks | 2 +- src/Graphics/Containers/Framebuffers.cs | 36 ------- src/Graphics/Containers/RenderPasses.cs | 31 ------ src/Graphics/GraphicsObjects.cs | 41 +++---- src/MoonWorksMultiWindowGame.cs | 138 ++++++++++++------------ 6 files changed, 86 insertions(+), 170 deletions(-) delete mode 100644 src/Graphics/Containers/Framebuffers.cs delete mode 100644 src/Graphics/Containers/RenderPasses.cs diff --git a/MoonWorksMultiWindow.csproj b/MoonWorksMultiWindow.csproj index 77b9b70..d0a1d52 100644 --- a/MoonWorksMultiWindow.csproj +++ b/MoonWorksMultiWindow.csproj @@ -1,13 +1,7 @@ Exe - net5.0 - true - - - - Exe - net5.0 + net6.0 MoonWorksMultiWindow false false diff --git a/lib/MoonWorks b/lib/MoonWorks index 4acc258..e5213da 160000 --- a/lib/MoonWorks +++ b/lib/MoonWorks @@ -1 +1 @@ -Subproject commit 4acc2588e17f2ad1f594e95e9e06d4d2ae7009ac +Subproject commit e5213da686fd4700d16a0c627d5f1ab4fce0ee12 diff --git a/src/Graphics/Containers/Framebuffers.cs b/src/Graphics/Containers/Framebuffers.cs deleted file mode 100644 index ad1009f..0000000 --- a/src/Graphics/Containers/Framebuffers.cs +++ /dev/null @@ -1,36 +0,0 @@ -using MoonWorks.Graphics; - -namespace MoonWorksMultiWindow.Graphics -{ - public class Framebuffers - { - public Framebuffer ExampleFramebuffer { get; } - public Framebuffer ExtraWindowFramebuffer { get; } - - public Framebuffers( - GraphicsDevice graphicsDevice, - RenderPasses renderPasses, - RenderTargets renderTargets, - uint renderDimensionsX, - uint renderDimensionsY - ) { - ExampleFramebuffer = new Framebuffer( - graphicsDevice, - renderDimensionsX, - renderDimensionsY, - renderPasses.ExampleRenderPass, - null, - renderTargets.ExampleRenderTarget - ); - - ExtraWindowFramebuffer = new Framebuffer( - graphicsDevice, - renderDimensionsX, - renderDimensionsY, - renderPasses.ExtraWindowRenderPass, - null, - renderTargets.ExtraWindowRenderTarget - ); - } - } -} \ No newline at end of file diff --git a/src/Graphics/Containers/RenderPasses.cs b/src/Graphics/Containers/RenderPasses.cs deleted file mode 100644 index fe5917b..0000000 --- a/src/Graphics/Containers/RenderPasses.cs +++ /dev/null @@ -1,31 +0,0 @@ -using MoonWorks.Graphics; - -namespace MoonWorksMultiWindow.Graphics -{ - public class RenderPasses - { - public RenderPass ExampleRenderPass { get; } - public RenderPass ExtraWindowRenderPass { get; } - - public RenderPasses(GraphicsDevice graphicsDevice) - { - var clearPassDescription = new ColorTargetDescription - { - Format = TextureFormat.R8G8B8A8, - LoadOp = LoadOp.Clear, - StoreOp = StoreOp.Store, - MultisampleCount = SampleCount.One - }; - - ExampleRenderPass = new RenderPass( - graphicsDevice, - clearPassDescription - ); - - ExtraWindowRenderPass = new RenderPass( - graphicsDevice, - clearPassDescription - ); - } - } -} \ No newline at end of file diff --git a/src/Graphics/GraphicsObjects.cs b/src/Graphics/GraphicsObjects.cs index 39909f0..f8a3f98 100644 --- a/src/Graphics/GraphicsObjects.cs +++ b/src/Graphics/GraphicsObjects.cs @@ -2,30 +2,21 @@ using MoonWorks.Graphics; namespace MoonWorksMultiWindow.Graphics { - public class GraphicsObjects - { - public RenderTargets RenderTargets { get; } - public Framebuffers Framebuffers { get; } - public RenderPasses RenderPasses { get; } + public class GraphicsObjects + { + public RenderTargets RenderTargets { get; } - public GraphicsObjects( - GraphicsDevice graphicsDevice, - uint renderDimensionsX, - uint renderDimensionsY - ) { - RenderPasses = new RenderPasses(graphicsDevice); - RenderTargets = new RenderTargets( - graphicsDevice, - renderDimensionsX, - renderDimensionsY - ); - Framebuffers = new Framebuffers( - graphicsDevice, - RenderPasses, - RenderTargets, - renderDimensionsX, - renderDimensionsY - ); - } - } + public GraphicsObjects( + GraphicsDevice graphicsDevice, + uint renderDimensionsX, + uint renderDimensionsY + ) + { + RenderTargets = new RenderTargets( + graphicsDevice, + renderDimensionsX, + renderDimensionsY + ); + } + } } diff --git a/src/MoonWorksMultiWindowGame.cs b/src/MoonWorksMultiWindowGame.cs index b12d032..60b7294 100644 --- a/src/MoonWorksMultiWindowGame.cs +++ b/src/MoonWorksMultiWindowGame.cs @@ -6,29 +6,29 @@ using System.Threading.Tasks; namespace MoonWorksMultiWindow { - class MoonWorksMultiWindowGame : Game - { - private GraphicsObjects GraphicsObjects { get; } + class MoonWorksMultiWindowGame : Game + { + private GraphicsObjects GraphicsObjects { get; } - private int RenderWidth { get; } - private int RenderHeight { get; } + private int RenderWidth { get; } + private int RenderHeight { get; } private OSWindow ExtraWindow { get; } - public MoonWorksMultiWindowGame( - WindowCreateInfo windowCreateInfo, - PresentMode presentMode, - bool debugMode - ) : base(windowCreateInfo, presentMode, 60, debugMode) - { - // Insert your game initialization logic here. - GraphicsObjects = new GraphicsObjects( - GraphicsDevice, - windowCreateInfo.WindowWidth, - windowCreateInfo.WindowHeight - ); - RenderWidth = (int)windowCreateInfo.WindowWidth; - RenderHeight = (int)windowCreateInfo.WindowHeight; + public MoonWorksMultiWindowGame( + WindowCreateInfo windowCreateInfo, + PresentMode presentMode, + bool debugMode + ) : base(windowCreateInfo, presentMode, 60, debugMode) + { + // Insert your game initialization logic here. + GraphicsObjects = new GraphicsObjects( + GraphicsDevice, + windowCreateInfo.WindowWidth, + windowCreateInfo.WindowHeight + ); + RenderWidth = (int)windowCreateInfo.WindowWidth; + RenderHeight = (int)windowCreateInfo.WindowHeight; var extraWindowCreateInfo = new WindowCreateInfo { @@ -39,67 +39,60 @@ namespace MoonWorksMultiWindow }; ExtraWindow = new OSWindow(extraWindowCreateInfo); - } + } - protected override void Update(System.TimeSpan dt) - { - // Insert your game update logic here. - } + protected override void Update(System.TimeSpan dt) + { + // Insert your game update logic here. + } - protected override void Draw(System.TimeSpan dt, double alpha) - { + protected override void Draw(System.TimeSpan dt, double alpha) + { var mainDraw = Task.Run(MainDraw); var extraDraw = Task.Run(ExtraWindowDraw); mainDraw.Wait(); extraDraw.Wait(); - GraphicsDevice.Submit(mainDraw.Result, extraDraw.Result); - } - - private CommandBuffer MainDraw() - { - var commandBuffer = GraphicsDevice.AcquireCommandBuffer(); - - commandBuffer.BeginRenderPass( - GraphicsObjects.RenderPasses.ExampleRenderPass, - GraphicsObjects.Framebuffers.ExampleFramebuffer, - new Rect - { - X = 0, - Y = 0, - W = RenderWidth, - H = RenderHeight - }, - Color.CornflowerBlue.ToVector4() - ); - - commandBuffer.EndRenderPass(); - - commandBuffer.QueuePresent( - GraphicsObjects.RenderTargets.ExampleRenderTarget.TextureSlice, - Filter.Nearest, - Window - ); - - return commandBuffer; } - private CommandBuffer ExtraWindowDraw() + private void MainDraw() { var commandBuffer = GraphicsDevice.AcquireCommandBuffer(); - commandBuffer.BeginRenderPass( - GraphicsObjects.RenderPasses.ExtraWindowRenderPass, - GraphicsObjects.Framebuffers.ExtraWindowFramebuffer, - new Rect - { - X = 0, - Y = 0, - W = RenderWidth, - H = RenderHeight - }, - Color.OrangeRed.ToVector4() - ); + commandBuffer.BeginRenderPass( + new ColorAttachmentInfo + { + renderTarget = GraphicsObjects.RenderTargets.ExampleRenderTarget, + clearColor = Color.CornflowerBlue, + loadOp = LoadOp.Clear, + storeOp = StoreOp.DontCare + } + ); + + commandBuffer.EndRenderPass(); + + commandBuffer.QueuePresent( + GraphicsObjects.RenderTargets.ExampleRenderTarget.TextureSlice, + Filter.Nearest, + Window + ); + + GraphicsDevice.Submit(commandBuffer); + } + + private void ExtraWindowDraw() + { + var commandBuffer = GraphicsDevice.AcquireCommandBuffer(); + + commandBuffer.BeginRenderPass( + new ColorAttachmentInfo + { + renderTarget = GraphicsObjects.RenderTargets.ExtraWindowRenderTarget, + clearColor = Color.OrangeRed, + loadOp = LoadOp.Clear, + storeOp = StoreOp.DontCare + } + ); commandBuffer.EndRenderPass(); @@ -109,7 +102,12 @@ namespace MoonWorksMultiWindow ExtraWindow ); - return commandBuffer; + GraphicsDevice.Submit(commandBuffer); } - } + + protected override void OnDestroy() + { + + } + } }