diff --git a/GlitchyEngine/src/Application.bf b/GlitchyEngine/src/Application.bf index 55cecca..6e81a1e 100644 --- a/GlitchyEngine/src/Application.bf +++ b/GlitchyEngine/src/Application.bf @@ -88,8 +88,6 @@ namespace GlitchyEngine { _vertexShader = Shader.FromFile!(_window.Context, "content\\basicShader.hlsl", "VS"); - _vertexShader.Buffers[0].SetData(Matrix.Identity); - // Create Input Layout _vertexLayout = new VertexLayout(_window.Context, new .( diff --git a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf index 2e4c5bc..e947095 100644 --- a/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf +++ b/GlitchyEngine/src/Platform/DX11/Renderer/Dx11Shader.bf @@ -67,7 +67,25 @@ namespace GlitchyEngine.Renderer { 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(rawData, bufferDesc.Size)); } } reflection.Release();