diff --git a/GlitchyEditor/src/Ultralight/UltralightWindow.bf b/GlitchyEditor/src/Ultralight/UltralightWindow.bf index f9f93e1..8566d93 100644 --- a/GlitchyEditor/src/Ultralight/UltralightWindow.bf +++ b/GlitchyEditor/src/Ultralight/UltralightWindow.bf @@ -109,17 +109,7 @@ abstract class UltralightWindow RenderCommand.Clear(_window.SwapChain.BackBuffer, .Color, .(0.7f, 0.2f, 0.2f), 1.0f, 0); - RenderCommand.UnbindRenderTargets(); - RenderCommand.SetRenderTarget(_window.SwapChain.BackBuffer); - RenderCommand.BindRenderTargets(); - RenderCommand.SetViewport(_window.SwapChain.BackbufferViewport); - - Effect copy = Content.GetAsset(UltralightLayer._copyEffect); - copy.SetTexture("Texture", _texture); - copy.ApplyChanges(); - copy.Bind(); - - FullscreenQuad.Draw(); + Blit.Blit(_texture, _window.SwapChain.BackBuffer, viewport: _window.SwapChain.BackbufferViewport); } public void Render() diff --git a/GlitchyEditor/src/UltralightLayer.bf b/GlitchyEditor/src/UltralightLayer.bf index 21f3c6c..3a8c784 100644 --- a/GlitchyEditor/src/UltralightLayer.bf +++ b/GlitchyEditor/src/UltralightLayer.bf @@ -13,8 +13,6 @@ class UltralightLayer : Layer { public static ULRenderer renderer; - public static AssetHandle _copyEffect; - private List _windows = new .() ~ DeleteContainerAndItems!(_); public UltralightMainWindow EntityHierarchyWindow; @@ -31,8 +29,6 @@ class UltralightLayer : Layer EntityHierarchyWindow = new UltralightMainWindow(); _windows.Add(EntityHierarchyWindow); - - _copyEffect = Content.LoadAsset("Resources/Shaders/Copy.hlsl"); } private static void InitClipboard() { diff --git a/GlitchyEngine/src/Renderer/Blit.bf b/GlitchyEngine/src/Renderer/Blit.bf new file mode 100644 index 0000000..705d35e --- /dev/null +++ b/GlitchyEngine/src/Renderer/Blit.bf @@ -0,0 +1,27 @@ +using GlitchyEngine.Content; + +namespace GlitchyEngine.Renderer; + +static class Blit +{ + public static AssetHandle _copyEffect; + + internal static void Init() + { + _copyEffect = Content.LoadAsset("Resources/Shaders/Copy.hlsl"); + } + + public static void Blit(Texture2D source, RenderTarget2D destination, Effect blitEffect = _copyEffect, Viewport? viewport = null) + { + RenderCommand.UnbindRenderTargets(); + RenderCommand.SetRenderTarget(destination); + RenderCommand.BindRenderTargets(); + RenderCommand.SetViewport(viewport ?? Viewport(0, 0, destination.Width, destination.Height)); + + blitEffect.SetTexture("Texture", source); + blitEffect.ApplyChanges(); + blitEffect.Bind(); + + FullscreenQuad.Draw(); + } +} diff --git a/GlitchyEngine/src/Renderer/Renderer2D.bf b/GlitchyEngine/src/Renderer/Renderer2D.bf index cbbaf26..dabb982 100644 --- a/GlitchyEngine/src/Renderer/Renderer2D.bf +++ b/GlitchyEngine/src/Renderer/Renderer2D.bf @@ -414,6 +414,8 @@ namespace GlitchyEngine.Renderer FontRenderer.Init(); + Blit.Init(); + #if DEBUG s_initialized = true; #endif