Add initial support for shader binding sets (WIP)

This commit is contained in:
Jérôme Leclercq
2021-06-14 22:35:05 +02:00
parent 815a7b0c62
commit f22b501e25
53 changed files with 885 additions and 511 deletions

View File

@@ -21,6 +21,7 @@ namespace Nz
class Framebuffer;
class RenderPass;
class RenderPipeline;
class RenderPipelineLayout;
class ShaderBinding;
class Texture;
@@ -41,7 +42,8 @@ namespace Nz
virtual void BindIndexBuffer(Nz::AbstractBuffer* indexBuffer, UInt64 offset = 0) = 0;
virtual void BindPipeline(const RenderPipeline& pipeline) = 0;
virtual void BindShaderBinding(const ShaderBinding& binding) = 0;
virtual void BindShaderBinding(UInt32 set, const ShaderBinding& binding) = 0;
virtual void BindShaderBinding(const RenderPipelineLayout& pipelineLayout, UInt32 set, const ShaderBinding& binding) = 0;
virtual void BindVertexBuffer(UInt32 binding, Nz::AbstractBuffer* vertexBuffer, UInt64 offset = 0) = 0;
inline void CopyBuffer(const RenderBufferView& source, const RenderBufferView& target);

View File

@@ -21,9 +21,10 @@ namespace Nz
{
struct Binding
{
UInt32 setIndex;
UInt32 bindingIndex;
ShaderBindingType type;
ShaderStageTypeFlags shaderStageFlags;
unsigned int index;
};
std::vector<Binding> bindings;
@@ -35,7 +36,7 @@ namespace Nz
RenderPipelineLayout() = default;
virtual ~RenderPipelineLayout();
virtual ShaderBindingPtr AllocateShaderBinding() = 0;
virtual ShaderBindingPtr AllocateShaderBinding(UInt32 setIndex) = 0;
};
}