Added RefCounting, added ConstantBuffers

This commit is contained in:
Simon Lübeß
2021-02-06 19:37:07 +01:00
parent a2e4b5563e
commit 9ea56d6786
17 changed files with 759 additions and 293 deletions
+20 -4
View File
@@ -9,15 +9,25 @@ namespace GlitchyEngine.Renderer
public Matrix ViewProjection;
}
struct ObjectConstants
{
public Matrix Transform;
}
static GraphicsContext _context;
static Buffer<SceneConstants> _sceneConstants ~ delete _;
static Buffer<SceneConstants> _sceneConstants ~ _?.ReleaseRef();
static Buffer<ObjectConstants> _objectConstants ~ _?.ReleaseRef();
public static void Init(GraphicsContext context)
{
_context = context;
_sceneConstants = new Buffer<SceneConstants>(_context, .(0, .Constant, .Dynamic, .Write));
_sceneConstants.Update();
_objectConstants = new Buffer<ObjectConstants>(_context, .(0, .Constant, .Dynamic, .Write));
_objectConstants.Update();
}
public static void BeginScene(Camera camera)
@@ -28,13 +38,19 @@ namespace GlitchyEngine.Renderer
public static void EndScene(){}
public static void Submit(GeometryBinding geometry, Effect effect)
public static void Submit(GeometryBinding geometry, Effect effect, Matrix transform = .Identity)
{
effect.Bind(_context);
effect.PixelShader?.Buffers.TryReplaceBuffer("SceneConstants", _sceneConstants);
effect.VertexShader?.Buffers.TryReplaceBuffer("SceneConstants", _sceneConstants);
_objectConstants.Data.Transform = transform;
_objectConstants.Update();
effect.PixelShader?.Buffers.TryReplaceBuffer("ObjectConstants", _objectConstants);
effect.VertexShader?.Buffers.TryReplaceBuffer("ObjectConstants", _objectConstants);
effect.Bind(_context);
geometry.Bind();
RenderCommand.DrawIndexed(geometry);
}