mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 21:01:52 +00:00
Manual constant buffer binding
This commit is contained in:
@@ -98,16 +98,9 @@ namespace GlitchyEngine.Renderer
|
||||
}
|
||||
|
||||
[Inline]
|
||||
public void SetViewports(Viewport[] viewports)
|
||||
public void SetViewports(Span<Viewport> viewports)
|
||||
{
|
||||
SetViewports((.)viewports.Count, viewports.CArray());
|
||||
}
|
||||
|
||||
[Inline]
|
||||
public void SetViewports<CSize>(Viewport[CSize] viewports) where CSize : const uint32
|
||||
{
|
||||
var viewports;
|
||||
SetViewports(CSize, &viewports);
|
||||
SetViewports((.)viewports.Length, viewports.Ptr);
|
||||
}
|
||||
|
||||
public extern void SetViewports(uint32 viewportsLength, Viewport* viewports);
|
||||
@@ -121,5 +114,7 @@ namespace GlitchyEngine.Renderer
|
||||
public extern void SetPixelShader(PixelShader pixelShader);
|
||||
|
||||
public extern void UnbindTextures();
|
||||
|
||||
public extern void BindConstantBuffer(Buffer buffer, int slot, ShaderStage stage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,5 +121,10 @@ namespace GlitchyEngine.Renderer
|
||||
{
|
||||
_rendererAPI.UnbindTextures();
|
||||
}
|
||||
|
||||
public static void BindConstantBuffer(Buffer buffer, int slot, ShaderStage stage)
|
||||
{
|
||||
_rendererAPI.BindConstantBuffer(buffer, slot, stage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,12 +302,13 @@ namespace GlitchyEngine.Renderer
|
||||
|
||||
RenderCommand.SetBlendState(_gBufferBlend);
|
||||
|
||||
|
||||
for (SubmittedMesh entry in _queue)
|
||||
{
|
||||
Debug.Profiler.ProfileRendererScope!("Draw Mesh");
|
||||
|
||||
{
|
||||
Debug.Profiler.ProfileRendererScope!("SetVariables");
|
||||
Debug.Profiler.ProfileRendererScope!("Update object buffer");
|
||||
|
||||
ObjectConstantsBuffer objectData;
|
||||
objectData.Transform = entry.Transform;
|
||||
@@ -318,21 +319,12 @@ namespace GlitchyEngine.Renderer
|
||||
objectData.EntityId = entry.EntityId;
|
||||
|
||||
_objectBuffer.SetData(objectData, 0, .WriteDiscard);
|
||||
|
||||
entry.Material.Effect.Buffers.TryReplaceBuffer("SceneConstants", _sceneBuffer);
|
||||
entry.Material.Effect.Buffers.TryReplaceBuffer("ObjectConstants", _objectBuffer);
|
||||
|
||||
/*entry.Material.SetVariable("ViewProjection", _sceneConstants.ViewProjection);
|
||||
|
||||
entry.Material.SetVariable("Transform", entry.Transform);
|
||||
|
||||
entry.Material.SetVariable("EntityId", entry.EntityId);
|
||||
|
||||
Matrix3x3 mat = (Matrix3x3)(entry.Transform).Invert().Transpose();
|
||||
entry.Material.SetVariable("Transform_InvT", mat);*/
|
||||
}
|
||||
|
||||
entry.Material.Bind(_context);
|
||||
|
||||
RenderCommand.BindConstantBuffer(_sceneBuffer, 0, .All);
|
||||
RenderCommand.BindConstantBuffer(_objectBuffer, 1, .All);
|
||||
|
||||
entry.Mesh.Bind();
|
||||
RenderCommand.DrawIndexed(entry.Mesh);
|
||||
|
||||
@@ -62,5 +62,7 @@ namespace GlitchyEngine.Renderer
|
||||
public extern void SetViewport(Viewport viewport);
|
||||
|
||||
public extern void UnbindTextures();
|
||||
|
||||
public extern void BindConstantBuffer(Buffer buffer, int slot, ShaderStage stage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
namespace GlitchyEngine.Renderer
|
||||
{
|
||||
[AllowDuplicates]
|
||||
public enum ShaderStage
|
||||
{
|
||||
Vertex = 1,
|
||||
Pixel = 2,
|
||||
|
||||
All = Vertex | Pixel
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user