Constants of Effects can now be accessed easily

This commit is contained in:
Simon Lübeß
2021-02-16 18:11:34 +01:00
parent 6ab6a6a0b9
commit 64e9cc1613
6 changed files with 414 additions and 219 deletions
+18 -10
View File
@@ -16,40 +16,48 @@ namespace GlitchyEngine.Renderer
static GraphicsContext _context ~ _?.ReleaseRef();
static Buffer<SceneConstants> _sceneConstants ~ _?.ReleaseRef();
//static Buffer<SceneConstants> _sceneConstants ~ _?.ReleaseRef();
static Buffer<ObjectConstants> _objectConstants ~ _?.ReleaseRef();
//static Buffer<ObjectConstants> _objectConstants ~ _?.ReleaseRef();
static SceneConstants _sceneConstants;
public static void Init(GraphicsContext context)
{
_context = context..AddRef();
/*
_sceneConstants = new Buffer<SceneConstants>(_context, .(0, .Constant, .Dynamic, .Write));
_sceneConstants.Update();
_objectConstants = new Buffer<ObjectConstants>(_context, .(0, .Constant, .Dynamic, .Write));
_objectConstants.Update();
*/
RenderCommand.Init();
}
public static void BeginScene(Camera camera)
{
_sceneConstants.Data.ViewProjection = camera.ViewProjection;
_sceneConstants.Update();
_sceneConstants.ViewProjection = camera.ViewProjection;
//_sceneConstants.Data.ViewProjection = camera.ViewProjection;
//_sceneConstants.Update();
}
public static void EndScene(){}
public static void Submit(GeometryBinding geometry, Effect effect, Matrix transform = .Identity)
{
effect.PixelShader?.Buffers.TryReplaceBuffer("SceneConstants", _sceneConstants);
effect.VertexShader?.Buffers.TryReplaceBuffer("SceneConstants", _sceneConstants);
//effect.PixelShader?.Buffers.TryReplaceBuffer("SceneConstants", _sceneConstants);
//effect.VertexShader?.Buffers.TryReplaceBuffer("SceneConstants", _sceneConstants);
_objectConstants.Data.Transform = transform;
_objectConstants.Update();
//_objectConstants.Data.Transform = transform;
//_objectConstants.Update();
//effect.PixelShader?.Buffers.TryReplaceBuffer("ObjectConstants", _objectConstants);
//effect.VertexShader?.Buffers.TryReplaceBuffer("ObjectConstants", _objectConstants);
effect.PixelShader?.Buffers.TryReplaceBuffer("ObjectConstants", _objectConstants);
effect.VertexShader?.Buffers.TryReplaceBuffer("ObjectConstants", _objectConstants);
effect.Variables["ViewProjection"].SetData(_sceneConstants.ViewProjection);
effect.Variables["Transform"].SetData(transform);
effect.Bind(_context);