cbuffers now initialized with default values from shader

This commit is contained in:
Simon Lübeß
2020-12-30 19:33:51 +01:00
parent 56183c1896
commit 5736f02dbf
2 changed files with 19 additions and 3 deletions
-2
View File
@@ -88,8 +88,6 @@ namespace GlitchyEngine
{ {
_vertexShader = Shader.FromFile!<VertexShader>(_window.Context, "content\\basicShader.hlsl", "VS"); _vertexShader = Shader.FromFile!<VertexShader>(_window.Context, "content\\basicShader.hlsl", "VS");
_vertexShader.Buffers[0].SetData(Matrix.Identity);
// Create Input Layout // Create Input Layout
_vertexLayout = new VertexLayout(_window.Context, new .( _vertexLayout = new VertexLayout(_window.Context, new .(
@@ -67,7 +67,25 @@ namespace GlitchyEngine.Renderer
{ {
GlitchyEngine.Renderer.BufferDescription cBufferDesc = .(bufferDesc.Size, .Constant, .Dynamic, .Write); GlitchyEngine.Renderer.BufferDescription cBufferDesc = .(bufferDesc.Size, .Constant, .Dynamic, .Write);
_buffers.Add(bindDesc.BindPoint, StringView(bufferDesc.Name), new Buffer(_context, cBufferDesc), true); let buffer = new Buffer(_context, cBufferDesc);
_buffers.Add(bindDesc.BindPoint, StringView(bufferDesc.Name), buffer, true);
// Buffer for default values
uint8* rawData = new:ScopedAlloc! uint8[bufferDesc.Size]*;
// Get default values
for(uint32 variable < bufferDesc.Variables)
{
let variableReflection = bufferReflection.GetVariableByIndex(variable);
variableReflection.GetDescription(let varDesc);
if(varDesc.DefaultValue != null)
Internal.MemCpy(rawData + varDesc.StartOffset, varDesc.DefaultValue, varDesc.Size);
}
buffer.SetData(Span<uint8>(rawData, bufferDesc.Size));
} }
} }
reflection.Release(); reflection.Release();