From abe4f66724c1b66cf5219bad65058ecab33792e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Tue, 9 Feb 2021 13:36:45 +0100 Subject: [PATCH] Added BlendState --- .../Platform/DX11/Renderer/Dx11BlendState.bf | 41 ++++++++ .../Platform/DX11/Renderer/Dx11RendererAPI.bf | 5 + GlitchyEngine/src/Renderer/BlendState.bf | 93 ++++++++++++++++++ GlitchyEngine/src/Renderer/RenderCommand.bf | 8 +- GlitchyEngine/src/Renderer/Renderer.bf | 2 + GlitchyEngine/src/Renderer/RendererAPI.bf | 2 + Sandbox/content/Textures/ge_logo.dds | Bin 0 -> 349652 bytes Sandbox/src/SandboxApp.bf | 23 ++++- 8 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 GlitchyEngine/src/Platform/DX11/Renderer/Dx11BlendState.bf create mode 100644 GlitchyEngine/src/Renderer/BlendState.bf create mode 100644 Sandbox/content/Textures/ge_logo.dds diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11BlendState.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11BlendState.bf new file mode 100644 index 0000000..a342fe7 --- /dev/null +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11BlendState.bf @@ -0,0 +1,41 @@ +using DirectX.D3D11; +using DirectX.Common; +using GlitchyEngine.Math; + +using internal GlitchyEngine.Renderer; + +namespace GlitchyEngine.Renderer +{ + extension BlendState + { + internal ID3D11BlendState* nativeBlendState ~ _?.Release(); + + public override void Bind(ColorRGBA blendFactor) + { + _context.nativeContext.OutputMerger.SetBlendState(nativeBlendState, blendFactor); + } + + protected override void PlatformCreateBlendState() + { + BlendDescription nativeDesc = .Default; + nativeDesc.IndependentBlendEnable = _desc.IndependentBlendEnable; + nativeDesc.AlphaToCoverageEnable = _desc.AlphaToCoverageEnable; + + for(int i = 0; i < 8; i++) + { + nativeDesc.RenderTarget[i].BlendEnable = _desc.RenderTarget[i].BlendEnable; + nativeDesc.RenderTarget[i].SourceBlend = _desc.RenderTarget[i].SourceBlend; + nativeDesc.RenderTarget[i].DestinationBlend = _desc.RenderTarget[i].DestinationBlend; + nativeDesc.RenderTarget[i].BlendOperation = _desc.RenderTarget[i].BlendOperation; + nativeDesc.RenderTarget[i].SourceBlendAlpha = _desc.RenderTarget[i].SourceBlendAlpha; + nativeDesc.RenderTarget[i].DestinationBlendAlpha = _desc.RenderTarget[i].DestinationBlendAlpha; + nativeDesc.RenderTarget[i].BlendOperationAlpha = _desc.RenderTarget[i].BlendOperationAlpha; + nativeDesc.RenderTarget[i].RenderTargetWriteMask = _desc.RenderTarget[i].RenderTargetWriteMask; + } + + HResult result = _context.nativeDevice.CreateBlendState(ref nativeDesc, &nativeBlendState); + + Log.EngineLogger.Assert(result.Succeeded, scope $"Failed to create blend state. Error({(int)result}): {result}"); + } + } +} diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf index b1df512..bdaa2cd 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11RendererAPI.bf @@ -14,6 +14,11 @@ namespace GlitchyEngine.Renderer public static override API Api => .D3D11; + public override void Init() + { + + } + public override void Clear(RenderTarget renderTarget, ColorRGBA clearColor) { _context.ClearRenderTarget(renderTarget, clearColor); diff --git a/GlitchyEngine/src/Renderer/BlendState.bf b/GlitchyEngine/src/Renderer/BlendState.bf new file mode 100644 index 0000000..6bda64d --- /dev/null +++ b/GlitchyEngine/src/Renderer/BlendState.bf @@ -0,0 +1,93 @@ +using System; +using GlitchyEngine.Math; +namespace GlitchyEngine.Renderer +{ + public struct BlendStateDescription + { + public typealias Blend = DirectX.D3D11.Blend; + public typealias BlendOperation = DirectX.D3D11.BlendOperation; + public typealias ColorWriteEnable = DirectX.D3D11.ColorWriteEnable; + + public struct RenderTargetBlend + { + /** + * Enable (or disable) blending. + */ + public bool BlendEnable; + public Blend SourceBlend; + public Blend DestinationBlend; + public BlendOperation BlendOperation; + public Blend SourceBlendAlpha; + public Blend DestinationBlendAlpha; + public BlendOperation BlendOperationAlpha; + public ColorWriteEnable RenderTargetWriteMask; + + public this() + { + this = default; + } + + public this(bool blendEnable, Blend sourceBlend, Blend destinationBlend, BlendOperation blendOperation, + Blend sourceBlendAlpha, Blend destinationBlendAlpha, BlendOperation blendOperationAlpha, ColorWriteEnable renderTargetWriteMask) + { + BlendEnable = blendEnable; + SourceBlend = sourceBlend; + DestinationBlend = destinationBlend; + BlendOperation = blendOperation; + SourceBlendAlpha = sourceBlendAlpha; + DestinationBlendAlpha = destinationBlendAlpha; + BlendOperationAlpha = blendOperationAlpha; + RenderTargetWriteMask = renderTargetWriteMask; + } + + public static readonly RenderTargetBlend Default = RenderTargetBlend(false, .One, .Zero, .Add, .One, .Zero, .Add, .All); + } + + /** + * Specifies whether to enable independent blending in simultaneous render targets. Set to TRUE to enable independent blending. + * If set to FALSE, only the RenderTarget[0] members are used; RenderTarget[1..7] are ignored. + */ + public bool IndependentBlendEnable; + /** + * Specifies whether to use alpha-to-coverage as a multisampling technique when setting a pixel to a render target. + */ + public bool AlphaToCoverageEnable; + + public RenderTargetBlend[8] RenderTarget; + + public this() + { + this = default; + } + + public this(bool independentBlend, bool alphaToCoverage, RenderTargetBlend[8] renderTarget) + { + IndependentBlendEnable = independentBlend; + AlphaToCoverageEnable = alphaToCoverage; + RenderTarget = renderTarget; + } + + public static readonly Self Default = .(false, false, .(.Default, .Default, .Default, .Default, .Default, .Default, .Default, .Default)); + } + + public class BlendState : RefCounted + { + protected GraphicsContext _context ~ _?.ReleaseRef(); + + protected BlendStateDescription _desc; + + public BlendStateDescription Description => _desc; + + public this(GraphicsContext context, BlendStateDescription desc) + { + _context = context..AddRef(); + _desc = desc; + + PlatformCreateBlendState(); + } + + public extern void Bind(ColorRGBA blendFactor = .White); + + protected extern void PlatformCreateBlendState(); + } +} diff --git a/GlitchyEngine/src/Renderer/RenderCommand.bf b/GlitchyEngine/src/Renderer/RenderCommand.bf index 331f209..f7569fd 100644 --- a/GlitchyEngine/src/Renderer/RenderCommand.bf +++ b/GlitchyEngine/src/Renderer/RenderCommand.bf @@ -12,7 +12,13 @@ namespace GlitchyEngine.Renderer get => _rendererAPI; set => _rendererAPI = value; } - + + [Inline] + public static void Init() + { + _rendererAPI.Init(); + } + [Inline] public static void Clear(RenderTarget renderTarget, ColorRGBA color) { diff --git a/GlitchyEngine/src/Renderer/Renderer.bf b/GlitchyEngine/src/Renderer/Renderer.bf index 1713fc6..87928e0 100644 --- a/GlitchyEngine/src/Renderer/Renderer.bf +++ b/GlitchyEngine/src/Renderer/Renderer.bf @@ -28,6 +28,8 @@ namespace GlitchyEngine.Renderer _objectConstants = new Buffer(_context, .(0, .Constant, .Dynamic, .Write)); _objectConstants.Update(); + + RenderCommand.Init(); } public static void BeginScene(Camera camera) diff --git a/GlitchyEngine/src/Renderer/RendererAPI.bf b/GlitchyEngine/src/Renderer/RendererAPI.bf index 43bdf6a..8c1a03b 100644 --- a/GlitchyEngine/src/Renderer/RendererAPI.bf +++ b/GlitchyEngine/src/Renderer/RendererAPI.bf @@ -15,6 +15,8 @@ namespace GlitchyEngine.Renderer */ public static extern API Api { get; } + public extern void Init(); + public extern void Clear(RenderTarget renderTarget, ColorRGBA clearColor); public extern void DrawIndexed(GeometryBinding geometry); diff --git a/Sandbox/content/Textures/ge_logo.dds b/Sandbox/content/Textures/ge_logo.dds new file mode 100644 index 0000000000000000000000000000000000000000..f1df6d1dcd2ba9deed8c36ab9a91f259060a5491 GIT binary patch literal 349652 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