From 5559fe1af76629781296cc880b094d095061f23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Tue, 15 Jun 2021 15:08:17 +0200 Subject: [PATCH] Update RenderTest to test shader binding sets --- examples/RenderTest/main.cpp | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/examples/RenderTest/main.cpp b/examples/RenderTest/main.cpp index e096c5daa..ae30aa5ae 100644 --- a/examples/RenderTest/main.cpp +++ b/examples/RenderTest/main.cpp @@ -24,7 +24,12 @@ struct Data external { [binding(0)] viewerData: uniform, - [binding(1)] tex: sampler2D +} + +[set(1)] +external +{ + [binding(0)] tex: sampler2D } struct VertIn @@ -161,15 +166,18 @@ int main() uboBinding.shaderStageFlags = Nz::ShaderStageType::Vertex; uboBinding.type = Nz::ShaderBindingType::UniformBuffer; + std::shared_ptr basePipelineLayout = device->InstantiateRenderPipelineLayout(pipelineLayoutInfo); + auto& textureBinding = pipelineLayoutInfo.bindings.emplace_back(); - textureBinding.setIndex = 0; - textureBinding.bindingIndex = 1; + textureBinding.setIndex = 1; + textureBinding.bindingIndex = 0; textureBinding.shaderStageFlags = Nz::ShaderStageType::Fragment; textureBinding.type = Nz::ShaderBindingType::Texture; std::shared_ptr renderPipelineLayout = device->InstantiateRenderPipelineLayout(std::move(pipelineLayoutInfo)); - Nz::ShaderBindingPtr shaderBinding = renderPipelineLayout->AllocateShaderBinding(0); + Nz::ShaderBindingPtr viewerShaderBinding = basePipelineLayout->AllocateShaderBinding(0); + Nz::ShaderBindingPtr textureShaderBinding = renderPipelineLayout->AllocateShaderBinding(1); std::shared_ptr uniformBuffer = device->InstantiateBuffer(Nz::BufferType::Uniform); if (!uniformBuffer->Initialize(uniformSize, Nz::BufferUsage::DeviceLocal | Nz::BufferUsage::Dynamic)) @@ -178,15 +186,18 @@ int main() return __LINE__; } - shaderBinding->Update({ + viewerShaderBinding->Update({ { 0, Nz::ShaderBinding::UniformBufferBinding { uniformBuffer.get(), 0, uniformSize } - }, + } + }); + + textureShaderBinding->Update({ { - 1, + 0, Nz::ShaderBinding::TextureBinding { texture.get(), textureSampler.get() } @@ -250,7 +261,8 @@ int main() builder.BindIndexBuffer(indexBufferImpl); builder.BindPipeline(*pipeline); builder.BindVertexBuffer(0, vertexBufferImpl); - builder.BindShaderBinding(0, *shaderBinding); + builder.BindShaderBinding(0, *viewerShaderBinding); + builder.BindShaderBinding(1, *textureShaderBinding); builder.SetScissor(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) }); builder.SetViewport(Nz::Recti{ 0, 0, int(windowSize.x), int(windowSize.y) });