diff --git a/src/vkcv/PipelineManager.cpp b/src/vkcv/PipelineManager.cpp
index 0f53c1e5258d07a3fab2ebf4a9f31511a8778828..f79e0e96495c1e7f02c32db7cca79ef47f448d99 100644
--- a/src/vkcv/PipelineManager.cpp
+++ b/src/vkcv/PipelineManager.cpp
@@ -243,27 +243,7 @@ namespace vkcv
         // Fill up VertexInputBindingDescription and VertexInputAttributeDescription Containers
         std::vector<vk::VertexInputAttributeDescription>	vertexAttributeDescriptions;
         std::vector<vk::VertexInputBindingDescription>		vertexBindingDescriptions;
-
-        if (existsVertexShader) {
-            const VertexLayout& layout = config.m_VertexLayout;
-
-            // iterate over the layout's specified, mutually exclusive buffer bindings that make up a vertex buffer
-            for (const auto& vertexBinding : layout.vertexBindings)
-            {
-                vertexBindingDescriptions.emplace_back(vertexBinding.bindingLocation,
-                                                       vertexBinding.stride,
-                                                       vk::VertexInputRate::eVertex);
-
-                // iterate over the bindings' specified, mutually exclusive vertex input attachments that make up a vertex
-                for (const auto& vertexAttachment : vertexBinding.vertexAttachments)
-                {
-                    vertexAttributeDescriptions.emplace_back(vertexAttachment.inputLocation,
-                                                             vertexBinding.bindingLocation,
-                                                             vertexFormatToVulkanFormat(vertexAttachment.format),
-                                                             vertexAttachment.offset % vertexBinding.stride);
-                }
-            }
-        }
+        fillVertexInputDescription(vertexAttributeDescriptions, vertexBindingDescriptions, existsVertexShader, config);
 
         // Handover Containers to PipelineVertexInputStateCreateIngo Struct
         vk::PipelineVertexInputStateCreateInfo pipelineVertexInputStateCreateInfo(
@@ -562,4 +542,32 @@ namespace vkcv
         vk::ShaderModuleCreateInfo moduleInfo({}, code.size(), reinterpret_cast<uint32_t*>(code.data()));
         return m_Device.createShaderModule(&moduleInfo, nullptr, &module);
     }
+
+    void PipelineManager::fillVertexInputDescription(
+        std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
+        std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
+        const bool existsVertexShader,
+        const PipelineConfig &config) {
+
+        if (existsVertexShader) {
+            const VertexLayout& layout = config.m_VertexLayout;
+
+            // iterate over the layout's specified, mutually exclusive buffer bindings that make up a vertex buffer
+            for (const auto& vertexBinding : layout.vertexBindings)
+            {
+                vertexBindingDescriptions.emplace_back(vertexBinding.bindingLocation,
+                                                       vertexBinding.stride,
+                                                       vk::VertexInputRate::eVertex);
+
+                // iterate over the bindings' specified, mutually exclusive vertex input attachments that make up a vertex
+                for (const auto& vertexAttachment : vertexBinding.vertexAttachments)
+                {
+                    vertexAttributeDescriptions.emplace_back(vertexAttachment.inputLocation,
+                                                             vertexBinding.bindingLocation,
+                                                             vertexFormatToVulkanFormat(vertexAttachment.format),
+                                                             vertexAttachment.offset % vertexBinding.stride);
+                }
+            }
+        }
+    }
 }
diff --git a/src/vkcv/PipelineManager.hpp b/src/vkcv/PipelineManager.hpp
index d3745bd98e5433c85ae7612d2660477d6303437c..943255668d3bbbb22675d12f4a5223d79947fe67 100644
--- a/src/vkcv/PipelineManager.hpp
+++ b/src/vkcv/PipelineManager.hpp
@@ -23,6 +23,11 @@ namespace vkcv
         void destroyPipelineById(uint64_t id);
 
         vk::Result createShaderModule(vk::ShaderModule &module, const ShaderProgram &shaderProgram, ShaderStage stage);
+        void fillVertexInputDescription(
+                std::vector<vk::VertexInputAttributeDescription> &vertexAttributeDescriptions,
+                std::vector<vk::VertexInputBindingDescription>   &vertexBindingDescriptions,
+                const bool existsVertexShader,
+                const PipelineConfig &config);
 
     public:
         PipelineManager() = delete; // no default ctor