From 1f7ce547a82cf38cc98664a27c9fd700ed9b2678 Mon Sep 17 00:00:00 2001 From: Sylvain Doremus Date: Fri, 5 May 2023 13:49:46 +0200 Subject: [PATCH] Fixed wrong handling of scissor and viewport in render quad/mesh. --- .../RunnablePasses/RenderMeshHolder.hpp | 8 +++---- .../RunnablePasses/RenderQuadHolder.hpp | 8 +++---- .../RunnablePasses/RenderMeshHolder.cpp | 22 +++++++++---------- .../RunnablePasses/RenderQuadHolder.cpp | 22 +++++++++---------- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/include/RenderGraph/RunnablePasses/RenderMeshHolder.hpp b/include/RenderGraph/RunnablePasses/RenderMeshHolder.hpp index 292da9a..5d6cd9c 100644 --- a/include/RenderGraph/RunnablePasses/RenderMeshHolder.hpp +++ b/include/RenderGraph/RunnablePasses/RenderMeshHolder.hpp @@ -46,8 +46,8 @@ namespace crg , VkPipelineColorBlendStateCreateInfo blendState ); void doCreatePipeline( uint32_t index ); VkPipelineViewportStateCreateInfo doCreateViewportState( VkExtent2D const & renderSize - , VkViewportArray & viewports - , VkScissorArray & scissors ); + , VkViewport & viewport + , VkRect2D & scissor ); private: rm::ConfigData m_config; @@ -55,8 +55,8 @@ namespace crg PipelineHolder m_pipeline; VkRenderPass m_renderPass{}; VkExtent2D m_renderSize{}; - VkViewportArray m_viewports{}; - VkScissorArray m_scissors{}; + VkViewport m_viewport{}; + VkRect2D m_scissor{}; VkPipelineViewportStateCreateInfo m_vpState{}; VkPipelineInputAssemblyStateCreateInfo m_iaState{}; VkPipelineMultisampleStateCreateInfo m_msState{}; diff --git a/include/RenderGraph/RunnablePasses/RenderQuadHolder.hpp b/include/RenderGraph/RunnablePasses/RenderQuadHolder.hpp index 7fcbaee..7f9f80f 100644 --- a/include/RenderGraph/RunnablePasses/RenderQuadHolder.hpp +++ b/include/RenderGraph/RunnablePasses/RenderQuadHolder.hpp @@ -59,8 +59,8 @@ namespace crg , VkPipelineColorBlendStateCreateInfo blendState ); void doCreatePipeline( uint32_t passIndex ); VkPipelineViewportStateCreateInfo doCreateViewportState( VkExtent2D const & renderSize - , VkViewportArray & viewports - , VkScissorArray & scissors ); + , VkViewport & viewport + , VkRect2D & scissor ); private: rq::ConfigData m_config; @@ -71,8 +71,8 @@ namespace crg VertexBuffer const * m_vertexBuffer{}; VkRenderPass m_renderPass{}; VkExtent2D m_renderSize{}; - VkViewportArray m_viewports{}; - VkScissorArray m_scissors{}; + VkViewport m_viewport{}; + VkRect2D m_scissor{}; VkPipelineViewportStateCreateInfo m_vpState{}; VkPipelineInputAssemblyStateCreateInfo m_iaState{}; VkPipelineMultisampleStateCreateInfo m_msState{}; diff --git a/source/RenderGraph/RunnablePasses/RenderMeshHolder.cpp b/source/RenderGraph/RunnablePasses/RenderMeshHolder.cpp index e49e985..7e99472 100644 --- a/source/RenderGraph/RunnablePasses/RenderMeshHolder.cpp +++ b/source/RenderGraph/RunnablePasses/RenderMeshHolder.cpp @@ -151,7 +151,7 @@ namespace crg , VkRenderPass renderPass , VkPipelineColorBlendStateCreateInfo blendState ) { - m_vpState = doCreateViewportState( renderSize, m_viewports, m_scissors ); + m_vpState = doCreateViewportState( renderSize, m_viewport, m_scissor ); m_renderSize = renderSize; m_renderPass = renderPass; m_blendAttachs = { blendState.pAttachments, blendState.pAttachments + blendState.attachmentCount }; @@ -191,23 +191,23 @@ namespace crg } VkPipelineViewportStateCreateInfo RenderMeshHolder::doCreateViewportState( VkExtent2D const & renderSize - , VkViewportArray & viewports - , VkScissorArray & scissors ) + , VkViewport & viewport + , VkRect2D & scissor ) { - viewports.push_back( { float( m_config.renderPosition.x ) + viewport = { float( m_config.renderPosition.x ) , float( m_config.renderPosition.y ) , float( renderSize.width ) , float( renderSize.height ) , 0.0f - , 1.0f } ); - scissors.push_back( { { m_config.renderPosition.x, m_config.renderPosition.y } - , { renderSize.width, renderSize.height } } ); + , 1.0f }; + scissor = { { m_config.renderPosition.x, m_config.renderPosition.y } + , { renderSize.width, renderSize.height } }; return { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO , nullptr , 0u - , uint32_t( viewports.size() ) - , viewports.data() - , uint32_t( scissors.size() ) - , scissors.data() }; + , 1u + , & viewport + , 1u + , & scissor }; } } diff --git a/source/RenderGraph/RunnablePasses/RenderQuadHolder.cpp b/source/RenderGraph/RunnablePasses/RenderQuadHolder.cpp index 8a5428b..77c1b2d 100644 --- a/source/RenderGraph/RunnablePasses/RenderQuadHolder.cpp +++ b/source/RenderGraph/RunnablePasses/RenderQuadHolder.cpp @@ -140,7 +140,7 @@ namespace crg , VkRenderPass renderPass , VkPipelineColorBlendStateCreateInfo blendState ) { - m_vpState = doCreateViewportState( renderSize, m_viewports, m_scissors ); + m_vpState = doCreateViewportState( renderSize, m_viewport, m_scissor ); m_renderSize = renderSize; m_renderPass = renderPass; m_blendAttachs = { blendState.pAttachments, blendState.pAttachments + blendState.attachmentCount }; @@ -179,23 +179,23 @@ namespace crg } VkPipelineViewportStateCreateInfo RenderQuadHolder::doCreateViewportState( VkExtent2D const & renderSize - , VkViewportArray & viewports - , VkScissorArray & scissors ) + , VkViewport & viewport + , VkRect2D & scissor ) { - viewports.push_back( { float( m_config.renderPosition.x ) + viewport = { float( m_config.renderPosition.x ) , float( m_config.renderPosition.y ) , float( renderSize.width ) , float( renderSize.height ) , 0.0f - , 1.0f } ); - scissors.push_back( { { m_config.renderPosition.x, m_config.renderPosition.y } - , { renderSize.width, renderSize.height } } ); + , 1.0f }; + scissor = { { m_config.renderPosition.x, m_config.renderPosition.y } + , { renderSize.width, renderSize.height } }; return { VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO , nullptr , 0u - , uint32_t( viewports.size() ) - , viewports.data() - , uint32_t( scissors.size() ) - , scissors.data() }; + , 1u + , &viewport + , 1u + , &scissor }; } }