Files
glitchy-engine-beef/GlitchyEngine/src/Renderer/RenderCommand.bf
T

143 lines
3.5 KiB
Beef

using System;
using GlitchyEngine.Math;
namespace GlitchyEngine.Renderer
{
public enum ClearOptions
{
None = 0,
Color = 1,
Depth = 2,
Stencil = 4,
ColorDepth = Color | Depth,
ColorStencil = Color | Stencil,
DepthStencil = Depth | Stencil,
All = Color | Depth | Stencil
}
public static class RenderCommand
{
private static RendererAPI _rendererAPI;
public static RendererAPI RendererAPI
{
get => _rendererAPI;
set => _rendererAPI = value;
}
[Inline]
public static void Init()
{
Debug.Profiler.ProfileFunction!();
_rendererAPI.Init();
}
// REPORT!!!!!!!!!
// Inline doesn't compile
//[Inline]
public static void Clear(RenderTarget2D renderTarget, ColorRGBA color)
{
_rendererAPI.Clear(renderTarget, color);
}
public static void Clear(DepthStencilTarget target, ClearOptions options, float depth, uint8 stencil)
{
_rendererAPI.Clear(target, options, depth, stencil);
}
public static void Clear(RenderTarget2D renderTarget, ClearOptions options, ColorRGBA color, float depth, uint8 stencil)
{
_rendererAPI.Clear(renderTarget, options, color, depth, stencil);
}
public static void Clear(RenderTargetGroup renderTarget, ClearOptions options, ColorRGBA? color = null, float? depth = null, uint8? stencil = null)
{
_rendererAPI.Clear(renderTarget, options, color, depth, stencil);
}
public static void SetRenderTarget(RenderTarget2D renderTarget, int slot = 0, bool setDepthBuffer = false)
{
_rendererAPI.SetRenderTarget(renderTarget, slot, setDepthBuffer);
}
public static void SetRenderTargetGroup(RenderTargetGroup renderTarget, bool setDepthBuffer = true)
{
_rendererAPI.SetRenderTargetGroup(renderTarget, setDepthBuffer);
}
public static void SetDepthStencilTarget(DepthStencilTarget target)
{
_rendererAPI.SetDepthStencilTarget(target);
}
public static void UnbindRenderTargets()
{
_rendererAPI.UnbindRenderTargets();
}
public static void BindRenderTargets()
{
_rendererAPI.BindRenderTargets();
}
public static void SetRasterizerState(RasterizerState rasterizerState)
{
_rendererAPI.SetRasterizerState(rasterizerState);
}
public static void SetBlendState(BlendState blendState, ColorRGBA blendFactor = .White)
{
_rendererAPI.SetBlendState(blendState, blendFactor);
}
public static void SetDepthStencilState(DepthStencilState depthStencilState, uint8 stencilReference = 0)
{
_rendererAPI.SetDepthStencilState(depthStencilState, stencilReference);
}
[Inline]
public static void DrawIndexed(GeometryBinding geometry)
{
_rendererAPI.DrawIndexed(geometry);
}
[Inline]
public static void DrawIndexedInstanced(GeometryBinding geometry)
{
_rendererAPI.DrawIndexedInstanced(geometry);
}
public static void SetViewport(Viewport viewport)
{
_rendererAPI.SetViewport(viewport);
}
public static void SetViewport(float left, float top, float width, float height, float minDepth = 0.0f, float maxDepth = 1.0f)
{
SetViewport(.(left, top, width, height, minDepth, maxDepth));
}
public static void UnbindTextures()
{
_rendererAPI.UnbindTextures();
}
public static void BindConstantBuffer(Buffer buffer, int slot, ShaderStage stage)
{
_rendererAPI.BindConstantBuffer(buffer, slot, stage);
}
public static void BindVertexShader(VertexShader vertexShader)
{
_rendererAPI.BindVertexShader(vertexShader);
}
public static void BindPixelShader(PixelShader pixelShader)
{
_rendererAPI.BindPixelShader(pixelShader);
}
}
}